Длительная работа Arduino UNO

Тема в разделе "Arduino & Shields", создана пользователем Papipa, 26 янв 2018.

Метки:
  1. Papipa

    Papipa Гик

    Всем привет!

    Создал "приборчик" на Arduino UNO R3 для проверки наличия фаз в трехфазной электросети. В случае отключения хотя бы одной из фаз - Дуня через подключенный GSM модуль шлёт SMS оповещение и т.п.

    Главный вопрос - как покажет себя система в разрезе длительной работы, какие могут вылезти баги потенциально? Все что нашел - ограниченность работы таймера Ардуино, на 24 или 27 сутки он достигнет своего максимльного значения - этот момент поправил, каждые 10 суток таймер программно сбрасывается.

    Но, возможно, есть еще какие-то подводные камни? Прошу поделиться опытом!

    Итого, исходно - есть Дуня, к ней подключен GSM модуль. Дуня через реле сканит фазы, заодно и сканит GSM модуль по запрос "АТ", ожидая ответ "ОК". Таймер Дуни сбрасывается каждые 10 суток. Ну и каждые 3 суток Дуня сообщает состояние фаз - проверка на то, что она не подвисла. Всё, дальше только обработка сигналов реле с фаз осталась программная и отправка SMS в случае "аварии" - наступление события отсутствия фаз(ы).
     
  2. vasdor

    vasdor Нерд

    Спящий режим?
     
  3. SergeiL

    SergeiL Оракул Модератор

    Таймер скидывать не обязательно. Если правильно с ним работать, проблем из за переполнения не будет.

    Все зависит от Вашего кода. Если все грамотно написано - будет работать без сбоев.

    Перейдя с микроконтроллеров на Ардуино, у меня это только хобби, сам несколько напрягался по поводу надежности. Но как показала практика, как родное железо, так и родные ардуиновские библиотеки - особо не сбоят. (Мониторю свои платы удаленно, зависаний или перезапусков не было ни одного, на ESP были только переподключения по MQTT и Wi-Fi)

    Ну а периферия, типа модема, тоже имеет прошивку, и в ней могут быть и баги и недоработки.

    Поэтому, в случае, если устройство выполняет какую-то важную задачу, а не просто мигает светодиодом, а особенно, если работает где-то не рядом с Вами, по-хорошему, нужно иметь возможность аппаратного восстановления работоспособности. Возможность аппаратного сброса или отключения питания.
     
    Последнее редактирование: 26 янв 2018
  4. Papipa

    Papipa Гик

    Хм... А это как? Подойти, выключить из розетки? Кстати Дуня запитана через ИБП - если ликтричество вырубят, то Дуня и не заметит ))) Но отошлет SMS, что фаз(ы) нету.

    Да, с Дуни выведен светодиод на монтажный короб, и этот светодиод моргает дважды каждые 3 сек - нормальный режим работы значит. То бишь визуально можно смотреть, работает ли Дуня. Таким образом, если не моргает или по прошествию очередных 3 суток не пришло SMS - значит Дуня висит, и тут да - жесткий ресет кнопкой на Дуне, а еще лучше выключение из розетки блока питания, кратковременно. )
     
  5. Питать через нормально разомкнутое реле. Ток идет, подали с пина на реле, реле закрылось. Так как у дуины ток пропал, она выключилась и с пина ничего не идет и реле открывается. Дуина запускается
     
  6. b707

    b707 Гуру

    Вместо всей этой ерунды просто настройте на Дуне ватчдог - будет сама ресетится при зависании Всего-то три строчки в программе.
     
  7. SergeiL

    SergeiL Оракул Модератор

    Ну, встроенный WD, не всегда восстанавливает работу устройства в целом.
    Процессор то перезапустится, а периферия как не отвечала, так и не отвечает. :(
     
  8. b707

    b707 Гуру

    Такую периферию, которая может зависать, типа ГСМ-модема -надо вешать через мосфет и ресетить с ардуины при отсуствии ответа. В любом случае. "ручное выдергивание из розетки" - это не метод для автоматического девайса :)
     
  9. SergeiL

    SergeiL Оракул Модератор

    Я ставил внешний WatchDog, на него заводил сигнал от Ардуино, который прыгает 1/0/1/0. Если WatchDog не видит изменений на входе, он либо подает аппаратный ресет на все, включая периферию, либо на несколько секунд включает нормально замкнутое реле, через которое подается питание на устройство, и тем самым отключает на несколько секунд питание устройства.
    С ардуинами пока не было обнаружено случаев срабатываний, да и зависаний тоже.
    Но теоретически возможность зависаний есть.
     
  10. SergeiL

    SergeiL Оракул Модератор

    В моем случае это были платы Leonardo ETH. Если посмотрите схему, в них отсутствует возможность аппаратного сброса W5500. В момент отладки ( в процессе загрузки ) бывали случаи, когда сам процессор работал, а W5500 не отвечал. При этом помогал только аппаратный сброс. Дабы исключить эту теоретическую возможность, был сделан внешний WD на AtTiny13.
    Не нашел WD с максимальным периодом до сброса, после прекращения импульсов, 20-30 секунд.
    На период загрузки кода через бутлоадер , отладки и т.п.
     
  11. b707

    b707 Гуру

    Ватчдог может быть запущен и остановлен в любом месте программы, так что на "период загрузки, отладки и тд" ватчдог можно просто выключить, а включить уже в лупе - хоть через 30 секунд. хлть через час после запуска.
     
  12. SergeiL

    SergeiL Оракул Модератор

    Внешний??? Ещё один пин использовать?:)
     
  13. b707

    b707 Гуру

    Внутренний. Я думал вы про внутренний спрашивали.
    А внешний в чем проблема - вы ж в нем любой период можете выставить, и 30 сек. и больше
     
  14. SergeiL

    SergeiL Оракул Модератор

    В случае AtTiny13 - да
    А готовых, без обвязки, на 20-30 сек я не нашел.
    В основном все в районе 1.6 секунды.
     
  15. s1984i

    s1984i Нерд

    uno и sim 900 уже как 3 месяца работают без перерыва. пока не было зависанй