Пример 27. Драйвер двигателей на L298N
Примеры
ПРИМЕРЫ
- Пример 1. Светодиоды
- Пример 2. Подключение кнопки
- Пример 3. Переключатель
- Пример 4. Активный зуммер
- Пример 5. Пассивный зуммер
- Пример 6. Фоторезистор
- Пример 7. RGB-светодиод
- Пример 8. Семисегментный индикатор и 74HC595N
- Пример 9. Четырехразрядный 7-сегментный индикатор
- Пример 10. Светодиодная матрица
- Пример 11. Светодиодная шкала
- Пример 12. ЖК-дисплей
- Пример 13. Джойстик
- Пример 14. Вольтметр
- Пример 15. Термистор
- Пример 16. Модуль DHT11
- Пример 17. Модуль HC-SR04
- Пример 18. Датчик движения HC-SR501
- Пример 19. Матричная клавиатура
- Пример 20. ИК датчик и пульт
- Пример 21. Модуль часов DS-1302
- Пример 22. RFID-модуль RC522
- Пример 23. Сервопривод
- Пример 24. Модуль реле
- Пример 25. Двигатель постоянного тока
- Пример 26. Шаговый двигатель и драйвер ULN2003
- Пример 27. Драйвер двигателей на L298N
- Пример 28. MP3-плеер DFPlayer Mini
- Пример 29. Датчик уровня воды
- Пример 30. Serial Port
- Пример 31. Симуляция парковки
- Пример 32. Датчик температуры DS18B20
- Пример 33. Bluetooth-модуль HC-06
- Пример 34. Плата расширения с дисплеем и кнопками
- Пример 35. Плата расширения для двигателей на L293D
- Пример 36. Ethernet шилд W5100
- Пример 37. GSM/GPRS шилд SIM900
- Пример 38. GPS модуль Ublox NEO-6M
- Пример 39. Модуль считывания отпечатков пальцев
- Пример 40. Шаговый двигатель NEMA17 и драйвер TB6600
Модуль драйвера L298N является двуканальным драйвером двигателей постоянного тока и основан на двух H-мостовых драйверах. Через этот модуль вы можете управлять двумя двигателями постоянного тока, либо одним четырехпроводным двухфазным шаговым двигателем. При управлении двумя двигателями постоянного тока имеется возможность одновременно с направлением их вращения управлять и скоростью с помощью подачи ШИМ-сигнала на соответствующие выводы. Если управление скоростью не требуется, то выводы ENA и ENB можно замкнуть перемычкой на соответствующие выводы +5V.
Модуль драйвера имеет 6 выводов:
- ENA – вывод для управления скоростью мотора A с помощью ШИМ;
- IN1 – вывод 1 мотора А;
- IN2 – вывод 2 мотора А;
- IN3 – вывод 1 мотора B;
- IN4 – вывод 2 мотора B;
- ENB – вывод для управления скоростью мотора B с помощью ШИМ.
Обратите внимание на данный клеммник на драйвере:
Описание:
В данном примере с помощью Arduino и драйвера на L298N будем управлять двумя двигателями постоянного тока. Установим скорость и направление вращения, поменяем их. В теле функции demoOne() (см. скетч ниже) будем включать двигатели и начинаем с ними работать при ШИМ-значении 100. Через некоторое время двигатели начинают вращаться в противоположном направлении (благодаря смене HIGH и LOW в теле функции digitalWrite()). Для демонстрации возможностей изменения скорости вращения, используем доступный ШИМ-диапазон в теле функции demoTwo(). Сигнал на пине меняется от 0 до 255 и вновь до нуля.
Компоненты:
- 1 × Плата Arduino
- 1 × USB-кабель
- 1 × Драйвер двигателей на L298N
- 2 × Двигатель постоянного тока (с редуктором) или (без редуктора)
- 1 × Клемма для 9 В батареи (Кроны)
- 1 × 9 В цинковая батарея (типа Крона)
- Соединительные провода
Схема:
Скетч:
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
// подключите пины контроллера к цифровым пинам Arduino // первый двигатель int enA = 9; int in1 = 7; int in2 = 6; // второй двигатель int enB = 3; int in3 = 5; int in4 = 4; void setup() { // инициализируем все пины для управления двигателями как outputs pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); } // эта функция обеспечит вращение двигателей в двух направлениях на установленной скорости void demoOne() { // запуск двигателя A digitalWrite(in1, HIGH); digitalWrite(in2, LOW); // устанавливаем скорость 100 из доступного диапазона 0~255 analogWrite(enA, 100); // запуск двигателя B digitalWrite(in3, HIGH); digitalWrite(in4, LOW); // устанавливаем скорость 100 из доступного диапазона 0~255 analogWrite(enB, 100); delay(2000); // меняем направление вращения двигателей digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); delay(2000); // выключаем двигатели digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); } // эта функция обеспечивает работу двигателей во всем диапазоне возможных скоростей void demoTwo() { // обратите внимание, что максимальная скорость определяется самим двигателем и напряжением питания // ШИМ-значения генерируются функцией analogWrite() // и зависят от вашей платы управления // запускаем двигатели digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); // ускорение от нуля до максимального значения for (int i = 0; i < 256; i++) { analogWrite(enA, i); analogWrite(enB, i); delay(20); } // торможение от максимального значения к минимальному for (int i = 255; i >= 0; --i) { analogWrite(enA, i); analogWrite(enB, i); delay(20); } // теперь отключаем моторы digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); } void loop() { demoOne(); delay(1000); demoTwo(); delay(1000); } |