Управление двигателем от стиральной машины на ардуино
Как известно, электродвигатели бывают трёх основных типов: коллекторные, шаговые и сервоприводы. В данной статье мы рассмотрим подключение коллекторного электродвигателя к Arduino с помощью драйвера двигателей на основе микросхемы L9110S или аналогичной.
Для проекта нам понадобятся:
-
или аналогичный; , или шилд на микросхеме L293D или аналогичный; или аналогичный; или иная совместимая плата;
- соединительные провода (например, вот такой набор); ;
- персональный компьютер со средой разработки Arduino IDE.
1 Что такое драйвер двигателей и для чего он нужен
Максимальный ток на выводах Arduino слаб (около 50 мА) для такой мощной нагрузки как электромотор (десятки и сотни миллиампер). Поэтому напрямую к выводам Arduino подключать электродвигатель нельзя: есть риск сжечь вывод, к которому подключён двигатель. Для безопасного подключения электродвигателей разных типов к Arduino необходим самодельный или промышленно изготовленный т.н. драйвер двигателей. Драйверы двигателей бывают разные, для их работы часто используются микросхемы типа HG788, L9110S, L293D, L298N и другие. Драйверы двигателей имеют выводы подачи питания, выводы для подключения электродвигателей, а также управляющие выводы.
Различные варианты исполнения драйверов двигателей
В данной статье мы будем использовать драйвер для управления двигателями, сделанный на основе микросхемы L9110S. Обычно выпускаются платы, которые поддерживают подключение нескольких двигателей. Но для демонстрации мы обойдёмся одним.
2 Схема подключения коллекторного двигателяи драйвера двигателей к Arduino
Самые простые электродвигатели – коллекторные двигатели. У таких моторов всего два управляющих контакта. В зависимости от полярности приложенного к ним напряжения меняется направление вращения вала двигателя, а величина приложенного напряжения изменяет скорость вращения.
Давайте подключим двигатель по приложенной схеме. Питание драйвера двигателя – 5 В от Arduino, для управления скоростью вращения ротора мотора управляющие контакты подключаем к выводам Ардуино, поддерживающим ШИМ (широтно-импульсную модуляцию).
Схема подключения коллекторного двигателя к Arduino с помощью драйвера двигателей
Должно получиться что-то подобное:
Двигатель подключён к драйверу двигателей и Arduino
3 Скетч для управления коллекторным двигателем
Напишем скетч для управления коллекторным двигателем. Объявим две константы для ножек, управляющих двигателем, и одну переменную для хранения значения скорости. Будем передавать в последовательный порт значения переменной Speed и менять таким образом скорость (значением переменной) и направление вращения двигателя (знаком числа).
Загрузим скетч в память Arduino. Запустим его. Вал двигателя не вращается. Чтобы задать скорость вращения, нужно передать в последовательный порт значение от 0 до 255. Направление вращения определяется знаком числа.
Управление электромотором с помощью драйвера двигателей и Arduino
А вот так выглядит подключение подключение коллекторного двигателя к Arduino в динамике:
4 Управление шаговым двигателем с помощью Arduino
Шаговый двигатель позволяет вращать ротор на определённый угол. Это бывает полезно, когда необходимо задать положение какому-либо механизму или его узлу. Шагом двигателя называется минимальный угол, на который можно повернуть ротор двигателя. Угол поворота и направление движения задаются в управляющей программе. Существует большое разнообазие шаговых двигателей. Рассмотрим работу с ними на примере двигателя 28BYJ-48 с драйвером ULN2003.
Шаговый двигатель с контроллером --> Шаговый двигатель с контроллером
Характеристики двигателя 28BYJ-48:
Характеристика | Значение |
---|---|
Количество фаз | 4 |
Напряжение питания | от 5 до 12 В |
Число шагов | 64 |
Размер шага | 5,625° |
Скорость вращения | 15 об./сек |
Крутящий момент | 450 г/см |
Модуль с микросхемой драйвера для управления шаговым двигателем выглядит так:
Модуль с драйвером ULN2003
Схема подключения шагового двигателя с драйвером ULN2003 к 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° вокруг своей оси. Собственно, дальнейшие наработки – вопрос фантазии или необходимости.
Сейчас мы рассмотрим как управлять вращением мотора стиральной машины, скоростью и направлением. Этот материал является продолжением темы подключения моторов от СМА, поднятой по многочисленным просьбам посетителей сайта 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 Гц. Способ подключения:
Красный – это основной провод двигателя, желтый провод – заземления. Просто подключите блок согласно электросхеме и убедитесь в правильности.
В общем варианты есть разные, и задействовав такой модуль можно на базе мотора от стиралки сделать действительно неплохое и полезное устройство, например шлифовальный станок для мастерской.
Олег Точилов
А датчик давления подключили? Реверс у стирки есть? Сколько режимов стирки у вас? Что-то на трех реле с трудом верится.
Хотя в стиралках стоит 8 битный процессор. Как мне кажется самое сложное это мотор. Всё как то понятно. А в стиралках используют сложный алгоритм управления двигателем. Обороты там регулируются таходатчиком и в зависимости от нагрузки . То есть если положить вещь принимающую на борт много балласта , ну типа куртки . То обороты не увеличиваются пока вода не покинет пределы куртки. А если вода не покинет до за определённое время , то отжима не будет. а так проблем с кодом нет.
Герман, тахогенератор всего лишь позволяет держать под контролем определенные обороты независимо от загрузки машинки, вот и всё.
Николай, Я согласен. Но вот есть такой момент . Я уже писал выше. Как распределение белья . Если бельё не распределится равномерно , то должен включится другой режим. То есть режим отжима пропускается. Может я не внятно написал. Но я старался.
Герман, раньше с этим механический модуль управления, атмега с лёгкостью справится и даже не вспотеет. Там даже тинька 13 сможет.
Николай, Ну механический понятно. Просто я отстал от железа. И думал не понадобится. Но вот встал вопрос . Полистал что люди пишут. И не понял. В основном пишут , что не беритесь , всё сложно и дорого. Но посмотрел даташиты и понял что сложного ни чего нет. Потом все стали убеждать , что скорости не хватит и так далее. Но вот показали что работает . Просто нужно время для разработки некоторых параметров стирки. У меня с электроникой проблем нет . А с алгоритмом работы все пугали. Что мол капец . Но сложного ни чего нет.
Моя новая датагорская статья посвящена теме о превращении электродвигателя от стиральной машины в электропривод с поддержанием частоты оборотов и набором защит для небольшого токарного станочка.
Хитрый и полезный чип Atmel U211B нам в помощь. У кого имеется старый движок без дела — смело к паяльнику. Далее описана практическая реализация контроллера для его запуска и регулировки оборотов.
Содержание / Contents
↑ Интро
Всё началось с удачного приобретения: маленького токарного станочка. Точный, не раздолбанный грубым обращением, но вот с приводной частью была беда. Предыдущий владелец использовал, по всей видимости, обычный асинхронный двигатель, а обороты регулировал перекидыванием ремня с одной пары шкивов на другую. Это лучше, чем ничего, но всё-таки далеко не самый правильный подход.
Нам хотелось иметь возможность регулировать обороты в широких пределах, что позволяет обрабатывать заготовки разных диаметров с одинаковой лёгкостью.
↑ Мой двигатель от стиралки
В современных стиральных машинах применяются двигатели, которые отлично подходят для решения этой задачи. Существует много моделей, но все их объединяют некоторые конструктивные особенности: они щеточные, с последовательным возбуждением и имеют датчик оборотов! А ещё шкив под поликлиновый ремень. Такие разные и такие одинаковые…
Мне попался такой, итальянский, 350-14000 оборотов:
ВНИМАНИЕ! Нельзя включать двигатели с последовательным возбуждением без нагрузки и без регулятора оборотов. У них теоретически нет такого понятия, как обороты холостого хода. Двигатель может раскручиваться до чудовищных оборотов, т. е. уходить вразнос.
Если хотите проверить работоспособность двигателя, можно ткнуть на секунду. Надолго оставлять нельзя!
↑ Датчик оборотов
Не забывайте, чтобы дать значительную нагрузку двигателю, нужно использовать дополнительный вентилятор охлаждения, т. к. производительности родной крыльчатки на низких оборотах не хватает.
↑ Электроника. Почему Atmel U211B?
Довольно популярен похожий контроллер на TDA1085 . Одну и ту же схему и плату перепечатывают по всему интернету, и у всех она работает, кроме меня. К сожалению, мне так и не удалось ничего от него добиться. Похоже, или микросхемы были слегка поддельные, или просто руки кривые.
Останки неудачного макета:
Микросхема U211B от Atmel обещала точно такой же функционал, но схема немного проще, плата немного проще, настройка существенно проще.
Смотрите сами:
Исключён фрагмент. Полный вариант статьи доступен меценатам и полноправным членам сообщества. Читай условия доступа.
Существуют версии схемы на U211B для работы с оптическими датчиками и датчиками Холла. Примеры различных применений можно найти в документации на микросхему (см. архивы к статье). Тех, кто хочет глубже разобраться в теме, ещё раз отсылаю к даташиту.
↑ Настройка контроллера оборотов и защиты
Честно говоря, нельзя наверняка сказать, что эта схема идеально подойдет вашему двигателю.
Дело в том, что двигатели всё-таки, при всей своей похожести, разные и чтобы всё работало правильно, нужно внимательно вчитаться в даташит и высчитать каждый номинал. Каюсь, я не стал этого делать. Уже надоела вся эта возня с TDA1085 , хотелось просто включить и услышать наконец работу мотора! Я внес изменения только в той части, которая отвечает за вход с датчика и подобрал R3, R16, R17 и С11. Прокатило, как ни странно.
Подстроечник R8 задаёт чувствительность защиты. Мне пришлось его открутить почти до конца вправо, похоже номинал R4 всё-таки великоват. На среднем положении R8 двигатель вообще не стартовал.
Подбором R16, R17 устанавливаются минимальные и максимальные обороты.
Подстроечник R10 задаёт минимальное напряжение на двигателе. Если вы даже закоротите R16 и переменником R15 выставите обороты в ноль, мотор будет продолжать крутиться от этого напряжения, но без стабилизации оборотов.
Если вал двигателя остановить, контроллер это поймет и попытается его перезапустить импульсами полной мощности. Сначала короткими, потом более длинными.
С11 — задающий элемент преобразователя частоты в напряжение. В зависимости от того, сколько импульсов на 1 оборот дает датчик, он может отличаться в очень широких пределах. В нашем случае 22 нФ работает нормально.
↑ Электродвигатель в работе, фото и видео
На видео есть попытка дать нагрузку на вал рукой. Не повторяйте такого хулиганства, не нарушайте ТБ!
Читайте также: