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 stop DC Motor at a particular degree of rotation

Status
Not open for further replies.

hardik.patel

Member level 5
Joined
Aug 15, 2012
Messages
94
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,288
Activity points
2,008
Hi all,

How to stop DC Motor simple(not dc gear) at a particular degree of rotation,

i am using atmega8 n rotary encoder for feedback of angle/degree of rotation.

Motor is interfaced with l293d with atmega8, operationg voltage of motor is 5v as supplied to MCU.

i need to stop the DC motor at a desired angle.

i dont want to go 4 stepper motor or servo motor if its possible with DC motor
 

You need a precise optical or magnetic index marker for one of the recursive quadrature cycles counted to compute phase. Then you need to know torque available and interia on motor to predict when it will stop and what external forces are present with acceptable drift.

There are several approaches to feedback using both computed position and sensed motor current but a servo PID control is essential with phase,velocity and acceleration control and feedback.

Servo feedback using current rotary position, index and motor current are necessary,
- as force ≈k*acceleration(a),
- the integral of a is velocity (v)
- the integral of v is phase (φ)
- the encoder position can be differentiated to get v and differentiated again to get a
- "a" can be compared with target "a" from acceleration ramp current and load
- if load is unknown then it can be periodically auto-calibrated from motor response including backlash and vibration load noise, bearing noise, commutation noise.
- then choose plateau velocity, brake ramp, then below a certain velocity go to position mode feedback until stopped with critical dampening
- then shunt motor with 0V ESR= low to hold with servo corrections from external forces
- dead-band interval of bridge and adjustment rates essentially raising ESR of driver by inverse duty cycle which affects stiffness and servo error on position and power loss in driver/motor.
- there also may be a need to calibrate motor torque when hot vs cold and compensate PID loop.
 
Because of magnetic cogging, a brushed DC motor will essentially stop at discrete locations. You can feel that cogging if you manually rotate the shaft.

If you require to stop the motor at a finer angle than what the cogging angle does, I find it very difficult to achieve consistently.
 
Hi,
Sunny n Schmit Trigger..

as per your explanation, that methods are looks much complex..
so now forgot DC Motor...
So how can i achieve that task other than dc motor?

- - - Updated - - -

if motor is rotating in forward direction..then if i give about 100ms delay then suddenly if i give negative voltage to DC motor (through l293d) then after i give stop(for break) pulse to dc motor.

This way can i stop the motor??
 

You have not told us what resolution is required. You may try your idea, but again I don't think (depending on your motor) that you'll get anything better than 30 degrees *consistently*.

That is the reason stepper motors were designed.
 
Hi,
Sunny n Schmit Trigger..

as per your explanation, that methods are looks much complex..
so now forgot DC Motor...
So how can i achieve that task other than dc motor?



- - - Updated - - -

if motor is rotating in forward direction..then if i give about 100ms delay then suddenly if i give negative voltage to DC motor (through l293d) then after i give stop(for break) pulse to dc motor.

This way can i stop the motor??
But you are ignoring energy in double inertia (forw. & rev.) must cause double heat rise.

The best way to stop motor fast is a short circuit across windings or the active state on Bridge to provide 0Vdc
 

I think the problem specification is yet pretty vague, and so are the solutions.

You can operate a DC motor, brushed or brushless in a precise closed loop position control, provided you have a sufficient high resolution position sensor, e.g. a resolver. You get better dynamic and higher torque than with a stepper motor, for this reason it's the preferred solution for roboter and other servo drives, e.g. for those high dynamic CNC machines that can't be served by step motor drives. But we don't know which position accuracy and speed you need.
 

You need a precise optical or magnetic index marker for one of the recursive quadrature cycles counted to compute phase. Then you need to know torque available and interia on motor to predict when it will stop and what external forces are present with acceptable drift.

There are several approaches to feedback using both computed position and sensed motor current but a servo PID control is essential with phase,velocity and acceleration control and feedback.

Servo feedback using current rotary position, index and motor current are necessary,
- as force ≈k*acceleration(a),
- the integral of a is velocity (v)
- the integral of v is phase (φ)
- the encoder position can be differentiated to get v and differentiated again to get a
- "a" can be compared with target "a" from acceleration ramp current and load
- if load is unknown then it can be periodically auto-calibrated from motor response including backlash and vibration load noise, bearing noise, commutation noise.
- then choose plateau velocity, brake ramp, then below a certain velocity go to position mode feedback until stopped with critical dampening
- then shunt motor with 0V ESR= low to hold with servo corrections from external forces
- dead-band interval of bridge and adjustment rates essentially raising ESR of driver by inverse duty cycle which affects stiffness and servo error on position and power loss in driver/motor.
- there also may be a need to calibrate motor torque when hot vs cold and compensate PID loop.

i donot want to jump into someone's post , but your explanation was very detailed and nice
i worked with servo dc motor control , i have a position loop (with P gain) then a velocity loop with (kp and ki) followed by a ramp function and by current limiter to protect against over current when I is above 25A . i really donot get the idea of having torque / acceleration loop . because of position loop requires 'x' velocity , the velocity loop will give the maximum torque at the fastest acceleration to reach this velocity , so what's the point of such minor inner loops ??
i have read tons of books and articles , and it all math and equations with no practical explanation

thanks and regards
 

I think it's appropriate to relate the anwers somehow to the scope of the original post. It's obviously talking about a small motor supplied by 5V, driven by L293 (Iavg < 0.6 A). Unfortunately it doesn't tell about the resolution of the rotary encoder.

It's essentially a single input (pwm duty cycle) and single output (discrete angle) system.
 

Unless you have a very powerful servo action the motors position will be determined primarily by the physical friction within the motor and by what ever its driving or by its number of segments on its commutator.
Where I worked we had about 400 Servo controlled AVR (Automatic Voltage Regulators), 300 of these were large units with a 16V DC field motor with the armature driven by a DC amplifier (+-12V). the motor had a 100 :1 gear box. So when the incoming mains was high the motor drove the Variac in one direction, if it was low in the other direction. If the mains was within tolerance there was no drive on the motor. So to go from +10% on the incoming mains to - 10%, the motor had to turn about 70 revolutions. The problem was that the motor always stopped on the same pair of segments. When the error voltage had increased the motor then always started from the same segment pair so always experienced the motors surge current, so become blacked and intermittently conducting so the motor would not start. The slightest vibration would set it off, so fault finding was very difficult and the electricians would just say fault not found. After experiments the problem was found to be the internal friction of the motor.
So as far as I am concerned DC motors are OK for servo controlled mean speed applications but not for positional accuracy.
Frank
 

i donot want to jump into someone's post , but your explanation was very detailed and nice
i worked with servo dc motor control , i have a position loop (with P gain) then a velocity loop with (kp and ki) followed by a ramp function and by current limiter to protect against over current when I is above 25A . i really donot get the idea of having torque / acceleration loop . because of position loop requires 'x' velocity , the velocity loop will give the maximum torque at the fastest acceleration to reach this velocity , so what's the point of such minor inner loops ??
i have read tons of books and articles , and it all math and equations with no practical explanation

thanks and regards


The current servo loop is simply to prevent overheating, or in the case of HDD's employ an option to reduce acoustical seek noise.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top