Листинг 4.5. Программа управления двигателем с помощью потенциометра
!! Управление двигателем с помощью Н-моста
const int EN=9;// Вход включения двигателя EN
const int MC1=3;// Вход 1 управления двигателем
const int MC2=2;// Вход 2 управления двигателем
const int POT=0;// Аналоговый вход 0 для подключения потенциометра
int val = 0;// Переменная для хранения значения потенциометра
int velocity = 0;// Переменная для хранения скорости двигателя (0-255)
void setup()
{
pinMode(EN, OUTPUT);
pinMode(MC1, OUTPUT);
pinMode(MC2, OUTPUT);
brake();// Остановка двигателя при инициализации
}
- 97 -
void loop()
{
val = analogRead(POT);
// Движение вперед
if (val > 562)
{
velocity = map(val, 563, 1023, 0, 255);
forward(velocity);
}
// Движение назад
else if (val < 462)
{
velocity = map(val, 461, 0, 0, 255);
reverse(velocity);
}
// Остановка
else
brake();
}
// Движение двигателя вперед с заданной скоростью
// (диапазон 0-255)
void forward (int rate)
{
digitalWrite(EN, LOW);
digitalWrite(MC1, HIGH);
digitalWrite(MC2, LOW);
analogWrite(EN, rate);
}
// Движение двигателя в обратном направлении с заданной скоростью
// (диапазон 0-255)
void reverse (int rate)
{
digitalWrite(EN, LOW);
digitalWrite(MC1, LOW);
digitalWrite(MC2, HIGH);
analogWrite(EN, rate);
}
// Остановка двигателя
void brake()
{
digitalWrite(EN, LOW);
digitalWrite(MC1, LOW);
digitalWrite(MC2, LOW);
digitalWrite(EN, HIGH);
}
- 98 -
Загрузите программу в плату Arduino и запустите на выполнение. Все работает, как ожидалось? Если нет, еще раз внимательно проверьте монтаж.
В качестве упражнения подключите к драйверу H-моста SN754410 второй двигатель постоянного тока и напишите программу управления двумя двигателями.
4.11. Управление серводвигателем
Двигатели постоянного тока прекрасно действуют в качестве моторов, но очень неудобны для точных работ, т. к. не имеют обратной связи. Другими словами, без какого-нибудь внешнего датчика нельзя узнать положение вала двигателя постояого тока. Серводвигатели (или сервоприводы), напротив, отличаются тем, что с помощью команд можно установить их в определенное положение, в котором они будут находиться до поступления новых команд. Это важно, когда необходимо некоторую систему переместить в определенное положение. В этом разделе вы узнаете о серводвигателях и их управлении с помощью Arduino.
Проще всего приобрести стандартные сервоприводы. Они имеют фиксированный диапазон углов поворота ( обычно от 0 до 180 ° ) и содержат соединенный с приводным валом потенциометр, который определяет угол поворота сервопривода.
Управление сервоприводом происходит подачей прямоугольного импульса. Длительность импульса (в случае стандартного сервопривода) определяет угол поворота.
Если удалить потенциометр, получится сервопривод непрерывного вращения, который сможет вращаться постоянно, при этом длительность импульса определяет скорость вращения.
Далее будем использовать стандартные сервоприводы, вал которых поворачивается на определенный угол. При желании вы можете поэкспериментировать с сервоприводами непрерывного вращения либо удалив из стандартного потенциометр, либо купив готовый сервопривод постоянного вращения.
В отличие от двигателей постоянного тока, серводвигатели имеют три контактных провода:
• питание (обычно красного цвета);
• земля (обычно коричневого или черного цвета);
• сигнальный вход ( обычно белый или оранжевый).
Провода имеют цветовую маркировку и обычно расположены в том же порядке, как на рис. 4.9. Некоторые производители меняют порядок расположения проводов,
- 99 -
поэтому перед применением сервопривода желательно ознакомиться с документацией.
Окраска проводов может отличаться, но приведенные цветовые сочетания наиболее распространены (обратитесь к документации конкретного сервопривода, если не уверены).
Белый/оранжевый - сигнал управления
Красный - питание
Черный/коричневый - земля
Рис. 4.9. Сервоприводы
Как и двигатели постоянного тока, серводвигатели требуют для работы ток больше, чем выдает встроенный источник питания Arduino. Хотя иногда удается запустить один-два сервопривода от блока питания платы Arduino. У серводвигателей, в отличие от двигателей постоянного тока, есть дополнительный сигнальный провод для установки угла поворота вала. Питание и земляной провод серводвигателя нужно подсоединить к источнику постоянного напряжения.