Матовый ESC не будет двигаться медленно

Я пытаюсь управлять коллекторным двигателем в радиоуправляемой машине Traxxas Slash с помощью встроенного регулятора скорости XL5, используя библиотеку сервоприводов на Arduino. Раньше мне удавалось управлять этой машиной с помощью Pololu Micro Maestro, но она у меня умерла, и поэтому, ожидая прибытия замены, я решил попробовать более ручной подход.

Проблема в том, что двигатель движется слишком быстро. Насколько я понимаю, для этого ESC (который позволяет двигаться задним ходом) 90 градусов/1500 мс должны быть нейтральной точкой, а все, что выше этого значения, приведет к постепенному увеличению скорости движения вперед; и внизу — наоборот. Но, хотя кажется, что есть некоторая модуляция скорости, двигатель внезапно начинает с очень высокой скорости под углом (Serial.write(95)), равным 95 или около того, а затем становится еще быстрее с там.

Ниже приведена минимальная версия моего кода; В моей схеме сигнальные контакты разъемов сервопривода рулевого управления и ESC (белые провода) подключены к контактам 2 и 9 соответственно на Pro Micro, их два контакта 5 В соединены друг с другом (поскольку ESC подает собственное напряжение 5 В), а их заземления, подключенные к контактам заземления Arduino.

Хотя возможно, что мне нужна специальная последовательность активации, чтобы этот ESC работал правильно (я работаю в трехмигающем «тренировочном» режиме, который должен быть медленнее), я ожидаю, что эта проблема проявится как никакого движения вообще, не слишком большое движение.

Я пробовал запитать ESC от оригинальной батареи 9,1 В (номинальное напряжение 8,4 В) и от регулируемого источника питания 8,4 В, подключенного к батарее ~15 В.

Что я могу делать не так?

#include <Servo.h>

Servo throttle;

void setup(){

    Serial.begin(115200);

    throttle.attach(9);
    // дроссель.write(91);
    // задержка(300);

    int first = 90;
    for(int angle=first; angle < first+20; angle++) {
        Serial.println(angle);
        throttle.write(angle);
        delay(10);
    }

    // Это работает не лучше.
    // int first = 1500;
    // for(int us=first; us < first+10; us++) {
    // Serial.println(нас);
    // throttle.writeMicroсекунды(нас);
    // задержка(50);
    // }

    throttle.write(90);
}

void loop() {
}

, 👍0

Обсуждение

по документации его надо "научить" нейтральному, прямому и обратному сигналам...........ваш вопрос не имеет отношения к Ардуино, @jsotola

@jsotola После некоторого копания вы, похоже, правы. После прохождения последовательности установки пределов, а также отключения или включения обнаружения низкого напряжения (в зависимости от источника питания) все работает. Однако с водителем Пололу мне этого делать не пришлось, отсюда и мое первоначальное замешательство. Если у вас есть предложения, куда перенести этот вопрос, я открыт для этого. Но я напишу ответ сама., @tsbertalan

я не уверен, подходит ли этот вопрос где-либо в stackexchange, потому что, похоже, это вопрос об использовании устройства, @jsotola

@jsotola Так стоит ли мне удалить это?, @tsbertalan

просто примите свой ответ, @jsotola


1 ответ


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

1

По предложению @jsotola я более внимательно изучил руководство (см. раздел «Программирование установки XK-5»):

Программирование настройки XL-5 (калибровка вашего регулятора скорости и передатчика)

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

  1. Отсоедините один из проводов двигателя между XL-5 и двигателем. Это мера предосторожности для предотвращения разгона при включенном регулировании скорости. включен до того, как он запрограммирован.

  2. Подключите к XL-5 полностью заряженный аккумулятор.

  3. Включите передатчик (при нейтральном положении дроссельной заслонки).

  4. Нажмите и удерживайте кнопку EZ-Set (A). Светодиод сначала загорится зеленым, а затем красным. Отпустите кнопку.

  5. Когда светодиод мигнет КРАСНЫМ ОДИН РАЗ, потяните рычаг газа в положение полного газа и удерживайте его в этом положении (B).

  6. Когда светодиод мигнет КРАСНЫМ ДВАЖДЫ, нажмите рычаг дроссельной заслонки до полного обратного хода и удерживайте его в этом положении (C).

  7. Когда светодиод мигнет ЗЕЛЕНЫМ ОДИН РАЗ, программирование завершено. Затем светодиод загорится зеленым или красным (в зависимости от режима обнаружения низкого напряжения). настройки), указывая, что XL-5 включен и находится в нейтральном положении (D).

Я написал короткую программу для интерактивной отправки заданных углов сервопривода в [0, 180]. В инструкции написано, что нужно давать «полный газ». и «полный реверс», но я не был точно уверен, что это означает с точки зрения угла сервопривода/ширины импульса в миллисекундах. Я так понимаю, что они часто задаются как 45° и 135° (1,25 мс и 1,75 мс) соответственно, но установка пределов на [0, 180] во время этого периода обучения также сработала. Очень важно получить полный диапазон, чтобы я мог получить более тонкие градации скорости. Поскольку я не рассчитываю когда-либо достичь полной скорости в своем приложении и буду использовать только часть диапазона, близкую к 90, это будет особенно полезно.

Я до сих пор не понимаю, что вызвало первоначальную проблему: сервоконтроллер Pololu никогда не нуждался в этом процессе настройки. Возможно, были установлены ограничения на [45, 135], и я по ошибке отправил 180, что перевело ESC в какое-то состояние, не описанное в мануале. И я не знаю, придется ли мне повторять это в будущем, или предотвратят ли мои новые ограничения [0, 180] вышеупомянутую ошибку. Если на то пошло, я не знаю, насколько энергонезависима энергонезависимая память на ESC, в которой хранятся эти пределы. Требуется ли периодическое питание от батареи для обновления?

Наконец, хотя это может быть еще более специфично для регулятора скорости XL-5 и моей настройки источника питания, еще одно полезное замечание заключается в том, что режим обнаружения низкого напряжения может препятствовать движению независимо от процесса настройки.

,