сервопривод пропускает delay

artem28

✩✩✩✩✩✩✩
15 Мар 2021
6
0
Оформи код соответствующим тэгом
Подскажите, пожалуйста, что не так с сервоприводом? Вот код. Он очень простой:
#include <Servo.h>

Servo servo1;

void setup() {
servo1.attach(8);

}

void loop() {
servo1.write(0);
delay(2000);

servo1.write(180);
delay(2000);

servo1.write(0);
delay(20000);

}

Но при подаче эл-ва серво иногда срабатывает подряд 2-3 раза, не выжидая 20 сек. Особенно, эта проблема проявляется при подключении двух серв. Я использую ардуино нано. Подаю 7в отдельно на сервопривод питание, но от того же источника питания. Может проблема в этом? Как сделать схему, чтобы все работало от одного источника питания. Может надо поставить какие-то стабилизаторы или конденсаторы. Извините за глупый вопрос, но я в этом совсем новичок. Где-то читал что такая проблема может быть из-за тока в схеме, который пробивает и подает сигнал на серву и там ставили что-то, чтобы фильтровать ток в схеме. Может кто-то знает что нужно включить в схему, чтобы все работало стабильно. Просто для моего проекта очень критично чтобы серва срабатывала только один раз. По ссылке видео схемы работающей: https://yadi.sk/i/wkVuczA3QX42WA
 

Сотнег

★★★★★★★
15 Янв 2020
4,364
1,494
Плата ждёт 7 секунд, пока завершится выполнение loop(),
после чего решает, что программа зависла, и перезагружается.
 

artem28

✩✩✩✩✩✩✩
15 Мар 2021
6
0
@Сотнег, Спасибо за ответ. а как же тогда работать с delay особенно более продолжительными? И почему везде пишут в примерах кода для серв эти делэи, если они больше 7 сек не работают? И потом она не всегда перезагружается. Большую часть времени пауза 20 сек, работает, но иногда проскакивает и срабатывает подряд.
 

Сотнег

★★★★★★★
15 Янв 2020
4,364
1,494
@artem28,
хз...
Возможно, watchdog по умолчанию и не работает.

Эту тему посмотрите ещё:
 

artem28

✩✩✩✩✩✩✩
15 Мар 2021
6
0
Все-таки проблема, мне кажется не в коде.(Хотя я попробую разобраться с этими миллис и запустить на них.) Ощущение что ардуинка перезагружается и начинает по 3 раза отрабатывать код сначала. То есть там не вотчдог, она не ждет 7 сек или около того. Скорее всего это из-за просадки напряжения, потому что повторы случаются чаще если подключать к общей схеме вторую серву помощнее, если отключаю, повторов срабатываний становится меньше, точнее их почти нет. Может все-таки нужно в схему добавить конденсаторы? Где можно посмотреть как их подключить и подобрать? В целом, я планирую использовать 3 сервы, которые включаются в разное время на разный угол. Думал, чтобы не усложнять код подключу обычный таймер-розетку, которая будет включать всё (МК и сервы) на 1 мин раз в сутки. И код будет отрабатываться. Важно чтобы за эту минуту особенно при включении не было повторов и пропусков паузы.
 

Lumenjer

★★★✩✩✩✩
10 Дек 2020
220
112
@artem28, Конденсаторы точно не повредят, но лучше пусть знатоки скажут, какой номинал и куда пихать.
Насколько большая просадка вообще? Откуда идет питание, какая там мощность?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Добавьте отладочный вывод в монитор порта: в setup о старте программы, вывод перед каждой задержкой. Любой текст вам понятный. Запускаете,, открываете монитор порта, ставите галку на показывать отметку времени и смотрите: если . Если повторяется фраза из setup - плата перегружается. Если нет - проверяете отметки времени и сверяете с интревалами.
Если перегружается - физически отключайте серву и смотрите еще раз. Если перезагруз ушел , то значит проблема именно в связке. Если нет - попробовать другой контроллер.
 
  • Лойс +1
Реакции: Bruzzer

artem28

✩✩✩✩✩✩✩
15 Мар 2021
6
0
ага. спасибо. буду пробовать. думаю, тут что-то с питанием. надо в этой теме разбираться. с одной сервой всё работает как часы, особенно если питание разведено. то есть серва отельно МК отдельно. но я хотел чтобы не было кучи проводов сделать чтобы всё на один блок питания выходило. но, видимо, это геморой будет, лучше развести. Можно было МК посадить на батарейки, но мне нужно его подключить к таймеру розетке, чтобы включался в нужное время и в нужные дни только. Есть еще вариант замутить сам таймер на ардуино, там какой-то модуль часов надо подключать с питанием от батарейки. Но опять же не знаю насколько надежная система. Таймеры то точно работают без сбоев. Я имею ввиду бытовые таймеры-розетки, на всякий случай)