Pages: [1]   Go Down
Author Topic: stepper position calibration  (Read 902 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 14
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 597
Posts: 33314
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 14
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 597
Posts: 33314
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

South Texas
Offline Offline
Edison Member
*
Karma: 8
Posts: 1024
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 14
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 597
Posts: 33314
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Well done for getting it going.  smiley
Logged

Pages: [1]   Go Up
Jump to: