Krokový motor
Z MAM wiki
(Rozdíly mezi verzemi)
(Uprava formatovani C kodu) |
|||
Řádka 37: | Řádka 37: | ||
PORTB= 0x08; | PORTB= 0x08; | ||
_delay_ms(t); | _delay_ms(t); | ||
- | PORTB= | + | PORTB= 0x0a; |
_delay_ms(t); | _delay_ms(t); | ||
PORTB= 0x02; | PORTB= 0x02; | ||
Řádka 74: | Řádka 74: | ||
PORTB= 0x02; | PORTB= 0x02; | ||
_delay_ms(t); | _delay_ms(t); | ||
- | PORTB= | + | PORTB= 0x0a; |
_delay_ms(t); | _delay_ms(t); | ||
PORTB= 0x08; | PORTB= 0x08; |
Verze z 6. 5. 2010, 12:00
Krokový motor
Zadání
Ovládání krokového motoru
Analýza problému
Ukázka signálu je pouze pro pravotočivý směr otáčení motoru.
Bipolární řízení s polovičním krokem
int main (void){ // hlavni funkce programu //unsigned char a=0; // pomocna promenna unsigned char t=100; unsigned char dopredu = 0; /* init */ DDRB=0xFF; // Data Direction Register PORTB: kazda nozicka bude vystup /* hlavni smycka */ while(dopredu){ // nekonecna smycka PORTB= 0x08; _delay_ms(t); PORTB= 0x0a; _delay_ms(t); PORTB= 0x02; _delay_ms(t); PORTB= 0x06; _delay_ms(t); PORTB= 0x04; _delay_ms(t); PORTB= 0x05; _delay_ms(t); PORTB= 0x01; _delay_ms(t); PORTB= 0x09; _delay_ms(t); // vystup na nozicky portu B // pockam nejakou postrehnutelnou dobu } // konec nekonecne smycky while(!dopredu){ PORTB= 0x09; _delay_ms(t); PORTB= 0x01; _delay_ms(t); PORTB= 0x05; _delay_ms(t); PORTB= 0x04; _delay_ms(t); PORTB= 0x06; _delay_ms(t); PORTB= 0x02; _delay_ms(t); PORTB= 0x0a; _delay_ms(t); PORTB= 0x08; _delay_ms(t); } } // konec main
Hardware:
AVR Dragon, ATmega168, 2x invertor TC4424, Krokový motor optické mechaniky.