Krokový motor
Z MAM wiki
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
/* main.c */ #include <avr/io.h> // zde je definovan napr. PORTB #include <avr/iom168.h> // konstanty pro konkretni typ mikrokontroleru #define F_CPU 1000000UL #include <util/delay.h> // toto potrebuji pro pouziti funkce _delay_ms() 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.