Arduino Uno + регулятор скорости Jaguar + двигатель CIM (12 В постоянного тока)
Я подключил двигатель CIM к регулятору скорости Jaguar, питаемому от батареи 12 В. Jaguar подключен к Arduino Uno через сигнал и землю. Кроме того, у меня есть два переключателя, подключенных к Arduino, для прямого и обратного вращения двигателя.
В коде для скорости двигателя я установил 90 в качестве средней точки, 100 для движения вперед и 80 для движения назад. Когда я нажимаю кнопку реверса, двигатель плавно работает в обратном направлении с заданной скоростью. Однако проблема в том, что когда я нажимаю кнопку "вперед", двигатель работает медленнее в прямом направлении, чем установленная скорость.
Моя логика заключалась в том, что если я установил скорость в прямом и обратном направлении на +/- 10 от средней точки, двигатель должен работать с одинаковой скоростью в прямом и обратном направлении, но этого не происходит.
Я вставляю свой код ниже. Любая помощь приветствуется. Спасибо!
#include <Servo.h>
int forwardPin = 2;
int reversePin = 4;
int motorPin = 10;
int fwdReading = 0;
int revReading = 0;
Servo myservo;
void setup() {
TCCR1B = TCCR1B & 0b11111000 | 0x04; // Частота ШИМ. при 122 Гц
pinMode (forwardPin, INPUT);
pinMode (reversePin, INPUT);
myservo.attach(motorPin);
myservo.write(90); // установить сервопривод в среднюю точку
}
void loop() {
fwdReading = digitalRead(forwardPin);
revReading = digitalRead(reversePin);
if (fwdReading == HIGH) {
myservo.write(100); // вперед
} else if (revReading == HIGH) {
myservo.write(80); // обеспечить регресс
} else
myservo.write(90); // нейтральный
}
@Arrow, 👍2
Обсуждение1 ответ
Я искал библиотеку, которую вы используете, и на веб-сайте arduino упоминается:
0 – полная скорость в одном направлении, 180 – полная скорость в другом, значение около 90 – отсутствие движения
Из этого мы можем сделать вывод, что значение 90 – не совсем середина диапазона скоростей, поэтому 10 баллов ниже 90 не обязательно будут эквивалентны 10 баллам выше 90. Мой единственный совет — попытаться найти точку эквивалентности самостоятельно путем проб и ошибок. Хотя кажется, что 90 не вызывает никакого движения, попробуйте 89 или 91, посмотрите, будут ли они также иметь результат и т. д.
Или просто попробуйте разные значения, чтобы получить одинаковую скорость в разных направлениях, это нормально, если вы используете разные значения (отличные от 90) для двух разных направлений :P.
Господи, удачи
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Как заставить сервопривод вращаться на угол больше 180°
- Почему Adafruit motor shield не крутит моторы?
- Как управлять 6 шаговыми двигателями с помощью Arduino?
- Пропорциональный контроль расхода воды
- L298N Dual Motor Controller Enable Pin имеет питание, но двигатели не работают
Когда я читал регулятор скорости Jaguar, я думал, что вы устанавливаете его на Jaguar XD, так или иначе, как вы определяете, что двигатель работает медленнее? Насколько медленнее? Получили ли вы количественные измерения (например, с помощью энкодера)?, @frarugi87
@frarugi87 Ха-ха... Кстати, нет, я его не измерял, но на глазок можно сказать, что он медленнее, чем в другом направлении., @Arrow
К нему что-нибудь прилагается? И.. Было бы лучше проверить это с помощью энкодера. И, в конце концов, помните, что плата контроллера не управляет скоростью напрямую, а только напряжением (и поэтому скорость будет не очень хорошо контролироваться). Я не знаю, поддерживает ли эта плата контроллера обратную связь по скорости, но если вам нужна точная скорость, вам лучше переключиться на конструкцию с замкнутым контуром (либо интегрированную, но я их не знаю) или построить ее самостоятельно., @frarugi87