Как управлять 6 серводвигателями с помощью платы Arduino Mega?

Я пытаюсь сделать автономный гексапод с помощью платы Arduino Mega. Я следовал механизму движения гексапода трипода. Сначала я мог одновременно управлять ногами (0, 2, 4) и (1, 3, 5) по отдельности, но всякий раз, когда я пытался объединить их, т. е. управлять 6 ногами одновременно, я не мог видеть никакого движения в гексаподе. Даже в IDE я не получаю никаких ошибок.

Я подключил ножки (0–5) к сигнальным контактам (2–7) соответственно. Я подключил общее напряжение +5 В и общее напряжение заземления к отдельным ножкам с помощью макетной платы. Может ли кто-нибудь дать мне правильное решение для преодоления этой проблемы, и еще хотелось бы узнать, как управлять несколькими сервоприводами и исходный код для этого?

Вот мой исходный код Arduino для управления 6 серводвигателями.

#include <Servo.h>
Servo myservo[6]; 
int f=0;// создаем объект сервопривода для управления сервоприводом
//[0] -большеберцовая кость, [1] -бедренная кость, [2] -тазочковидные моторы
void setup() {
  myservo[0].attach(2);
  myservo[1].attach(3);
  myservo[2].attach(4);
  myservo[3].attach(5);
  myservo[4].attach(6);
  myservo[5].attach(7);
}

void loop() {
  //альтернативный вариант - заставить гексапода стоять на своем месте
  //f — это просто переменная-флаг, которая останавливает его
  if(f==0) {
    myservo[0].write(130);
    myservo[2].write(130);
    myservo[4].write(90);
    myservo[1].write(130);
    myservo[3].write(90);
    myservo[5].write(0);
    f=1;
  }
}

Обратите внимание, что значения, добавленные выше, рассчитываются отдельно для отдельных ножек, устанавливаемых на землю.

, 👍1


2 ответа


1

В том необычном случае, если вы на самом деле питаете свои (маленькие?) сервоприводы напрямую через Arduino: вам понадобится внешний источник питания для ваших сервоприводов.

,

2

Arduino Mega может обрабатывать максимум 40 мА на контактах ввода/вывода и 200 мА на контактах 5 В/GND. Шесть сервоприводов будут потреблять гораздо больше тока, чем максимум в 200 мА. Вы можете попробовать подключить питание сервопривода к отдельному источнику питания, а контакты данных — к Arduino. Надеюсь, это поможет!

,