09/10/2015, 14:40
Per il mio Raspberry pi 2 ho acquistato
- 1 Adafruit DC & Stepper Motor HAT
- 1 Stepper motor - NEMA-17 size - 200 steps/rev, 12V 350mA
Funziona perfettamente.
Supponiamo che inizialmente una banderuola fissata all'asse motore dello step motor sia esattamente rivolta verso nord.
A seguito dell'esecuzione del codice sopra riportato la banderuola sarà SEMPRE ASSOLUTAMENTE rivolta verso nord, esattamente ?
In tal caso eseguendo a distanza di tempo questo codice la banderuola punterà SEMPRE ogni volta verso lo stesso identico azimuth, partendo SEMPRE dal nord iniziale ?
Qualora ciò non fosse SEMPRE vero (mancanza di corrente ad esempio o qualche piccola imprecisione che si accumula nel tempo) come far per riportare SEMPRE all'inizio la banderuola verso nord ?
A mio pare sono 2 le possibilità :
1) Modificare l'ultima istruzione con
myStepper.step(R*1.1, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.MICROSTEP)
e utilizzare un microswitch
2) Modificare l'ultima istruzione con
myStepper.step(R*1.1, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.MICROSTEP)
e inserire un fermo meccanico contro cui il motore si arresta: Starà fermo contro il fermo meccanico per il tempo corrispondente all'esecuzione di un numero variabile di step
compreso fra 0 e R*1.1
Nel caso 1 si dovrà usare il GPIO (potrei avere qualche suggerimento in merito) e nel caso 2 si rischia di danneggiare il motore ?
Grazie per l'attenzione
- 1 Adafruit DC & Stepper Motor HAT
- 1 Stepper motor - NEMA-17 size - 200 steps/rev, 12V 350mA
Funziona perfettamente.
Supponiamo che inizialmente una banderuola fissata all'asse motore dello step motor sia esattamente rivolta verso nord.
Codice:
g=30
step=(200*g)/360
myStepper.step(step, Adafruit_MotorHAT.FORWARD, Adafruit_MotorHAT.MICROSTEP)
sleep 60
'
myStepper.step(step, Adafruit_MotorHAT.FORWARD, Adafruit_MotorHAT.MICROSTEP)
sleep 60
'
myStepper.step(step, Adafruit_MotorHAT.FORWARD, Adafruit_MotorHAT.MICROSTEP)
sleep 60
R=STEP*3
myStepper.step(R, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.MICROSTEP)
A seguito dell'esecuzione del codice sopra riportato la banderuola sarà SEMPRE ASSOLUTAMENTE rivolta verso nord, esattamente ?
In tal caso eseguendo a distanza di tempo questo codice la banderuola punterà SEMPRE ogni volta verso lo stesso identico azimuth, partendo SEMPRE dal nord iniziale ?
Qualora ciò non fosse SEMPRE vero (mancanza di corrente ad esempio o qualche piccola imprecisione che si accumula nel tempo) come far per riportare SEMPRE all'inizio la banderuola verso nord ?
A mio pare sono 2 le possibilità :
1) Modificare l'ultima istruzione con
myStepper.step(R*1.1, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.MICROSTEP)
e utilizzare un microswitch
2) Modificare l'ultima istruzione con
myStepper.step(R*1.1, Adafruit_MotorHAT.BACKWARD, Adafruit_MotorHAT.MICROSTEP)
e inserire un fermo meccanico contro cui il motore si arresta: Starà fermo contro il fermo meccanico per il tempo corrispondente all'esecuzione di un numero variabile di step
compreso fra 0 e R*1.1
Nel caso 1 si dovrà usare il GPIO (potrei avere qualche suggerimento in merito) e nel caso 2 si rischia di danneggiare il motore ?
Grazie per l'attenzione