A szervo csatlakoztatása a mikrokontrollerhez - hogyan kapcsolódjunk avr - projektekhez a mikrokontrollereken

A szervo csatlakoztatása a mikrokontrollerhez - hogyan kapcsolódjunk avr - projektekhez a mikrokontrollereken

Szervo, valamint egy léptetőmotor. a pontos kinematika eleme, amely lehetővé teszi a mechanizmusok pontos elhelyezkedését. De a léptetőmotortól eltérően a szervo hajtás visszacsatolással rendelkezik, amely lehetővé teszi a tengely forgásának pontos szögét. Különféle típusú kódolók és potenciométerek visszacsatolási forrásként használhatók.

A cikkben megfontoljuk a kapcsolatot és a szervo hajtások fiatalabb képviselőivel való együttműködést. A szervók a robotok és a modellezők kedvencei.

A szervó olyan házból áll, amelyben van egy kis kollektoros villanymotor, reduktor és vezérlő elektronika.

A szervo csatlakoztatása a mikrokontrollerhez - hogyan kapcsolódjunk avr - projektekhez a mikrokontrollereken

A potenciométereket visszajelzésként használják. Ezért ezek a szervok korlátozzák a tengely forgási szögét a tengely körül. Tehát a Futaba S3003 szervójában a kimenő tengely forgási szöge 225 °.

Műszaki adatok Futaba S3003

A visszacsatoló potenciométer közvetlenül a kimeneti tengelyre van állítva, aminek köszönhetően a szervo vezérlőegység figyeli a tengely pontos helyzetét: a potenciométer ellenállása a forgási szög arányában változik. Az ellenállás kiszámítása után a vezérlőegység összehasonlítja ezt az értéket az adott tengelyhelyzethez tartozó értékkel. Ha ezek az értékek eltérnek, akkor a vezérlőegység arra utasítja a motort, hogy a tengelyt a megadott irányba forgassa, csökkentve az értékkülönbségeket. Miután elérte a tengely pozícióját, amikor a potenciométerből származó érték egybeesik a beállított értékkel, a motor leáll. A potenciométerről leolvasott értéket összehasonlítva magas frekvencián történik, ezért a kimeneti tengely hajlamos arra, hogy a külső terhelés változásakor elfoglalja a beállított pozíciót.

Servo kialakítás úgy van kialakítva, hogy a nyomaték a motor kimenő tengelyre viszi át egy lassító áttétel nagy áttétel, így az energiafogyasztás és a kis méret, a szervo is nagyobb tapadást.

A vezérlőjel egy 20 ms-os és 0,8-2,2 ms időtartamú impulzusjel. Ez egy szabvány a szervók vezérlésére. Minél hosszabb az impulzus, annál nagyobb a szervo tengely forog. A szervo felgyorsításához az impulzus ismétlési periódus 10 ms-ra csökkenthető.

A szervo csatlakoztatása a mikrokontrollerhez - hogyan kapcsolódjunk avr - projektekhez a mikrokontrollereken

A vezérlőjelet a szervo felé a S jelvezetéken keresztül helyezzük el. A szervómezőben fehér, egyes típusoknál - sárga. A szervo jelvezetékén kívül két vezeték van - a tápvezetékek - a föld (fekete) és a teljesítmény (piros)

A szervo csatlakoztatása a mikrokontrollerhez - hogyan kapcsolódjunk avr - projektekhez a mikrokontrollereken

Amint látja, elég könnyű a szervo vezérlése - elegendő ahhoz, hogy impulzus jelet fusson a szükséges frekvenciával és a munkaciklussal. Ezt a jelet a PWM generálhatja. vagy írni a saját időzítő megszakítási rutinát. De a Bascom-AVR-nek már van beépített parancs a szervo vezérléshez - a Servo-ra. Megfontoljuk.

Elindításához meg kell adnia a szervo kapcsolatot:

Config Servos = X. Servo1 = Portb. 0. Servo2 = Portb. 1. Újratöltés = Var

Servos = X; jelzi a csatlakoztatott szervók számát, legfeljebb 14 szerver csatlakoztatható.

Servo1 = Portb. 0; Megadja az első szervó csatlakoztatási portját.

Servo2 = Portb. 1; jelzi a második kiszolgáló csatlakozási portját

Reload = Var; itt Var a mikroszekundumban eltelt idő, amely az időzítő közötti megszakítások között halad.

A Timer0 alapértelmezés szerint megszakításokra szolgál, ezért nem használhatja saját célokra. A Bascom-AVR segítségével átirányíthatja a megszakításokat bármely más időzítőre, például a Timer0 felszabadításához és a Timer1 megragadásához, elegendő megadni a konfigurációs sorban:

Config Servos = 2. Servo1 = Portb. 0. Servo2 = Portb. 1. Reload = 10. Timer = Timer1

Végül is konfigurált, csak a szervoink irányítására szolgál. Ezt a következő parancs végzi el

a a szervó sorozatszáma

F egy változó, amelynek értékét a szervo tengely forgási szöge határozza meg

A tesztkód egésze:

$ regfile = "m8def.dat" "ATmega8 mikrokontroller
$ crystal = 8000000 'működési frekvencia 8MHz

'állítson be portokat a szervok csatlakoztatásához
Config Portb. 0 = Kimenet
Config Portb. 1 = Kimenet

'konfigurálja a két szervó kapcsolatait
Config Servos = 2. Servo1 = Portb. 0. Servo2 = Portb. 1. Újratöltés = 15

Dim F AsByte 'változó az első kiszolgáláshoz
Dim S AsByte 'változó a második kiszolgáláshoz.

'engedje meg a megszakításokat
EnableInterrupts

A változó F = 15 'értéke a szervo tengely forgási szögét állítja be
S = 70

Csatlakozásai nem hozza, azt hiszem, egy jelvezeték nem okoz problémát;) Meg lehet csatlakoztatni a mikrokontroller port közvetlenül, de akkor egy ellenálláson keresztül pár száz ohm - a viszontbiztosítás.

Az F és az S változók értékeinek megváltoztatásával megváltoztathatjuk az első és a második szervoszlop forgási szögét. Minél kisebb az újratöltési paraméter értéke, annál gyorsabban tudjuk a szervoinkat a kívánt szög felé fordítani.

Az ő szolgálataihoz kiválasztotta a Servo (a) értékek működési tartományát, amelyben a tengely elfordulhat. A tengely szélső pozíciója 0 és 150 értéket vesz fel, vagyis 75 értéknél a tengely egy köztes helyzetet foglal el.

A szervo csatlakoztatása a mikrokontrollerhez - hogyan kapcsolódjunk avr - projektekhez a mikrokontrollereken
A szervo csatlakoztatása a mikrokontrollerhez - hogyan kapcsolódjunk avr - projektekhez a mikrokontrollereken
A szervo csatlakoztatása a mikrokontrollerhez - hogyan kapcsolódjunk avr - projektekhez a mikrokontrollereken

Servo (a) = 0 Servo (a) = 75 Servo (a) = 150

Mondd, próbálok olvasni a jeleket „szervó”, hogy a rádió, de valamilyen oknál fogva, az olvasott adatokat egy nagy variáció (szervó nem bunkó, de az adatok olvasható a magas spread)?
A parancsok segítségével olvastam: Időzítő (impulzusimpulzus) vagy ADC (mérési feszültség).
A legérdekesebb dolog az, hogy a mért feszültség a DMM és feszültség „a csatorna szervo” stabil volt (minden rendben), de a leolvasott feszültség felhasználásával Atmega8 (ADC parancs), a készülék folyamatosan termel adatokat egy nagy elterjedt. Nem tudom, miért nem lehet helyesen kiszámítani a feszültséget az Atmega8 használatával? Ugyanazokat a kapcsolókat csatlakoztattam, mint a lefújó ellenállások, de a leolvasott feszültség még mindig jár.

Talán van még egy módja annak, hogy elolvassa a "szervo" jeleket a rádióból?

játszott a programmal voschem nem tudom, hogyan a gépen, és én HITEC HS 422, a szegmens csökkent dolgozni 8 megahertzes, az igazság kezdett atyuni 2313, de 4 jó stabilitást és 2 megahertzes nagyon élénk, így itt szeretnék már egy leírást részletei mi mást lehet egy programban vtyuhat, lehet dőlésszögének beállítása az ellenállás van, vagy távolságmérő például itt köszönöm

Kapcsolódó cikkek