Difference between revisions of "Two Axis Stepper Controller"

From OpenCircuits
Jump to navigation Jump to search
Line 26: Line 26:
  
 
<pre>
 
<pre>
# <<< Arduino:  TwoAxis Ver1 2017 11 13.25
+
# <<< TwoAxis Ver1 2017 11 14.00
 +
# <<< ok
 +
# >>> ?
 +
# <<< Arduino:  TwoAxis Ver1 2017 11 14.00
 
# <<< mnn    chooseMotor   
 
# <<< mnn    chooseMotor   
 
# <<< tn    move to Target n   
 
# <<< tn    move to Target n   
 
# <<< t-n    save Target n   
 
# <<< t-n    save Target n   
# <<< pn     cmotor nudge n  !!
+
# <<< b      baklash adj 
# <<< snn   cmotor setSpeed
+
# <<< nn     cmotor nudge n  !!
# <<< ann   cmotor setAcceleration
+
# <<< snn   cmotor setSpeed
# <<< dnn   doDance
+
# <<< ann   cmotor setAcceleration
# <<< z     both motors zeroPosition
+
# <<< dnn   doDance
# <<< w     statusReport WhatWhere
+
# <<< z     both motors zeroPosition
# <<< v     Version of software
+
# <<< w     statusReport WhatWhere
# <<< ?     Help
+
# <<< v     Version of software
 +
# <<< ?     Help
 +
# <<< ok Help
 
# <<< ok
 
# <<< ok
  

Revision as of 14:11, 14 November 2017

What

Very incomplete, still working on it.

For some time I have wanted to aim a laser with good precision across a room. Long time ago I did this with servo motors, Worked fine excpt for the good precision. I thought that steppers might do better. The problem is that steppers move ( typically ) over a degree per step. Gearing the motor down decreases the speed, but improves the precision. And these motors, with built in gears are available, and they can be cheap ( Amazon.com : Longruner 5x Geared Stepper Motor 28byj 48 Uln2003 5v Stepper Motor Uln2003 Driver Board for arduino LK67 : Camera & Photo ) With these in hand and a 3D printed mount ( *Bare Bones 28BYJ-48 Gimbal. by mmontee - Thingiverse ) for them I went forward with the software.

You can aim the laser in both altitude and azimuth. Once you get it to a place you want the program can memorize the location as a target and then go back there on demand.

How

Laser/Motor Mount

These can be cheap ( Amazon.com : Longruner 5x Geared Stepper Motor 28byj 48 Uln2003 5v Stepper Motor Uln2003 Driver Board for arduino LK67 : Camera & Photo ) With these in hand and a 3D printed mount ( *Bare Bones 28BYJ-48 Gimbal. by mmontee - Thingiverse ) for them I went forward with the software.

Arduino and Driver

These can be cheap ( Amazon.com : Longruner 5x Geared Stepper Motor 28byj 48 Uln2003 5v Stepper Motor Uln2003 Driver Board for arduino LK67 : Camera & Photo ) With these in hand and a 3D printed mount ( *Bare Bones 28BYJ-48 Gimbal. by mmontee - Thingiverse ) for them I went forward with the software.

Arduino Software

In the old days I would have writen the code from the ground up. With the arduino you can often get a well tested library for this. I found the following and decided to use it.

For a long time I have had a belief that almost all arduino programs should have some sort of serial interface. And this is what I did for this project. The arduino is sent commands, typically a single character optionally followed by a number. From the help command built into the program here is a summary of the commands:

# <<< TwoAxis Ver1 2017 11 14.00
# <<< ok
# >>> ?
# <<< Arduino:  TwoAxis Ver1 2017 11 14.00
# <<< mnn    chooseMotor  
# <<< tn     move to Target n  
# <<< t-n    save Target n  
# <<< b      baklash adj   
# <<< nn     cmotor nudge n  !!
# <<< snn    cmotor setSpeed
# <<< ann    cmotor setAcceleration
# <<< dnn    doDance
# <<< z      both motors zeroPosition
# <<< w      statusReport WhatWhere
# <<< v      Version of software
# <<< ?      Help
# <<< ok Help
# <<< ok

Here is a bit more detail on the commands.

  • m select the active Motor, either motor one or 2. Motor 1 is the asumith, x motor. Motor 2 is the altitude, y motor. The commands are m1 or m2
  • n Nudge the active motor forward or backward by some number of steps. So commands look like n22, n-99 n 10 and so on.
  • t Target the laser at one of several ( 24 or more ) different targets that are coded into the program. The commands look like t5, t7.....
   you can also change the steps for a target to the "current" location of the target by using a negative target numbers.  So t-7 saves the current steps to target 7


  • with move the current motor, either motor 1 the asumith x motor or motor 2 the altitude, y motor. So commands look like m22, m-99 m 10 and so on.