Записи с меткой ‘ШИМ’

Управление Servo — приводом на Arduino UNO

Сервоприводы — широко используются в робототехнике, заводских и хоббийных девайсах для управления движениями различных исполнительных узлов, в ЧПУ станках, 3D-принтерах, авиамоделировании и не только. За счет малой стоимости, большому моменту удержания и сравнительно простому управлению — пользуются большой популярностью. Именно поэтому, сегодня хочу поднять вопрос устройства сервопривода, его подключение к плате  Arduino UNO и написание программного кода в среде разработки Arduino IDE.

6cbcfb7bbdc72ba36170cde54b77371d

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

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

—  коллекторный двигатель

— набор шестеренок (пластиковых или металлических)

— плата с электроникой (контроллером)

— узел обратной связи  (потенциометр)

Подключение сервопривода к плате Arduino UNO:

Безымянный

Читать далее »

Тактовые кнопки их устройство и подключение к Arduino

Работа с кнопками рассматривается в Arduino — курсах, как правило, на первых уроках, у меня выходит немножко не так. Сначала надо понять и разобраться с тем что такое Arduino, изучить устройство портов ввода/вывода, ну и разобрать основные функции для работы с портами. Со всем этим удачно справились, теперь переходим непосредственно к основному вопросу — устройство тактовой кнопки, методы подключения к Arduino и написание программного кода.

butt_minismd_side2x4_med

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

htmlconvd-StdrmQ_htmіl_m559b8b2d

 

Тактовая кнопка не имеет возможности оставаться в определенном положении (не имеет фиксации), в связи с этим она и получила такое название. Сфера применения тактовых кнопок довольно широка: клавиатуры, пульты, панели для управления различными электронными устройствами на микроконтроллерах и тд. Давайте, в качестве примера, представим, что у нас есть устройство: с LCD — дисплеем в качестве вывода информации , платой Arduino UNO в качестве устройства обработки информации и парочка исполнительных устройств. Поставлена следующая задача: включать/выключать нагрузку с последующим выводом состояния на LCD — дисплей. И тут нам явно не хватает органа управления, в качестве него и будут использованы тактовые кнопки.

Читать далее »

Реализация ШИМ на базе ARDUINO

В предыдущих статьях было рассмотрено устройство портов ввода/вывода Arduino и описаны основные функции для работы с цифровыми и аналоговыми входами/выходами. Сейчас поговорим о широтно импульсной модуляции (ШИМ) и ее реализации.

Широтно Импульсная Модуляция — это своего рода способ задания аналогового сигнала, только с помощью цифрового кода (чем-то похоже на ЦАП) при этом изменяется скважность импульсов, а частота остается постоянной.

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

pwm_ru

 

Давайте представим, что у нас есть небольшой двигатель, который стоит в сверлильном станочке. Его можно либо включить (подать высокий потенциал 5 вольт) либо выключить (при этом потенциал будет равен 0 вольт), в и тоге есть два состояния. Включим его на пару минут (он будет работать в номинальном режиме), после отключения питания он конечно же остановится.

Но если же включать двигатель каждые 10-20 секунд, тогда он будет работать медленней чем при постоянно подключенном напряжении. Так вот регулируя частоту включения/выключения — будем регулировать обороты двигателя. Таким образом изменяя скважность (отношение длительности периода к длительности импульса) — можно менять напряжение на выходе. Если 50 % времени будет высокий уровень (подадим 5 вольт), а остальные 50% низкий уровень (напряжение 0 вольт), то на выходе получим — 2,5 вольт. В следствии чего двигатель будет вращаться медленнее.

 С теорией разобрались, переходим к практической реализации:

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

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

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

Небольшой видео-тест работы: