2
\$\begingroup\$

I am trying to understand exactly how a servo works, so that I can build one.

I bought and built a small robot arm kit, and it has five geared DC motors to actuate it. I would like to control the robot arm from a computer, but in order to do that, I need to make the actuators smarter, essentially turning them into servos.

I opened up a couple of inexpensive analog RC servos, and the design looks simple. It has a dc motor, a potentiometer on the output shaft, and circuitry to turn the PWM signal to a position for the output shaft.

My problem is that after opening a couple of servos, I got a range of controller chip models ranging from KC2462 to KC8801. These all seem to be made by the same Chinese company. Unfortunately, I can't find the data sheets, and even if I did, I do not understand any Chinese dialect.

My question can be summed up as this:

  • Is there another servo control chip datasheet that I can read?
  • Is there a website with enough information to learn how exactly a typical analog servo does what it does?
  • Is there perhaps a book with the above information?

Please understand that I already understand how I could hack a servo motor together - I can reprogram an ATtiny45 to take some kind of positional input from one pin, an analog input from a potentiometer on the output shaft, and then output direction and speed to the DC motor. Speed accomplished with PWM in this case. Maybe with a huge cap on the supply to ensure the DC motor doesn't cause too big of a voltage drop when it starts moving.

However, I don't know if the above would damage the chip with inductive feedback from the motor, or if there's a different way to do the speed control.

I would like to understand how the problem is solved in a real-life professionally designed and built servo motor.

As for my background, I did some electronics in school, and I've been playing with Arduino and ATtiny45/85 microcontrollers for a few weeks.

\$\endgroup\$
  • 2
    \$\begingroup\$ What's missing from your ATtiny solution is an H bridge to drive the motor, catch diodes, and some supply filtering. Openservo v1.1 at openservo.com/Schematic seems like an example of what you want to do and is ATtiny based, while their current design uses an ATmega168. \$\endgroup\$ – Chris Stratton Sep 15 '13 at 14:44
  • \$\begingroup\$ @ChrisStratton - You should add this as an answer. An open design for building your own servo seems to be a pretty good answer to what I'm asking. \$\endgroup\$ – Gustav Bertram Sep 15 '13 at 17:20
  • \$\begingroup\$ Perhaps in an ideal world, but there's a strong bias against link-only answers here, and any quick summary would be inferior to the information found at the link. \$\endgroup\$ – Chris Stratton Sep 15 '13 at 17:54
1
\$\begingroup\$

Another RC servo IC was made by Signetics - the NE544 (and some similar models, perhaps NE5044) for which quite a bit of information can be found.

This is the old style pulse width control which is easy to generate and still seems to be quite common; I don't know anything about newer "digital" servo interfaces.

\$\endgroup\$
1
\$\begingroup\$

OpenServo is an open hardware project that aims to upgrade a servo by replacing the controller board. The chip they use is some variant of the ATtiny chips.

Sparkfun sells a custom implementation of these boards.

\$\endgroup\$
1
\$\begingroup\$

Here is the datasheet: http://www.kcsemitech.com/upLoad/down/month_1403/201403091839011423.pdf You can use google translate to get some info out of it, but some data is in english.

\$\endgroup\$
1
\$\begingroup\$

"Is there perhaps a book with the above information?"

I think, there are many books in Control Theory/Control Systems describing servo loops.

Examples: Classical Feedback Control (B.J. Lurie); Modern Control Systems (R. Dorf, R. Bishop).

Don`t overlook the importance to select a suitable controller/compensator for ensuring closed-loop stability with a good step response (without ringing) at the same time.

Comment (edit): The transfer function of a dc motor (Output rotation angle-to-input voltage) can be approximated by an I-T2 function (integrate with two first-order delay elements). Hence, compensation with a PD-T1 controller works good.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.