Go Down

Topic: feasibility question: turning dc motor to servo? (Read 4 times) previous topic - next topic


Oct 04, 2012, 06:28 pm Last Edit: Oct 04, 2012, 06:33 pm by retrolefty Reason: 1
What I would like to know:
1. some google key word to search for the right mechanism,

'feedback control'

2. if there is any hardware (electronics) / software solution to this and if os, keywords to google

Please give ideas

Your problem is most likely your software. You can't just place the motor controls in the break mode and expect it to be able to continue to respond to changes in the pots output value. If the pot moves as a result of external forces on the motor position then you have to detect that by the change in pot's feedback value and command the motor to move to counter that change in position. A servo is all about 'feedback' control, all the time checking for actual position Vs last valid commanded position and adjusting motor commands until the difference error is zero. A true servo loop would never have a 'break mode', but rather it's always active reading the pot and making motor correction commands as needed. There are three key variables in such a software loop, the pot's position value, often called the process variable, the desired position, often called the setpoint variable, and the (motor) output signal, often called the error signal. PID control libraries are often used for those building their own roll-your-own servo loops.

That make sense?



Oct 04, 2012, 06:48 pm Last Edit: Oct 04, 2012, 06:56 pm by ironbot Reason: 1
First I correct a mistake I may had in some place above:

It is an ordinary dc motor, not a servo type, so no torque report available :-(

Next, well yes, I had experience with Kalman filter and I can put there IMU (cheapest to implement for me) etc. and keep the motor in pos, but...

I was trying to find 1 mechanism to use both for arms and head, in arms it is ok to have the motor slightly move left / right to keep with pos, but for head, no.

So as I understand, I must go to feedback and correct motor position if arm, and for the head I must use a mechanical solution like:
1. move motor to the desired position and stop it
2. apply a mechanism that mechanically prevent it moving
3. to move it again, first release that

Also I don't want to go to servos for cost: the head will be from fiberglass material and not really at the weight that my hobby servos could handle and don't like to take model airplane servos each by 30$ (need 2 motors for head).

It will be very helpful if you could please suggest a cheap idea to implement in a small robot neck for this (up-down movement on 1 motor is enough).

Thanks again.

The bot has a router with 400Mhz Broadcom processor running on and in case of using a filter for noise or heavy PID algorithms there is no load to Arduino processing power from it.  


I must go to feedback and correct motor position if arm, and for the head I must use a mechanical solution like:

No. All you need is to implement a form of negative feedback.

For example, if the motor moves past the right of your desired position, turn the shaft left; and vice versa. With the negative feedback, the shaft/arm will hold (likely vibrate slightly around the target), mechanical limitations not withstanding.

One area of leading edge research, almost directly comparable to what you are trying to do, is to use brushless motors as steppers.

It is definitely doable. However, getting the whole system stable and responsive isn't simple.


What I would like to know:
1. some google key word to search for the right mechanism,
I'd say "brake". ;)

But, I have no idea how to build a miniature brake.   Maybe a friction device of some sort, or something poking through holes to stop rotation?    I suppose it would use a solenoid.    If you want to engage the brake when power is off, you'd need a spring to engage the brake and the solenoid would pull against the spring to release the brake when the servo is operating.

A stepper motor can make a pretty good brake, but they are not that cheap and they can only "brake" while powered-up.

Go Up