Всем привет! Создал "приборчик" на Arduino UNO R3 для проверки наличия фаз в трехфазной электросети. В случае отключения хотя бы одной из фаз - Дуня через подключенный GSM модуль шлёт SMS оповещение и т.п. Главный вопрос - как покажет себя система в разрезе длительной работы, какие могут вылезти баги потенциально? Все что нашел - ограниченность работы таймера Ардуино, на 24 или 27 сутки он достигнет своего максимльного значения - этот момент поправил, каждые 10 суток таймер программно сбрасывается. Но, возможно, есть еще какие-то подводные камни? Прошу поделиться опытом! Итого, исходно - есть Дуня, к ней подключен GSM модуль. Дуня через реле сканит фазы, заодно и сканит GSM модуль по запрос "АТ", ожидая ответ "ОК". Таймер Дуни сбрасывается каждые 10 суток. Ну и каждые 3 суток Дуня сообщает состояние фаз - проверка на то, что она не подвисла. Всё, дальше только обработка сигналов реле с фаз осталась программная и отправка SMS в случае "аварии" - наступление события отсутствия фаз(ы).
Таймер скидывать не обязательно. Если правильно с ним работать, проблем из за переполнения не будет. Все зависит от Вашего кода. Если все грамотно написано - будет работать без сбоев. Перейдя с микроконтроллеров на Ардуино, у меня это только хобби, сам несколько напрягался по поводу надежности. Но как показала практика, как родное железо, так и родные ардуиновские библиотеки - особо не сбоят. (Мониторю свои платы удаленно, зависаний или перезапусков не было ни одного, на ESP были только переподключения по MQTT и Wi-Fi) Ну а периферия, типа модема, тоже имеет прошивку, и в ней могут быть и баги и недоработки. Поэтому, в случае, если устройство выполняет какую-то важную задачу, а не просто мигает светодиодом, а особенно, если работает где-то не рядом с Вами, по-хорошему, нужно иметь возможность аппаратного восстановления работоспособности. Возможность аппаратного сброса или отключения питания.
Хм... А это как? Подойти, выключить из розетки? Кстати Дуня запитана через ИБП - если ликтричество вырубят, то Дуня и не заметит ))) Но отошлет SMS, что фаз(ы) нету. Да, с Дуни выведен светодиод на монтажный короб, и этот светодиод моргает дважды каждые 3 сек - нормальный режим работы значит. То бишь визуально можно смотреть, работает ли Дуня. Таким образом, если не моргает или по прошествию очередных 3 суток не пришло SMS - значит Дуня висит, и тут да - жесткий ресет кнопкой на Дуне, а еще лучше выключение из розетки блока питания, кратковременно. )
Питать через нормально разомкнутое реле. Ток идет, подали с пина на реле, реле закрылось. Так как у дуины ток пропал, она выключилась и с пина ничего не идет и реле открывается. Дуина запускается
Вместо всей этой ерунды просто настройте на Дуне ватчдог - будет сама ресетится при зависании Всего-то три строчки в программе.
Ну, встроенный WD, не всегда восстанавливает работу устройства в целом. Процессор то перезапустится, а периферия как не отвечала, так и не отвечает.
Такую периферию, которая может зависать, типа ГСМ-модема -надо вешать через мосфет и ресетить с ардуины при отсуствии ответа. В любом случае. "ручное выдергивание из розетки" - это не метод для автоматического девайса
Я ставил внешний WatchDog, на него заводил сигнал от Ардуино, который прыгает 1/0/1/0. Если WatchDog не видит изменений на входе, он либо подает аппаратный ресет на все, включая периферию, либо на несколько секунд включает нормально замкнутое реле, через которое подается питание на устройство, и тем самым отключает на несколько секунд питание устройства. С ардуинами пока не было обнаружено случаев срабатываний, да и зависаний тоже. Но теоретически возможность зависаний есть.
В моем случае это были платы Leonardo ETH. Если посмотрите схему, в них отсутствует возможность аппаратного сброса W5500. В момент отладки ( в процессе загрузки ) бывали случаи, когда сам процессор работал, а W5500 не отвечал. При этом помогал только аппаратный сброс. Дабы исключить эту теоретическую возможность, был сделан внешний WD на AtTiny13. Не нашел WD с максимальным периодом до сброса, после прекращения импульсов, 20-30 секунд. На период загрузки кода через бутлоадер , отладки и т.п.
Ватчдог может быть запущен и остановлен в любом месте программы, так что на "период загрузки, отладки и тд" ватчдог можно просто выключить, а включить уже в лупе - хоть через 30 секунд. хлть через час после запуска.
Внутренний. Я думал вы про внутренний спрашивали. А внешний в чем проблема - вы ж в нем любой период можете выставить, и 30 сек. и больше
В случае AtTiny13 - да А готовых, без обвязки, на 20-30 сек я не нашел. В основном все в районе 1.6 секунды.