Keresés: 
 Bejelentkezés
Nick:
 
Jelszó:
 
 
 
   
» Elfelejtettem a jelszavamat :'(
» Regisztráció
 Fórum témák
» Több téma
 Frissek
RSS hírforrások
  Hírek.rss
  Fórum.rss
  2012. Máj, 27. Vas
2:23:29
  Jelenleg 84 fő olvassa az oldalt
Kapcsolások » Unipoláris léptetőmotor vezérlése gyakorlatban AVR segítségével »
Unipoláris léptetőmotor vezérlése gyakorlatban AVR segítségével
Szerző: variszabi, idő: Feb 21, 2010, Olvasva: 16623
Oszd meg másokkal is ezt a Facebook-on!
Tartalom:   3/4    
 

Most az általam megírt szoftvert fogjuk működésre bírni. A programot C nyelven írtam, WinAVR fordítóval fordítottam, és AVRStudio fejlesztőkörnyezetben készítettem.

A Fuse biteken nem szükséges állítani, minden legyen úgy, ahogy az alapbeállításban van.

A C kód a következő:

  1. #include<avr/io.h>
  2. #include<util/delay.h>
  3.  
  4. #define DELAY 0
  5. #define DELAY_STEP 3
  6.  
  7. void Forward()
  8. {
  9.            PORTB = (1<<PB2);
  10.            _delay_ms(5);
  11.            PORTB = 0;
  12.            _delay_ms(DELAY);
  13.            PORTB = (1<<PB3);
  14.            _delay_ms(5);
  15.            PORTB = 0;
  16.            _delay_ms(DELAY);
  17.            PORTB = (1<<PB1);
  18.            _delay_ms(5);
  19.            PORTB = 0;
  20.            _delay_ms(DELAY);
  21.            PORTB = (1<<PB0);
  22.            _delay_ms(5);
  23.            PORTB = 0;
  24.            _delay_ms(DELAY);
  25. }
  26.  
  27. void Reverse()
  28. {
  29.            PORTB |= (1<<PB0);
  30.            _delay_ms(DELAY_STEP);
  31.            PORTB = 0;
  32.            _delay_ms(DELAY);
  33.            PORTB |= (1<<PB1);
  34.            _delay_ms(DELAY_STEP);
  35.            _delay_ms(DELAY);
  36.            PORTB |= (1<<PB3);
  37.            _delay_ms(DELAY_STEP);
  38.            PORTB = 0;
  39.            _delay_ms(DELAY);
  40.            PORTB |= (1<<PB2);
  41.            _delay_ms(DELAY_STEP);
  42.            _delay_ms(DELAY);
  43. }
  44.  
  45. int main ()
  46. {
  47.            DDRB = (1<<PB0) | (1<<PB1) | (1<<PB2) | (1<<PB3);
  48.            PORTB = 0;
  49.  
  50.            while(1)
  51.            {
  52.                Forward();
  53.            }
  54.  
  55.            return 0;
  56. }

A kódot próbáltam minél érthetőbben írni. A működését leírom röviden:

A DELAY megadásával beállíthatjuk a motor sebességét, minél kisebb ez az érték, annál gyorsabb a motor, minél nagyobb, annál lassabb. A DELAY_STEP-hez nem kell nyúlnunk, ezzel azt állíthatjuk be, hogy a motor mennyi ideig kapjon áramot, tulajdonképpen az erejét állíthatjuk be. Ha túl sokáig kap áramot, akkor nagyon melegedni fog, ha túl kevés ideig, akkor pedig nem lesz elég erős.

Tartalmaz továbbá két függvényt, melyeknek neve Forward és Reverse, azaz előre, és hátra. A két függvény egészlépéses üzemmódban vezérli a motort, ezt könnyet átírhatjuk féllépésesre. Továbbá átírhatjuk,  hogy mi adjuk meg hogy hány lépést mennyen előre, vagy hátra.

A main függvényben először beállítjuk a kimeneti portokat, majd minden portbitet 0-ba állítunk, és a végtelen ciklusban meghívjuk az egyik függvényt.

Fordítás után nincs más dolgunk, mint beégetni az ATtiny13-ba, vagy letölthető innen a lefordított .hex fájl (9.6MHz), innen pedig az eredeti .c fájl.

 
Folytatás:   3/4    

Értékeld az írást:
Szavazatok: 29 db, Átlag: 4.1
 HEStore.hu
 Hirdetés
TrainModules.hu