Управлять другими сервоприводами с помощью общего сервокода Arduino?

Я пытаюсь управлять MG996R, используя код для типичного сервопривода (SG90)

Я использовал внешний блок питания, 5В, 2А
Я подключил сигнальную линию сервопривода к слоту Arduino 7, положительный сервопривод к положительному внешнему источнику питания, заземление сервопривода на заземление внешнего источника питания, оставив питание Arduino и заземление неподключенными.

Я попробовал следующий код.
у SG90 работает, а у MG996R вообще не двигается.


#include <Servo.h>  
Servo myservo;


void setup()
{ 
  myservo.attach(7);  // контакт 7 - это сервопривод управления
 
} 

void loop() 
{  

  for (int pos=0; pos<=60; pos++)
  {
    myservo.write(pos);
    delay(15);
  }

}

Это потому, что для разных сервоприводов нужен разный код?

, 👍1

Обсуждение

два сервопривода используют один и тот же управляющий сигнал... если один работает, то и другой тоже должен работать... перепроверьте соединения питания и заземления... убедитесь, что заземление сервопривода подключено к заземлению Arduino... убедитесь, что питание питание остается на уровне 5 В под нагрузкой ... измерьте напряжение при попытке переместить сервопривод ... если напряжение держится на уровне 5 В, то сервопривод подозревается, @jsotola

нет причин иметь цикл for ... все, что вам нужно, это myservo.write(45); delay(1000); myservo.write(135); delay(1000); ... сервопривод будет переключаться между этими двумя углами, @jsotola


4 ответа


Лучший ответ:

1

Они работают с одним и тем же управляющим сигналом, поэтому один и тот же код должен работать для них обоих

Вы должны убедиться, что заземление сервопривода соединено с заземлением Arduino и заземлением источника питания (заземление источника питания для положительного напряжения питания, заземление Arduino для сигнальной линии)

Я думаю, что SG90 работал даже без подключения заземления Arduino из-за разницы в конструкции.

Но вы всегда должны подключать заземление сервопривода к заземлению Arduino.

,

-1

Комментарий @jsotola является ответом, поэтому я просто процитирую его здесь:

Два сервопривода используют один и тот же управляющий сигнал... если один работает, то и другой тоже должен работать... перепроверьте соединения питания и заземления... убедитесь, что заземление сервопривода подключено к заземлению Arduino... подтвердите что блок питания остается на уровне 5 В под нагрузкой ... измерьте напряжение при попытке перемещения сервопривода ... если напряжение держится на уровне 5 В, то подозревается сервопривод

Кроме того, убедитесь, что вы используете контакт, установленный с помощью myservo.attach(). В вашем комментарии указан контакт 9, но в вашем коде указан контакт 7, что сбивает с толку. Этот код использует контакт 7 в качестве сервосигнала:

myservo.attach(7);  //контакт 9 - это один управляющий сервопривод
,

-1

Я заметил на сайте производителя MG996R, что его рабочее напряжение составляет от 4,8 В до 6,6 В. В.

Ваша проблема может заключаться в том, что напряжение (на двигателе) ниже минимального напряжения 4,8 В.

Попробуйте подключить двигатель к напряжению 6 В.

Также убедитесь, что вы тестируете двигатель без нагрузки, подключенной к выходу.

,

-1

Рабочий ток (рабочий ток для MG996R (~650 мА) выше, чем у SG90 (~220 мА), но определенно хорош для мощности 5 В, 2 А. Если нет механической нагрузки на серводвигатель. , двигатель не ограничен током питания.

MG996R — мощнейший зверь. рекомендуется перепроверить напряжение питания, а также попробовать с источником питания выше ~ 5 В.

PS: Код определенно хорош. Вот симуляция кода, который вы разместили, который отлично работает с эмулятором

,