projects:4e4th:4e4th:start:msp430g2553_experimente:schrittmotor
Forth Programm zum Schrittmotor testen
Hier ist eine 20 Schritt Schablone um die Schritte besser nachvollziehen zu können. Kann man unter den Motor kleben. Und einen Zeiger an die Achse machen.
\ Schrittmotor testen (Unipolarmotor) \ Portpins als Ausgaenge betreiben. \ H-Puls schaltet Transistor, der die Spule im Motor treibt. \ 9V --- Spule --- TIP120 --- GND \ ^<-Diode-^ ^--- R --- P2.x BIN : init 1111 P2 1+ cset ; \ P2.0..3 = out : aus 1111 P2 cclr ; : PULS ( x m adr -- x ) c! dup ms ; : _A_ 0001 p2 puls ; : _B_ 0010 p2 puls ; : _C_ 0100 p2 puls ; : _D_ 1000 p2 puls ; : _AB_ 0011 P2 puls ; : _BC_ 0110 P2 puls ; : _CD_ 1100 P2 puls ; : _DA_ 1001 P2 puls ; DECIMAL \ wave drive mode : WDM ( x -- ) init aus BEGIN _A_ _B_ _C_ _D_ key? UNTIL drop aus ; \ full step drive : FSD ( x -- ) init aus BEGIN _AB_ _BC_ _CD_ _DA_ key? UNTIL drop aus ; \ half step drive : HSD ( x -- ) init aus BEGIN _A_ _AB_ _B_ _BC_ _C_ _CD_ _D_ _DA_ key? UNTIL drop aus ; \ Halbschritte rechts oder links drehen. VARIABLE STEPS 0 steps ! \ im flash Schrittfolge ablegen IHERE ' _A_ i, ' _AB_ i, ' _B_ i, ' _BC_ i, ' _C_ i, ' _CD_ i, ' _D_ i, ' _DA_ i, CONSTANT FOLGE : STEP+ 1 steps +! ; : STEP- -1 steps +! ; : FOLGEADR ( n -- adr ) 8 mod 2* folge + ; \ Pulsdauer auf den stack legen! : RECHTS ( ms n -- ms ) \ n Schritte rechts herum drehen dup 0 > IF 0 DO step+ steps @ folgeadr @ execute LOOP ELSE drop THEN aus ; : LINKS ( ms n -- ms ) \ n Schritte links herum drehen dup 0 > IF 0 DO step- steps @ folgeadr @ execute LOOP ELSE drop THEN aus ; ( finis)
projects/4e4th/4e4th/start/msp430g2553_experimente/schrittmotor.txt · Zuletzt geändert: 2013-06-06 21:27 von 127.0.0.1