Использование карты для двигателя постоянного тока вместо сервопривода

c

Я пытаюсь использовать команду карты, которая используется для поворота сервопривода на 180 градусов при движении потенциометра...

На самом деле, я хочу, чтобы я установил свой потенциометр на ноль; остановите двигатель постоянного тока, затем после поворота потенциометра до аналогового значения 512 поверните двигатель влево (digitalWrite(I1, HIGH); digitalWrite(I2, LOW);), а затем остановитесь, когда он достигнет 512, затем, когда установите потенциометр обратно на ноль. поверните двигатель постоянного тока вправо (digitalWrite(I1, HIGH); digitalWrite(I2, LOW);), но я думаю, что то, что я пытаюсь сделать, это именно то, что мы можем сделать с серводвигателем в ручке http://www.arduino.cc/en/Tutorial/Knob

Я использую обычный двигатель постоянного тока и микросхему l293D, но я хочу управлять постоянным током с помощью ручки, например, при повороте на 200 градусов.

Код

#define E1 11    // Включить вывод для двигателя
#define I1 10    // Управляющий контакт a для двигателя
#define I2 9     // Управляющий контакт b для двигателя
const int analogPin = A0;  
int analogValue ;  

void setup() {
  pinMode(E1, OUTPUT);
  pinMode(I1, OUTPUT);
  pinMode(I2, OUTPUT);

}

void loop() {

  int analogValue = analogRead(analogPin);

  if(analogValue > 0 && analogValue < 512)  {

  analogWrite(E1, 255);   
  digitalWrite(I1, HIGH);
  digitalWrite(I2, LOW);
    delay(100); 
} else 
  analogWrite(E1, 255);  
  digitalWrite(I1, LOW);
  digitalWrite(I2, HIGH);
 }

, 👍2

Обсуждение

Есть ли возможность получить принципиальную схему?, @Dmitry Grigoryev

«а затем остановиться, когда он достигнет 512» не имеет смысла для двигателя постоянного тока, если к нему не подключено устройство обратной связи по положению. Сервоприводы хобби-типа оснащены внутренним потенциометром для обратной связи. Если вы создаете систему управления положением с помощью обычного двигателя постоянного тока, вам придется механически связать что-то, например, энкодер или потенциометр, с его валом и реализовать контур управления положением., @Chris Stratton


1 ответ


1

Похоже, вы хотите использовать «analogValue» для управления направлением и скоростью вашего двигателя постоянного тока. Если это правильно, рассмотрите возможность использования этого:

      //Этот метод предполагает: центральное положение потенциометра соответствует точке нулевой скорости двигателя,
      //(потому что это идеальная скорость для изменения направления вращения двигателя).
      //Диапазон управления ШИМ 0–255 и диапазон входа АЦП 0–1023.

      //Сначала создаем значение относительной скорости из "analogValue",
      //средняя точка горшка соответствует скорости 0, а верхняя/низкая точки горшка — полной скорости.

      int motorSpeed = 0;  
      if (analogValue < 512 )  
      {  
       motorSpeed = map(analogValue, 0, 511, 255, 0);  
      }  //Обратите внимание, что отображаемый диапазон перевернут, чтобы в средней точке получить нулевую скорость.
      else  
      {  
       motorSpeed = map(analogValue, 512, 1023, 0, 255);  
      }

      //затем заменяем каждую AnalogWrite(E1, 255) на:
      analogWrite(E1, speedValue);  

      //вам также следует изменить " if (analogValue > 2 && AnalogValue < 500) { " на:
      if (analogValue < 512) { 
,

спасибо за такой добрый ответ, на самом деле я хочу просто установить потенциометр на ноль; остановите двигатель постоянного тока, затем после поворота потенциометра на аналоговое значение 512 поверните двигатель влево (digitalWrite(I1, HIGH); digitalWrite(I2, LOW);), а затем остановитесь, когда оно достигнет 512, затем, когда потенциометр вернется к нулю, поверните двигатель постоянного тока вправо (digitalWrite(I1, HIGH); digitalWrite(I2, LOW);) но я думаю, что я пытаюсь сделать именно то, что мы можем сделать с серводвигателем в ручке http://www.arduino.cc/en/Tutorial/Knob, @mohammad

https://www.youtube.com/watch?v=3mw6H3461Y0, @mohammad

ЭТО ПРИМЕР, @mohammad