Страница 1 из 7
Сторожевой таймер ( WDT )
Добавлено: 11.11.2015{, 11:26}
kipiaxxx
Для ответственных применений устройств на МК совершенно необходим сторожевой таймер ( WDT ). Интересует схема такого универсального, простого и надёжного устройства применительно к Arduino. Просьба поделиться личным опытом. Мой поиск пока приемлемого результата не дал.
Сторожевой таймер ( WDT )
Добавлено: 06.12.2015{, 21:40}
shtirlitz
То есть схема? Watchdog есть пряпо в кристалле, бери и пользуйся.
Сторожевой таймер ( WDT )
Добавлено: 07.12.2015{, 06:15}
kipiaxxx
1. В статье "Arduino watchdog или автоматический RESET в случае зависания":
http://geektimes.ru/post/255800/
убедительно объясняется, что без
плясок с бубном перепрошивки загрузчика (bootloader) Arduino встроенный WDT может работать некорректно.
2. Кроме того, для своей работы встроенный Watchdog требует дефицитных аппаратных ресурсов чипа. Цитирую
Настройки проекта:
Защита от зависания (При использовании исключает возможность использования скоростного счетчика и и выходов 3 и 11 в режиме ШИМ)
Сторожевой таймер ( WDT )
Добавлено: 30.12.2015{, 09:38}
Велко
Реле времени с постоянным пингом от контроллера для обновления таймера не рассматривалось?
Сторожевой таймер ( WDT )
Добавлено: 30.12.2015{, 12:04}
kipiaxxx
Если под словом пинг Вы подразумеваете периодический сброс Ардуиной внешнего таймера, то - да.
Удовлетвоительное схемное решение на базе 555-таймера было найдено здесь:
Arduino Long Time Hardware Watchdog
http://www.playwitharduino.com/?p=291
Недостаток этой схемы - использование выхода Arduino с Z-состоянием.
А для FLProg - это пока невозможно.
Эту схему я модифицировал с целью большей универсализации. Теперь её можно применять не только с Arduino, но и другими МК, не меняя их прошивки. Сделал 3 экз. и успешно их эксплуатирую.
В процессе поиска нашёл интересное обсуждение:
Сбои в работе МК - делимся опытом, знаниями. Проблемы с наводками и помехами, решения
https://www.terraelectronica.ru/board/i ... c=385&st=0
Сделал по предложенной здесь простой схеме (переключающая кнопка и два высоковольтных конденсатора) эффективный генератор импульсных помех. Полезно таким "шоккером" тестировать и свои поделки, и пром. изделия.
Вопрос по WDT для себя я решил. Спасибо откликнувшимся. Тему можно закрыть.
Сторожевой таймер ( WDT )
Добавлено: 10.01.2016{, 15:54}
Evgesha
Здраствуйте. Извените.я что недопонял. Опишите пожалуйста решение поподробнее. Спасибо.
Добавлено (10.01.2016, 15:54)
---------------------------------------------
Здраствуйте. Извените.я что недопонял. Опишите пожалуйста решение поподробнее. Спасибо.
Сторожевой таймер ( WDT )
Добавлено: 11.01.2016{, 10:29}
support
В FLProg реализован собственный сторожевой таймер. В настройках проекта установить галочку "Защита от зависаний"., и выставить время срабатывания таймера. Правда при этом возникают некоторые ограничения по использованию выходов ШИМ
Сторожевой таймер ( WDT )
Добавлено: 11.01.2016{, 16:00}
kipiaxxx
Evgesha писал(а):Опишите пожалуйста решение поподробнее.
Ниже приводится доработанная схема. Она выполнена в программе схемотехнического моделирования
TINA-TI, которую я рекомендую для начинающих. Подробнее о ней читаем в журнале "Радиоежегодник", выпуск 32. TINA-TI по-русски:
http://www.rlocman.ru/book/book.html?di=151461
По сравнению с исходной схемой из
http://www.playwitharduino.com/?p=291 добавлен только транзистор Т1 и дифференцирующая цепочка С2,R4. Это типовое схемное решение для внешних WDT.
Пояснения к работе схемы.
Генератор импульсов VG1 имитирует периодические "контрольные" импульсы от Arduino. Ключом SW1 имитируется зависание МК. Пока SW1 замкнут "контрольные" импульсы пройдя через диф. цепь будут открывать транзистор Т1, который, в свою очередь, будет периодически разряжать времязадающий конденсатор С1. Это нормальная работа микроконтроллера Arduino.
Ситуация с "зависанием" программы МК имитируется размыканием ключа SW1. При этом "контрольные" импульсы от Arduino не поступают на транзистор Т1. Конденсатор С1 током через резисторы R1 и R2 заряжается до верхнего порога срабатывания микросхемы 555-таймера U1, 555-таймер начинает работать в режиме генератора импульсов с большим периодом следования. Выход OUT таймера U1 через диод D1 подключён к цепи сброса R5,С5 (RES) Arduino. Короткие (100-150 мс) и редкие (с периодом в несколько секунд) отрицательные импульсы сброса будут принудительно перезапускать МК, до тех пор пока он нормально не запустится и на его выходе вновь не появятся периодические "контрольные" импульсы.
Временные диаграммы иллюстрируют режимы работы внешнего WDT:
Для сокращения времени моделирования номинал конденсатора С1 на схеме установлен значительно меньше необходимого. Можно ориентироваться на значение 0,5-1 мкФ на каждую секунду необходимой длительности "сторожевой" паузы. Конденсатор С1 нельзя применять электролитический. Удобно использовать дешёвые SMD керамические конденсаторы, подключая их параллельно.
Сторожевой таймер ( WDT )
Добавлено: 24.03.2017{, 12:18}
Dreamer85
Ардуино НАНО. загрузчик прошил от УНО вроде как в нем реализован программный WDT. рядом с ней расположены 4 электромагнитных реле. раз в сутки все равно зависает намертво. Схема используется для инкубатора. Сами понимаете нужна безотказность. Склоняюсь к тому что виснет из за наводок от релюшек. Видеться решение только использовать мосфеты вместо реле. Или делать аппаратный WDT. Может еще кто то предложит какое решение...
Сторожевой таймер ( WDT )
Добавлено: 24.03.2017{, 13:04}
Nikan
.
Сторожевой таймер ( WDT )
Добавлено: 24.03.2017{, 17:28}
Dreamer85
И все таки не отпускает вопрос, почему не работает встроенный сторожевой таймер ? Или все таки можно полностью подвесить железо. В свою нано прошил загрузчик от УНО. проверил скетчем работоспособность встроенного WDT. скетч показал что все ровно, при зависании идет перезагрузка, Оставил инкубатор тестироваться в ночь. Утром система полностью висела.
Была подобная ситуация при когда еще делал автоматику на пивоварню, было 2 реле на тэн и насос. На тэн стояло твердотельное на насос обычная механика. И вот эта механика как я думаю периодически вешала систему . Проблема повторялась до того пока не поставил твердотелку и на насос
В нынешнем проекте у меня 4 механических реле. все собрано на одной плате. 2 реле на двигатель с реверсом. 1 на вентилятор, и одно на лампу для нагрева...
Сторожевой таймер ( WDT )
Добавлено: 24.03.2017{, 20:06}
Nikan
.
Сторожевой таймер ( WDT )
Добавлено: 24.03.2017{, 20:22}
Dreamer85
Ага понятно. А если рассматривать схему выше.... я так понимаю она работает именно когда идут импульсы с ардуино, И если например ардуино зависнет с еденицей на выходе или с нолем то система все равно сделает свое дело и перезагрузит ардуино ?
Сторожевой таймер ( WDT )
Добавлено: 24.03.2017{, 20:33}
Nikan
.
Сторожевой таймер ( WDT )
Добавлено: 24.03.2017{, 20:48}
Dreamer85
Nikan, В нашей деревне проблематично найти что то подобное. 555ую еле нашел. все заказываю с поднебесной. А если брать программную часть ардуино то там достаточно установить симметричный мультивибратор ? а вот с какой длинной импульса?
Сторожевой таймер ( WDT )
Добавлено: 24.03.2017{, 21:01}
Nikan
.
Сторожевой таймер ( WDT )
Добавлено: 24.03.2017{, 21:19}
Dreamer85
пробовать только опытном путем
А что за точки на схеме VF1 VF2 и VF3 ??
Сторожевой таймер ( WDT )
Добавлено: 24.03.2017{, 21:42}
Nikan
.
Сторожевой таймер ( WDT )
Добавлено: 25.03.2017{, 12:34}
kipiaxxx
Получил через ЛС несколько вопросов по своей схеме внешнего WDT. Отвечаю на них здесь:
Нормально ли работает у вас данная схема?
Первый экз. схемы был внедрён на котельной более 2-х лет назад. Этот WDT защищал от зависаний промышленный контроллер на ATmega32. На данный момент кол-во нареканий =0. Кроме того, этим WDT были оснащены ещё 3 системы дополнительной технологической сигнализации на Arduino Nano - нареканий по работе также нет. Предварительно WDT жёстко испытывались в лаборатории КИПиА на понижение/повышение питающего напряжения, устойчивости к импульсным э/м помехам. Поэтому эту схему я с чистой совестью рекомендую для повторения.
Что за точки на схеме VF1, VF2 и VF3?
Это контрольные точки для вывода графиков при моделировании в TINA-TI.
VF3 подключается к входу cброса RST Arduino.
R5(10k) и C5(100n) устанавливать НЕ НАДО, т.к. они уже имеются на плате Arduino в цепи сброса.
Я так понимаю в FLProg на схему нужно добавить выход, к нему подключить мультивибратор? А какие значения ему выставлять в настройках?
Схема не требовательна к параметрам контрольных импульсов и во многих случаях можно даже обойтись и без специального выхода на Arduino. Главное, чтобы импульсы были. Например, при доработке контроллера на ATmega32 контрольные импульсы для WDT я брал с одного из входов Data индикатора 1602. В сигнализации на Arduino Nano использовался выход TX1 UART, с которого постоянно отправлялись данные в сеть. Но нужно быть внимательным, чтобы не использовать выход с ШИМ (PWM), т.к. здесь импульсы формируются аппаратно и при зависании Arduino вполне могут присутствовать. Если же есть желание и возможность использовать отдельный выход Arduino, то можно сделать проще. В начале программного цикла установить этот выход в 1, а где-нибудь в середине цикла - в 0. Такой способ практически не потребует доп. ресурсов Arduino, а полноценный контрольный импульс для WDT будет сформирован. Период следования этих импульсов будет равен времени исполнения программного цикла.
Схема будет перезагружать ардуино если на выходе зависнет единица, или ноль?
Ответ: ДА, будет.
Успеха в реализации схемы WDT! И просьба отписаться в ветке о результатах внедрения.
Сторожевой таймер ( WDT )
Добавлено: 25.03.2017{, 17:30}
OlegAn1962
kipiaxxx, а можно схему подключить к одному из входов max7219, и если да, то к какому? Сталкивался с ситуацией, когда индикатор зависал (например, появлялась засветка всех восьми разрядов) , а ардуина продолжала нормально работать.