Arduino и использование двигателей. Подключение двигателя постоянного тока и управление им. Курс Arduino - Моторы

Одно из самых интересных в хобби-электронике – это использование двигателей для «оживления» ваших проектов. Однако добавление мотора в ваш проект может оказаться непростой задачей, особенно, если вы до этого с приводами не работали.

Данная статья даст вам понимание принципов работы двигателей различных типов и пояснит многие необходимые нюансы и их особенности.

Принцип работы двигателей

Перед тем как разбираться, как именно моторы работаю, давайте сосредоточимся на том, для чего они используются. Моторы используют электромагнитные силы для обеспечения движения, преобразования электроэнергии в механическую.

Магнитные поля создают силу, которая может перемещать объекты. Каждый магнит имеет магнитное поле с северным и южным полюсом. Если вы попробуете приблизить два северных полюса двух магнитов, они будут отталкиваться. То же самое произойдет, если вы попытаетесь приблизить два южных полюса. Если полюса одинаковые, они будут отталкиваться друг от друга. Если же вы приблизите северный полюс одного с южному полюсу другого магнита, они притянутся с определенным усилием. То есть, противоположные полюса притягиваются друг к другу.

Электродвигатель использует свойства магнитов отталкиваться и притягиваться для генерации движения. В обычном электродвигателе два магнита: постоянный и переменный. Переменный магнит называется электромагнитом. Электромагнит создается с помощью пропускания электрического тока через проводник. Постоянный магнит постоянно имеет магнитное поле (северный и южный полюса), а электромагнит генерирует магнитное поле только, когда через него пропускают электрический ток. Сила магнитного поля электромагнита может быть увеличена с помощью повышения тока, проходящего через проводник или методом формирования нескольких обмоток проводника.

В электродвигателе электромагнит устанавливается на ось таким образом, что он может свободно вращаться внутри магнитного поля постоянного магнита. В момент, когда через проводник проходит электрический ток, переменное магнитное поле взаимодействует со статическим магнитным полем магнита, возникают силы отталкивания и притяжения. Это заставляет электромагнит вращаться, возникает движение.

Основные узлы электродвигателя:

Постоянный магнит (магниты), в случае, когда он установлен неподвижно, называется статором;

Внутри статора есть катушка, которая установлена на оси и вращается, называется ротором.

Двигатели постоянного тока



Двигатели постоянного тока (DC motor) во многом являются самыми простыми электродвигателями. Большинство «щеточных» двигателей работают одинаково. Есть ротор и статор. Есть магниты на статоре и катушка на роторе с магнитным полем, которое генерируется с помощью подачи на нее силы тока. Есть щетки внутри мотора, которые заставляют двигаться ротор.

При использовании источника постоянного тока, для управления подобным двигателем практически ничего не надо. Скорость его вращения зависит от силы тока, которая поступает на катушки от источника питания к коммутатору.

Для вращения оси двигателя в противоположном направлении, достаточно подключить контакты от источника питания к двигателю наоборот.


Шаговые двигатели


Как и двигатели постоянного тока, состоят из ротора и статора. Но, в отличие от других двигателей, ротор шагового двигателя представляет из себя постоянный магнит, который вращается внутри полей, создаваемых электромагнитами. Статор состоит из нескольких катушек, которые расположены в корпусе мотора. Когда ток проходит через катушки, подвижный вал двигателя (который является, по сути, постоянным магнитом) располагается в соответствии с генерируемым электромагнитной катушкой полем. Когда катушки заряжаются в определенной последовательности, вал двигателя выбирает новые положения и, соответственно, начинает вращаться.

Ротор приводится в движение последовательной подачей напряжения на катушки. Шаговый двигатель имеет возможность проворачивать ротор на определенный шаг в зависимости от разрешения импульса.

Шаговые двигатели являются отличным выбором для проектов на Arduino (и не только) по нескольким причинам. Они стоят относительно недорого, у них маленькая погрешность, следовательно – это идеальный выбор для управления с разомкнутой системой управления (без дополнительных датчиков положения рабочего органа). Шаговые двигатели будут обеспечивать заданное положение ротора исключительно в зависимости от поданной силы тока.

Эти двигатели предназначены для вращения в одном и противоположном направлении. Если вы подключите источник питания к контактам шагового двигателя, вал начнет вращаться. Если вы подключите проводники наоборот, он будет вращаться в противоположном направлении. Правда, стоит учесть, что в некоторых шаговых двигателях вращение в противоположную сторону невозможно. Перед его запуском, уточняйте этот момент.

Серводвигатели


Обычные серводвигатели для моделистов используются для поворота и удерживания определенной позиции в диапазоне от 0 до 180 градусов. Благодаря этому они находят широкое применение в робототехнике, приводах позиционирования. В производстве серводвигатели используются в модулях рулевого управления автомобилями, лодками, в механизмах фокусировки современных видеокамер.

В большинстве случаем серводвигатели имеют три провода: питание, земля и сигнал. Обычно провод питания красного цвета, земля – черного или коричневого. Сигнал – желтый, оранжевый или белый.

В серводвигателях, которые, например, используются в системах управления радиоуправляемых машин, электродвигатель подключен к потенциометру. Стандартный приемник/передатчик посылает ШИМ-сигналы на серву. Электроника (небольшая плата-контроллер) внутри серводвигателя, переводит ширину импульса в положение. Когда на серву поступает сигнал к повороту, питание будет подаваться на мотор до тех пор, пока потенциометр не достигнет положения, которое будет соответствовать заданному предварительно через приемник/передатчик.

Сигнал управления является цифровым ШИМ сигналом с частотой 50 Гц. Каждые 20 миллисекунд подается цифровой импульс управления. Продолжительность (ширина) импульса находится в диапазоне от 1.0 миллисекунды до 2.0 миллисекунд. 1.5 – середина диапазона. Большая ширина импульса может использоваться для дополнительного хода, который выходит за нормальный рабочий диапазон. ШИМ (широтно-импульсная модуляция) сигнал иногда называют ШПМ (широтно-позиционная модуляция), хотя это не корректно.

Импульс шириной 1.5 миллисекунды обычно устанавливает серводвигатель в «нейтральное» положение или 90 градусов. Импульс шириной 1.25 миллисекунд может установить его в 0 градусов, а импульс 1.75 миллисекунды в 180 градусов. Физические ограничения и время для различных серводвигателей могут отличаться, но его нейтральное положение всегда соответствует 1.5 миллисекундам.

Вибрационные двигатели


Вибрационные двигатели часто используются в мобильных устройствах для регистрации наличия движения.

Вибрационные моторы по конструктивному исполнению похожи на большинство шаговых двигателей и двигателей постоянного тока. Отличием является то, что на конце ротора установлен эксцентрик. При движении ротора, эксцентрик заставляет механизм внутри корпуса двигателя вибрировать. Интенсивность вибрации зависит как от размеров двигателя, так и от размеров эксцентрика.

На видео сверху показан мотор, установленный на металлической основе. Обратите внимание, как лист металла совершает волновые движения под действием вибрации вибрационного мотора.

Как выбрать двигатель для проекта


Выбор типа двигателя для вашего проекта зависит от того, что именно вы собираетесь автоматизировать. Если вы хотите установить камеру и обеспесить ее поворот влево-вправо, идеальным выбором будет серводвигатель. Если вы передаете движение на зубчатые колеса с необходимостью обеспечения реверса, лучшим выбором станет шаговый двигатель.

Естественно, отличным выбором для управления вашим двигателем станет плата Arduino или ее клоны. Отличительной позитивной чертой данных плат является то, что их пины могут быть использованы для комплексных проектов, включая дополнительное подключение к двигателям датчиков, систем контроля и т.п.

Использование шагового двигателя с Arduino



Стоит отметить, что «оживлять» свои проекты с помощью плат Arduino и оболочки Arduino IDE для их программирования очень легко из-за наличия большого количества уже готовых библиотек. Подключение шагового двигателя к плате Arduino отличается от подключения двигателя постоянного тока. Существует специальная библиотека и функция, встроенные в Arduino IDE. Более детально об этом вы можете почитать .

File>Examples>Stepper>stepper_oneRevolution

Данная программа дает возможность управлять уни- или биполярным шаговым двигателем после его подключения к цифровым пинам 8-11 на плате Arduino. После загрузки скетча на плату Arduino, шаговый двигатель должен сделать один оборот по часовой стрелке, после этого – один поворот против часовой стрелки.

Данный пример – отличное начало. Естественно, вы можете вносить свои коррективы в программу, подстраивая ее под свои задачи. Задержка указывается в миллисекундах, так что если вы не хотите выдерживать паузу между оборотами, можете выставить задержку delay(10). Или, для того, чтобы замедлить вращение можете изменить stepsPerRevolution и присвоить ему значение, например, (1000000).

Изменения скетча зависят от того, что именно вы хотите реализовать. Для лучшего понимания того, как именно происходит обмен данными между шаговым двигателем и платой Arduino, советую поэкспериментировать с другими примерами.


Использование двигателя постоянного тока / вибрационного двигателя с Arduino


В некоторых проектах нет смысла использовать микропроцессоры вроде Arduino. Например, если вы делаете игрушку для ребенка (или взрослого) и хотите установить в нее вибрационный двигатель, гораздо эффективнее и лучше использовать простую кнопку для запуска двигателя.

В таком случае, мотор будет подключатся непосредственно к вашему источнику питания через выключатель, который соединен с позитивным коннектором вашего двигателя.

Использование серводвигателя с Arduino




Так же как и шаговые двигатели, для работы серводвигателей в оболочке Arduino IDE есть встроенная библиотека.

После открытия Arduino IDE, перейдите в меню во вкладку

File>Examples>Servo>Knob

Данная программа обеспечивает управление серводвигателем, который подключен к 9-му ШИМ пину платы Arduino. , в свою очередь, подключен к аналоговому пину 0 и обеспечивает управление положением серводвигателя, посылая напряжение, пропорциональное сопротивлению на пин А0 платы Arduino. Скетч, который «залит» в плату Arduino, интерпретирует сигнал в импульсы, которые посылаются на серводвигатель. Двигатель обеспечивает поворот вала в соответствии с положением «крутилки» потенциометра.


Please enable JavaScript to view the comments powered by Disqus.

сайт - это информационный ресурс с лучшими инструкциями и туториалами по использованию контроллеров Arduino.

Всегда рады конструктивному сотрудничеству. Со всеми вопросами, пожеланиями и предложениями обращайтесь на почту [email protected].

Моторы

В этом уроке мы рассмотрим два вида моторов: DC мотор и Сервопривод.

Сервопривод – это моторчик, который может держать заданный угол поворота. Так же есть сервы, которые могут удерживать заданную скорость, но сегодня мы не будем их рассматривать.

Нам понадобятся

  • Микросервопривод
  • DC мотор(я использовал FA-130 из Матрешки)
  • Конденсатор на 220 мкФ
  • MOSFET
  • Выпрямительный диод
  • Потенциометр
  • Соединительные провода «Папа-Папа»

DC мотор

Для начала рассмотрим обычный моторчик. Ток, который поддерживает Arduino на своих выходах до 40 мА. Моторчик без нагрузки потребляет 80мА, а при блокировке 1600мА (для разных моторчиков потребляемый ток может варьироваться), что определенно больше максимальных 40 мА. Поэтому, если моторчик просто подключить к пину Arduino, то велик шанс, в лучшем случае повредить мотор или сжечь пин, в худшем – вывести из строя микроконтроллер.

Для того, чтобы подключить мотор к Arduino, придуманы различные Motor-shieldы, придуманы микросхемы, например L298, MOSFET- транзисторы. В первой части курса мы рассмотрим только MOSFET-транзистор.

Что такое транзистор? Транзистор – это электронная кнопка, только «нажимаемая» током. О нем .

MOSFET- транзистор – это транзистор для управления большими токами, малым напряжением.

Так как вывод Vin позволяет подключать нагрузку без ограничений по величине тока, мы сможем подключить моторчик и управлять им с помощью MOSFET и Arduino.

Соберем схему, которая позволит нам посмотреть, как в зависимости от подаваемого напряжения изменяется скорость вращения мотора.

Компонент сверку мотора – это выпрямительный диод. Если ты знаком с устройством коллекторного мотора, то ты знаешь, что при его работе возникает обратный ток, который может повредить наш MOSFET. Для того чтобы этого не произошло мы и используем выпрямительный диод.

Главное - не перепутать полярность подключения диода. Иначе - будет короткое замыкание.

Теперь перейдем к коду.

Код к мотору

#define MOTOR 9 #define POT A0 void setup() { // Обозначим пин MOTOR как выход. pinMode(MOTOR , OUTPUT); Serial.begin(9600); Serial.println("Potentiometer"s values in volts"); } void loop() { //Создаем переменную, для регулирования скорости мотора int motorSpeed = analogRead(POT)/ 4; // Выставляем скорость мотора в соответствии с показаниями потенциометра. analogWrite(MOTOR,motorSpeed); //Создаем "плавающую" переменную для выведения данных в Serial Monitor. float voltage = (analogRead(POT)/ 204.8); //Выводим данные в Serial monitor. Serial.println(voltage); //Немного ждем. delay(1000); }

Пояснения

Мотор подключается как аналоговый выход. То есть, питание выводится через analogWrite(MOTOR, Значение) А в зависимости от значения, MOSFET дает сигнал о подаче нужного напряжения.

Сервопривод

Отлично! С моторчиком разобрались. Теперь переходим к сервомотору. Без определенных знаний при управлении сервомотором не обойтись. Но хорошие люди уже постарались для нас и сделали библиотеку для управления сервой. Поэтому управлять сервомотором достаточно простая задача.

Соберем простенькую схемку, в которой серва будет поворачиваться сначала до упора в право, а потом обратно влево и так бесконечно. Где нам это пригодится, мы узнаем во Второй части нашего курса. А проявив фантазию, ты уже сейчас можешь найти применение этой схеме. Внимание на картинку.

Бочонок на схеме – это конденсатор. Конденсатор – это такая маленькая батарейка, которая очень быстро заряжается и быстро разряжается. О нем .

В нашей схеме он нужен, чтобы избежать просадки питания платы т.к. мы подключаем его к выводу 5V.

Цвета проводов на твоей серве могут отличаться. Например, там может быть коричневый провод вместо черного, а вместо желтого оранжевый. Не надо пугаться. Ничего не меняется. Коричневый или черный – это земля. Красный, он есть почти всегда, - питание. Желтый или оранжевый – сигнал.

Код для сервомотора

#include //Подключим библиотеку для сервомотора. Servo servo; // Создадим объект типа Servo void setup() { servo.attach(13); //прикрепим серву к 13 пину. } void loop() { int ang = 0; //В эту переменную запишем угол. //Создаем цикл со счетчиком для поворота на 180 градусов. for(ang = 0; ang <= 180; ang++) { servo.write(ang); delay(10); } //Создаем цикл со счетчиком для поворота обратно. for(ang = 180; ang >=0; ang--) { servo.write(ang); delay(10); } }

Пояснения

Servo servo Мы создаем Объект типа Servo. Объект Servo имеет свои свойства, как и другие объекты int, byte, char, например. Нам не надо создавать и описывать объект Servo т. к. он уже описан в подключаемой библиотеке. А второе, «маленькое», слово servo – это просто имя нашего сервомотора. Вы можете называть его как вам угодно, не забывая о грамотности в C++ ,конечно.

servo. attach(пин) С помощью этой команды мы прикрепляем нашу серву к 13 пину. Текст до точки – это имя, объявленное при создании объекта Servo. Параметром принимает номер пина, к которому подключена наша серва.

servo. write(угол) С помощью этой функции, мы даем команду серве повернуться на нужный угол. А для постоянного вращения «туда-сюда» мы использовали цикл for.

Рассмотрим на этом занятии устройство и применение транзисторов в электронной автоматике. Расскажем про распиновку и подключение транзистора к плате Arduino. Запрограммируем работу мотора постоянного тока в зависимости от показаний датчика влаги или фоторезистора. Вспомним использование операторов if , else и рассмотрим тип данных — unsigned int , который часто используется в языке C++.

Устройство и принцип работы транзистора

Транзистором называется полупроводниковый прибор, предназначенный для усиления и генерирования электрических колебаний. Транзисторы являются ключами (кнопками) в сетях с постоянным током. Биполярные транзисторы могут управлять электрической цепью до 50 В, полевые транзисторы могут управлять приборами до 100 В (при напряжении на затворе 5 В). В сетях с переменным током использую реле.

При отсутствии напряжения на базе или затворе транзистора, эмиттерный и коллекторный переход находятся в равновесия, токи через них не проходят и равны нулю. Таким образом, подавая на базу биполярного транзистора напряжение в 5 В, мы можем включать электрические цепи до 50 Вольт. Сегодня этот полупроводниковый элемент встречается почти в любом устройстве (в телефоне, компьютере и т.д.).

Транзисторы являются основой для построения микросхем логики, памяти и микропроцессоров компьютеров. Транзистор — это электронный элемент из полупроводникового материала, обычно с тремя выводами, позволяющий с помощью входного сигнала управлять током высокого напряжения. Использование транзистора — это наиболее простой способ подключения мотора постоянного тока к Arduino UNO.

Ардуино: управление мотором постоянного тока

Подключить мотор постоянного тока напрямую к цифровым или аналоговым портам Arduino не получится. Это обусловлено тем, что пины на плате Ардуино не способны выдавать ток более 40 мА. При этом мотору постоянного тока, в зависимости от нагрузки, необходимо сотни миллиампер. Потому и возникает потребность управления электрической цепью с высоким напряжением, с помощью транзистора.

Для занятия нам понадобятся следующие детали:

  • Плата Arduino Uno;
  • Макетная плата;
  • USB-кабель;
  • 1 биполярный транзистор;
  • 1 мотор постоянного тока;
  • 2 резистора от 1 до 10 кОм;
  • Провода «папка-папка» и «папка-мамка».

Соберите электрическую цепь, как на рисунке ниже. Если присмотреться к сборке на макетной плате, то вы заметите, что транзистор играет роль кнопки. Если кнопка замыкает электрическую цепь при нажатии на толкатель, то транзистор начинает пропускать ток при подаче напряжения на базу. Таким образом, мы можем сделать автоматическое или полуавтоматическое управление мотором на Ардуино.



После сборки схемы, загрузите скетч управления мотором постоянного тока.

void setup () // процедура setup { pinMode (11, OUTPUT ); // объявляем пин 13 как выход } void loop () // процедура loop { digitalWrite (11, HIGH ); // зажигаем светодиод delay (2000); // ждем 2 секунды digitalWrite (11, LOW ); // выключаем светодиод delay (2000); // ждем 2 секунды }

Если вы заметили, то это скетч из занятия — Включение светодиода на Ардуино . С точки зрения микропроцессора абсолютно не важно, что подключено к Pin13 — светодиод, транзистор или драйвер светодиодов для Светового меча на Ардуино . Обрати внимание на то, что резистор R1 в электрической схеме подтягивает базу транзистора к земле, а резистор R2 служит для защиты порта микроконтроллера от перегрузки.

Ардуино: управление двигателем постоянного тока

Скетч управления двигателем постоянного тока на Ардуино можно написать по-другому. Добавим в схему фоторезистор и сделаем автоматическое включение мотора при снижении уровня освещенности в комнате. Можно также использовать датчик уровня жидкости или любой другой датчик. В скетче мы используем операторы if и else для управлением (включением/выключением) мотора постоянного тока.



После сборки схемы, загрузите скетч управления двигателем постоянного тока.

// Присваиваем имя для аналогового входа A0 // Тип данных int округляет значения до целого числа int sensor = A0; // Присваиваем имя для значений аналогового входа A0 // unsigned int принимает только положительные числа unsigned int value = 0; void setup () { // Пин 11 с транзистором будет выходом (англ. «output») pinMode (11, OUTPUT ); } void loop () { // Считываем значение с фоторезистора на аналоговом входе A0 value = analogRead (sensor); // Если значение value меньше 500, включаем транзистор if (value<500) digitalWrite (9, HIGH ); // В противном случае (если value>500), выключаем транзистор if (value>500) digitalWrite (9, LOW ); }

Пояснения к коду:

  1. В первой строчке мы присвоили имя sensor для аналогового входа A0 и с помощью оператора int мы указали, что значения могут принимать только целое число;
  2. Оператор unsigned int указывает, что значение value может принимать только положительное целое число, а начальное значение value равно нулю;
  3. Условный оператор if позволяет определить действие при истинном условии. Оператор else позволяет определить действие, когда истинное условие ложно.

На что обратить внимание:

  1. Вместо выражения if (value>500) можно использовать оператор else .

Задание для самостоятельного выполнения:

  1. Выведите на Монитор последовательного порта значение value ;
  2. Установите включение транзистора при значении value меньше 100.


В этой главе мы будем взаимодействовать различные типы двигателей с платы Arduino (UNO) и покажем вам, как подключить двигатель и привод его от доски.

Есть три различных типа двигателей -

  • Серводвигатель
  • Шаговый двигатель

Двигатель постоянного тока (электродвигатель постоянного тока) является наиболее распространенным типом двигателя. Двигатели постоянного тока обычно имеют только два провода, один положительный и один отрицательный. Если соединить эти два провода непосредственно к батарее, двигатель будет вращаться. При переключении провода, двигатель будет вращаться в противоположном направлении.

Предупреждение - Не привод двигателя непосредственно с доски Arduino штифтов. Это может повредить плату. Используйте драйвер замыкания или IC.

Мы разделим эту главу на три части -

  • Просто сделайте вращение двигателя
  • Контроль скорости двигателя
  • Управление направлением вращения двигателя постоянного тока

Компоненты Требуемые

  • 1x Arduino UNO доска
  • 1x PN2222 Транзистор
  • 1x Малый 6V двигатель постоянного тока
  • 1x 1N4001 диод
  • 1x 270 Ω резистор

Процедура

Монтажную схему и сделать соединения, как показано на рисунке, приведенной ниже.



Меры предосторожности

Примите следующие меры предосторожности во время выполнения подключений.

    Во-первых, убедитесь, что транзистор подключен правильно. Плоская сторона транзистора должна обращена к плате Arduino, как показано в устройстве.

    Во-вторых, полосатая конец диода должно быть по направлению к линии питания + 5В, согласно схеме, показанной на рисунке.

Спин ControlArduino код

int motorPin = 3; void setup() { } void loop() { digitalWrite(motorPin, HIGH); }

Код Примечание

Транзистор действует как переключатель, контролируя питание двигателя. Arduino контакт 3 используется для включения транзистора включения и выключения и дано название "motorPin" в эскизе.

результат

Мотор будет вращаться на полной скорости, когда Arduino контактный номер 3 переходит на высокий уровень.

Ниже приводится принципиальная схема двигателя постоянного тока, подключенный к плате Arduino.



Arduino код

int motorPin = 9; void setup() { pinMode(motorPin, OUTPUT); Serial.begin(9600); while (! Serial); Serial.println("Speed 0 to 255"); } void loop() { if (Serial.available()) { int speed = Serial.parseInt(); if (speed >= 0 && speed <= 255) { analogWrite(motorPin, speed); } } }

Код Примечание

Транзистор действует как переключатель, управление мощностью двигателя. Arduino контакт 3 используется для включения транзистора включения и выключения и дано название "motorPin" в эскизе.

При запуске программы она предложит вам задать значения для управления частотой вращения двигателя. Вам необходимо ввести значение от 0 до 255 в Serial Monitor.



В функции "петля", команда "Serial.parseInt" используется для чтения номера, введенного в виде текста в Serial Monitor и преобразовать его в "Int". Вы можете ввести любое число здесь. "Если" заявление в следующей строке просто делает аналоговый запись с этим номером, если число от 0 до 255.

результат

Двигатель постоянного тока будет вращаться с разной скоростью в зависимости от значения (от 0 до 250), полученных через последовательный порт.

Для того, чтобы управлять направлением спина двигателя постоянного тока, не поменяв провода, вы можете использовать схему называетсяН-моста. H-мост представляет собой электронную схему, которая может управлять двигателем в обоих направлениях. H-мосты используются во многих различных приложениях. Одним из наиболее распространенных является приложением для управления двигателями в роботов. Это называется Н-моста, поскольку он использует четыре транзистора, соединенных таким образом, что принципиальная схема выглядит как "H"

Мы будем использовать L298 H-мост IC здесь. L298 может контролировать скорость и направление двигателей постоянного тока и шаговых двигателей, и может управлять двумя двигателями одновременно. Его текущий рейтинг 2А для каждого двигателя. В этих течений, тем не менее, вам нужно будет использовать радиаторы.



Компоненты Требуемые

Вам понадобятся следующие компоненты -

  • 1 × L298 мост IC
  • 1 × двигатель постоянного тока
  • 1 × Arduino UNO
  • 1 × макетная
  • 10 × перемычки

Процедура

Ниже приводится принципиальная схема двигателя постоянного тока интерфейса к Arduino Uno плате.



На приведенной выше схеме показано, как подключить L298 IC для управления двумя двигателями. Есть три входных контактов для каждого двигателя, Input1 (IN1), Input2 (IN2) и Enable1 (EN1) для MOTOR1 и INPUT3, вход4 и Enable2 для Motor2.

Так как мы будем контролировать только один двигатель в данном примере, мы подключим к Arduino IN1 (контакт 5), IN2 (контакт 7), и Enable1 (контакт 6) L298 IC. Контакты 5 и 7 являются цифровыми, то есть включения или выключения входов, а контакт 6 нуждается в широтно-импульсной модуляцией сигнала (PWM) для управления скоростью вращения двигателя.

В следующей таблице показано, в каком направлении двигатель будет повернуть на основе цифровых значений IN1 и IN2.

В 1 IN2 Мотор Поведение
ТОРМОЗНАЯ
1 ВПЕРЕД
1 BACKWARD
1 1 ТОРМОЗНАЯ

Pin IN1 от IC L298 подключается к контакту 8 Arduino в то время как IN2 подключается к контакту 9. Эти два цифровых штырьков Arduino управления направлением вращения двигателя. EN цапфу IC соединен с ШИМ контакт 2 Arduino. Это будет контролировать скорость вращения двигателя.

Для того, чтобы установить значения Arduino контактами 8 и 9, мы использовали функцию digitalWrite (), и установить значение контакта 2, мы должны использовать функцию analogWrite ().

Этапы подключения

  • Подключение 5V и угодье IC на 5V и землю из Arduino, соответственно.
  • Подключите двигатель к контактам 2 и 3 IC.
  • Подключение IN1 от IC к контакту 8 из Arduino.
  • Подключите IN2 от IC к контакту 9 из Arduino.
  • Подключение EN1 ИМС к контакту 2 из Arduino.
  • Подключите SENS штифт IC на землю.
  • Подключите Arduino с помощью Arduino кабель USB и загрузить программу на Arduino с помощью Arduino IDE программного обеспечения.
  • Обеспечить питание Arduino борту, используя источник питания, батареи или кабель USB.

Arduino код

const int pwm = 2 ; //initializing pin 2 as pwm const int in_1 = 8 ; const int in_2 = 9 ; //For providing logic to L298 IC to choose the direction of the DC motor void setup() { pinMode(pwm,OUTPUT) ; //we have to set PWM pin as output pinMode(in_1,OUTPUT) ; //Logic pins are also set as output pinMode(in_2,OUTPUT) ; } void loop() { //For Clock wise motion , in_1 = High , in_2 = Low digitalWrite(in_1,HIGH) ; digitalWrite(in_2,LOW) ; analogWrite(pwm,255) ; /* setting pwm of the motor to 255 we can change the speed of rotation by changing pwm input but we are only using arduino so we are using highest value to driver the motor */ //Clockwise for 3 secs delay(3000) ; //For brake digitalWrite(in_1,HIGH) ; digitalWrite(in_2,HIGH) ; delay(1000) ; //For Anti Clock-wise motion - IN_1 = LOW , IN_2 = HIGH digitalWrite(in_1,LOW) ; digitalWrite(in_2,HIGH) ; delay(3000) ; //For brake digitalWrite(in_1,HIGH) ; digitalWrite(in_2,HIGH) ; delay(1000) ; }

результат

Двигатель будет работать сначала в направлении по часовой стрелке (CW) в течение 3 секунд, а затем против часовой стрелки (CCW) в течение 3 секунд.