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); // нейтральный
}

, 👍2

Обсуждение

Когда я читал регулятор скорости Jaguar, я думал, что вы устанавливаете его на Jaguar XD, так или иначе, как вы определяете, что двигатель работает медленнее? Насколько медленнее? Получили ли вы количественные измерения (например, с помощью энкодера)?, @frarugi87

@frarugi87 Ха-ха... Кстати, нет, я его не измерял, но на глазок можно сказать, что он медленнее, чем в другом направлении., @Arrow

К нему что-нибудь прилагается? И.. Было бы лучше проверить это с помощью энкодера. И, в конце концов, помните, что плата контроллера не управляет скоростью напрямую, а только напряжением (и поэтому скорость будет не очень хорошо контролироваться). Я не знаю, поддерживает ли эта плата контроллера обратную связь по скорости, но если вам нужна точная скорость, вам лучше переключиться на конструкцию с замкнутым контуром (либо интегрированную, но я их не знаю) или построить ее самостоятельно., @frarugi87


1 ответ


1

Я искал библиотеку, которую вы используете, и на веб-сайте arduino упоминается:

0 – полная скорость в одном направлении, 180 – полная скорость в другом, значение около 90 – отсутствие движения

Из этого мы можем сделать вывод, что значение 90 – не совсем середина диапазона скоростей, поэтому 10 баллов ниже 90 не обязательно будут эквивалентны 10 баллам выше 90. Мой единственный совет — попытаться найти точку эквивалентности самостоятельно путем проб и ошибок. Хотя кажется, что 90 не вызывает никакого движения, попробуйте 89 или 91, посмотрите, будут ли они также иметь результат и т. д.

Или просто попробуйте разные значения, чтобы получить одинаковую скорость в разных направлениях, это нормально, если вы используете разные значения (отличные от 90) для двух разных направлений :P.

Господи, удачи

,