Матовый 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() {
}
@tsbertalan, 👍0
Обсуждение1 ответ
Лучший ответ:
По предложению @jsotola я более внимательно изучил руководство (см. раздел «Программирование установки XK-5»):
Программирование настройки XL-5 (калибровка вашего регулятора скорости и передатчика)
Читать пройти все этапы программирования, прежде чем начать. Если ты заблудился во время программирования или получения неожиданных результатов, просто отключите аккумулятор, подождите несколько секунд, подключите аккумулятор и начните заново.
Отсоедините один из проводов двигателя между XL-5 и двигателем. Это мера предосторожности для предотвращения разгона при включенном регулировании скорости. включен до того, как он запрограммирован.
Подключите к XL-5 полностью заряженный аккумулятор.
Включите передатчик (при нейтральном положении дроссельной заслонки).
Нажмите и удерживайте кнопку EZ-Set (A). Светодиод сначала загорится зеленым, а затем красным. Отпустите кнопку.
Когда светодиод мигнет КРАСНЫМ ОДИН РАЗ, потяните рычаг газа в положение полного газа и удерживайте его в этом положении (B).
Когда светодиод мигнет КРАСНЫМ ДВАЖДЫ, нажмите рычаг дроссельной заслонки до полного обратного хода и удерживайте его в этом положении (C).
Когда светодиод мигнет ЗЕЛЕНЫМ ОДИН РАЗ, программирование завершено. Затем светодиод загорится зеленым или красным (в зависимости от режима обнаружения низкого напряжения). настройки), указывая, что XL-5 включен и находится в нейтральном положении (D).
Я написал короткую программу для интерактивной отправки заданных углов сервопривода в [0, 180]. В инструкции написано, что нужно давать «полный газ». и «полный реверс», но я не был точно уверен, что это означает с точки зрения угла сервопривода/ширины импульса в миллисекундах. Я так понимаю, что они часто задаются как 45° и 135° (1,25 мс и 1,75 мс) соответственно, но установка пределов на [0, 180] во время этого периода обучения также сработала. Очень важно получить полный диапазон, чтобы я мог получить более тонкие градации скорости. Поскольку я не рассчитываю когда-либо достичь полной скорости в своем приложении и буду использовать только часть диапазона, близкую к 90, это будет особенно полезно.
Я до сих пор не понимаю, что вызвало первоначальную проблему: сервоконтроллер Pololu никогда не нуждался в этом процессе настройки. Возможно, были установлены ограничения на [45, 135], и я по ошибке отправил 180, что перевело ESC в какое-то состояние, не описанное в мануале. И я не знаю, придется ли мне повторять это в будущем, или предотвратят ли мои новые ограничения [0, 180] вышеупомянутую ошибку. Если на то пошло, я не знаю, насколько энергонезависима энергонезависимая память на ESC, в которой хранятся эти пределы. Требуется ли периодическое питание от батареи для обновления?
Наконец, хотя это может быть еще более специфично для регулятора скорости XL-5 и моей настройки источника питания, еще одно полезное замечание заключается в том, что режим обнаружения низкого напряжения может препятствовать движению независимо от процесса настройки.
- Как заставить сервопривод вращаться на угол больше 180°
- Как повернуть серводвигатель на определенный угол?
- 6 + 1 двигательей подключенных к arduino uno?
- Управление цифровым сервоприводом JX PDI-6221MG с помощью Arduino
- Обратная связь по положению для шагового двигателя
- Почему сервопривод вращается на 360 градусов?
- код для автоматической двери
- Как Arduino Uno может поддерживать до 12 сервоприводов, если у него всего 6 цифровых выводов ШИМ?
по документации его надо "научить" нейтральному, прямому и обратному сигналам...........ваш вопрос не имеет отношения к Ардуино, @jsotola
@jsotola После некоторого копания вы, похоже, правы. После прохождения последовательности установки пределов, а также отключения или включения обнаружения низкого напряжения (в зависимости от источника питания) все работает. Однако с водителем Пололу мне этого делать не пришлось, отсюда и мое первоначальное замешательство. Если у вас есть предложения, куда перенести этот вопрос, я открыт для этого. Но я напишу ответ сама., @tsbertalan
я не уверен, подходит ли этот вопрос где-либо в stackexchange, потому что, похоже, это вопрос об использовании устройства, @jsotola
@jsotola Так стоит ли мне удалить это?, @tsbertalan
просто примите свой ответ, @jsotola