Как откалибровать ESC после подключения к Arduino?
Я пытаюсь подключить Arduino к электронному регулятору скорости, но безуспешно. Сначала я расскажу, что я уже сделал, а затем объясню проблему.
Прежде чем мы доберемся до сути, вот список деталей, которые я использую:
Arduino Uno (оригинальный)
Коллекторный двигатель с напряжением от 6 до 8,4 В, 18 300 об/мин, 350 г·см.
Регулятор скорости коллекторного двигателя Traxxas XL-5. Если я не ошибаюсь, максимальная частота принимаемого им сигнала ШИМ составляет 1600 Гц.
Аккумулятор Venom 4200 мАч NiMH 8,4 В (скоро заменю на 7,2 В).
Итак, сначала я подключил регулятор скорости к двигателю. Подключение осуществляется через этот пулевой провод (соединение, похоже, не повреждено), а затем регулятор скорости к Arduino. Белый провод я подключил к контакту 9, а чёрный — к заземлению. Если я не ошибаюсь, это стандартная схема подключения серводвигателя. Затем я подключил Arduino к компьютеру, у которого есть исправный USB-порт. Наконец, я подключил аккумулятор к регулятору скорости.
Я попытался загрузить базовый код для калибровки регулятора скорости, но он просто отказывается работать. Двигатель не заводится ни при каких обстоятельствах. Код, который я использую, просто отправляет сигнал, отправленный монитором сигналов.
Я полный новичок в Arduino, поэтому не знаю, в чём может быть проблема. Программа, которую я задумал, должна работать без подключения к компьютеру, активироваться при нажатии кнопки, прокручивать двигатель на определённое расстояние (для чего нужен энкодер, верно?), а затем останавливаться.
Есть ли какие-нибудь указания или что-то, что я могу делать неправильно?
int value = 0;
Servo myservo;
void setup() {
firstESC.attach(9); // подключен к контакту 9
Serial.begin(9600);
}
void loop() {
myservo.writeMicroseconds(value);
if(Serial.available())
value = Serial.parseInt(); // Анализ целого числа из Serial
}
и вот этот:
#include <Servo.h>
#define MAX_SIGNAL 2000
#define MIN_SIGNAL 700
#define MOTOR_PIN 9
Servo motor;
void setup() {
Serial.begin(9600);
Serial.println("Program begin...");
Serial.println("This program will calibrate the ESC.");
motor.attach(MOTOR_PIN);
Serial.println("Now writing maximum output.");
Serial.println("Turn on power source, then wait 2 seconds and press any key.");
motor.writeMicroseconds(MAX_SIGNAL);
// Ожидание ввода
while (!Serial.available());
Serial.read();
// Отправить минимальный вывод
Serial.println("Sending minimum output");
motor.writeMicroseconds(MIN_SIGNAL);
}
void loop() {
}
^бесстыдно скопировано из интернета
2 ответа
Это стандарт с разъемами RC, то есть черный всегда идет на землю, белый/оранжевый — на сигнал, а красный/коричневый — на 5 В.
Не знаю, опечатка ли это, но вам нужно подключить белый провод к D9, а чёрный — к GND. Вот пост с инструкциями, в нём описывается использование щёточного регулятора скорости, шаг два повторяет стандарт цветовой кодировки.
Вам также понадобится вращающийся энкодер или валовой энкодер для определения пройденного расстояния. Существует множество способов добиться этого: от простых (кодированный диск и ИК-схема) до специальных дополнительных печатных плат.
Упс, я действительно допустил опечатку. Спасибо, что указали. Технически мне не нужно измерять пройденное расстояние, достаточно заставить его переместиться на определённое расстояние. Я подумывал использовать квадратурный энкодер, но у меня столько проблем со всем остальным, что план пришлось отложить., @Shashank Addagarla
@a_human_mistake, у тебя есть радиоприёмник и передатчик, которые можно использовать для проверки регулятора скорости? Я перенесу это в комментарий или удалю., @RSM
Я могу проверить и посмотреть — возможно ли, что проблема в ESC?, @Shashank Addagarla
@a_human_mistake может возникнуть досадная вероятность того, что через регулятор скорости прошел слишком большой ток., @RSM
Итак, если я куплю новый регулятор скорости, на что мне следует обратить внимание, чтобы избежать этой проблемы? Можно ли как-то избежать её?, @Shashank Addagarla
@a_human_mistake, чтобы избежать перегорания регулятора скорости, нужно убедиться, что номинальный ток при непрерывной работе как минимум на 10 А превышает номинальный ток двигателя, а броски тока также будут достаточно высокими для обеспечения пускового тока. Есть ли у вас информация о потребляемом токе вашего двигателя?, @RSM
На сайте написано только "пиковый ток потребления 50+ ампер". Мне кажется, это много... https://traxxas.com/products/parts/escs/3018Rxl5waterprooflvd <- ESC, http://www.amazon.com/RS540-Sport-Tuned-Motor-All/dp/B00061HB0K <- motor, @Shashank Addagarla
Калибровку можно выполнить, отправив значения низкого и высокого дросселя через последовательный монитор. Вот инструкция, которую я сделал с помощью NODEMCU. Посмотрите это. Возможно, это поможет.
- Как заставить сервопривод вращаться на угол больше 180°
- Подключение Arduino к сервоприводу с внешним источником питания
- Мой сервопривод не работает плавно
- Что означает термин «9g» в рейтинге сервопривода?
- Бесполезная проводка коробки и код
- Почему сервопривод не перемещается по углам должным образом
- Как заставить сервопривод замедлить движение
- поворот позиционного серводвигателя более чем на 180 градусов
Какой код?, @Dave X
только что добавил код c:, @Shashank Addagarla
@a_human_mistake Пожалуйста, используйте кнопку «Код» в редакторе, чтобы отформатировать код как код. Ваш текущий метод выглядит не очень красиво. :), @Avamander
О, чувак, я попробовал, но он не позволяет вставлять переносы строк в код. Получилось очень странно, когда я использовал форматирование Mini-Markdown. Спасибо, что отредактировал и теперь всё выглядит прилично!, @Shashank Addagarla
@a_human_mistake можете ли вы описать, что делает светодиод на вашем регуляторе скорости?, @RSM
http://chat.stackexchange.com/rooms/36489/discussion-between-a-human-mistake-and-rsm, @Shashank Addagarla