Servomoottorit ovat erittäin hyödyllisiä elektroniikassa ja sulautetuissa järjestelmissä. Servomoottoria voi käyttää kaikkialla ympärilläsi, niitä käytetään leluissa, robotteissa, tietokoneen CD-levykelkassa, autoissa, lentokoneissa jne. Tämän laajan soveltamisalan syy on se, että servomoottori on erittäin luotettava ja tarkka. Voimme kiertää sen mihin tahansa tiettyyn kulmaan. Niitä on saatavana laajalla valikoimalla, ne muodostavat suuren vääntömoottorin ja pienen vääntömoottorin. Tässä opetusohjelmassa aiomme liittää servomoottorin 8051-mikrokontrolleriin (AT89S52).
Ensin on ymmärrettävä servomoottoreiden toimintaperiaate. Servomoottori toimii PWM (pulssinleveyden modulointi) -periaatteella, mikä tarkoittaa, että sen pyörimiskulmaa ohjataan ohjauspinssiin syötetyn pulssin kestolla. Periaatteessa servomoottori koostuu tasavirtamoottorista, jota ohjataan muuttuvalla vastuksella (potentiometrillä) ja joillakin vaihteilla. DC-moottorin nopea nopeus muunnetaan vääntömomentiksi Gearsin avulla. Tiedämme, että TYÖ = VOIMA X DISTANCE, tasavirtamoottorissa Voima on pienempi ja etäisyys (nopeus) on suuri ja Servossa voima on suuri ja etäisyys on pienempi. Potentiometri on kytketty Servon lähtöakseliin kulman laskemiseksi ja tasavirtamoottorin pysäyttämiseksi vaaditussa kulmassa.
Servomoottoria voidaan kiertää 0: sta 180: een, mutta se voi nousta 210 asteeseen riippuen valmistuksesta. Tätä pyörimisastetta voidaan säätää soveltamalla LOGIC-tason 1 pulssiä 1 ms: n ja 2 ms: n välille. 1 ms voi kiertää servoa 0 asteeseen, 1,5 ms voi kiertää 90 asteeseen ja 2 ms pulssi kiertää sitä 180 asteeseen. 1-2 ms: n kesto voi kiertää servomoottoria mihin tahansa kulmaan välillä 0-180 astetta.
Piirikaavio ja selitys työstä
Servomoottorissa on kolme johtoa: punainen Vcc: lle (virtalähde), ruskea maadoitukselle ja oranssi on ohjausjohto. Ohjauskaapeli voidaan liittää 8051: ään, olemme liittäneet sen 8051: n tapaan 2.1. Nyt meidän on pidettävä tämä tappi logiikassa 1 1 ms: n ajan kiertääksesi sitä 0 astetta, 1,5 ms 90 astetta, 2 ms 180 astetta. Olemme käyttäneet 8051-siruajastimissa viiveiden luomiseen. Olemme luoneet 50us viiveen toiminnon "servo_viive" kautta ja käyttäneet "for" -silmukkaa viiveen luomiseen 50 us: n kerrannaisissa.
Käytämme ajastinta 0 ja tilassa 1, joten olemme lisänneet 01H TMOD-rekisteriin. Tila 1 on 16-bittinen ajastintila ja TH0 sisältää korkean tavun ja TL0 sisältää 16-bittisen ajastimen matalan tavun. Olemme lisänneet FFD2: n 16-bittiseen ajastinrekisteriin, FF: n TH0: een ja D2: n TL0: een. FFD2: n asettaminen aiheuttaa noin viiveen. 50 meitä 11.0592MHz: n kiteellä. TR0 ja TF0 ovat TCON-rekisterin bittiä, TR-nasta, jota käytetään ajastimen käynnistämiseen, kun se on asetettu, ja pysähtyy, kun nollaus (0). TF on ylivuotolippu, jonka laitteisto asettaa ylivuoton yhteydessä, ja se on nollattava ohjelmistolla. Pohjimmiltaan TF kertoo ajastimen valmistumisen, ja laitteisto asettaa sen, kun 16 ajastinta siirtyy FFFFH: sta 0000H: een. Voit lukea "8051-ajastimista" ymmärtääksesi arvon laskennan ajastinrekistereissä ja luodaksesi 50 us: n viiveen.
Nyt mitattuna CRO: sta, 13 silmukkaa servo_viive-funktiota antaa viiveeksi 1 ms, joten olemme aloittaneet 1 ms: sta (13 silmukkaa) ja siirtyneet 2 ms: iin (26 silmukkaa) kiertääksesi servoa 0: sta 180: een asteeseen. Mutta olemme lisänneet viivettä hitaasti 1 ms: stä, olemme jakaneet 1 ms: n ja 2 ms: n välisen ikkunan 7 osaan, kuten 1,14 ms, 1,28 ms, 1,42 ms ja niin edelleen, joten servo pyörii n. 26 astetta (180/7). 180 jälkeen se palaa automaattisesti 0 asteeseen.