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

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

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

Пояснения к коду

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





Маркировка оси двигателя желтой точкой. Затем получается скорость вращения оси двигателя. Это измерение выражается в углах в секунду. Знаете ли вы, почему измеряется скорость вращения вала двигателя? Хорошо, потому что это измерение не зависит от диаметра этой оси. И да, потому что точка от центра оси двигателя имеет гораздо большее расстояние до траверса, чем его аналог вблизи центра оси. Внезапно, чтобы проехать на большее расстояние в заданное время, он обязан идти быстрее.

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

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

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





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

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

Напомним, что 360 - это градусы, равные 2 футам для радианов. К сожалению, угловая скорость вращения не задана с характеристиками двигателя. Действительно, известно, что поворот соответствует вращению оси над 360 °. И через минуту - 60 секунд. Тогда мы можем установить следующее соотношение.

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

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

Электродвигатель часто очень быстро вращается. Если вам не нужно делать робота, который не идет слишком быстро, вам нужно будет убедиться, что он уменьшает скорость его вращения. Очень удобно поставить «тормоз», который не позволит двигателю быстро вращаться, а также контролировать его. Однако, даже если скорость будет уменьшена, двигатель не сможет выдерживать большие нагрузки. Другими словами, ваш робот даже не сможет поддерживать себя! Поэтому нам нужна пара. И чтобы иметь крутящий момент, уменьшая скорость вращения, вы будете использовать так называемый редуктор.

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

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

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

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



Двигатели постоянного тока (DC motor) во многом являются самыми простыми электродвигателями. Большинство «щеточных» двигателей работают одинаково. Есть ротор и статор. Есть магниты на статоре и катушка на роторе с магнитным полем, которое генерируется с помощью подачи на нее силы тока. Есть щетки внутри мотора, которые заставляют двигаться ротор.

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


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





Два колеса в контакте, маленький - большой, диаметр которого в два раза больше, чем маленький.

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

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

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

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


Шаговые двигатели


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




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

  • Первая - электрическая.
  • Он вычисляется просто по следующей формуле.
Согласно соглашениям, напряжение выражается в вольтах и ​​токе в амперах.

Ротор приводится в движение последовательной подачей напряжения на катушки. Шаговый двигатель имеет возможность проворачивать ротор на определенный шаг в зависимости от разрешения импульса.

Шаговые двигатели являются отличным выбором для проектов на Arduino (и не только) по нескольким причинам. Они стоят относительно недорого, у них маленькая погрешность, следовательно – это идеальный выбор для управления с разомкнутой системой управления (без дополнительных датчиков положения рабочего органа). Шаговые двигатели будут обеспечивать заданное положение ротора исключительно в зависимости от поданной силы тока.

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

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

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

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

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

Серводвигатели


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

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

Обычно электродвигатели имеют хорошую эффективность, от 80% до 95%. Это означает, что для входного тока с электроприводом мощностью 100 Вт мы получим от 80 до 95 Вт механической мощности. В то время как двигатель взрыва автомобиля едва превышает 30% эффективности!

В большинстве случаем серводвигатели имеют три провода: питание, земля и сигнал. Обычно провод питания красного цвета, земля – черного или коричневого. Сигнал – желтый, оранжевый или белый.

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

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

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

Сигнал управления является цифровым ШИМ сигналом с частотой 50 Гц. Каждые 20 миллисекунд подается цифровой импульс управления. Продолжительность (ширина) импульса находится в диапазоне от 1.0 миллисекунды до 2.0 миллисекунд. 1.5 – середина диапазона. Большая ширина импульса может использоваться для дополнительного хода, который выходит за нормальный рабочий диапазон. ШИМ (широтно-импульсная модуляция) сигнал иногда называют ШПМ (широтно-позиционная модуляция), хотя это не корректно.

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

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

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

Импульс шириной 1.5 миллисекунды обычно устанавливает серводвигатель в «нейтральное» положение или 90 градусов. Импульс шириной 1.25 миллисекунд может установить его в 0 градусов, а импульс 1.75 миллисекунды в 180 градусов. Физические ограничения и время для различных серводвигателей могут отличаться, но его нейтральное положение всегда соответствует 1.5 миллисекундам.

Если вы слишком долго циркулируете в двигателе слишком долго, он нагревается. Двигатели являются компонентами без защиты. Даже если они разогреваются, они не остановятся, совсем наоборот. Это может привести к перегреву и разрушению двигателя. Будьте осторожны, чтобы не заставлять его длительное время.

Подключение двигателя к источнику питания: аккумулятор

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

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

Вибрационные двигатели


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

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

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

Как выбрать двигатель для проекта


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

Естественно, отличным выбором для управления вашим двигателем станет плата 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.

tattooe.ru - Журнал современной молодежи