Серво мотори су веома корисни у електроници и уграђеним системима. Серво мотор можете пронаћи свуда око себе, користе се у играчкама, роботима, лежишту за ЦД рачунара, аутомобила, авиона итд. Разлог овог широког опсега је тај што је серво мотор врло поуздан и прецизан. Можемо га окретати под било којим одређеним углом. Доступни су у широком опсегу, од мотора са великим обртним моментом до мотора са малим обртним моментом. У овом упутству ћемо повезати серво мотор са 8051 микроконтролером (АТ89С52).
Прво морамо да разумемо принцип рада серво мотора. Серво мотор ради на принципу ПВМ (модулација ширине импулса), што значи да се његов угао ротације контролише трајањем примењеног импулса на његов контролни ПИН. У основи серво мотор се састоји од једносмерног мотора који се контролише променљивим отпорником (потенциометар) и неким зупчаницима. Сила велике брзине једносмерног мотора Геарс претвара у обртни момент. Знамо да је РАД = ФОРЦЕ Кс ДИСТАНЦЕ, у једносмерном мотору Сила је мања, а растојање (брзина) велика, а у Серво-у сила велика и удаљеност мања. Потенциометар је повезан са излазном осовином серво-уређаја, како би се израчунао угао и зауставио једносмерни мотор под потребним углом.
Серво мотор се може ротирати од 0 до 180 степени, али може и до 210 степени, у зависности од производног прстена. Овај степен ротације може се контролисати применом импулса ЛОГИЦ нивоа 1 у трајању од 1 мс до 2 мс. 1 мс може ротирати серво на 0 степени, 1,5 мс може ротирати на 90 степени, а пулс од 2 мс може ротирати на 180 степени. Трајање између 1 до 2 мс може окретати серво мотор под било којим углом између 0 и 180 степени.
Шема и радно објашњење
Серво мотор има три жице црвену за Вцц (напајање), браон за масу, а наранџаста је управљачка жица. Управљачка жица се може повезати на 8051, повезали смо је на пин 2.1 од 8051. Сада морамо да држимо овај пин на Логиц 1 за 1мс да бисмо га ротирали за 0 степени, 1,5 мс за 90 степени, 2 мс за 180 степени. Користили смо тајмере чипова од 8051 да створимо кашњење. Направили смо кашњење од 50ус кроз функцију „серво_делаи“ и користили петљу „фор“ за креирање кашњења у умножењу од 50ус.
Користимо Тајмер 0 и у режиму 1, па смо ставили 01Х у регистар ТМОД. Режим 1 је 16-битни режим тајмера, а ТХ0 садржи велики бајт, а ТЛ0 садржи мали бајт 16-битног тајмера. Ставили смо ФФД2 у 16-битни регистар тајмера, ФФ у ТХ0 и Д2 у ТЛ0. Стављањем ФФД2 створиће се кашњење од приближно 50 ус са кристалом од 11.0592МХз. ТР0 и ТФ0 су битови регистра ТЦОН, ТР пина који се користи за покретање тајмера када се постави и заустављање када се ресетује (0). ТФ је заставица за преливање, коју хардвер поставља приликом преливања и треба је ресетовати помоћу софтвера. У основи ТФ говори о завршетку тајмера и подешава га хардвер када 16 тајмера пређе са ФФФФХ на 0000Х. Можете прочитати о „8051 тајмерима“ да бисте разумели израчунавање вредности у регистрима тајмера, како бисте створили кашњење од 50 ус.
Сада када се мери из ЦРО, 13 петљи функције серво_делаи ће дати кашњење од 1 мс, па смо кренули од 1 мс (13 петљи) и прешли на 2 мс (26 петљи) да бисмо ротирали серво од 0 до 180 степени. Али полако смо повећавали кашњење са 1 мс, поделили смо прозор од 1 мс на 2 мс на 7 делова попут 1,14 мс, 1,28 мс, 1,42 мс и тако даље, тако да ће се серво ротирати у вишеструком положају од приближно. 26 степени (180/7). После 180 аутоматски ће се вратити на 0 степени.