Плата управления двигателем на микросхеме L293D . Идеальна для опытов и экспериментов, все чипы установлены в сокетах и легко меняются. Возможность подключения до 4-х DC-моторов или 2 шаговых двигателя. Максимальный суммарный ток до 1,2А.
Для управления используются всего 4 выхода платы Arduino. Управляющие сигналы на L293 подаются со сдвигового регистра 74HC595.
Cкетча для работы с платой
(после подключения платы и загрузки скетча, все моторы будут по очереди крутиться )
//**********************************************************
// Программа для работы с Платой управления двигателем (L293D)
// плата расчитана на работу с четырьмя DC моторами или
// с двумя шаговыми моторами
// Для управления задействованы 4 выхода платы ARDUINO
// За основу взят скетч: http://www.arduino.ru/Tutorial/registr_74HC595
// номера битов для управления моторами
//
// номер бита 7 6 5 4 3 2 1 0
// мотор ——————————
// М1 пр 0 0 0 0 0 1 0 0
// М1 лв 0 0 0 0 1 0 0 0
// М2 пр 0 0 0 0 0 0 1 0
// М2 лв 0 0 0 1 0 0 0 0
// М3 пр 1 0 0 0 0 0 0 0
// М3 лв 0 0 1 0 0 0 0 0
// М4 пр 0 0 0 0 0 0 0 1
// М4 лв 0 1 0 0 0 0 0 0
// пр, лв — направление вращения
//**********************************************************
// Пин подключен к ST_CP входу 74HC595
// Защелка данных
int latchPin = 12;
// Пин подключен к SH_CP входу 74HC595
// Тактовые импульсы
int clockPin = 4;
// Пин подключен к DS входу 74HC595
// Вход данных
int dataPin = 8;
// Пин подключен к OE входу 74HC595
// Разрешение работы 74HC595
int oe_Pin = 7;
// переменная содержит данные для управления двигателями
int out_data;
// переменная счетчика
int tmp;
void setup() {
//устанавливаем режим OUTPUT
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(oe_Pin, OUTPUT);
// Устанавливаем ОЕ в «0», разрешаем работу микросхемы
digitalWrite(oe_Pin, LOW);
out_data=1;
tmp=0;
}
void loop() {
// отсчитываем от 0 до 8 и включаем двигатели
if (tmp < 8)
{
// устанавливаем синхронизацию «защелки» на LOW
digitalWrite(latchPin, LOW);
// передаем последовательно на dataPin
shiftOut(dataPin, clockPin, MSBFIRST, out_data);
//»защелкиваем» регистр, тем самым устанавливая значения на выходах
digitalWrite(latchPin, HIGH);
// пауза перед следующей итерацией
delay(3000);
// сдвиг данных в лево
out_data =out_data*2;
tmp++; // добавление +1 к счетчику
}
else
{
// устанавливаем счетчик и выход в исходное состояние
out_data=1;
tmp=0;
}
}