Управління серводвигунами за допомогою мікроконтролерів avr atmega32

Servoдвігателі - це тип електромеханічних приводів, що не обертаються постійно, як DC / AC або кроковий двигунів, а переміщаються в певне положення ісохраняют його. Вони застосовуються там, де не потрібно безперервне обертання. Серво приводи застосовують там. де необходімоперейті до конкретної позиції, а потім зупинитися і зберігати положення .Наіболеечасто серво двигуни використовуються для керуванням положенням керма воздушнихсудов і човнів т.д. Сервоприводи ефективно використовуються в цих областях, потомучто кермо не потрібно переміщати на 360 градусів і не вимагають безперервного вращеніякак наприклад колеса. В з ервопріводахтакже використовується механізм зворотного зв'язку, тому він може обрабативатьошібкі і при позиціонуванні їх виправити. Така система називається стежить. Такимобразом, якщо потік повітря чинить тиск на кермо і відхиляє його, тосервопрівод буде застосовувати силу в протилежному напрямку і попитаетсяісправіть помилку. Наприклад, Еслів скажете серво піти і блокуватися на 30 градусах, а потім спробував обернутися рукою, серво будуть намагатися. щоб подолати силу і зберегти заданнийугол.

Сервопріводипріменяются також для контролю керма RC- автомобілів, робототехніки тощо Існує багато видів сервоприводів, але тут ми сосредоточімсяна малих сервоприводи так званих hobby. H obb y двигун і його механізм управління вбудований в один блок. Підключення осуществляеться задопомогою трьох приєднувальних проводів. Ми будемо використовувати сервопривід FutabaS3003.

1.RED -> Управління позицією, харчування + 4.8В до 6В

3.WHITE -> Сигнал управління.

Управління СЕРВОПРИВОДИ.

Управлятьсервопріводом легко за допомогою мікроконтролера, не потрібно ніяких внешніхдрайверов. Просто подаваяуправляющій сигнал сервопривід буде позиціонувати на будь-який заданий кут. Частота сигналу зазвичай 50hz (т.е.період 20 мс), а тривалість імпульсу задає величину кута.

Для FutabaS3003 яузнал наступні синхронізацію. Співвідношення між шириною імпульсу іуглом повороту сервоприводу, наводиться нижче. Зауважимо, що цей сервопривід здатний обертатися тільки між 0 і 180 градусів.

  • 0.388ms = 0 градусів.
  • 1.264ms = 90 градусів.
  • (Нейтральнаяпозіція) 2.14ms = 180 градусів.

Управління Серво двигуном.

Ви можете використовувати мікроконтролер AVR з функцією PWM дляуправленія сервомоторів. Таким чином, PWM автоматично згенерує сігналиблокіровкі сервоприводу і центральний процесор контролера звільниться дляінших завдань. Щоб зрозуміти, як можна налаштувати і використовувати PWM необхідномати базові знання апаратних таймерів і PWM модулів в AVR.

Тут ми будеміспользовать AVR Timer модуль, який є 16bit таймером і має два канали PWM (А і B).

Частота центрального процесора становить 16 МГц, ця частота - максимальна частота, на якій більшість AVR здатні работать.Так ж будемо використовувати дільник частоти на 64. Так таймера отримають 16MHz / 64 = 250khz (4 мкс) .Таймер встановимо в режим 14.

Функціітаймера в режими 14

  • РежімFAST PWM
  • T T OP Значення = ICR1

Так таймер буде рахувати від 0 до ICR1. Формуладля частоти ШІМ і розрахунки за значенням TOP наводиться нижче.

Такимобразом, ми встановлюємо ICR1A = 4999, це дає нам PWM періоду 20мс (50 Гц) .Убедітесь що в режими виводаустанавленни правильні настройки COM1A1, COM1A0 (для PWM каналу) і COM1B1, COM1B0 (для PWM канал B)

COM1A1 = 1 і COM1A0 = 0 (PWM Джерело)

COM1B1 = 1 і COM1B0 = 0 (PWM канал B)

Тепер робочий цикл може бути встановлений шляхом настройки OCR1A іOCR1B регістрів. Ці два регістрауправленія PWM періодом Так як період таймера 4мкс (пам'ятаєте 16 МГц розділили на 64), Ми можемо обчислити значення, необхідні для поворотасервопрівод на певний кут.

§ Servoугол 0 градусів потрібно ширина імпульсу 0.388ms (388uS), тому значеніеOCR1A = 388us / 4us = 97

§ Servoугол 90 градусів потрібно ширина імпульсу 1.264ms (1264uS), тому значеніеOCR1A = 1264us / 4us = 316

§ Servoугол 180 градусів потрібно ширина імпульсу 2.140ms (2140uS), тому значеніеOCR1A = 2140us / 4us = 535

Такимобразом, ми можете обчислити значення OCR1A (або OCR1B для второгосервопрівода) для будь-якого кута. Заметімчто значення OCR1x коливаються від 97 до535 для кутів від 0 до 180 градусів.

Програма управління двигуном.

Демонстраціоннаяпрограмма приведена нижче, показано, як використовувати сервомоторів смікроконтроллером AVR. Роботи програми дуже проста, вона починається сініціалізаціі таймера і PWM.В початку фіксуєте сервопривід на 0 градусів, Азат переміщається на 90 градусів і подождатв деякий час переміщається на135 градусів, і нарешті, на 180 градусів. Цей процес повторюється до тих пір, поки привід підключений до живлення.

Параметридля правильної роботи програми.

  • LOW Fuse = 0xFF і HIGH Fuse = 0xC9
  • Частота = 16 МГц.
  • Сервомоторклеймо Futaba S3003.
  • MCUявляется AtMega32 або однокристальний мікроконтролер ATmega16.