Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

How to initialize stepper motor ?

Status
Not open for further replies.

bianchi77

Advanced Member level 4
Joined
Jun 11, 2009
Messages
1,313
Helped
21
Reputation
44
Reaction score
20
Trophy points
1,318
Location
California
Activity points
9,442
Friends,

How can I initialize the robot everytime system is resetting ? any ideas ? sensor ?
In case the position is changing

Thanks
 

Simplest is a microswitch or an optical slot sensor will tell you when you've hit the end of the movement. So you can always
initialise by moving to that position until the switch or optical sensing occurs.
 

Simplest is a microswitch or an optical slot sensor will tell you when you've hit the end of the movement. So you can always
initialise by moving to that position until the switch or optical sensing occurs.


Any suggestions for the sensor type ? IR ? and where will I put it ?
 

Nice video.
You've got quite a few motors so you'd need a limit switch (e.g. microswitch) per motor, that would get pressed whenever a motor is approaching
an end-of-movement position. It would provide the status to your microcontroller that the motor has reached a certain position.
Much like scanners or inkjet printers that initialize and move to a reference position as soon as they are powered up.

Some people use servo motors instead of steppers, to eliminate the need for the limit sensor (since the servo provides feedback anyway).
It is possible to fit a variable resistor (or an absolute position encoder, which can be optical) to the shaft of a stepper, but that is an
expensive technique and not really for hobby projects.
(because then you need to have shaft alignment, and expensive resistor or encoder, and possibly an ADC...).
 

all floppy drives and old stepper HDD's, DVD players with steppers use optical interrupter circuit for limit positions &/or home position. I am sure you find these on web. Tear down an old floppy drive to see how it works.
 

Use Rotary Encoder to detect exact position of each motor, You can find a rotary encoder inside a mouse. When you rotate the wheel, an optical sensor provides pulses for certain degree of rotation.

do you have circuit example for this one ?
 

A rotary encoder as used in a mouse is a pure incremental encoder and doesn't solve the initialization problem. An incremental encoder doesn't serve a purpose unless a motor stall should be detected.
 

A rotary encoder as used in a mouse is a pure incremental encoder and doesn't solve the initialization problem. An incremental encoder doesn't serve a purpose unless a motor stall should be detected.

Can I use this for solving it ?
**broken link removed**
 

A servo (using potentiometer position feedback internally) can be possibly a solution for your actor/drive problem.

It's a different approach. I didn't review the application to determine if it's suitable in this case.
 

A servo (using potentiometer position feedback internally) can be possibly a solution for your actor/drive problem.

It's a different approach. I didn't review the application to determine if it's suitable in this case.
Thanks for the info, I'm gonna try using servo...
 

You can use 3 axis accelerometer sensor to the upper most part of the project body.
when the system will get reset, take an i/p from all axis and accordingly drive motors to set the accelerometer values to default.
For Ex. If you want a particular position every time you start the project, then take an o/p for that position from all axis of accelerometer.
then do the programming to achieve that value of all axis by reversing/forwarding motors, if you love programming then this will be the great fum for you.
 
  • Like
Reactions: jibon

    jibon

    Points: 2
    Helpful Answer Positive Rating
You can use 3 axis accelerometer sensor to the upper most part of the project body.
when the system will get reset, take an i/p from all axis and accordingly drive motors to set the accelerometer values to default.
For Ex. If you want a particular position every time you start the project, then take an o/p for that position from all axis of accelerometer.
then do the programming to achieve that value of all axis by reversing/forwarding motors, if you love programming then this will be the great fum for you.
3 axis accelerometer sensor, is it a module ? what type ?
 

Thats a sensor, it will give you the output of x,y,z axis . I prefer ADXL 335 OR 345 for a hobiest person
It will available for a single order also
or if you know the Java/C then before spending money first try to build and android application using the accelerometer. Of the smart phone.
 

I think the rotary flag and interrupter is more precise and simple to detector home position as used in scanners and floppies.

any ideas where to put those sensors on ? where's position ? so far I limit the movement of the motor with rubber band ( act like a muscle limiting the bone)

---------- Post added at 22:24 ---------- Previous post was at 22:23 ----------

Thats a sensor, it will give you the output of x,y,z axis . I prefer ADXL 335 OR 345 for a hobiest person
It will available for a single order also
or if you know the Java/C then before spending money first try to build and android application using the accelerometer. Of the smart phone.
That's good idea, I know C for smart phone, do you have circuit example of accelerometer ? thanks
 

Ya I've the circuit, but first confirm your choice regarding accelerometer.
if you like ADXL 335 then it has 6 terminal.
It has 2 version, 1) which gives analog output & 2) which gives digital outputs.
2 nd version is costlier than 1st, if you have inbuilt A to D converter then 1st version is ok to choose.

out of 6 terminal : one is Vcc, second is ground, 3rd 4th & 5th are X,Y & Z. 6th terminal is ST (Self Test) which not of use for practical implement.

So give 1.8 V - 3.6 V(3 V is preferable) to ADXL 335 give the output of X,Y,Z to controller.

If you give 3 V then it will give you the fluctuation of 4mV per degree in all co-ordinates(X/Y/Z).

So for your project, check the output of X,Y & Z for your required position and note it down.
you will need 3 Accelerometer as you have 3 parts to move. Collect the output of all of them for your required position.

and the rest part is programming to achieve that particular degree for all co-ordinates of all Accelerometer.

For circuitry part you will need to connect a capacitor of particular value across all co-ordinates and Ground, it will define the output per second ( speed/ frequency of output).

ADXL.jpg

For Ex. to take 50 outputs per second we have to connect 0.10 uF .
For more details check the datasheet of ADXL 335.

And if you are more excited to the project then you can use 3 more Accelerometer at your remote control.
I mean join accelerometer to your hand (at three different joints of human hand) collect the output of your hand's degree and send it to receiver
so ultimately you can make a humanoid arm which will copy your original arm(your own hand).
If you wanna more details feel free to ask I've make so many hardware application with this sensor.
:)
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top