Працюємо з 09:00 до 20:00 без вихідних.
Київ лівий берег біля ТЦ Квадрат

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

1. Управляем маленькими моторчиками

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

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

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

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

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

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

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

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

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


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


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

Следующий скетч запустит моторчик на 1 секунду, и остановит его на такое же время и так далее по кругу:
// Декларируем номер дискретного выхода
int motorPin = 2;
void setup() {
//Назначаем второй дискретный вывод как выход
pinMode(motorPin, OUTPUT);
}
void loop(){
// Включить мотор
digitalWrite(motorPin, HIGH);
// Подождать 1000 мс
delay(1000);
// Выключить мотор
digitalWrite(motorPin, LOW);
// Подождать 1000 мс
delay(1000);
}

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

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

2. Управляем электродвигателем при помощи транзисторов.

Мы конечно можем управлять миниатюрным электродвигателем непосредственно подключив его к выходу Arduino; однако, дискретный выход не потянет двигатели, потребляющие больше 40 мА. Выход заключается в использовании простого усиливающего устройства, транзистора, чтобы иметь возможность управлять электродвигателями постоянного тока любой мощности. Рассмотрим на примере, как управлять большими электродвигателями, используя два транзистора npn и pnp структуры.
Для этого проекта нам понадобятся следующие электронные компонеты:
  1. Плата Arduino, подключенная к USB-порту компьютера
  2. Моторчик постоянного тока
  3. Резистор сопротивлением между 220 Ом и 10 кОм
  4. npn транзистор(BC547, 2N3904, N2222A, TIP120)
  5. Диод (1N4148, 1N4001, 1N4007)
Ниже приведены шаги, при подключении двигателей с помощью транзистора:
  1. Подключите ноль питания Arduino GND к минусовой шине макетной платы.
  2. Подключите один из проводов двигателя к плюсу питания +5В платы контроллера. Мы будем использовать 5В питания USB-порта. Если нужна большая мощность, то нужно использовать внешний источник питания, такой как например батарея. Пока рассмотрим питание именно от USB.
  3. Другой провод двигателя соединяем с коллектором транзистора npn. По спецификации на ваш транзистор определите какой из трех его выводов коллектор, какой база и какой эмиттер.
  4. Подключите эмиттер транзистора к минусу питания GND, используя минусовую шину питания макетной платы.
  5. Установите резистор между базой транзистора и дискретным выходом платы Arduino.
  6. Включите защитный диод параллельно с движком. Минус диода должен быть подключен к плюсу питания 5В.

Схема для Arduino Uno

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

А вот один из способов соединения элементов схемы на макетной плате:


Код программы Arduino

Этот скетч ничем не отличается от предыдущего. Всё так же программа запускает движок на секунду, потом останавливает его на секунду и так далее:

// Декларируем номер дискретного управляющего выхода
int motorPin = 2;
void setup() {
// Назначаем второй дискретный канал как выход
pinMode(motorPin, OUTPUT);
}
void loop(){
// Включаем мотор
digitalWrite(motorPin, HIGH);
// Ждем 1000 мс
delay(1000);
// выключаем мотор
digitalWrite(motorPin, LOW);
// Ждем 1000 мс
delay(1000);
}

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

Транзисторы это очень полезные компоненты, которые, к сожалению, трудно понять. Мы можем представить транзистор как электрический клапан: чем больший ток подать на клапан, тем больше воды через него потечет. То же самое происходит с транзистором, только вместо воды течет ток. Если мы подадим ток на базу транзистора, пропорциональный ток потечет от коллектора к эмиттеру, в случае транзистора типа npn. Чем больший ток подать на базу, тем большая сила тока будет через два остальных вывода.


Когда мы подаем логическую единицу на выход Arduino, ток проходит от вывода через базу транзистора NPN, что заставляет ток проходить и через другие две ноги транзистора. Когда мы выставляем ноль на выходе, ток не идет через базу и не будет проходить через остальные две ноги.
Транзисторы интересны в том, что с очень малым током базы, мы можем контролировать очень большой ток через коллектор к эмиттеру. Обычный коэффициент усиления обозначается hб для транзистора составляет порядка 200. Это означает, что для тока базы 1 мА, транзистор через коллектор к эмиттеру пропустит 200 мА. Важным компонентом проекта является диод, о котором не стоит забывать. Как уже было сказано, движок имеет индуктивную составляющую, которая может генерировать большие всплески напряжения, опасные для транзистора. Диод гарантирует, что все паразитные возмущения от двигателя погасятся на нем, а не на транзисторе.

3. Применение подтягивающего резистора

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

4. Применение pnp-транзистора

pnp транзистор понять еще труднее. Он использует тот же принцип, но в обратном направлении. Ток течет от базы к цифровому выводу Arduino; если допустить, что протекание тока базы заставляет ток проходить от эмиттера к коллектору (противоположно направлению тока в транзисторе npn). Другое важное отличие в том, что pnp-транзистор установлен между плюсом источника питания и контролируемой нами нагрузкой. Нагрузка же, в данном случае, это двигатель, будет подключена между коллектором pnp-транзистора и землей.

Ключевой момент на заметку разработчикам ещё и в том, что при использовании транзисторов pnp с Arduino максимальное напряжение на эмиттер 5 В, и при этом мы на двигатель не сможем подать больше, чем 5 В. Если использовать внешний источник питания для питания двигателей с большим напряжением чем 5В, на базе появится потенциал выше пяти вольт и Arduino подгорит. Одно из возможных решений, которое усложнит схему на 3 элемента, показано показано на следующей схеме.


5. Применение силового транзистора MOSFET

Давайте посмотрим правде в глаза: применение обычных биполярных транзисторов для манипулирования моторчиками уже давно не в моде. Есть более простые и удобные в использовании вещи в наши дни, которые могут обеспечить гораздо большую мощность управления. Их называют MOSFET транзисторы. Люди просто называют их мосфетами. База, коллектор и эмиттер у MOSFETа называются так затвор, сток и исток. Функционально их используют точно так же, как и обычные транзисторы. При подаче напряжения на натвор, ток будет проходить с истока на сток в случае N-канального МОП-транзистора. P-канал является эквивалентом транзистора pnp. 
Тем не менее, есть некоторые важные различия в работе MOSFET по сравнению с обычным транзистором. Не все MOSFET-транзисторы могут должным образом работать с Arduino. Обычно дискретные транзисторы работают нормально. Некоторые из известных N-канальных MOSFET имеют маркировку: FQP30N06, IRF510 и IRF520. Первый может выдерживать до 30 А и 60 В то время как следующие два могут отдавать 5,6 А и 10 А, соответственно, при 100 В.
Вот пример схемы управления мотором с помощью N-канального MOSFET:

Мы также можем использовать следующий вариант монтажа проекта на макетной плате:

Двигатель - ещё не все, чем мы можем управлять через транзистор. Любой вид нагрузки постоянного тока может управляться таким образом. Светодиоды, лампочки или другие потребители, даже другой Arduino может быть запитан подобным макаром.

Написать отзыв

Примечание: HTML разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
Цифровой датчик температуры и влажности DHT11 с подтягивающим резистором

Цифровой датчик температуры и влажности DHT11 с подтягивающим резистором

Измерение относительной влажности в пределах 20 ... 90 %Точность измерения влажности ± 5,0 %RHИ..

44.76грн.

DIP переключатель на 4 положения

DIP переключатель на 4 положения

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

7.37грн.

Ремень зубчатый 6 мм 200 мм

Ремень зубчатый 6 мм 200 мм

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

36.30грн.

Электро замок 12В 2А

Электро замок 12В 2А

Очень функциональный надёжный и удобный в использовании замокТакие замки используются в электронных ..

367.48грн.

ATtiny85 mini

ATtiny85 mini

Миниатюрная плата контроллера на основе микроконтроллера ATtiny85 Напряжение сигналов 5В 4..

51.60грн.