ARDUINO Arduino nano + 5 серво SG90

Статус
В этой теме нельзя размещать новые ответы.

GHEB

✩✩✩✩✩✩✩
3 Окт 2021
16
0
Оформи код соответствующим тэгом
Добрый день
Захотел управлять пятью серво sg90 при помощи arduino nano, взял два блока питания, один на 5 вольт 2 ампера и запитал от него ардуино, и мощьный блок питания с быстрой зарядкой, им запитал все сервоприводы. в итоге к ардуино у меня сейчас подключается только 5 проводов к пинам D8,9,10,11,12. Во время запуска ардуина начинает лагать а сервоприводы дёргаются на пару милимтеров туда сюда, если подключить ардуино к повербанку по usb(быстрая зарядка), начинает работать лучше, но периодически ардуина перезагружается, это заметно по порядку выполнения скетча. Схема и скетч ниже

У меня есть два предположения:
1-Шумы
2-Нехватка напряжения

Если 1 то наверное можно поставить на D8,9,10,11,12 диоды? Поможет? Так решаются эти проблемы?
Если 2 то даже не представляю что делать

#include <Servo.h>

Servo servo1; // Создаем объект
Servo servo2; // Создаем объект
Servo servo3; // Создаем объект
Servo servo4; // Создаем объект
Servo servo5; // Создаем объект

void setup()
{
servo1.attach(8); // Указываем объекту класса Servo, что серво присоединен к пину 9
servo2.attach(9); // Указываем объекту класса Servo, что серво присоединен к пину 9
servo3.attach(10); // Указываем объекту класса Servo, что серво присоединен к пину 9
servo4.attach(11); // Указываем объекту класса Servo, что серво присоединен к пину 9
servo5.attach(12); // Указываем объекту класса Servo, что серво присоединен к пину 9

servo1.write(0); // Выставляем начальное положение
servo2.write(0); // Выставляем начальное положение
servo3.write(0); // Выставляем начальное положение
servo4.write(0); // Выставляем начальное положение
servo5.write(0); // Выставляем начальное положение
}

void loop()
{
servo1.write(0); // Выставляем начальное положение
servo2.write(0); // Выставляем начальное положение
servo3.write(0); // Выставляем начальное положение
servo4.write(0); // Выставляем начальное положение
servo5.write(0); // Выставляем начальное положение
delay(1000);
servo1.write(180); // Выставляем начальное положение
servo2.write(180); // Выставляем начальное положение
servo3.write(180); // Выставляем начальное положение
servo4.write(180); // Выставляем начальное положение
servo5.write(180); // Выставляем начальное положение
delay(1000);
}
 

Вложения

Изменено:

GHEB

✩✩✩✩✩✩✩
3 Окт 2021
16
0
@Геннадий П, Хм, а как это должно выглядеть? Т.е. я знаю что GND это земля, но...куда что с чем соединять? У меня земля от серво подключена к БП как плюс и минус соовтетственно, специально разрезал провод usb, нашёл там чёрный и красный провод и к ним припаял 5 проводов(на каждый) для серво.
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,975
634
45
@GHEB, Земля между всеми устройствами должна быть соединена. Т.е. от каждой сервы землю тяните на GND-вывод ардуины.
Но перед этим, т.к. используются два китайских блока питания, желательно замерить тестером утечку напряжения между землями.
 
  • Лойс +1
Реакции: GHEB

poty

★★★★★★✩
19 Фев 2020
3,261
948
@GHEB,
1-ая проблема - "быстрая зарядка". То, что на ней написано - не означает, что Вы можете это получить без контроллера, который ей говорит в каком режиме работать.
2-ая проблема - земли всех блоков питания должны быть соединены. Фактически - соединение земель это небольшое искусство, чтобы исключить влияние цепей высокого тока на передачу сигналов.
 
  • Лойс +1
Реакции: GHEB

GHEB

✩✩✩✩✩✩✩
3 Окт 2021
16
0
@Геннадий П,
Т.е. получется что от каждого сервопривода будет идти по 2 земли, 1 на зарядку(бп), вторая на GND ардуины. (не считая ещё 1 провода 5 вольт и 1 провода управления)
 

GHEB

✩✩✩✩✩✩✩
3 Окт 2021
16
0
@Геннадий П, А вообще Adruino nanoпотянет 5 сервоприводов? Я просто находил похожий пост но с реле, там люди говорили что ардуина на такие токи не расчитана и всё такое. Просто я был на 100% уверен в своей схеме и сейчас понимаю что сделал и спаял какую то шляпу (из-за нехватки земли) но, поможет ли это, или это только одна из проблем?
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,975
634
45
@GHEB, В том посте скорее всего реле напрямую хотели к ардуине подключать, конечно не потянет по току. А тут только как управляющий сигнал используется, там токи мизерные.
 

GHEB

✩✩✩✩✩✩✩
3 Окт 2021
16
0
@Геннадий П, ХМ, а не помогло я побыстренькому прокинул провод земли


У меня сейчас есть чёрный провод от БП, который заделён на 6 проводов, 5 из них идёт на серво, 1 на GND, по идее эта та же схемы, которую изобразили вы
 

Вложения

Геннадий П

★★★★★★✩
14 Апр 2021
1,975
634
45
@GHEB, Нужно землю от ардуины не к блоку питания подключать, а к каждой серве отдельно.
 

GHEB

✩✩✩✩✩✩✩
3 Окт 2021
16
0
@Геннадий П,
Тогда куда землю от БП? Тоже к серво? Но если я так сделаю, они всё равно будут соеденены


Просто если сделать как на 2 изображении, получится что провода всё равно замкнуты, также как и на картинке, которую я скидывал выше , которую вы забраковали
 

Вложения

GHEB

✩✩✩✩✩✩✩
3 Окт 2021
16
0
@GHEB,
Кажется что второе моё изобращение из сообщения выше равносильно этому, просто проводов меньше:
 

Вложения

Геннадий П

★★★★★★✩
14 Апр 2021
1,975
634
45
Постараюсь кратко написать почему эти два варианта по-разному работают.

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


1640554658110.png
 
  • Лойс +1
Реакции: GHEB

GHEB

✩✩✩✩✩✩✩
3 Окт 2021
16
0
@Геннадий П,пока провода земли не припаивал, оставил свою первую схему, но подключил всё от одного повербанка, вроде тоже работает. Интересно, банка от этого не страдает
 
Изменено:
Статус
В этой теме нельзя размещать новые ответы.