Драйвер шагового двигателя и двигателя постоянного тока l298n и arduino
Содержание:
- Введение
- L298N и шаговый двигатель
- Arduino Code
- Step 1: Getting to Know Your L298N Dual H-Bridge Motor Controller Module:
- Arduino Code – Controlling NEMA 17 Stepper Motor
- Wiring L298N motor driver module with Arduino UNO
- L298 + шаговый двигатель + Raspberry Pi
- Step 1: Specification & Features of L298N Module
- Control Pins
- Подключение модуля к Arduino:
- Introduction: L298N MOTOR DRIVER MODULE
- L298N, Arduino и двигатель постоянного тока
- Готовые модули на L298
- Пояснения к скетчу для управления шаговым двигателем
- Подключение одного двигателя без регулировки скорости врашения
- Sketch code
- Поключение одного двигателя с регулировкой скорости вращения
- Sketch code
- Sketch code
Введение
Электрическая машина постоянного тока является одной из самых простых в эксплуатации, благодаря чему ее так часто применяют в устройствах радиоэлектроники и робототехники. Такая популярность обусловлена простотой питания и управления – для этого подаются два полюса от источника эдс (отрицательный и положительный), и при протекании тока по обмоткам происходит вращение вала. При смене полярности двигатель совершает реверсивное движение.
В системах радиоэлектроники такие способы управления работой двигателя получили название широтно-импульсной модуляции (ШИМ). Такой процесс характеризуется изменением продолжительности подаваемого напряжения или формы его сигнала.
Как можно изменять скорость вращения при помощи ШИМ?
Применяя способ ШИМ, вы производите попеременную подачу и отключение напряжения на обмотки двигателя с большой частотой. Частота импульсов при этом может достигать нескольких килогерц.
Величина среднего напряжения, подаваемого на двигатель, напрямую зависит от формы сигнала ШИМ . Форма сигнала, в свою очередь, определяется рабочим циклом, который можно представить в виде отношения времени подачи сигнала к общему периоду (сумме времени подачи напряжения и его отключения). В результате получается безразмерная величина, которую выражают в процентном отношении – сколько времени от общего периода напряжение подавалось на двигатель. В слаботочных системах на 5, 12, 24 или 36 В применяется цикл на 25%, 50%, 75% и 100%.
Широтно-импульсная модуляци
L298N и шаговый двигатель
Для нашего примера мы используем шаговый двигатель Nema 17, у которого четыре кабеля для подключения.
шаговый двигатель |
Этот двигатель имеет 200 шагов на оборот и может работать с частотой вращения 60 об/мин. Если вы используете другой шаговый двигатель, уточните шаг его шаг и максимальную частоту вращения. Эти параметры понадобятся вам при программировании Arduino.
Еще один важный момент — определить какие именно кабели соответствуют A+, A-, B+ и B-. В нашем примере соответствующие цвета кабелей: красный, зеленый, желтый и голубой. Переходим к подключению.
Кабели A+, A-, B+ и B- от шагового двигателя подключаем к пинам 1, 2, 13 и 14 соответственно. Контакты на коннекторах 7 и 12 на контроллере L298N оставьте замкнутыми. После этого подключите источник питания к пину 4 (плюс) и 5 (минус) на контроллере.
Опять таки, если источник питания меньше 12 вольт, контакт, отмеченный 3 на рисунке модуля, можно оставить замкнутым. После этого, подключите пины модуля L298N IN1, IN2, IN3 и IN4 к соответствующим цифровым пинам D8, D9, D10 и D11 на Arduino.
Теперь подключаем GND пин с Arduino к пину 5 на контроллере, а 5V к 6 пину на модуле. С управлением шагового двигателя проблем быть не должно благодаря встроенной в Arduino IDE библиотеке Stepper Library.
Схема подключения L298N и шагового двигателя к Arduino |
Для проверки работоспособности просто загрузите скетч stepper_oneRevolution, который входит в состав библиотеки. Данный пример находится в меню
File > Examples > Stepper в Arduino IDE.
Arduino Code
Here’s the Arduino code:
/* Arduino DC Motor Control - PWM | H-Bridge | L298N - Example 01 by Dejan Nedelkovski, www.HowToMechatronics.com */ #define enA 9 #define in1 6 #define in2 7 #define button 4 int rotDirection = 0; int pressed = false; void setup() { pinMode(enA, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(button, INPUT); // Set initial rotation direction digitalWrite(in1, LOW); digitalWrite(in2, HIGH); } void loop() { int potValue = analogRead(A0); // Read potentiometer value int pwmOutput = map(potValue, 0, 1023, 0 , 255); // Map the potentiometer value from 0 to 255 analogWrite(enA, pwmOutput); // Send PWM signal to L298N Enable pin // Read button - Debounce if (digitalRead(button) == true) { pressed = !pressed; } while (digitalRead(button) == true); delay(20); // If button is pressed - change rotation direction if (pressed == true & rotDirection == 0) { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); rotDirection = 1; delay(20); } // If button is pressed - change rotation direction if (pressed == false & rotDirection == 1) { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); rotDirection = 0; delay(20); } }
Description: So first we need to define the pins and some variables needed for the program. In the setup section we need to set the pin modes and the initial rotation direction of the motor. In the loop section we start by reading the potentiometer value and then map the value that we get from it which is from 0 to 1023, to a value from 0 to 255 for the PWM signal, or that’s 0 to 100% duty cycle of the PWM signal. Then using the analogWrite() function we send the PWM signal to the Enable pin of the L298N board, which actually drives the motor.
Next, we check whether we have pressed the button, and if that’s true, we will change the rotation direction of the motor by setting the Input 1 and Input 2 states inversely. The push button will work as toggle button and each time we press it, it will change the rotation direction of the motor.
See Also
Step 1: Getting to Know Your L298N Dual H-Bridge Motor Controller Module:
Usage:
H-Bridge’s are typically used in controlling motors speed and direction, but can be used for other projects such as driving the brightness of certain lighting projects such as high powered LED arrays.
How it works:
An H-Bridge is a circuit that can drive a current in either polarity and be controlled by *Pulse Width Modulation (PWM).
* Pulse Width Modulation is a means in controlling the duration of an electronic pulse. In motors try to imagine the brush as a water wheel and electrons as a the flowing droplets of water. The voltage would be the water flowing over the wheel at a constant rate, the more water flowing the higher the voltage. Motors are rated at certain voltages and can be damaged if the voltage is applied to heavily or if it is dropped quickly to slow the motor down. Thus PWM. Take the water wheel analogy and think of the water hitting it in pulses but at a constant flow. The longer the pulses the faster the wheel will turn, the shorter the pulses, the slower the water wheel will turn. Motors will last much longer and be more reliable if controlled through PWM.
Pins:
- Out 1: Motor A lead out
- Out 2: Motor A lead out
- Out 3: Motor B lead out
- Out 4: Mo (Can actually be from 5v-35v, just marked as 12v)
- GND: Ground
- 5v: 5v input (unnecessary if your power source is 7v-35v, if the power source is 7v-35v then it can act as a 5v out)
- EnA: Enables PWM signal for Motor A (Please see the «Arduino Sketch Considerations» section)
- In1: Enable Motor A
- In2: Enable Motor A
- In3: Enable Motor B
- In4: Enable Motor B
- EnB: Enables PWM signal for Motor B (Please see the «Arduino Sketch Considerations» section)
Specifications:
- Double H bridge Drive Chip: L298N
- Logical voltage: 5V Drive voltage: 5V-35V
- Logical current: 0-36mA Drive current: 2A (MAX single bridge)
- Max power: 25W
- Dimensions: 43 x 43 x 26mm
- Weight: 26g
*Built-in 5v power supply, when the driving voltage is 7v-35v
Arduino Code – Controlling NEMA 17 Stepper Motor
The following sketch will give you complete understanding on how to control a bipolar stepper motor like NEMA 17 with L298N motor driver and can serve as the basis for more practical experiments and projects.
Code Explanation:
The sketch starts with including Arduino Stepper Library. The stepper library comes packaged with the Arduino IDE and takes care of sequencing the pulses we will be sending to our stepper motor.
After including the library we define a variable named . As the name suggests it’s the number of steps per revolution that our motor is rated at. In this case it’s 200 i.e. 1.8 degrees per step.
Next, we create an instance of the stepper library. It takes the steps per revolution of motor & Arduino pin connections as parameter.
In setup section of code, we set the speed of stepper motor by calling function and initialize the serial communication.
In loop section of code, we simply call function which turns the motor a specific number of steps at a speed determined by function. Passing a negative number to this function reverses the spinning direction of motor.
Wiring L298N motor driver module with Arduino UNO
Now that we know everything about the module, we can begin hooking it up to our Arduino!
Start by connecting power supply to the motors. In our experiment we are using DC Gearbox Motors(also known as ‘TT’ motors) that are usually found in two-wheel-drive robots. They are rated for 3 to 12V. So, we will connect external 12V power supply to the VCC terminal. Considering internal voltage drop of L298N IC, the motors will receive 10V and will spin at slightly lower RPM. But, that’s OK.
Next, we need to supply 5 Volts for the L298N’s logic circuitry. We will make use of the on-board 5V regulator and derive the 5 volts from the motor power supply so, keep the 5V-EN jumper in place.
Now, the input and enable pins(ENA, IN1, IN2, IN3, IN4 and ENB) of the L298N module are connected to six Arduino digital output pins(9, 8, 7, 5, 4 and 3). Note that the Arduino output pins 9 and 3 are both PWM-enabled.
Finally, connect one motor to terminal A(OUT1 & OUT2) and the other motor to terminal B(OUT3 & OUT4). You can interchange your motor’s connections, technically, there is no right or wrong way.
When you’re done you should have something that looks similar to the illustration shown below.
Wiring DC motors to L298N motor driver & Arduino
L298 + шаговый двигатель + Raspberry Pi
Теперь давайте подключим шаговый двигатель, в моем случае применен биполярный мощный шаговый двигатель, извлеченный из старого матричного принтера.
Для подключения одного биполярного двигателя потребуется два выхода драйвера на L298 (два H-моста). Для данного эксперимента модуль L298 нужно подключить к Raspberry Pi так же, как и в варианте с .
Прежде можете поэкспериментировать без малинки — подавать поочередно на входы модуля L298 напряжение 5В и посмотреть как вал двигателя будет выполнять шаги.
По сути дела, при помощи малинки, мы будем поочередно и с некоторой задержкой подавать импульсы на обмотки движка, чем заставим его вал вращаться в нужную нам сторону и с нужной скоростью.
Рис. 10. Подключение биполярного шагового двигателя к модулю L298 для управления через Raspberry Pi.
Если все уже подключено, то переходим к экспериментам с простой тестовой программой на Python, которая поможет понять как работать с шаговыми двигателем используя L298 + Raspberry Pi.
Создадим файл для скрипта и откроем его для редактирования:
Вставляем в редактор следующий код скрипта на Python
Делаем файл со скриптом исполняемым и запускаем его на исполнение:
осле запуска скрипта, шаговый двигатель должен совершить 4 шага (вращение в одну сторону), потом подождав 10 секунд он снова начнет свое вращение и сделает уже 20*4 шагов.
А теперь рассмотрим пример интерактивной программы, которая позволяет управлять направлением и скоростью вращения (последовательные шаги) шагового двигателя с использованием клавиатуры.
Вы можете сохранить ниже приведенный скрипт в отдельный файл и сделав его исполняемым запустить, или же заменить исходный код программы в уже созданном скрипте из предыдущего примера.
Теперь клацаем клавиши стрелок влево и вправо и смотрим как будет изменяться направление вращения вала двигателя, а при нажатии клавиш вверх и вниз скорость будет увеличиваться и уменьшаться соответственно.
Если же двигатель не вращается, то возможно что потребуется сменить полярность подключения одной из обмоток к модулю на L298.
Рис. 11. Программа управления биполярным шаговым двигателем, L298, Raspberry Pi.
Видео-демонстрация работы шагового двигателя:
Step 1: Specification & Features of L298N Module
The L298N is a dual-channel H-Bridge motor driver capable of driving two DC motors and one stepper motor. means it can individually drive up to two DC motor for any applications like 2WD robots, Small drill machine, solenoid valve, DC lock etc.
An L298N motor driver module consists of an L298N motor driver chip(IC). which is an integrated monolithic circuit in a 15-lead Multiwatt package. It is a high voltage, a high current dual full-bridge driver designed to accept standard TTL logic levels. For more details the datasheet given to the below link.
- Logical voltage : 5V
- Drive voltage : 5V-35V
- Logical current : 0-36mA
- Drive current : 2A (MAX per bridge)
- Max power : 25W
- voltage drop : 2v
- Dimensions : 43 x 43 x 26mm
- Weight : 26g
Control Pins
For each of the L298N’s channels, there are two types of control pins which allow us to control speed and spinning direction of the DC motors at the same time viz. Direction control pins & Speed control pins.
Direction Control Pins
Using the direction control pins, we can control whether the motor spins forward or backward. These pins actually control the switches of the H-Bridge circuit inside L298N IC.
The module has two direction control pins for each channel. The IN1 and IN2 pins control the spinning direction of the motor A while IN3 and IN4 control motor B.
The spinning direction of a motor can be controlled by applying either a logic HIGH(5 Volts) or logic LOW(Ground) to these inputs. The below chart illustrates how this is done.
Input1 | Input2 | Spinning Direction |
Low(0) | Low(0) | Motor OFF |
High(1) | Low(0) | Forward |
Low(0) | High(1) | Backward |
High(1) | High(1) | Motor OFF |
Speed Control Pins
The speed control pins viz. ENA and ENB are used to turn the motors ON, OFF and control its speed.
Pulling these pins HIGH will make the motors spin, pulling it LOW will make them stop. But, with Pulse Width Modulation (PWM), we can actually control the speed of the motors.
The module usually comes with a jumper on these pins. When this jumper is in place, the motor is enabled and spins at maximum speed. If you want to control the speed of motors programmatically, you need to remove the jumpers and connect them to PWM-enabled pins on Arduino.
Подключение модуля к Arduino:
Назначение выходов:
- PWMA \ PWMB — Вход для управления скоростью вращения мотора, для канала A и B соответственно, подключается на выход arduino с поддержкой ШИМ (PWM).
- AIN1 \ AIN2 — Входы полумостов канала A, подключаются на любые свободные выходы arduino.
- BIN1 \ BIN2 — Входы полумостов канала B.
- A01 \ A02 — Выходы полумостов канала A, подключается коллекторный двигатель.
- B01 \ B02 — Выходы полумостов канала B.
- STBY — Включение микросхемы, подключаются на любой свободный выход arduino.
- VM — Вход питания силовой части микросхемы, питание двигателей.
- VCC — Вход питания логической части микросхемы.
- GND — Масса.
Все входы управления (PWMA(B), A(B)IN1(2), STBY) притянуты к массе резистором на 200к.
Подключение к arduino:
Подключение и работа с модулем не отличается от других мостовых драйверов, модуль можно подключать на любые свободные выходы arduino, кроме ног PWM, для него выход должен уметь генерировать ШИМ, такие выходы обозначены ~ (тильдой).
Чтобы заставить мотор крутится, нужно на один выход полумоста подать логическую единицу и на второй логический ноль. Для изменения направления вращения, нужно инвертировать состояние обеих выходов arduino.
Introduction: L298N MOTOR DRIVER MODULE
By HarshS91Follow
More by the author:
About: LANKESH
More About HarshS91 »
This is an instructable on how to control a DC motor and run a bipolar stepper motor by using the L298N motor driver module.Whenever we use the DC motors for any project the main points are,
- speed of DC motor,
- The direction of the DC motor.
This could be achieved by using the motor diver module so, I use the L298N motor driver module because it is cheap and easy to use.
Supplies:
why we will use a motor driver/motor driver module?
because the microcontroller was not delivering a specific amount of current and voltage which will reruired for motors etc.
L298N, Arduino и двигатель постоянного тока
Данный модуль дает возможность управлять одним или двумя двигателями постоянного тока. Для начала, подключите двигатели к пинам A и B на контроллере L298N.
Если вы используете в проекте несколько двигателей, убедитесь, что у них выдержана одинаковая полярность при подключении. Иначе, при задании движения, например, по часовой стрелке, один из них будет вращаться в противоположном направлении. Поверьте, с точки зрения программирования Arduino это неудобно.
После этого подключите источник питания. Плюс — к четвертому пину на L298N, минус (GND) — к 5 пину. Если ваш источник питания до 12 вольт, коннектор, отмеченный 3 на рисунке выше, можно оставить. При этом будет возможность использовать 5 вольтовый пин 6 с модуля.
Данный пин можно использовать для питания Arduino. При этом не забудьте подключить пин GND с микроконтроллера к 5 пину на L298N для замыкания цепи. Теперь вам понадобится 6 цифровых пинов на Arduino. Причем некоторые пины должны поддерживать ШИМ-модуляцию.
ШИМ-пины обозначены знаком “~” рядом с порядковым номером.
Теперь подключите цифровые пины Arduino к драйверу. В нашем примере два двигателя постоянного тока, так что цифровые пины D9, D8, D7 и D6 будут подключены к пинам IN1, IN2, IN3 и IN4 соответственно. После этого подключите пин D10 к пину 7 на L298N (предварительно убрав коннектор) и D5 к пину 12 (опять таки, убрав коннектор).
Направление вращения ротора двигателя управляется сигналами HIGH или LOW на каждый привод (или канал). Например, для первого мотора, HIGH на IN1 и LOW на IN2 обеспечит вращение в одном направлении, а LOW и HIGH заставит вращаться в противоположную сторону.
При этом двигатели не будут вращаться, пока не будет сигнала HIGH на пине 7 для первого двигателя или на 12 пине для второго. Остановить их вращение можно подачей сигнала LOW на те же указанные выше пины. Для управления скоростью вращения используется ШИМ-сигнал.
Скетч приведенный ниже, отрабатывает в соответствии со схемой подключения, которую мы рассматривали выше. Двигатели постоянного тока и Arduino питаются от внешнего источника питания.
// подключите пины контроллера к цифровым пинам Arduino
// первый двигатель
int enA = 10;
int in1 = 9;
int in2 = 8;
// второй двигатель
int enB = 5;
int in3 = 7;
int in4 = 6;
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);
// устанавливаем скорость 200 из доступного диапазона 0~255
analogWrite(enA, 200);
// запуск двигателя B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// устанавливаем скорость 200 из доступного диапазона 0~255
analogWrite(enB, 200);
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);
}
Готовые модули на L298
В интернете можно заказать готовый модуль на L298, правда в нем будет 6 входов для управления.
Рис. 6. Готовые модули на L298.
Я для своих нужд приобрел готовый модуль по типу как на рисунке слева. В нем присутствует микросхема L298 и небольшой стабилизатор для подачи +5В на логику микросхемы.
Для подключения данной платки важно четко уяснить одну особенность:
- Если для питания двигателей используется напряжение более чем 12В то перемычку нужно убрать и подавать отдельно 5В на выделенный для этого коннектор
- Если питание двигателей будет осуществляться от напряжения 5-12В то перемычку нужно утсановить и дополнительное питание 5В не понадобится.
Если же подать на двигатели, например 20В и оставить перемычку установленной, то на модуле выгорит микросхемка-стабилизатор на 5В. Почему разработчики не установили интегральный стабилизатор с более широким диапазоном входных напряжений — не понятно.
Для того чтобы сэкономить два входа при подключении такого блока к Arduino или Raspberry Pi можно добавить часть схемы на CD4001, как на рисунке 5.
Пояснения к скетчу для управления шаговым двигателем
Уточните значение
const int stepsPerRevolution = 200;
в скетче и измените значение 200 на ваше количество шагов за один поворот двигателя вала и скорость вращения в строке
myStepper.setSpeed(60);
Теперь можете сохранить и загрузить скетч, который реализует вращение один оборот вала, а затем в противоположную сторону. Это реализуется с помощью функции
myStepper.step(stepsPerRevolution); // вращение по часовой стрелке
myStepper.step(-stepsPerRevolution); // вращение против часовой стрелки
Подключение Arduino |
Подключение одного двигателя без регулировки скорости врашения
Для этого замыкаем джампер как показано на рисунке, тем самым соединяя вывод EN с +5V
Как уже говорилось ранее, при таком способе мы не можем регулировать скорость вращения, однако для управления одним каналом модуля будет задействованно два цифровых вывода вместо трех.
моторчик вращаться «вправо» 4 секунды, остановиться на 0.5 секунды, вращаться «влево» 4 секунды, остановка 5 секунд и снова цикл повторяется. |
Sketch code
// вращаться "вправо" 4 секунды, остановиться на 0.5 секунды, вращаться "влево" 4 секунды, остановка 5 секунд и снова цикл повторяется int IN3 = 5; // Input3 подключен к выводу 5 int IN4 = 4; void setup() { pinMode (IN4, OUTPUT); pinMode (IN3, OUTPUT); } void loop() { // На пару выводов "IN" поданы разноименные сигналы, мотор вращается digitalWrite (IN4, HIGH); digitalWrite (IN3, LOW); delay(4000); // На пару выводов "IN" поданы одноименные сигналы, мотор не вращается digitalWrite (IN4, LOW); delay(500); // На пару выводов "IN" поданы разноименные (и уже противоположные относительно первого случая) сигналы, мотор вращается // относительно первого случая) сигналы, мотор вращается в другую сторону digitalWrite (IN3, HIGH); delay(4000); // Снова на выводах "IN" появились одноименные сигналы, мотор не вращается digitalWrite (IN3, LOW); delay(5000); }
Поключение одного двигателя с регулировкой скорости вращения
подсоединяем ENB к выводу ШИМ (D3)
Теперь становится возможно управлять скоростью мотора, изменяя скважность посылаемого ШИМ сигнала
Значения скважности задаются функцией analogWrite(pin, число), где число изменяется от 0 до 255, прямо пропорционально скважности сигнала. Для наглядности, подобраны четыре значения при которых двигатель стартует с низких оборотов, набирает средние, выходит на максимальные и не вращается
Sketch code
// двигатель стартует с низких оборотов, набирает средние, выходит на максимальные и не вращается int IN3 = 5; // Input3 подключен к выводу 5 int IN4 = 4; int ENB = 3; void setup() { pinMode (ENB, OUTPUT); pinMode (IN3, OUTPUT); pinMode (IN4, OUTPUT); } void loop() { // На пару выводов "IN" поданы разноименные сигналы, мотор готов к вращаению digitalWrite (IN3, HIGH); digitalWrite (IN4, LOW); // подаем на вывод ENB управляющий ШИМ сигнал analogWrite(ENB,55); delay(2000); analogWrite(ENB,105); delay(2000); analogWrite(ENB,255); delay(2000); // Останавливаем мотор повад на вывод ENB сигнал низкого уровеня. // Состояние выводов "IN" роли не играет. analogWrite(ENB,0); delay(5000); }
Sketch code
// два мотора будут вращаться в обе стороны с плавным нарастанием скорости int IN1 = 5; // Input1 подключен к выводу 5 int IN2 = 4; int IN3 = 3; int IN4 = 2; int ENA = 9; int ENB = 3; int i; void setup() { pinMode (EN1, OUTPUT); pinMode (IN1, OUTPUT); pinMode (IN2, OUTPUT); pinMode (EN2, OUTPUT); pinMode (IN4, OUTPUT); pinMode (IN3, OUTPUT); } void loop() { digitalWrite (IN2, HIGH); digitalWrite (IN1, LOW); digitalWrite (IN4, HIGH); digitalWrite (IN3, LOW); for (i = 50; i <= 180; ++i) { analogWrite(EN1, i); analogWrite(EN2, i); delay(30); } analogWrite (EN1, 0); analogWrite (EN2, 0); delay(500); digitalWrite (IN1, HIGH); digitalWrite (IN2, LOW); digitalWrite (IN3, HIGH); digitalWrite (IN4, LOW); for (i = 50; i <= 180; ++i) { analogWrite(EN1, i); analogWrite(EN2, i); delay(30); } analogWrite (EN1, 0); analogWrite (EN2, 0); delay(8000); }
Click here