Сервопривод своими руками 12 вольт из двигателя дворников

Обновлено: 04.07.2024

Управление двигателями и сервоприводами с помощью Ардуино

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

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

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

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

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

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

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

Управление скоростью вращения

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

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

То есть период делится на две части:

1. Время импульса.

Отношение времени импульса к общему времени периода называют коэффициентом заполнения:

обратная величина называется "скважность":

Для описания режима работы ШИМ-контроллера используют оба понятия: и коэффициент заполнения, и скважность.

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

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

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

Подключаем к ардуино

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

В обвязку транзистора я установил токоограничивающий резистор (для снижения тока заряда затворной ёмкости, это убережет порт от сгорания и питание микроконтроллера от просадок и его зависания) на 240 Ом, и притянул его к земле резистором на 12 кОм, это нужно делать, чтобы он стабильнее работал и быстрее разряжалась затворная ёмкость.

Подробно о полевых транзисторах описано в статье на нашем сайте. Я использовал мощный, распространённый и не слишком дорогой mosfet с n-каналом и встроенным обратным диодом IRF840.

Вот так выглядит мой лабораторный стенд в сборе:

Функция ШИМ-регулирования вызывается при записи в соответствующий выход (3, 5, 6, 9, 10, 11) значения от 0 до 255 командой AnalogWrite(pin, значение). Логика её работы изображена на графиках ниже.

Такой сигнал подаётся на затвор транзистора:

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

int sensorPin = A0; // вход с потенциометра

int motorPin = 3; // выход ШИМ на затвор тр-ра

analogWrite(motorPin, map (analogRead(sensorPin), 0, 1023, 0, 256));

В функции analogWrite я присваиваю значение на ШИМ-выход, через команду map, её использование позволяет убрать несколько строчек кода и одну переменную.

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

В ардуино частота ШИМ, при вызове через функцию analogWrite всего лишь 400 Гц, при минимальных значениях напряжения был слышен гул соответствующей частоты от обмоток двигателя.

Сервоприводы

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

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

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

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

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

Обычно с сервопривода для Arduino (сервомашинки) выходит три провода:

Сервопривод состоит из:

Электродвигателя постоянного тока (или бесколлекторного двигателя);

Датчика положения (энкодера у сервоприводов с углом поворота 360° или потенциометра у серв с углом поворота 180°);

Понижающего редуктора (понижает скорость вращения двигателя, и повышает момент на валу привода).

Блок управления сравнивает сигнал на встроенном датчике положения и сигнал, пришедший по управляющему проводу, если они различаются, то происходит поворот на угол, при котором разница между сигнала нивелируется.

Основные характеристики сервоприводов:

Скорость поворота (время, за которое вал поворачивается на угол 60°);

Крутящий момент (кг/см, т.е. сколько килограмм может выдерживать двигатель на рычаге в 1 см от вала);

По способу управления (аналоговый или цифровой, существенной разницы нет, но цифровой более быстродействующий и стабильный).

Обычно период сигнала равен 20 мс, а длительность управляющего импульса:

544 мкс – соответствует 0°;

2400 мкс – соответствует углу 180°.

В редких случаях длина импульсов может отличаться, например 760 и 1520 мкс соответственно, эту информацию можно уточнить в технической документации на привод. Одним из популярнейших сервоприводов для хобби является Tower Pro SG90 и подобные модели. Стоит недорого – порядка 4 долларов.

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

Управление сервоприводом и Ардуино

Как уже было сказано, управление осуществляется изменением длительности импульса, но не стоит путать этот метод с ШИМ(PWM), его правильное назвать PDM (Pulse Duration Modulation). Незначительные отклонения по частоте сигнала (20 мс – длительность, частота 50 Гц) особой роли не играют. Но не стоит отклоняться от частоты более чем на 10 Гц, двигатель может работать рывками или сгореть.

Схема подключение к ардуино довольно проста, можно и запитать привод от 5v –пина, но не желательно. Дело в том, что при старте происходит небольшой скачок тока, это может вызвать просадку по питанию и ложные состояния выходов микроконтроллера. Хотя 1 маленький привод (типа SG90) можно, но не более.

Для управления такими сервоприводами с ардуино в вашем распоряжении есть встроенная в IDE библиотека Servo, у неё небольшой набор команд:

attach() — добавить переменную к пину. Пример: названиеПривода.attach(9) – к 9 пину подключаем сервопривод. Если вашему приводу нужны нестандартные длины управляющих импульсов (544 и 2400 мкс), то их можно задать через запятую после номера пина, например: servo.attach(pin, min угол (мкс), max угол в МКС));

write() — задает угол поворота вала в градусах;

writeMicroseconds() — задает угол, через длину импульса в микросекундах;

read() — определяет текущее положение вала;

attached() — Проверяет, задан ли пин с подключенным сервоприводом;

detach() — отмена команды attach.

Если вы подключили эту библиотеку – вы не сможете работать с 433 МГц приёмниками/передатчиками. Для этого есть библиотека Servo2, которая в остальном идентична.

Вот пример кода, который я использовал для экспериментов с сервоприводом, он есть в стандартном наборе примеров:

Servo myservo; // объявили имя переменной для сервопривода myservo

int potpin = 0; // пин для подключения задающего потенциометра

int val; // переменная для сохранения результатов чтения сигнала с потенциометра

myservo.attach(9); // устанавливаем 9 пин, как управляющий выход для сервы

val = analogRead(potpin); // результаты чтения потенциометра сохр в пер. val, они будут в диапазоне от 0 до 1023

val = map(val, 0, 1023, 0, 180); // переводим диапазон измерений с аналогового входа 0-1023

// в диапазон заданий для сервы 0-180 градусов

myservo.write(val); // передаем преобр. сигнал с пот-ра на упр. вход сервы

delay(15); // задержка нужна для стабильной работы системы

Заключение

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

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

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

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



Всем хабраконструкторам, привет!

  • Установить сервоприводу определённый угол для поднятия молотка
  • Бездействовать пока сервопривод не сообщит, что угол достигнут
  • Отключить питание сервопривода, чтобы молоток упал на гвоздь
  • Прочитать угол в упавшем положении
  • Если угол после падения несколько раз подряд не изменился — значит гвоздь перестал вколачиваться. Предположительно он забит — прекращаем исполнение
  • Если угол изменился, начинаем сначала


Пилим и скручиваем:


Приступаем к написанию прошивки для Arduino… Довольно быстро становится понятно, что установить определённый угол для сервы — не проблема. В частности, это позволяет сделать стандартная библиотека Servo, которая из заданного в градусах угла формирует соответствующий PWM-сигнал. А вот с чтением — проблема: функции для этого нет.

Матчасть

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

То есть, у нас есть потенциометр, по сигналу с которого можно определить текущий угол. Осталось только разобрать сервопривод и подключиться в нужном месте. Разбираем:


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

Вот как припаян потенциометр на сервоприводах от DFRobot:


Нам нужен сигнал с бегунка, который меняется в зависимости от угла поворота от минимального до максимального напряжения. Берём мультиметр, вращаем шпиндель и смотрим: каким углам какой сигнал соответствует. Для моей сервы углу в 0° соответствует напряжение 0.43 В, а максимальному углу поворота в 180° соответствует напряжение 2.56 В.

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


Подключаем его к аналоговому входу A5 на Arduino. Закрываем крышку. Пишем программу:

Включаем, пробуем, работает!

Что делать с полученным опытом — вариантов много: можно сделать контроллер вроде того, что используется на кораблях для установки тяги (полный вперёд / полный назад); можно использовать серву с обратной связью как элемент автономного рулевого управления какой-нибудь машины; можно много всего. Да прибудет со всеми нами фантазия!

Вот, что можно сделать из моторчика дворников и редуктора болгарки! Гениальная идея для самоделки из редуктора от .

Самодельный привод для шагового двигателя Nema 17 из старого мотора стеклоочистителя от автомобиля ВАЗ.

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

Самодельный лобзик из двигателя ВАЗ сделанный моим отцом около 20 лет назад. Homemade jigsaw from a VAZ engine .

Интересная самоделка своими руками. Самодельный смеситель может использоваться для колористики краски, .

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

Сделай сам гриль мангал своими руками и уникальная самоделка пригодится всегда. Зачем покупать дорогие и скучные .

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

Очень ПРОСТАЯ ИДЕЯ из мотора от печки жигулей! Мегаполезная самоделка своими руками! Девайс! Для гаража! В этом .

Такой такой редуктор возможно применить куда угодно! Полезная самоделка своими руками из болгарки с минимумом .

Сделай сам самоделку своими руками и уникальный инструмент пригодится всегда. Зачем покупать дорогие инструменты, .

Интересное применение простому тросику от спидометра. Получилась классная самоделка для гаража или мастерской .

Делаем электромясорубку своими руками, Двигатель (моторчик) стеклоочистителя 24V 81.26401-6143 Блок питания 24V .

Самоделка из двигателя от стиральной машинки. Нестандартное применение двигателя от стиральной машины которое .

Вопросы задавать можно только после регистрации. Войдите или зарегистрируйтесь, пожалуйста.

Добрый вечер всем ! Собрался к весне собрать себе новый небольшой инкубатор . Так заморочился с авто переворотом. Достались мне бесплатно два электро двигателя дворников сняты были с трактора на фото ниже один из них второй не смог проверить думаю что он на 24 вольта . А этот на 12 вольт крутиться в обе стороны . Хочу сделать автоматический переворот по принципу актуатора (шпилька , гайка ) но у меня не получаться с подключением реверса :( Пробывал подключить по схемам выложенным на форуме получилось что двигатель в одну сторону крутиться нормально и останавливается а в другую крутится и останавливается но как только отключается таймер времени сразу возвращается в предыдущее положение . То есть если у меня таймер времени установлен на срабатывание каждый час на 10 секунд то получается что через час происходит поворот а через 10 секунд происходит поворот обратно . Пробовал и без реле времени тот же результат .

Помогите с подключением ! Двигатель который на фото два автомобильных реле на пять выходов, два концевика всё питается от компьютерного блока питания






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

Если речь о той схеме, что несколькими темами ниже (два автомоб. реле) то так и будет. Твое реле времени должно то включаться то отключаться С РАВНЫМИ промежутками времени. То есть, один/два часа включен (катушки реле под напряжением), потом час/два отключен - катушки реле обесточены.
А зачем реле времени?
Мечта вроде как умеет замыкать/размыкать с равными временными промежутками (параметры ВР1 и ВР2)

Я знаю про параметры мечты 1 ! Я её и использовал в качестве реле времени .Я её недавно приобрёл. В стандартных настройках там включенное положение до 999 секунд а это всего 16 с половиной минут . А как можно по другому подключить чтобы с разными промежутками например час выключен минуту включен ? И чтобы при этом реверс срабатывал через каждый час а не через час и обратно через минуту .

Желательно схему попроще!
П.С. такие схемы как на фото уже подключал.



Нда, что то они там перемудрили.
Как вариант, использовать отдельное циклическое реле времени, которое бы позволяло задавать одинаковые временные промежутки.

Нда, что то они там перемудрили.
Как вариант, использовать отдельное циклическое реле времени, которое бы позволяло задавать одинаковые временные промежутки.

Если про мечту1 то там если залезть в сервисное меню можно поменять ВР2 с секунд на минуты и тогда уже получается что реле может замыкать контакт до 999 минут.

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

Зачем усложнять?
Если можно поменять с секунд на минуты - меняй и всё будет гуд..

Это как запосной вариант останеться :) хочу попробывать ещё другие варианты про запас вдруг с реле времени какойто глюк произойдёт а так у меня есть самопальное :) там не регулирееться время замкнутого состояния

ВР1-в этом параметре устанавливается время с дискретностью в 1 мин в течение которого реле таймера будет в разомкнутом состоянии(привод устройства лотков выключен) ВР2-в этом параметре устанавливается с дискретностью в 1 сек в течении которого реле таймера будет в замкнутом состоянии(привод устройства лотков включен) для изменения параметра ВР2 с секунд на минуты включи питание и пока на табло горит 000 нажми ОК и ищи в сервисном меню ПВ2 и кнопкой Ок меняй значение с 000 на 001,потом выставляй ВР1 60 мин ВР2 1 мин и будет тебе счастье 60 мин отключено 1 мин работает.По поводу реверса-Мечта 1 работает по принципу включило-выключило и реверсивный ток не подает,у меня самого Мечта 1 в паре с мотором РД-09,ТПЛ выставлен 60 мин замкнуто 60 мин разомкнуто и концевики

У меня в принципе сейчас также подключено только

первое блок питания у меня всегда работает так как у меня почти всё запитано от 12 вольт я отключаю только плюс или минус через мечту один ,

второе двигатель у меня от дворников трактора вроде, там всего два выхода и питаеться он от 12 вольт ,

третье установил два автомобильные реле потому что нашёл их в заначке :)

четвёртое я уже писал что "Это как запосной вариант останеться :) хочу попробывать ещё другие варианты про запас вдруг с реле времени какойто глюк произойдёт а так у меня есть самопальное :) там не регулирееться время замкнутого состояния"

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

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