Измерение оборотов с помощью arduino. Использование шагового двигателя с Arduino. На что обратить внимание

Напрямую подключить электродвигатель к выводам Arduino нельзя: есть риск сжечь вывод, к которому подключён двигатель. Для безопасного подключения электродвигателей разных типов к Arduino необходим самодельный или промышленно изготовленный т.н. драйвер двигателей . Драйверы двигателей бывают разные, для их работы часто используются микросхемы типа HG788, L9110S, L293D, L298N и другие. Драйверы двигателей имеют выводы подачи питания, выводы для подключения электродвигателей, а также управляющие выводы.

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

2 Схема подключения коллекторного двигателя и драйвера двигателей к Arduino

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

Давайте подключим двигатель по приложенной схеме. Питание драйвера двигателя - 5 В от Arduino, для управления скоростью вращения ротора мотора управляющие контакты подключаем к выводам Ардуино, поддерживающим ШИМ (широтно-импульсную модуляцию).



Должно получиться что-то подобное:



3 Скетч для управления коллекторным двигателем

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

Int Speed = 0; const int IA1 = 5; // Управляющий вывод 1 const int IA2 = 6; // Управляющий вывод 2 void setup() { pinMode(IA1, OUTPUT); pinMode(IA2, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available() > 0) { String s = Serial.readString(); Speed = s.toInt(); // преобразуем считанную строку в число } if (Speed > 0) { // если число положительное, вращаем в одну сторону analogWrite(IA1, Speed); analogWrite(IA2, LOW); } else { // иначе вращаем ротор в другую сторону analogWrite(IA1, LOW); analogWrite(IA2, -Speed); } }

Максимальная скорость вращения - при наибольшем значении напряжения, которое может выдать драйвер двигателя. Мы можем управлять скоростью вращения, подавая напряжения в диапазоне от 0 до 5 Вольт. Так как мы используем цифровые ножки с ШИМ, напряжение на них регулируется командой analogWtirte(pin, value) , где pin - номер вывода, на котором мы хотим задать напряжение, а аргумент value - коэффициент, пропорциональный значению напряжения, принимающий значения в диапазоне от 0 (напряжение на выводе равно нулю) до 255 (напряжение на выводе равно 5 В).

4 Управление коллекторным двигателем с помощью Arduino

Загрузим скетч в память Arduino. Запустим его. Вал двигателя не вращается. Чтобы задать скорость вращения, нужно передать в последовательный порт значение от 0 до 255. Направление вращения определяется знаком числа.

Подключимся с помощью любой терминалки к порту, передадим число «100» - двигатель начнёт вращаться со средней скоростью. Если подадим «минус 100», то он начнёт вращаться с той же скоростью в противоположном направлении.



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

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

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

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

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

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

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

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

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

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

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



Двигатели постоянного тока (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 (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 секунд.

Управление маленьким двигателем может быть может осуществляться довольно просто. Если двигатель достаточно маленький, он может быть непосредственно соединен с выводом Arduino, и просто изменяя уровень управляющего сигнала от логической единицы до нуля будем контролировать моторчик. Этот проект раскроет вам основную логику в управлении электродвигателем; однако, это не является стандартным способом подключения двигателей к Arduino. Мы рекомендуем, вам изучить данный способ, а затем перейти на следующую ступень - заняться управлением двигателями при помощи транзисторов.

Подключим миниатюрный вибромоторчик к нашему Arduino.

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

  1. обычный Ардуино, подключенный к USB-порту компьютера
  2. Резистор на 220 Ом

Миниатюрный вибромоторчик (можно найти в старой ненужной мобилке, или в магазине электроники)

Подсоединение моторчика:

1. У вибромоторчика есть два провода питания. Соедините один его провод с нулевым выводом (GND) питания контроллера. Не имеет значения какой из двух проводов.

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

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

А вот примеры, как всё можно соединить при помощи макетной платы:


Текст программы Arduino

Следующий скетч запустит моторчик на 1 секунду, и остановит его на такое же время и так далее по кругу:

// Декларируем номер дискретного выхода

int motorPin = 2;

//Назначаем второй дискретный вывод как выход

pinMode(motorPin, OUTPUT);

// Включить мотор

digitalWrite(motorPin, HIGH);

// Подождать 1000 мс

// Выключить мотор

digitalWrite(motorPin, LOW);

// Подождать 1000 мс

Как это работает

Всякий раз, когда программа будет подавать логическую единицу на наш выход, ток будет течь через резистор, через мотор (М), и на землю. Если М действительно маломощный, он начнет вращаться, если это стандартный двигатель постоянного тока; иначе он начнет вибрировать, если это вибромоторчик. Резистор очень важен для этой схемы. Каждый дискретный выход Arduino рассчитан на ток только до 40 мА, при чем рекомендуется не превышать 20 мА. Выбранное значение резистора 220 Ом ограничит ток до 22 мА, и потому, что М включен с ним последовательно, ток будет даже меньше. Если общее сопротивление движка выше, чем 200 Ом, то можно с уверенностью убрать резистор и напрямую подключить моторчик к цифровому выводу и GND.

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

Несколько двигателей могут быть подключены на разные цифровые выводы платы контроллера. Например, выходы 2, 3, и 4 могут независимо управлять различными тремя электродвигателями. Каждый дискретный вывод, на Arduino может управлять отдельным движком. Хотя вообщето, так делать не рекомендуется, так как это увеличит ток, проходящий через Arduino. Давайте пока ограничимся одним двигателем в данной реализации.

Мы конечно можем управлять миниатюрным электродвигателем непосредственно подключив его к выходу Arduino; однако, дискретный выход не потянет двигатели, потребляющие больше 40 мА. Выход заключается в использовании простого усиливающего устройства, транзистора, чтобы иметь возможность управлять электродвигателями постоянного тока любой мощности. Рассмотрим на примере, как управлять большими электродвигателями, используя два транзистора npn и pnp структуры.

Для этого проекта нам понадобятся следующие электронные компонеты:

Ниже приведены шаги, при подключении двигателей с помощью транзистора:

  1. Подключите ноль питания Arduino GND к минусовой шине макетной платы.
  2. Подключите один из проводов двигателя к плюсу питания +5В платы контроллера. Мы будем использовать 5В питания USB-порта. Если нужна большая мощность, то нужно использовать внешний источник питания, такой как например батарея. Пока рассмотрим питание именно от USB.
  3. Другой провод двигателя соединяем с коллектором транзистора npn. По спецификации на ваш транзистор определите какой из трех его выводов коллектор, какой база и какой эмиттер.
  4. Подключите эмиттер транзистора к минусу питания GND, используя минусовую шину питания макетной платы.
  5. Установите резистор между базой транзистора и дискретным выходом платы Arduino.
  6. Включите защитный диод параллельно с движком. Минус диода должен быть подключен к плюсу питания 5В.