Управление двигателем от стиральной машины на ардуино своими руками

Обновлено: 07.07.2024

Как известно, электродвигатели бывают трёх основных типов: коллекторные, шаговые и сервоприводы. В данной статье мы рассмотрим подключение коллекторного электродвигателя к Arduino с помощью драйвера двигателей на основе микросхемы L9110S или аналогичной.

Для проекта нам понадобятся:

    или аналогичный; , или шилд на микросхеме L293D или аналогичный; или аналогичный; или иная совместимая плата;
  • соединительные провода (например, вот такой набор); ;
  • персональный компьютер со средой разработки Arduino IDE.

1 Что такое драйвер двигателей и для чего он нужен

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

Различные варианты исполнения драйверов двигателей

Различные варианты исполнения драйверов двигателей

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

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

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

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

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

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

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

Двигатель подключён к драйверу двигателей и Arduino

Двигатель подключён к драйверу двигателей и Arduino

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

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

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

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

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

А вот так выглядит подключение подключение коллекторного двигателя к Arduino в динамике:

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

Шаговый двигатель позволяет вращать ротор на определённый угол. Это бывает полезно, когда необходимо задать положение какому-либо механизму или его узлу. Шагом двигателя называется минимальный угол, на который можно повернуть ротор двигателя. Угол поворота и направление движения задаются в управляющей программе. Существует большое разнообазие шаговых двигателей. Рассмотрим работу с ними на примере двигателя 28BYJ-48 с драйвером ULN2003.

Шаговый двигатель с контроллером --> Шаговый двигатель с контроллером

Характеристики двигателя 28BYJ-48:

ХарактеристикаЗначение
Количество фаз4
Напряжение питанияот 5 до 12 В
Число шагов64
Размер шага5,625°
Скорость вращения15 об./сек
Крутящий момент450 г/см

Модуль с микросхемой драйвера для управления шаговым двигателем выглядит так:

Модуль с драйвером ULN2003

Модуль с драйвером ULN2003

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

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

Соберём всё по схеме.

Подключение шагового двигателя 28BYJ-48 к Arduino

Подключение шагового двигателя 28BYJ-48 к Arduino

Двигатель 28BYJ-48 имеет 4 фазы. Это означает, что у него имеются 4 электромагнитные катушки, которые под действием электрического тока притягивают сердечник. Если напряжение подавать на катушки поочерёдно, это заставит сердечник вращаться. Рисунок иллюстрирует данный принцип.

Схема работы шагового двигателя

Схема работы шагового двигателя

Здесь на (1) напряжение подано на катушки A и D, на (2) – на A и B, (3) – B и С, (4) – C и D. Далее цикл повторяется. И таким образом ротор двигателя вращается по кругу.

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

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

Как можно догадаться, задержка del определяет скорость вращения двигателя. Уменьшая или увеличивая её можно ускорять или замедлять двигатель.

Если загрузить этот скетч, то увидим, что шаговый двигатель вращается против часовой стрелки. Соответственно, можно вынести цикл вращения в одну сторону в отдельную функцию rotateCounterClockwise(). И сделать аналогичную функцию вращения в противоположную сторону rotateClockwise(), в которой фазы будут следовать в обратном порядке. Также вынесем в отдельные функции каждую из 4-х фаз чтобы избежать дублирования одинакового кода в нескольких местах программы. Теперь скетч выглядит несколько интереснее:

Скетч управления шаговым двигателем (разворачивается)

Если мы загрузим скетч и проверим, поворачивается ли ротор двигателя на целый оборот, если один раз вызвать функцию rotateClockwise(), то обнаружим, что нет. Для совершения полного оборота функцию необходимо вызвать несколько раз. Соответственно, хорошо бы добавить в качестве аргумента функции число, которое будет показывать количество раз, которые она должна выполняться.

Финальный скетч управления шаговым двигателем (разворачивается)

Вот теперь совсем другое дело! Мы можем управлять скоростью шагового двигателя, задавая задержку после каждой фазы. Мы можем менять направление движения ротора двигателя. И, наконец, мы умеем поворачивать ротор на некоторый угол. Осталось только определить, какое число необходимо передавать в функции поворота rotateClockwise() и rotateCounterClockwise(), чтобы ротор шагового двигателя 1 раз провернулся на 360° вокруг своей оси. Собственно, дальнейшие наработки – вопрос фантазии или необходимости.

Олег Точилов


Олег Точилов

А датчик давления подключили? Реверс у стирки есть? Сколько режимов стирки у вас? Что-то на трех реле с трудом верится.

Герман Светлов

Герман Светлов

Хотя в стиралках стоит 8 битный процессор. Как мне кажется самое сложное это мотор. Всё как то понятно. А в стиралках используют сложный алгоритм управления двигателем. Обороты там регулируются таходатчиком и в зависимости от нагрузки . То есть если положить вещь принимающую на борт много балласта , ну типа куртки . То обороты не увеличиваются пока вода не покинет пределы куртки. А если вода не покинет до за определённое время , то отжима не будет. а так проблем с кодом нет.

Николай Балуков

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

Герман Светлов

Николай, Я согласен. Но вот есть такой момент . Я уже писал выше. Как распределение белья . Если бельё не распределится равномерно , то должен включится другой режим. То есть режим отжима пропускается. Может я не внятно написал. Но я старался.

Герман Светлов

Николай Балуков

Герман, раньше с этим механический модуль управления, атмега с лёгкостью справится и даже не вспотеет. Там даже тинька 13 сможет.

Герман Светлов

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

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

Управление скоростью вращения двигателя постоянного тока с помощью Arduino: внешний вид

Общий принцип использования ШИМ

Управляя скоростью модуляции ШИМ (Pulse Width Modulation, PWM) можно регулировать, к примеру, силу свечения светодиода – данный принцип пояснен на следующем рисунке. Аналогичный механизм используется и для управления скоростью вращения двигателя.

Если на представленном рисунке выключатель будет замкнут на протяжении некоторого времени, то на протяжении этого же времени лампочка будет гореть. Если переключатель будет замкнут в течение 8ms и будет разомкнут 2ms в течение интервала 10ms, тогда лампочка будет гореть только в течение интервала 8ms. В рассмотренном примере можно сказать, что среднее выходное напряжение (на лампочке) будет составлять 80% от напряжения батареи.

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

В третьем рассмотренном на рисунке случае цикл занятости составляет 20% и поэтому среднее напряжение на оконечном устройстве (лампочке) будет составлять 20% от напряжения батареи.

Применяя все сказанное к рассматриваемому нами примеру управления скоростью вращения двигателем можно сказать, что чем больше будет коэффициент заполнения ШИМ (отношение длительности ON состояния к периоду), тем выше будет скорость вращения двигателя.

Необходимые компоненты

  1. Плата Arduino UNO (купить на AliExpress).
  2. Двигатель постоянного тока.
  3. Транзистор 2N2222 (купить на AliExpress).
  4. Потенциометр 100 кОм (купить на AliExpress).
  5. Конденсатор 0.1 нФ (купить на AliExpress).
  6. Макетная плата.
  7. Соединительные провода.

Схема устройства

Представлена на следующем рисунке.

Схема управления скоростью вращения двигателя постоянного тока с помощью Arduino
Объяснение работы программы

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

В ниже представленных строчках кода мы инициализируем переменные c1 и c2 и назначаем аналоговый контакт A0 выходу потенциометра, а 12-й контакт будем использовать для ШИМ.


Сейчас мы рассмотрим как управлять вращением мотора стиральной машины, скоростью и направлением. Этот материал является продолжением темы подключения моторов от СМА, поднятой по многочисленным просьбам посетителей сайта 2 Схемы.

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

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

Регулировка вращения и реверс мотора от стиральной машины

Двигатель имеет две скорости вращения. На холостом ходу (на стирке) мотор потребляет мощность 40 Вт. Вторая скорость вращения, при которой двигатель потребляет 300 Вт мощности (при отжиме). Эти скорости изменяются соответствующим переключением обмоток на статоре двигателя. Во время отжима обороты двигателя могут составлять даже несколько тысяч об/мин.

Подключение двигателя от СМА к сети 220 В

Регулировка вращения и реверс мотора от стиральной машины

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

Регулировка вращения и реверс мотора от стиральной машины

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

Регулировка вращения и реверс мотора от стиральной машины

Схема простого регулятора скорости мотора

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

Регулировка вращения и реверс мотора от стиральной машины

Минимальные обороты получились с этой схемой 200 об / мин. С2 это плавный старт. Плавный пуск работает отлично на холостом ходу, хотя с нагрузкой на вал, при необходимости, подберите R5 = 0 – 3 кОм в зависимости от нагрузки; R6 = 18 – 51 Ом в зависимости от симистора; R4 = 3 – 10 кОм – это защита Т3; RR1 = 2 -10 кОм – регулятор скорости связан с сетью гальванически, требуется защита от сетевого напряжения. Есть потенциометры с пластиковой осью, желательно использовать именно их.

Китайские модули регуляторов оборотов

На сайтах магазинов по электронике есть готовые регуляторы оборотов, например вот такой:

Регулировка вращения и реверс мотора от стиральной машины

Контроллер скорости 400 Вт, 50/60 Гц, 220 В переменного тока. Цена примерно 1000 руб.

Регулировка вращения и реверс мотора от стиральной машины

В этом контроллере используется инверторная схема, то есть широкий диапазон регулирования скорости. Подходит для двигателя переменного тока 220 В 50/60 Гц. Диапазон регулирования скорости составляет 90-1400 об / мин 50 Гц, 90-1700 об / мин 60 Гц. Способ подключения:

Регулировка вращения и реверс мотора от стиральной машины

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

Регулировка вращения и реверс мотора от стиральной машины

В общем варианты есть разные, и задействовав такой модуль можно на базе мотора от стиралки сделать действительно неплохое и полезное устройство, например шлифовальный станок для мастерской.

Читайте также: