Использование карты для двигателя постоянного тока вместо сервопривода
Я пытаюсь использовать команду карты, которая используется для поворота сервопривода на 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);
}
@mohammad, 👍2
Обсуждение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
- устаревшее преобразование из строковой константы в 'char*'
- Как запрограммировать ардуино на чистом C/C++?
- Количество элементов в массиве char
- Регистры ввода-вывода SAM3X8E (Arduino Due)
- как быстро loop() работает в Arduino
- Arduino: как получить тип платы в коде
- Как вызвать функции C из скетча ардуино?
- Как преобразовать полезную нагрузку byte* в строку
Есть ли возможность получить принципиальную схему?, @Dmitry Grigoryev
«а затем остановиться, когда он достигнет 512» не имеет смысла для двигателя постоянного тока, если к нему не подключено устройство обратной связи по положению. Сервоприводы хобби-типа оснащены внутренним потенциометром для обратной связи. Если вы создаете систему управления положением с помощью обычного двигателя постоянного тока, вам придется механически связать что-то, например, энкодер или потенциометр, с его валом и реализовать контур управления положением., @Chris Stratton