+ Post New Thread
Results 1 to 12 of 12
  1. #1
    Full Member level 1
    Points: 1,173, Level: 7

    Join Date
    Aug 2012
    Posts
    95
    Helped
    1 / 1
    Points
    1,173
    Level
    7

    How to stop DC Motor at a particular degree of rotation

    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

  2. #2
    Advanced Member level 5
    Points: 34,834, Level: 45
    Achievements:
    7 years registered Created Blog entry Created Album pictures
    SunnySkyguy's Avatar
    Join Date
    Sep 2007
    Location
    Richmond Hill, ON, Canada
    Posts
    6,729
    Helped
    1678 / 1678
    Points
    34,834
    Level
    45
    Blog Entries
    7

    Re: How to stop DC Motor at a particular degree of rotation

    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.
    A best design is easily achieved with good test specs™
    A better question deserves a better answer. ™
    ... so include all your acceptance criteria ( values, % tolerance) and assumptions in your question or any design.

    ... Tony Stewart EE since 1975
    - slightly north of Toronto


    2 members found this post helpful.

    •   AltAdvertisement

        
       

  3. #3
    Advanced Member level 5
    Points: 14,970, Level: 29
    schmitt trigger's Avatar
    Join Date
    Apr 2013
    Posts
    2,488
    Helped
    805 / 805
    Points
    14,970
    Level
    29

    Re: How to stop DC Motor at a particular degree of rotation

    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.


    1 members found this post helpful.

  4. #4
    Advanced Member level 5
    Points: 34,834, Level: 45
    Achievements:
    7 years registered Created Blog entry Created Album pictures
    SunnySkyguy's Avatar
    Join Date
    Sep 2007
    Location
    Richmond Hill, ON, Canada
    Posts
    6,729
    Helped
    1678 / 1678
    Points
    34,834
    Level
    45
    Blog Entries
    7

    Re: How to stop DC Motor at a particular degree of rotation

    Even the cheapest HDD has all this built in on board for driving the brushless rotary voice coil motor for a few $ in high volume and firmware loop.
    A best design is easily achieved with good test specs™
    A better question deserves a better answer. ™
    ... so include all your acceptance criteria ( values, % tolerance) and assumptions in your question or any design.

    ... Tony Stewart EE since 1975
    - slightly north of Toronto


    1 members found this post helpful.

  5. #5
    Full Member level 1
    Points: 1,173, Level: 7

    Join Date
    Aug 2012
    Posts
    95
    Helped
    1 / 1
    Points
    1,173
    Level
    7

    Re: How to stop DC Motor at a particular degree of rotation

    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??



    •   AltAdvertisement

        
       

  6. #6
    Advanced Member level 5
    Points: 14,970, Level: 29
    schmitt trigger's Avatar
    Join Date
    Apr 2013
    Posts
    2,488
    Helped
    805 / 805
    Points
    14,970
    Level
    29

    Re: How to stop DC Motor at a particular degree of rotation

    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.


    1 members found this post helpful.

  7. #7
    Advanced Member level 5
    Points: 34,834, Level: 45
    Achievements:
    7 years registered Created Blog entry Created Album pictures
    SunnySkyguy's Avatar
    Join Date
    Sep 2007
    Location
    Richmond Hill, ON, Canada
    Posts
    6,729
    Helped
    1678 / 1678
    Points
    34,834
    Level
    45
    Blog Entries
    7

    Re: How to stop DC Motor at a particular degree of rotation

    Quote Originally Posted by hardik.patel View Post
    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
    A best design is easily achieved with good test specs™
    A better question deserves a better answer. ™
    ... so include all your acceptance criteria ( values, % tolerance) and assumptions in your question or any design.

    ... Tony Stewart EE since 1975
    - slightly north of Toronto



  8. #8
    Super Moderator
    Points: 260,224, Level: 100
    Awards:
    1st Helpful Member

    Join Date
    Jan 2008
    Location
    Bochum, Germany
    Posts
    45,441
    Helped
    13826 / 13826
    Points
    260,224
    Level
    100

    Re: How to stop DC Motor at a particular degree of rotation

    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.



  9. #9
    Full Member level 6
    Points: 2,579, Level: 11

    Join Date
    Mar 2013
    Posts
    323
    Helped
    49 / 49
    Points
    2,579
    Level
    11

    Re: How to stop DC Motor at a particular degree of rotation

    Quote Originally Posted by SunnySkyguy View Post
    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



    •   AltAdvertisement

        
       

  10. #10
    Super Moderator
    Points: 260,224, Level: 100
    Awards:
    1st Helpful Member

    Join Date
    Jan 2008
    Location
    Bochum, Germany
    Posts
    45,441
    Helped
    13826 / 13826
    Points
    260,224
    Level
    100

    Re: How to stop DC Motor at a particular degree of rotation

    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.



  11. #11
    Advanced Member level 5
    Points: 25,337, Level: 38

    Join Date
    Dec 2010
    Location
    Southampton and holiday cottage in Wensleydale (UK)
    Posts
    4,863
    Helped
    1315 / 1315
    Points
    25,337
    Level
    38

    Re: How to stop DC Motor at a particular degree of rotation

    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



  12. #12
    Advanced Member level 5
    Points: 34,834, Level: 45
    Achievements:
    7 years registered Created Blog entry Created Album pictures
    SunnySkyguy's Avatar
    Join Date
    Sep 2007
    Location
    Richmond Hill, ON, Canada
    Posts
    6,729
    Helped
    1678 / 1678
    Points
    34,834
    Level
    45
    Blog Entries
    7

    Re: How to stop DC Motor at a particular degree of rotation

    Quote Originally Posted by Electro nS View Post
    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.
    A best design is easily achieved with good test specs™
    A better question deserves a better answer. ™
    ... so include all your acceptance criteria ( values, % tolerance) and assumptions in your question or any design.

    ... Tony Stewart EE since 1975
    - slightly north of Toronto



--[[ ]]--