Comments 106
Какая разница STM32 или нет? В данном случае это не имеет никакого значения — все "кишки" спрятаны и используется язык программирования промышленных контроллеров.
А "сердце"-то китайская платка стоимостью меньше 2$. Интересно, сколько же стоит контроллер в сборе...
Я лично эти контроллеры не продаю, но знаю, что ценник ниже стоимости программируемого реле ПР200 от ОВЕН.
А про резистор, так всё как положено — он сообщает хосту о скорости работы шины, если не предполагается высокоскоростной обмен(для эмуляции UART достаточно 10Мбит скорости) то какой смысл работать на FULLSPEED 480M?
Ну и напоследок просто приведу цитату из википедии:
При инициализации устройство сообщает хосту о режиме, поддерживаемом устройством (англ. Full-Speed или англ. Low-Speed), подтягиванием одной из линий данных к V_BUS через резистор 1,5 кОм (D− для режима Low-Speed и D+ для режимов Full-Speed и High-Speed).А теперь смотрим схему платки: резистор R10 подтягивает D+ к питанию и он 10 кОм. В результате USB не работает вообще. А что бы заработало, его нужно поменять на 1,5 кОм и получим Full-Speed 12 мб/c.
А вот что касается не работающего USB — вот в этом месте поподробнее расскажите, что и как у вас получилось. Вопрос для меня очень интересный.
В следующую ревизию вместо всех этих резисторов воткну что-нибудь типа NUF2042 для защиты от статики.
Вообще, очень интересная тема. Пишите еще!
А если серьёзно — то вероятность того, что при открытии или закрытии привода шарового крана отключится электричество всё-таки мала, и если важна экономия энергии… Я бы выбрал шаровый всё-таки…
но — да, есть неочевидные подводные камни. как, к примеру, инициализация LSE в течение 2 секунд…
Если вам нравится программировать в стиле ардуино, то стоит присмотреться к mbed
Для себя я тоже предпочитаю такой подход) А Ардуино тоже как атмегу программировали?
В данной статье, фактически, нет ничего о программировании stm32. Т. е. на stm32f103 собран ПЛК, который уже может программировать инженер и что на 3-4 порядка проще, чем работа с stm32 по настоящему. Если что, работал с некоторым количеством промышленных ПЛК (Segnetics, TAC, Carel, Danfoss; может ещё что забыл), и с ARM Cortex-M (STM32F10x, STM32F40x).
И в данном случае уровень «отвязки» от аппаратной части больше, чем например, для Ардуино.
датчик освещённости. Он построен на основе микроконтроллера STM32F030 с использованием операционной системы реального времени. Имеет последовательный интерфейс стандарта RS-485 с поддержкой протокола обмена Modbus RTU для обмена данными и настройки параметровИ это все ради управления поливом? Мерять освещенность в теплице STMкой- это по воробьям даже не из пушки, а как минимум системой «Град». Серьезно- мощности центрального контроллера не хватает для подсчета освещенности по сопротивлению фоторезистора?
А вообще, мы дождь датчиком дождя определяем. По старинке так сказать- меряем диэлектрическую проницаемость крыши блока теплицы)
А в наших краях влажность ниже 40 процентов бывает в первой половине дня- когда воздух разогревается.А вот под вечер бывает и до 90% легко доходит.
А бывает так что… давление скачет на десяток милибар а НИФИГА не происходит — циклон прошел вхолостую и условия для дождя не сложились.
Чтобы повысить информативность надо измерять больше параметров атмосферы — температуру в приземном слое и на высоте не меньше 10 метров, скорость и направление ветра, взаимодействовать с соседними метеостанциями и т.д.
Тут скорей всего надо будет анализировать показания десятков различных датчиков и строить прогноз на их показаниях… но больно уж это смахивает на полноценную метеостанцию. Тут уже стоит вопрос, а не проще ли брать прогноз погоды с интернета?
И да, фоторезистор это плохой прибор для измерения освещённости. Во первых спектральная чувствительность не такая как нужно, во вторых — нелинейность.
Пусть датчик думает сам — а контроллер получает уже готовые значенияТеперь Вы заставили меня призадуматься. В самом деле,- если имеем кучу различных датчиков то имеет смысл организовать какую-то шину данных, общую для всех датчиков, нежели когда каждый датчик будет «говорить на своем языке», а контроллер будет вынужден тратить ресурсы «на перевод». Собственно- почти все современные датчики, использующиеся в промышленности примерно так и устроены (не во всех есть фильтрация и усреднение, но выходной сигнал стандартизирован (самое популярное- токовый сигнал 4-20 mA, сейчас все чаще поверх него встречается еще и HART).
Почему? Если бы я выбирал время полива то как раз бы выбрал вечер, ночь или раннее утро когда солнечная активность низка. Как известно, капли воды работают как линзы собирающие свет и могут попортить растения.
>Про дождь даже и говорить не приходится — таймер этот факт проигнорирует.
Вы тоже проигнорировали этот фактор? В чем тогда смысл забивать гвозди микроскопом? Я понимаю если бы вы при помощи навороченного контроллера проверили прогноз погоды и сэкономили воду и энергию.
>После запуска системы полива сразу стало видно, что растения отзываются на полив.Это выражается в качестве ягод.
Вот помидорам (кстати они тоже ягоды в ботаническом смысле) например нужен ограниченный полив, иначе они становятся водянистыми и бесфкусными.
Вообще, режим полива очень отличается для различных растений, и как правило нужно поливать не по расписанию а тогда когда влажность почвы достигла определенного значения. Датчики влажности почвы стоят копейки.
Принцип по которому контроллера непонятен, разве что вы рекламируете его.
Тут как раз всё просто — у меня нет ни одной капли воды на самих растениях, так как полив капельный, то есть корневой. И листовую подкормку я даю очень редко…
>Вы тоже проигнорировали этот фактор? В чем тогда смысл забивать гвозди микроскопом? Я понимаю если бы вы при помощи навороченного контроллера проверили прогноз погоды и сэкономили воду и энергию
У меня же датчик, смотрящий небо! Дождю предшествуют тучи — и поверьте, тут энергии падает очень и очень мало. Система просто не подаст команду на полив, и всё. Никакие сложности не нужны)))
>Вот помидорам (кстати они тоже ягоды в ботаническом смысле) например нужен ограниченный полив, иначе они становятся водянистыми и бесфкусными.
А я и не предлагаю помидоры резать в фруктово-ягодный салат)))) Для помидоров вообще отдельная история.
>Датчики влажности почвы стоят копейки.
Те датчики, которые вы имеете в виду, и работают не больше месяца.Причём выход из строя сопровождается жутко непредсказуемым поведением. Проходили такое… Вообще, нормальный датчик стоит 40 евро — так, для информации. Который будет работать годами…
>Принцип по которому контроллера непонятен, разве что вы рекламируете его.
Я не зарабатываю на контроллерах. Я экспериментатор и ярый натуралист)))
Вы вроде описываете поливное устройство общего назначения, или у вас заточено на ягоды определенного вида? Тогда смысл это городить…
>У меня же датчик, смотрящий небо! Дождю предшествуют тучи
Вот это совсем не обязательно. Бывают целые пасмурные недели без дождя. Опятьже сильно зависит от климата.
>Те датчики, которые вы имеете в виду, и работают не больше месяца
А их и нужно рассматривать как расходные материалы. И вообще все что установлено снаружи (если это не военная техника) имеет ограниченный срок службы, я даже водопроводный кран меняю раз в 2-3 года. Так что смысла вкладываться в дорогие датчики смысла не вижу.
Так собственно, когда не жарит солнце, и вода не так испаряется, и растения не кушают. И надо им совсем немного — в моих мерках это 220 литров воды на день. Всё правильно.
Устройство общего назначения — вот только для разных культур надо разные задания по поливу. И у меня есть блок малообъёмки — так там вообще подача воды производится импульсами длительностью от 200 до 900 мсек. Так что всё зависит от технологии. Контроллер для агропромышленности — на самом деле вещь очень серьёзная. Вот на этом малыше, который я шурупами прикрутил к подоконнику, может и работает здоровенная теплица — от микроклимата до полива и управления системой подготовки питательного раствора.
>А их и нужно рассматривать как расходные материалы.
Это можно делать, когда у вас их один или два. Тем более, что в домашних условиях такая поломка не повлечёт за собой катастрофические потери продукции. Когда поломка копеечного датчика приведёт к миллионным потерям, вы с удовольствием купите дорогущий и надёжный датчик. Я такое просто уже видел — у меня даже опытные образцы однажды разобрали))))
Так что и тут надо понимать, что ардуинные технологии — это игрушки. Я же показываю уже взрослое решение.
А насчёт китайской платы — она выполняет свои функции, почему бы и нет.Правда, отбраковка очень большая — больше 40 %. И именно поэтому сейчас в проекте своя плата))) Пробовали и именитых производителей плат — они очень хорошо собраны, а вот схемотехника хромает. Пришлось от них отказаться.
А теперь давайте поподробнее — что же не так в силовой части?
А вот что касается самопала — что же, у Вас есть возможность сделать намного лучше)))
в чем именно, если не секрет, проблемы проявлялись?
И проблема более редкая — простой непропай. Сборка видать ручная или на «утюге» в подвале…
Помогает прогрев феном под гелем.
Я так и не понял в чем будет принципиальное отличие в случае если вместо модуля STM будет установлен аналогичный модуль c ATMEGA применительно к поливу.
>А теперь давайте поподробнее — что же не так в силовой части?
Разводка и дизайн не соответствуют заявляенным параметрам как по силе тока 5A (сечение проводника недостаточное), так и по напряжению 250V (недостаточный зазор между проводниками, нету прорезей). К вашему устройству небезопасно подключать серьезную нагрузку в сети переменного тока 220V. Информация легко находится в гугле, на Гиктаймс эта тема обсуждалась неоднократно, можно легко найти. Вообще, ваша статья лучше для Гиктаймс, там вы бы получили гораздо больше просмотров и комментариев.
Тут надо обращать внимание на нюансы. Вы знаете, сколько каналов DMA я использую? Да, правильно, не знаете. А сколько каналов DMA в Atmega( мы сейчас говорим именно об эотй серии)? Это уже вопросы к вам. Для меня очень важна периферия — и её в STM32 очень и очень много. Если не ответил на вопрос — что же, на сайте ST Microelectronics вы можете найти все ответы.
>Информация легко находится в гугле, на Гиктаймс эта тема обсуждалась неоднократно, можно легко найти.
Гуглом пользоваться умею и меня пока там не забанили))) Вы так легко определяете толщину меди и ширину дорожек — давайте ка точно скажите мне ширину дорожек, тип материала платы и минимальный зазор. И каким лаком покрыта плата. Не знаете? Жаль.
А вы в курсе, что эту часть мы прогревали на 8.5 А и смотрели нагрев тепловизором? Тогда вопрос к вам — до какой температуры нагрелась дорожка при 25 С в комнате?
И вообще, остальные 6 выходов с открытым коллектором, так что вопрос управления мощной нагрузкой теряет актуальность.
Поверьте -я тоже умею задавать вопросы.
Точно не скажу но ширину дорожки примерно по фото можно определить в сравнении например с шагом отверстий на stm add-on плате (2.54 mm), стандартные значения толщины меди тоже известны. В общем подсчитайте сечение проводника и получившуюся плотность тока. Думаю что она превысит допустимые значения. Расстояние между дорожками тоже очевидно меньше допустимого для высокого напряжения. Вся информация доступна, надеюсь учтете в следующей версии платы. Кстати коммутация силовых цепей при помощи реле тоже не рекоммендуется, так на всякий случай вам сообщаю.
>И вообще, остальные 6 выходов с открытым коллектором, так что вопрос управления мощной нагрузкой теряет актуальность.
Вот тут я не понял снова. Выходы каких элементов вы используете для подключения мощной нагрузки? На фото таковых не вижу а схемы вы непривели. Заодно уж скажите какую нагрузку вы подключаете к этим элементам.
А жаль конечно. Поверьте, закон Ома знаем, проходили. Вот только не пойму, что вы мне хотите доказать?
Так как вы с ответом затрудняетесь, правильные ответы в студию!
При токе 8,5А(Ампер) через дорожки их температура была выше температуры платы на 22 градуса и не больше. Тут закона Ома уже будет недостаточно для понимания. Конечно, такое сечение будет подогреваться — но за счёт хорошего теплоотвода как самой платы, так и массивных клеммников и(!) подключенных к ним проводников очень даже хорошо удалялось. Вот и всё.Гоняли блок 6 часов.
Далее — к выходам с открытым коллектором чудесно подключаются внешние мощные реле, причём как контактного типа, так и бесконтактного. Как-то так — всё очень просто решается) Если не убедил — ну что же, тогда я тут бессилен…
У меня такой блок коммутирует клапан с током до 2 ампер -и пока всё нормально. И будет всё нормально.
Давайте все вопросы рассмотрим по порядку. Потому что немного сумбурно получается.
Охлаждение за счет подключенных к клеммам проводов — вы это серьезно? :)
Ну и про возможность пробоя вы умолчали, а это вопрос посерьезнее чем нагрев дорожек.
Насчет выходов с открытым коллектором и подключения реле: вы пытаетесь обсуждать схемотехнические решения не показав схемы? Мне трудно что-то сказать.
А охлаждение за счёт платы? Если учитывать все факторы то давайте учитывать. Потому что тут начинаете считать миллиметры уже)
Насчёт схемы — схема классическая, подключение реле к выходу с открытым коллектором. Если у вас есть вопросы — задавайте.А схему как образец дома быстро не накидаю…
Я вам предлагаю сделать ставку — через сколько установленный мною блок бабахнет и откажет по причине перегрева или короткого замыкания.Попробуйте стать провидцем) А я честно отпишусь, когда такое произойдёт.
http://electronix.ru/forum/lofiversion/index.php/t95040.html
>По теме — выглядит всё колхозно, конечно. Так оно долго не проработает.
Колхозно выглядит монтаж. Сам прибор очень живучий — что только не подавали ему на входа))) Я ведь специально вот так его поставил — мне интересно, как он выживет в таких условиях.А если не сгорит — то я его заставлю под водой поработать и ещё видео сниму))))
Не замеряли сколько клапан подребляет? Есть идея поколхозить кой чего, с питанием от батареи.
Интересно — у него постоянное потребление, или только пик при открытии, а в удержание меньше жрёт?
Следующее действующее лицо — это датчик освещённости. Он построен на основе микроконтроллера STM32F030 с использованием операционной системы реального времени.Для простого датчика RTOS??? Это как из пушки по воробьям стрелять.
Вы слово в слово( кроме «датчика») повторили ответ службы технической поддержки одной российской именитой компании, когда я им сообщил, что их модуль ввода — вывода в режиме modbus RTU требует тайм — аут между запросами аж в 500 мсек! Вот в этом случае воробей оказался Годзиллой)
А датчик — то не простой на самом деле. Он не просто производит преобразование физических величин, а ещё и производит их первичную обработку, причём довольно сложную. И при этом отвечает на запросы по шине в чётком соответствии со стандартом modbus RTU.
Конечно, на самом деле вопрос избыточно или нет применять ОСРВ для вроде бы простых применений будет стоять всегда. Для себя, как для разработчика, я сделал выбор.
Для простого проекта типа датчика достаточно псевдо-многозадачности. Передача данных и протокол реализуется внутри прерывания от порта. Опрос самого датчика и вычисления реализуются или в main(), или по прерыванию таймера с заданной периодичностью. Но тогда у прерывания таймера приоритет должен быть ниже прерывания от порта(что бы всегда принимать и отвечать), благо STM32 это позволяет.
В сложных проектах проще взять готовую RTOS, иначе в лучшем случае получится изобретение велосипеда.
В общем суть: каждое архитектурное решение хорошо под свою задачу. Можно гвозди в дерево пороховым пистолетом забивать, можно в бетон молотком. И если последнее тяжело, и никто не спорит, что это плохо, то первое худо-бедно работает. Вот только это не делает его хорошим решением.
Правильно будет проверить буфер на переполнение, потом в него запихать принятый символ, перезапустить аппаратный или виртуальный таймер тайм — аута, очистить флаги и быстренько свалить. А стек звать по тайм- ауту. Мы говорим кстати о modbus RTU, и если будете писать его реализацию в будущем — вспомните строки выше.
А если серьёзно — ОСРВ была выбрана не просто так. Провели тестирование — взяли 4 модуля, вместо датчиков подсунули константы, и запустили тест опроса мастером с примерно 500 000 транзакций. Мастер работал с минимальными тайм-аутами.
А теперь вопрос к Вам, как к знатоку того, что делается внутри — какие величины ошибок в показаниях интеграторов были получены? И как это можно объяснить?
Прошивка без ОСРВ применена в батарейном таймере полива — там операционка точно будет лишней.
У меня, как у «программиста», возник вопрос — то есть вы только что предложили каждый раз по прилёту символа дёргать стек протокола в прерывании с высоким приоритетом?Я понятия не имею, что там у вас за "cтек modbus" и что это за протокол. И уж тем более не понимаю, зачем "дергать стек". Но еще большее понятия я не имею, почему вы мне все это приписали.
Правильно будет проверить буфер на переполнение, потом в него запихать принятый символ, перезапустить аппаратный или виртуальный таймер тайм — аута, очистить флаги и быстренько свалить. А стек звать по тайм- ауту. Мы говорим кстати о modbus RTU, и если будете писать его реализацию в будущем — вспомните строки выше.Ну так и в чем проблема? Приняли байт в прерывании, сунули в буфер, увеличили счетчик приема, запустили(рестартовали) таймер — по прерыванию таймера выгребли пакет, проверили CRC(не сойдется если байт придет во время таймаута), если сходится — сделали что просят и выслали ответку. И зачем тут RTOS?
Именно так реализовал загрузчик на TI TMS320, только чуть проще: начало пакета и конец всегда заранее известны по framing bytes, поэтому таймер и прерывание лишнее.
А если серьёзно — ОСРВ была выбрана не просто так. Провели тестирование — взяли 4 модуля, вместо датчиков подсунули константы, и запустили тест опроса мастером с примерно 500 000 транзакций. Мастер работал с минимальными тайм-аутами.Провели тестирование модулей конкурентов написанных неизвестно где и не известно как?
В одном случае криворукие программисты не могут без RTOS обойтись, в другом еще более криворукие — ни про RTOS не знают, ни писать хорошо не умеют.
Я смотрю вы загадки любите. Вот вам одна:
Полосы — это муар, на самом деле фон синий.
Использован STM32F103C8T6. Вывод графики на qVGA(320x240) ILI9341 экран. Рендерится все на 14 FPS, что очень близко(поток графических данных 2.05 MB/s) к теоретическому максимальному пределу пропускной способности SPI(ST гарантирует работу на 18 МГц, что дает пропускную способность 2.16 MB/s). Про такие мелочи как проигрывание музыки в фоне и реагирование на касание объектов на экране даже не говорю.
А теперь самое интересное: картинки динамичные, с персонажами и прозрачностью. ОЗУ в чипе — 20 Кб, а для одного экрана надо 150 Кб. Как это сделано?
И да, тут использована RTOS — вот это тот пример, где она уместна.
Я вообще-то описал протокол, для которого применяется такой подход.А вы мне за уши притянули загрузчик, который не обсуждается тут вообще.
>Провели тестирование модулей конкурентов написанных неизвестно где и не известно как?
Я вообще-то так тестирую свои разработки. И всем советую — чем больше тестов проведёте, тем меньше будет проблем. Чужие мне тестировать и не надо. Я же не занимаюсь сертификацией)))
>Я смотрю вы загадки любите. Вот вам одна:
Ваши загадки мне просто не интересны. Без обид — не хочу своё время тратить впустую на Марио.
Вот ссылка — там и почитайте https://geektimes.ru/post/285570/
А когда мне потребовалась доп. память для STM32, я просто на SPI2 прикрутил микруху 23K256 — и всё. Летает как самолёт.
Я вообще-то описал протокол, для которого применяется такой подход.А вы мне за уши притянули загрузчик, который не обсуждается тут вообще.Перед загрузчиком был вопрос. Где ответ???
Я вообще-то так тестирую свои разработки. И всем советую — чем больше тестов проведёте, тем меньше будет проблем. Чужие мне тестировать и не надо. Я же не занимаюсь сертификацией)))Если человек не может реализовать два таска(коммуникация и опрос датчика) без RTOS…
Вот ссылка — там и почитайте https://geektimes.ru/post/285570/Делать ускоритель на STM32 для Arduino??? Хочешь быть программистом — от Arduino надо держаться подальше. В крайнем случае использовать только железо, а для программирования использовать Atmel Studio.
И прозрачности в том проекте нет, и тайлы фиксированные, и вывести строчку нет возможности… в общем все криво и сыро.
А когда мне потребовалась доп. память для STM32, я просто на SPI2 прикрутил микруху 23K256 — и всё. Летает как самолёт.В данном случае не взлетит. Что бы положить фреймбуфер во внешнюю SPI ОЗУ надо вначале туда картинку загнать(1), потом её оттуда считать(2), потом её загнать в экран(3). И даже если экран с ОЗУ разнести на разные SPI и использовать DMA в лучшем случае(2 и 3 делать параллельно) получится падение пропускной способности в два раза от максимума. А если еще делать с прозрачностью…
В общем удачи вам в начинаниях. Хоть криво-косо, но работает же. Ведь это главное, так же?
Вопрос риторический, ответа не жду.
Вообще не понимаю, зачем было изобретать велосипед если заменой пары конденсаторов(и возможно кварца) можно было решить проблему. Другое дело когда выводов в 48-мипиновом корпусе оказывается мало. Тут без "велосипеда" не обойтись. Вот мой недавно получаенный:
Плата длинная, но, как видно по фотке, на 5 мм можно укоротить просто отпилив кусок и используя порт для программирования в торце.
>Вообще не понимаю, зачем было изобретать велосипед если заменой пары конденсаторов(и возможно кварца) можно было решить проблему.
Опять же, я использую сейчас STM32F103CBT6, которая не устанавливается на китайцах. «Сдувать» старый чип и ставить новый — увольте, не мой метод. Поэтому свой дизайн, своя плата. Гарантия того, что всё будет так работать, как я хочу на тех компонентах, которые я хочу, а не которые поставил мне дядюшка Ляо в подвале. И заводская сборка. Ценник конечно получается выше — но это расплата за то, что я и мои коллеги будут спокойно спать по ночам. И клиенты будут уверены и довольны, что купили у нас, а не у других.
Кстати, открою еще один секрет: в C8T6 на самом деле 128 кБ ПЗУ. Все программируется и все работает(на видео выше как раз так запущено — не влазила программа после добавления всех картинок в 64 кБ). Да, ST не гарантирует их работоспособность и наверное не тестирует на производстве, но… но китайцы выпкускают пачками ST-Link'и на STM32F101 в котором по документации нет USB. А они работают. И даже прошивка утилитой от ST у меня обновилась и он не умер.
Это не секрет совершенно. Как и разгон умножителями ядра. Но опять же повторюсь — я не собираюсь применять решений, которые являются отхождением от технической документации производителя. И никому не рекомендую — потому что катастрофические отказы проявляются в самый неподходящий момент. Репутация качественного производителя зарабатывается годами, а вот потерять очень легко.
А что касается китайцев — то у них процветает перемаркировка чипов, сам несколько раз с этим сталкивался. Поэтому советую всем, кто берёт у них, всегда тщательно проверять, что они купили.
Использование устройства на базе STM32 в системе полива для открытого грунта