- Компоненте потребне
- Опис серво мотора
- Кружни дијаграм
- Управљање серво мотором помоћу АВР АТмега16
- Програмирање Атмега16 помоћу УСБасп-а
Серво мотори се широко користе тамо где је потребна прецизна контрола као што су роботи, аутоматизоване машине, роботска рука итд. Међутим, обим серво мотора није ограничен на оволико и може се користити у многим апликацијама. Да бисте сазнали више о основама, теорији и принципу рада серво мотора, следите везу.
Претходно смо повезали серво мотор са многим микроконтролерима:
- Повезивање серво мотора са АРМ7-ЛПЦ2148
- Повезивање серво мотора са МСП430Г2
- Повезивање серво мотора са СТМ32Ф103Ц8
- Повезивање серво мотора са ПИЦ микроконтролером помоћу МПЛАБ и КСЦ8
- Повезивање серво мотора са Ардуино Уно
- Интерфејс серво мотора са микроконтролером 8051
У овом упутству ћемо повезати Мицро Серво Мотор са Атмега16 АВР микроконтролером користећи Атмел Студио 7.0. Серво мотор је оцењен да ради у напону од 4,8-6В. Његов угао ротације и смер можемо контролисати применом импулсног склопа или ПВМ сигнала. Имајте на уму да се серво мотори не могу кретати за пуну ротацију од 360 степени, па се користе тамо где није потребно континуирано окретање. Угао ротације је 0 -180 степени или (-90) - (+90) степени.
Компоненте потребне
- Микро серво мотор СГ90 Товер Про
- Атмега16 микроконтролер ИЦ
- Кристални осцилатор од 16 МХз
- Два кондензатора од 100 нФ
- Два кондензатора од 22 пФ
- Тастер
- Јумпер Вирес
- Бреадбоард
- УСБАСП в2.0
- Лед (било која боја)
Опис серво мотора
- Црвено = позитивно напајање (4,8 В до 6 В)
- Браон = Приземље
- Наранџаста = контролни сигнал (ПВМ пин)
Кружни дијаграм
Повежите све компоненте како је приказано на доњем дијаграму да бисте окретали серво мотор помоћу АВР микроконтролера. Постоје четири ПВМ пинова, можемо користити било који ПВМ пин Атмега16. У овом упутству користимо пин ПД5 (ОЦ1А) за генерисање ПВМ-а. ПД5 је директно повезан са наранџастом жицом серво мотора која је улазни сигнални пин. Прикључите било који ЛЕД у боји за индикатор напајања. Такође, повежите једно дугме у Ресетујте пин за ресетовање Атмега16 кад год је то потребно. Повежите Атмега16 са одговарајућим кругом осцилатор кристала. Сав систем ће се напајати напајањем од 5В.
Комплетно подешавање ће изгледати доле:
Управљање серво мотором помоћу АВР АТмега16
Попут корачног мотора, серво мотору није потребан ниједан спољни покретач, нпр. УЛН2003 или Л293Д моторни возач. Само ПВМ је довољан за погон серво мотора и врло је лако генерисати ПВМ из микроконтролера. Обртни моменат овог серво мотора је 2,5 кг / цм, па ако вам је потребан већи обртни момент, овај серво мотор није погодан.
Као што знамо да серво мотор тражи импулс на сваких 20 мс и да ће дужина позитивног импулса одредити угао ротације серво мотора.
Фреквенција потребна за добијање импулса од 20мс је 50Хз (ф = 1 / Т). Дакле, за овај серво мотор, спецификација каже да нам за 0 степени требају 0,388 мс, за 90 степени треба 1,264 мс, а за 180 степени треба импулс од 2,14 мс.
За генерисање наведених импулса користићемо Тимер1 од Атмега16. Фреквенција процесора је 16Мз, али користићемо само 1Мхз јер немамо пуно периферних уређаја повезаних са микроконтролером и нема пуно оптерећења на микроконтролеру, па ће 1Мхз одрадити посао. Прескалер је подешен на 1. Дакле, сат је подељен на 1Мхз / 1 = 1Мхз (1уС), што је сјајно. Тајмер1 ће се користити као брзи ПВМ режим, односно режим 14. Можете користити различите режиме тајмера да бисте генерисали жељени импулсни траг. Референца је дата у наставку, а више описа можете пронаћи у званичном листу података Атмега16.
Да бисмо користили Тимер1 као брзи ПВМ режим требат ће нам ТОП вриједност ИЦР1 (Инпут Цаптуре Регистер1). Да бисте пронашли формулу ВРХУНСКЕ вредности, користите доњу формулу:
ф пвм = ф цпу / нк (1 + ВРХ)
Ово се може поједноставити, ВРХ = ( ф процесор / ( ф ширина кн)) - 1
Где је Н = Вредност постављеног предкалера
ф ЦПУ = ЦПУ Фрекуенции
ф пвм = ширина импулса серво мотора која је 50Хз
Сада израчунајте ИЦР1 вредност пошто имамо сву потребну вредност, Н = 1, ф цпу = 1МХз, ф пвм = 50Хз
Само ставите вредности у горњу формулу и добићемо
ИЦР1 = 1999
То значи да се постиже максимални степен, тј. 180 0 ИЦР1 би требало да буде 1999.
За кристал од 16МХз и Пресцалер постављени на 16, имаћемо
ИЦР1 = 4999
Сада пређимо на расправу о скици.
Програмирање Атмега16 помоћу УСБасп-а
Комплетни АВР код за управљање серво мотором је дат у наставку. Код је једноставан и лако се може разумети.
Овде смо кодирали Атмега16 да ротира серво мотор од 0 0 до 180 0 и враћа се поново са 180 0 на 0 0. Овај прелаз ће се завршити у 9 корака, тј. 0 - 45 - 90 - 135 - 180 - 135 - 90 - 45 - 0. За кашњење ћемо користити интерну библиотеку Атмел Студио, тј.
Повежите свој УСБАСП в2.0 и следите упутства на овој вези за програмирање Атмега16 АВР микроконтролера користећи УСБАСП и Атмел Студио 7.0. Само направите скицу и отпремите је помоћу спољног ланца алата.
Комплетна шифра са демонстрацијским видеом дата је у наставку. Такође сазнајте више о серво моторима знајући њихов значај у роботици.