Serwosilniki są bardzo przydatne w elektronice i systemach wbudowanych. Serwomotory można znaleźć wszędzie wokół siebie, są one używane w zabawkach, robotach, tacy na CD komputera, samochodach, samolotach itp. Powodem tego szerokiego zakresu jest to, że silnik serwo jest bardzo niezawodny i precyzyjny. Możemy go obrócić pod dowolnym kątem. Są dostępne w szerokim zakresie, od silników o wysokim momencie do silników o niskim momencie obrotowym. W tym samouczku połączymy serwomotor z mikrokontrolerem 8051 (AT89S52).
Najpierw musimy zrozumieć zasadę działania serwomotorów. Silnik serwo działa na zasadzie PWM (modulacja szerokości impulsu), co oznacza, że jego kąt obrotu jest kontrolowany przez czas trwania impulsu przyłożonego do PINu sterującego. Zasadniczo silnik serwo składa się z silnika prądu stałego, który jest kontrolowany przez rezystor zmienny (potencjometr) i niektóre koła zębate. Siła przy dużej prędkości silnika prądu stałego jest zamieniana na moment obrotowy przez przekładnie. Wiemy, że PRACA = SIŁA X ODLEGŁOŚĆ, w silniku prądu stałego Siła jest mniejsza, a odległość (prędkość) jest duża, aw Serwo siła jest duża, a odległość mniejsza. Potencjometr jest podłączony do wału wyjściowego serwomechanizmu, aby obliczyć kąt i zatrzymać silnik prądu stałego pod wymaganym kątem.
Serwomotor można obracać w zakresie od 0 do 180 stopni, ale w zależności od produkcji może dochodzić do 210 stopni. Ten stopień rotacji można kontrolować, stosując impuls LOGIC poziomu 1 na czas od 1 ms do 2 ms. 1 ms może obrócić serwo do 0 stopni, 1,5 ms może obrócić do 90 stopni, a impuls 2 ms może obrócić go o 180 stopni. Czas trwania od 1 do 2 ms może obrócić serwomotor pod dowolnym kątem od 0 do 180 stopni.
Schemat obwodu i objaśnienie robocze
Silnik serwo ma trzy przewody: czerwony dla Vcc (zasilanie), brązowy dla uziemienia, a pomarańczowy to przewód sterujący. Przewód sterujący można podłączyć do 8051, podłączyliśmy go do pinu 2.1 w 8051. Teraz musimy trzymać ten pin w logice 1 przez 1 ms, aby obrócić go o 0 stopni, 1,5 ms dla 90 stopni, 2 ms dla 180 stopni. Użyliśmy na chipie timerów 8051, aby stworzyć opóźnienie. Stworzyliśmy opóźnienie 50us za pomocą funkcji „servo_delay” i użyliśmy pętli „for” do stworzenia opóźnienia wielokrotności 50us.
Używamy Timera 0 i trybu 1, więc umieściliśmy 01H w rejestrze TMOD. Tryb 1 jest 16-bitowym trybem timera, a TH0 zawiera starszy bajt, a TL0 zawiera młodszy bajt 16-bitowego timera. Umieściliśmy FFD2 w 16-bitowym rejestrze czasowym, FF w TH0 i D2 w TL0. Umieszczenie FFD2 spowoduje opóźnienie ok. 50 nas z kryształem 11,0592 MHz. TR0 i TF0 to bity rejestru TCON, pin TR używany do uruchamiania timera podczas ustawiania i zatrzymywania po zresetowaniu (0). TF to flaga przepełnienia, ustawiana sprzętowo w przypadku przepełnienia i wymaga zresetowania za pomocą oprogramowania. Zasadniczo TF informuje o zakończeniu timera i ustawia sprzętowo, gdy 16 timerów przechodzi z FFFFH do 0000H. Możesz przeczytać o „8051 Timerach”, aby zrozumieć obliczanie wartości w rejestrach timerów, aby stworzyć opóźnienie 50 us.
Teraz, mierząc od CRO, 13 pętli funkcji servo_delay da opóźnienie 1 ms, więc zaczęliśmy od 1 ms (13 pętli) i przeszliśmy do 2 ms (26 pętli), aby obrócić serwo od 0 do 180 stopni. Ale powoli zwiększaliśmy opóźnienie z 1 ms, podzieliliśmy okno od 1 ms do 2 ms na 7 części, takich jak 1,14 ms, 1,28 ms, 1,42 ms i tak dalej, więc serwo będzie się obracać o wielokrotność ok. 26 stopni (180/7). Po 180 stopniach automatycznie powróci do 0 stopni.