Servo motorvezérlés avr atmega32 mikrokontrollerekkel

A szervomotorok olyan típusú elektromechanikus működtetők, amelyek nem folyamatosan forognak, mint például a DC / AC vagy a léptetőmotorok, de egy meghatározott pozícióba lépnek és menthetők. Ezeket akkor használják, ha folyamatos forgatásra nincs szükség. Itt használják a szervo hajtásokat. ahol speciális helyzetbe kell menni, majd meg kell állítani és meg kell tartani a pozíciót A leggyakrabban használt szervomotorok a repülőgépek és hajók kormánylapjainak helyzetét vezérlik A szervo hajtások hatékonyan használatosak ezeken a területeken, mivel a kormánykereket nem kell mozgatni 360 fokkal, és nem igényel folyamatos forgatást, mint egy kerék. A meghajtó rendszerekben a visszacsatolási mechanizmust is használják, így hibák kezelésére és helyesbítésére a helymeghatározás során. Ezt a rendszert nyomon követésnek hívják. Így ha a légáramlás a kormánykerékre nyomást gyakorol és elhajítja, akkor a tórusz erőt alkalmaz az ellenkező irányba, és megpróbálja kijavítani a hibát. Például, ha megmondja a szervónak, hogy menjen és zárjon 30 fokban, majd megpróbálja megfordítani a kezével, a szervók megpróbálják. hogy leküzdjék az erőt és megtartsák az adott szöget.

A szervo hajtásokat az RC autók, a robotika stb. Sokféle szervo hajtás létezik, de itt az úgynevezett hobbi kis szervoire koncentrálunk. H obb y A motor és vezérlőmechanizmusa egy egységbe van beépítve. A csatlakozás három összekötő huzal segítségével történik. A FutabaS3003 szervo meghajtót fogjuk használni.

1.RED -> Pozíció vezérlés, tápellátás + 4.8V-6V

3.WHITE -> Vezérlőjel.

A szervo meghajtó vezérlése.

A szervo kezelése egy mikrokontroller segítségével egyszerű, nincs szükség külső meghajtókra. Egyszerűen megadva a kormányzási jelet a szervo bármely szögben elhelyezni. A vezérlőjel frekvenciája általában 50 Hz (vagyis az időtartam 20 ms), és az impulzushossz határozza meg a szöget.

A FutabaS3003 esetében megtanultam a következő szinkronizálást. Az impulzusszélesség és a szervo forgási szög közötti kapcsolat az alábbi. Ne feledje, hogy ez a szervo csak 0 és 180 fok között képes elforgatni.

  • 0,388ms = 0 fok.
  • 1,264ms = 90 fok.
  • (Neutral position) 2.14ms = 180 fok.

Szervo motorvezérlés.

Az AVR mikrokontrollerrel a PWM funkcióval vezérelhető a szervomotorok vezérlése. Ily módon a PWM automatikusan generálja a szervo zárolási jeleket, és a vezérlő CPU szabadul fel más feladatokhoz. Ahhoz, hogy megértsük, hogyan konfigurálhatja és használhatja a PWM-et, alapvető ismeretekkel kell rendelkeznie az AVR hardveres időzítőinek és PWM moduljainak.

Itt fogjuk használni az AVR Timer modult, amely egy 16 bites időzítő, és két PWM csatorna (A és B).

CPU frekvencia 16 MHz, a frekvencia - a maximális frekvencia, amelynél a legtöbb AVR lehet rabotat.Tak fogja használni ugyanazt a frekvenciaosztó 64. Mivel az időzítő kap 16MHz / 64 = 250khz (4 mikroszekundum) .Taymer telepítéséhez mód 14.

Az időzítő a 14-es üzemmódban működik

  • Gyors PWM mód
  • T T OP érték = ICR1

Tehát az időzítő 0-ról ICR1-re számít. A PWM frekvencia és a TOP értékek számítása a következő.

Így a betegség, mi meg ICR1A = 4999, ez ad nekünk egy PWM-periódus 20 ms (50 Hz) .Az Csökkentett módban vyvodaustanavlenny COM1A1 helyes beállításokat, COM1A0 (PWM csatornák) és COM1B1, COM1B0 (PWM csatorna Szoba)

COM1A1 = 1 és COM1A0 = 0 (PWM forrás)

COM1B1 = 1 és COM1B0 = 0 (PWM B csatorna)

Most a munkaciklus beállítható az OCR1A és OOCR1B regiszterek beállításával. Ez a két PWM időszak registraupravleniya Mivel 4mks időmérő idejének (megjegyzendő, 16 MHz osztva 64), ki tudjuk számítani a kívánt értékeket egy adott szögben povorotaservoprivod.

§ Servougol 0 fok szükséges impulzusszélesség 0.388ms (388uS), így znachenieOCR1A = 388us / 4us = 97

§ A 90 fokos szervo szög impulzusszélessége 1,264 ms (1264uS), ezért az OCTR1A = 1264us / 4us = 316

§ Szervo szög 180 fokos impulzusszélesség szükséges 2,140 ms (2140uS), így az OCTR1A = 2140us / 4us = 535

Tehát kiszámíthatjuk az OCR1A (vagy az OCR1B a második szervóhoz) értékét bármely szögben. Ne feledje, hogy az OCR1x értéke 97 és 535 közé esik a 0-180 fokos szögeknél.

A motorvezérlő program.

Demonstratsionnayaprogramma alább bemutatja, hogyan kell használni szervomotorok smikrokontrollerom AVR. munkaprogram nagyon egyszerű, akkor elindul az időzítő és sinitsializatsii PWM.V elején rögzíti a hajtómű 0 fok, Azat mozog 90 fok, podozhdatv mozgás közben na135 fok, és végül 180 fok. Ez a folyamat mindaddig megismétlődik, amíg a hajtás a tápegységhez csatlakozik.

Paraméterek a program megfelelő működéséhez.

  • LOW biztosíték = 0xFF és HIGH Fuse = 0xC9
  • A frekvencia 16 MHz.
  • Szervo-korreláció a Futaba S3003-hoz.
  • Az MCU egy ATMega32 vagy egy chipes ATmega16 mikrokontroller.