Witam.
Mam silnik unipolarny i 4 tranzystory sterowane poziomami logicznymi oraz komparator od strony masy na rezestorze pomiarowym.
Chce uzyskac jakiś sensowny algorytm sterowania silnikiem krokowym.
Przekroczenie prądu w silniku sygnalizwoane jest przez komparator i podawane na wejście INT procesora wywołujac przerwanie.
Algorytm teraz wygląda tak:
unsigned char zalaczone_cewki = 0;
void przerwanie_co_1_mikrosekunde( void ) { port_silnikow = zalaczone_cewki }
void przerwanie_przy_przekroczeniu_pradu( void ) { port_silnikow = 0; }
main(void) { while( 1 ) { zalaczone_cewki = 0x01; pauza_1ms(); zalaczone_cewki = 0x02; pauza_1ms(); zalaczone_cewki = 0x04; pauza_1ms(); zalaczone_cewki = 0x08; pauza_1ms(); } }
Problem w tym, że nie wiem czy to sensowny algorytm sterowania silnikiem krokowym. Czy ktoś ma pomysł co mozna zmienić aby uzyskac sensowne działanie? Co prawda to działa poprawnie, ale mam wrażenie, ze silnik moze wyciągnąc więcej, tym bardziej że na scalonym sterowniku wyciąga wyższe obroty. Co robie źle ?