Watchdog мне в помощь
- Войдите на сайт для отправки комментариев
Сб, 12/03/2016 - 23:34
Очень нужна помощь с функцией перезагрузки в arduino. Начну сначала. Мне собрали автоматику в инкубатор на базе ардуино уно, но что то пошло не так и платформа начала зависать, не отключился нагрев и яйца в инкубаторе нагрелись до 50 градусов, яйца пришлось выкинуть. Так вот, в нете нарыл информацию про watchdog и думаю что он должен мне помочь, т.к. эти зависания продолжаются. В программировании я не бум бум и не знаю куда вставить код от watchdog, очень нужна помощь, исходный код свой попробую сюда выложить.
забей, пожалуйста, [watchdog] в форму поиска форума - верхний правый угол.
Ну, если Вам нужен кода для WatchDog, то в разделе "Ищу исполнителя" кто-нибудь сделает, обратитесть.
Только очень не советую. Вы хотите спрятать проблему, а не решить её (голову в песок запихать). Ни с того ни с сего ничего не зависает, так что я бы на Вашем емсте попытался испраить код программы, а не маскировать её зависания WatchDog'ом.
В начале вставить:
после строки 035 (внутри setup):
после строки 060 (внутри loop):
Вот видео познавательное, посмотри. Рекомендую запомнить тот момент, когда главные герои просят у папы машину.
Спасибо за подсказку, вообщем все сделал как написано, но теперь перезагрузка происходит каждые 2 сек, а не во время зависания.
Т.е. как я понял у меня не хватает строки delay(9000)?
delay() у тебя стоит в строках 126 и 133, а собака настроена на 2 сек. Пока delay() 9 сек. ничего не делает, собака-то продолжает считать...
Во первых. И это важно. Watchdog это третий рубеж обороны. Первый - правильная схематика, хороший контакт, качественное питание. Второй - грамотная программа и только третий - сторожевой пес. Пес не панацея от кривых рук (железо) и неясной головы (софт)
внимание уделить нужно первым двум
а watchdog делается проще простого. Сначала скорее всего стоит заменить загрузчик, прошить optiboot. 90 на 10, что ваш текущий загрузчик не заработает с watchdog
Дальше:
#include <avr/wd.h>
В setup запускаем watchdog, а в loop делаем wd_reset так часто, чтобы в штатной ситуации собака не перезапускала ардуину
axill прав, тащемта
Но хрен знает чего там ловить без приборов. Так то скетч достаточно чист. Конечно, неясно зачем 9179 (10 сек минус длительность цикла, чтобы опрашивать точно раз в 10 с?), алсо мне дико не нравится if(isnan(humidity)) return; - куда return, не в наружу ли цикла? Тогда дуина ничего не делает, потом проверяет влажность - там isnan и снова ничего не делать в цикле. Вот и повесились (на самом деле в этом месте не повиснет, а будет читать из dht и больше ничего не делать). Словом, перебрать придётся весь алгоритм.
У меня Arduino Uno, на поддержку собаки проверил по этой ссылке https://geektimes.ru/post/255800/
В контактах проблемы быть не должно, но вот в нашем частном секторе частые скачки напряжения, может ли это приводить к зависанию?
И еще дисплей 16х2 после непродолжительного времени работы меняет все надписи на иероглифы, причем может почти сразу поменять или через час. Это не качественный дисплей или что то другое?
Если контакты не вызывают сомнений, то следующим я бы проверял питание.
если есть возможность - протестируйте устройство на зависания в квартире где более чистое питание.
Расскажите чем питаете, может что то порекомендую
иероглифы могут быть и из за помех по питанию и из за брака самого дисплея, но скорее первое чем второе
кстати. Со всеми нагревателями у которых есть возможность при перегреве угрожать можаром или еще какими повреждениями надо ставить независимую механическую защиту. Это термостат с нормально замкнутыми контактами. Его вставить в разрыв цепи питания нагревателя. Яйца не спасет, но от пожара убережет. Если конечно нагреватель умеет сильно разогреваться
Нагреватель лампочка на 40 ватт, питаю от адаптера на 9 вольт, выглядит как зарядка от телефона. К сожалению у меня ни где нет напряжения лучше, стабилизировать напряжение нечем. Из скетча я убрал регулировку влажности, оставил только измерение, дисплей стал работать дольше, не знаю почему.
Параллельно питанию в непосредственной близости от экрана 100 мкФ электролит и 0.022-0.1 мкФ керамику, мб поможет.
Адаптер испульсный? Можно понять если разобрать
импульсные очень часто отвратительного качества и если в хорошей сети еще худо бедно могут работать, то при плохом питании без замеров можно лишь гадать что там на выходе
в вашем случае я бы рекомендовал классическую схему питания с обычным трансформатором, диодным мостом, снлаживающими конденсаторами и линейным регулятором типа 7805
Если трансформатора нет и найти не возможно то найти зарядку на 12-24в, после нее поставить хороший LC фильтр и опять же конденсаторы и линейный стабилизатор на 5в, встроенный регулятор ардуины не использовать
кроме того может помочь заземление минуса питания (GND). Если есть нормальное заземление, заведите его на GND ардуины
А если зарядку от ноута?
стабилизировать напряжение нечем.
Да, возьмите подобную штуковину, наверняка у Вас или у знакомых валяются в старых запылённых корпусах (или купите, на худой конец).
Будет Вам вполне достойное стабилизированное питаине.
Ну, можно ещё и UPS присобачить, у меня вон на цепи питания газового котла стоит такая дура с четырьмя аккумуляторами - может киловат в течение часов шести поддерживать. Могу найти ссылку, но их навалом разных.
Можно зарядку от ноута. Посмотрите какое напряжение на выходе, обычно 19в
опять же внутренний стабилизатор ардуино не использовать, он плохо тепло отводит. Поставить внешний 7805 с радиатором. Предварительно посчитать потребление всей схемой и проверить по расчетам, что 7805 потянет
можно конечно поставить понижающий dcdc но только чисто его я бы не рекомендовал, после него больше пульсаций и возможно помех. Но как вариант использовать dc-dc с понижением до 9-12в и дальше использовать внешний 7805 или даже встроенный. В этом случае тепловыделение будет меньше
качество ноутбучных блоков питания как правило на порядок лучше мобильных зарядок
Да на БП от ноута 19В, не сгорит ли моя плата?:-) УПС тоже есть, но сдох акум. Сейчас ардуина начала выключается сама, работает около часа двух, потом отключается и минуту через 5-10 включается, может это перегрев?
Да на БП от ноута 19В, не сгорит ли моя плата?:-) УПС тоже есть, но сдох акум. Сейчас ардуина начала выключается сама, работает около часа двух, потом отключается и минуту через 5-10 включается, может это перегрев?
Может и перегрев. Трогали? Там предельное напряжение завлено 20, так что может и поплохеть ей, если долго держать.
Я же Вам говорю, возьмите компьютерный БП - там и и 5В, и 12, и 3,3. Все стабилизированно. Нагрузки выдерживает большие. В чём проблема? Не верю, что у Вас или у Ваших знакомых нет. А если даже и нет - цена впроса меньше тысячи рублей. Только обязательно при выборе смотрите, чтобы была защита от КЗ (у того, что я давал ссылку - есть).
Нашел БП от Сеги:-) 9В 200 мА рабочий, можно его?
Не знаю, кто такая Сега. А 200мА Вам на всё хватает? Вы считали?
Да на БП от ноута 19В, не сгорит ли моя плата?:-) УПС тоже есть, но сдох акум. Сейчас ардуина начала выключается сама, работает около часа двух, потом отключается и минуту через 5-10 включается, может это перегрев?
стабилизатор на плате ардуино по напряжению расчитан на 35в, но напряжение здесь вторично, более важна рассеиваемая мощность, она считается как (19-5) умноженное на ток потребления. Максимальная мощность для стабилизатора ардуины не велика, поэтому я писал про внешний 7805 с радиатором
DHT... Вы это серьезно? Ну э-это же не серьезно!
Вышеприведенное при "наиудачнейшем расположении звезд" даст процентов 30 - 40 вывода. Суммируя все затраты... однозначно покупать двухнедельных цыплят в количестве 100 шт. - дешевле.
Есть ключевая фраза: "Автоматика для простого умного инкубатора".
Прикольненько так то получается:) :
Может и еще где чего есть, особо не вглядывался, так только, на вскидку. Проверяйте код весь.
конкретно этот кусок норм, там разница в tzad и Tzad, другой вопрос что считается тут моветоном переменные с большой буквы:)
Ну не знаю, насколько "норм" вычитать "количество оборотов в час" из "задержки в миллисекундах".
Хотя, недавно тут один один орёл доказывал, что герцы можно с секундами складывать, правда так и пояснил в каких попугаях результат получается :)
где тут кол-во оборотов?
только от миллисекунд к секундам не перешел, а так вроде одинаковые единицы
Виноват, с прямым углом (со строкой 19 оригинального кода) перепутал. Названия переменных почти идентичны :) тоже тот ещё стиль.
тоже так называю для быстроты:) а что бы читабельнее было "ctr+h":)
По поводу выводка, автоматика на стадии доработки, режим и инкубации подглядел на одном сайте, это не значит что они такими и останутся, буду подбирать опытным путем. Тему про умный инкубатор читал, но так как не имею познаний в электронике и программировании воспроизвести что то похожее для меня проблематично. Схему мне собирал отец и программу писал. Все что мы задумали работает, лоток поворачивает, температуру и влажность держит. Но проблема с зависанием ни куда не уходит, я думал что бы не останавливать инкубатор смогу вписать воч дога сам, но не получилось. Изображение на экране через некоторое время сменяется на непонятные символы. Вообщем инкубатор отключил, яйца выкинул(. Андуринку отдал отцу на доработку. Буду осваивать тоже, программирование затягивает). Может у кого есть мысли по поводу зависания и изображения на экране? Сразу оговорюсь, схема собрана качественно, ни к контактам, ни к питанию притензий быть не может. Буду рад любой помощи.
Может у кого есть мысли по поводу зависания и изображения на экране? Сразу оговорюсь, схема собрана качественно, ни к контактам, ни к питанию притензий быть не может. Буду рад любой помощи.
Чудес не бывает - 99% помеха по цепям питания.
Один раз поймал такой глюк через китайский безотмывочный флюс. При определенной температуре становился электропроводным и вешал I2C шину вместе с контроллером. Правда ресет там не помогал, пока не остынет.
Смотрите разводку силовых цепей, последовательно вводите их в эксплуатацию, пока четко не локализуете глючную линию. Дальше уже решать, как ее развязать-развести с контроллером.
Для исключения ошибок связанных с сельским электропитанием, временно запустить питание слаботочной части от старого а/м аккумулятора, через внешний стабилизатор.
Датчик DHT выкинул бы сразу. Посмотрите на этот. Есть ли они там сейчас не знаю. Но это было самое дешевое, что нашел в РФ.
да мне тоже так кажется, что проблема в помехах
http://easyelectronics.ru/razvedenie-pitaniya.html
http://caxapa.ru/lib/emc_immunity.html
вот ссылки, я тоже начинающий и они мне многое объяснили:)
Это лишь кажется... На DHT11 надеяться нельзя. Это цыган. Максимум чему можно верить, это повышение или понижение влажности. Нужен Сенсирион. Он дорого стоит у нас. Но у китайцев сносно. Но без трат получить результат невозможно! Мы же хотим повторить природный процесс! Наседка использует то же ПИД регулятор. Переворачивая, перекладывая яйца. К концу срока насиживания уменьшая нагрев, и увеличивая влажность. Почитай на фермер ру про потерю влажности при инкубации.
Далее. Всю электронику вы с отцом сделали, так что и воспроизводить то вам там нечего. Поизучай код Романа. Там все понятно. И как экран и вачдог работает. Кстати, он работает из коробки только на УНО. Остальным ардуинам перешивать загрузчик. Ключевое слово Оптибут. Регулятор влажности, вентиляция. Ты думаешь, что это навороты?! Э-ээ, не-ет! Он, Роман, практик. Я использовал его код. 100% результат. А там еще воздухообмен очень важен! Нужен приток свежего воздуха. Значит нужно увеличивать объем инкубатора. А если попытаться в малом объеме, то значительные скачки температуры на коде без ПИД регулятора неизбежны. А в конце срока инкубации нужно резко и очень высоко поднять влажность, до 80-85 !!! %. А это не так просто. Там температура скакать начинает как... А это решающий момент! В конце концов, то что вы с отцом делаете должно превзойти эти пенопластовые упаковочные коробочки из магазина, и получилось у вас или нет покажет результат. Выводимость пенопласта максимум 60%. А там нет ничего! Все тупо как детская игрушка на проводах!
А по поводу 1602... Китайские иероглифы... У меня эта лабуда включается в октябре и выключается в апреле. Питается от компового БП. Длина проводов питания - 50см. Но есть длинные линии на DS18b20... Глюки от иероглифов до полного стирания экрана. И по ссылкам выше похоже на истину, что кажущиеся простому электрику :) правильные соединения на деле грубые ошибки!
Во первых. И это важно. Watchdog это третий рубеж обороны. Первый - правильная схематика, хороший контакт, качественное питание. Второй - грамотная программа и только третий - сторожевой пес. Пес не панацея от кривых рук (железо) и неясной головы (софт)
внимание уделить нужно первым двум
а watchdog делается проще простого. Сначала скорее всего стоит заменить загрузчик, прошить optiboot. 90 на 10, что ваш текущий загрузчик не заработает с watchdog
Дальше:
#include <avr/wd.h>
В setup запускаем watchdog, а в loop делаем wd_reset так часто, чтобы в штатной ситуации собака не перезапускала ардуину
До сих пор не использовал ВАТЧДОГ.Но в одном устройстве за год работы раза 3-4 проявились зависания.Скорее всего из-за помехи по питанию. Вопрос: ВАТЧДОГ - панацея от ошибок прграмных ? Или может сбросить мк и при зависании при помехе по питанию? Или и вачдог в ступоре от помех по питанию?
Вотчдог не панацея, это один из хороших инструментов в дополнение к качественному питанию и хорошо отлаженной программе, а не вместо
в определенных рамках защитит и от программных ошибок и от сбоев по питанию
Или и вачдог в ступоре от помех по питанию?
сам задумайся, если ядро контроллера превратилось в кирпич, то что?