Benutzer-Werkzeuge

Webseiten-Werkzeuge


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