Go Down

Topic: stepper position calibration (Read 1 time) previous topic - next topic

mbohn

Tachometers and speedometers on contemporary vehicles are often driven by stepper motors.  On startup they go through a self calibration to find a known rotary position.  I'm trying to find out how that is typically done.  There seems to be a few possibilities:

1.  Drive the needle to a stop at max scale reading and somehow determine when that stop is hit (read motor current or what?)
2.  Use an electrical contact at some point on the scale
3.  Detect the position optically/use an encoder.

Anyone know how this is done?

Thanks.

Grumpy_Mike

Yes all three are used.
1) Just step the motor, the end stop will stop it from moving, then step back and you have your reference.
2) Use a micro switch to detect the position of the shaft.
3) Use an opto slot.

mbohn

Thanks for the quick response.

So, if I command the motor to step forward 360 degrees and wait long enough for it to do that I can be sure it has hit the stop.  Then I have my reference.    That sounds simple enough but it requires that the torque doesn't tear off the indicator needle.

Grumpy_Mike

Yes that is right. Some CD drives have a mechanism that allows rotation against an end stop without stalling, it sor of just clicks.

Quote
and wait long enough for it to do that

Normally when you give a pulse the controller does the pulsing so your program will not have to wait.

kf2qd


Thanks for the quick response.

So, if I command the motor to step forward 360 degrees and wait long enough for it to do that I can be sure it has hit the stop.  Then I have my reference.    That sounds simple enough but it requires that the torque doesn't tear off the indicator needle.


No, the Needle is not the stop, the stop is hidden behind the panel and attached to the motor shaft and the motor frame. The needle is just there for looks.

mbohn

I tried first the hitting-a-stop method.  This worked but eventually the fine pointer I was using (as an indicator rotated by the stepper) broke off, likely due to the repeated impact with the hard stop.

I replaced the needle with a more robust one but found that the added mass hitting the hard stop made it very difficult to get repeatable stops.

So I replaced the hard stop with a limit switch.  I think the limit switch is a much better choice, especially if you need to precisely locate the rotary position.

BTW, I never mentioned my project.  I've built an accurate outdoor thermometer and use the Arduino to drive an analog temperature gauge.  The sensor (AD590) is inside a triple radiation shield with forced air ventilation.

Grumpy_Mike

Well done for getting it going.  :)

Go Up