Как откалибровать 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() {  
} 

^бесстыдно скопировано из интернета

, 👍5

Обсуждение

Какой код?, @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


2 ответа


1

Это стандарт с разъемами 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


0

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

,