Драйвер двигателей L293D является одной из самых распространенных микросхем, предназначенных для для управления электродвигателями. На самом деле микросхема L293D содержит сразу два драйвера для управления электродвигателями небольшой мощности (четыре независимых канала, объединенных в две пары). Имеет две пары входов для управляющих сигналов и две пары выходов для подключения электромоторов. Кроме того, у L293D есть два входа для включения каждого из драйверов. Эти входы используются для управления скоростью вращения электромоторов с помощью широтно модулированного сигнала (ШИМ).
Пояснение к распиновке:
- Входы ENABLE1 и ENABLE2 отвечают за включение каждого из драйверов, входящих в состав микросхемы.
- Входы INPUT1 и INPUT2 управляют двигателем, подключенным к выходам OUTPUT1 и OUTPUT2.
- Входы INPUT3 и INPUT4 управляют двигателем, подключенным к выходам OUTPUT3 и OUTPUT4.
- Контакт Vs соединяют с положительным полюсом источника электропитания двигателей или просто с положительным полюсом питания, если питание схемы и двигателей единое. Проще говоря, этот контакт отвечает за питание электродвигателей.
- Контакт Vss соединяют с положительным полюсом источника питания. Этот контакт обеспечивает питание самой микросхемы.
- Четыре контакта GND соединяют с «землей» (общим проводом или отрицательным полюсом источника питания). Кроме того, с помощью этих контактов обычно обеспечивают теплоотвод от микросхемы, поэтому их лучше всего распаивать на достаточно широкую контактную площадку.
Пример
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
// Первый двигатель #define IN1 8 // Первый пин управления двигателем 1 #define IN2 9 // Второй пин управления двигателем 1 #define EN1 10 // Вкл двигателя 1 // Второй двигатель #define IN3 12 // Первый пин управления двигателем 2 #define IN4 13 // Второй пин управления двигателем 2 #define EN2 11 // Вкл двигателя 2 void setup() { // инициализируем все пины для управления двигателями как outputs pinMode(EN1, OUTPUT); pinMode(EN2, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); } void loop() { // Двигатель 1: устанавливаем скорость 100 из доступного диапазона 0~255 analogWrite(EN1, 100); // Двигатель 2: устанавливаем скорость 255 из доступного диапазона 0~255 analogWrite(EN2, 255); // Двигатель 1: прямое направление digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); // Двигатель 2: прямое направление digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); // ожидание 5 секунд delay(5000); // Двигатели 1 и 2: остановка digitalWrite(EN1, LOW); digitalWrite(EN2, LOW); // ожидание 3 секунды delay(3000); // Двигатель 1: устанавливаем скорость 255 из доступного диапазона 0~255 analogWrite(EN1, 255); // Двигатель 2: устанавливаем скорость 100 из доступного диапазона 0~255 analogWrite(EN2, 100); // Двигатель 1: обратное направление digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); // Двигатель 2: обратное направление digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); // ожидание 5 секунд delay(5000); } |