Controlling old servo amplifier

I have an old (early 90s or so) servo motor & amplifier I'm hoping to control with an Arduino. It has a 6-wire interface:

[1] +24VDC
[2] Ground
[3] Pot -
[4] Pot +
[5] Wiper
[6] S.L. Ground

The Pot +/- connection is an output from the potentiometer, relative to the 24V input.

I connected the Wiper input to Pin 9 on an Arduino, and SL Ground to the Arduino's ground. I just ran the sample Servo Sweep sketch to try and get some movement out of it. When power is hooked up and the Arduino starts running, the motor jitters in place, moving maybe ±10º quickly back and forth in one spot. The movement is the same regardless of what position I send on the Arduino, but unhooking the Wiper line brakes the motor.

On the amplifier board there are trim pots for Range, Speed, and Torque. Adjusting these does affect the speed/quality of the jittering, but none makes it move more than a few degrees from its spot.

Attached are pictures of the top and bottom of the amplifier board. Is there another type of control signal that a servo of this type/age might need? Since the motor/pot runs at 24V, would it need a 24V PWM signal on the Wiper line as well?

Thanks for any help,
Max

Hi,

  1. What is the recommended resistance value for the pot?

  2. Have you verified that pot- and pot+ are connected inside the servo to ground and +24v respectively? The answer to this is critical to how you can drive it from an Arduino. It may be that it is driven from a lower voltage, or not driven from a constant voltage at all. Try connecting a pot, and measure the voltage on pot- and pot+ as you vary the setting.

  3. If the pot is driven from a constant voltage, then you should be able to drive the wiper from an Ardiono PWM pin, BUT you will probably need to level shift it to the correct voltage range with a transistor, AND you will need to smooth the output with a resistor/capacitor network because the servo won't be designed to accept a PWM signal.

dc42,

Thanks for the reply. Unfortunately, I don't have any recommended resistance values for the system.

The voltage across Pot+/- is 19.3V. That doesn't seem to change, but once power is applied to the servo it brakes the motor, so I can't tell for sure if it varies with the position of the servo.

I've got a regular 10K potentiometer here, how risky is it to hook that up to the Pot±/Wiper lines without knowing the resistance it's looking for?

Hooking a 10k pot up to it is unlikely to damage anything.

The 10K pot worked well to control the servo.

I have a spare Pololu motor controller that I decided to try, using Pot± as Vin and the Wiper/SL Ground as the motor output, which also worked. That controller has a high PWM frequency, and I didn't notice any issues with jittering like I did with the Arduino PWM.

Almost all of the servo range (90-95%) is covered from 50-55% duty cycle on the motor controller, so it seems to be looking for roughly 9.6V to 10.6V on the Wiper line. On this controller, that gives me about 160 steps of precision. Is there a recommended way to supply a more precise voltage within that range? Ideally, would like around 10-bit precision.

Thanks for your help
Max

That servo isn't designed to be fed a PWM signal, you really need to smooth the output. Try the attached circuit.

You can only get 8 bits of resolution from an Arduino PWM pin, but I guess you could combine the outputs from 2 PWM pins to get greater resolution.

Thanks, I appreciate the diagram... had to take a break from the project, getting back to it now.

I'm trying to get that working, I have it wired up on a breadboard as in the attached diagram, but the voltage across the output fluctuates around 12.7-12.9v regardless of what the PWM is doing. Whatever value I write on the Arduino has no affect on the output. Did I miss something in hooking it up?

Thanks again,
Max

I think you have the transistor wrongly connected, because the most common transistor pinouts reading from left to right in your picture are c-b-e and e-c-b. What type of transistor is it?

Ahh yes, you are quite right. Had it wired up as e-b-c instead of e-c-b... switched around and now it's working great, thanks again for your help on this.

What would be involved in adding a second PWM pin to increase the resolution?

MaxThomas:
Ahh yes, you are quite right. Had it wired up as e-b-c instead of e-c-b... switched around and now it's working great, thanks again for your help on this.

What would be involved in adding a second PWM pin to increase the resolution?

Add a second transistor/2k2 resistor/1k resistor fed from a 2nd PWM pin, and connect a 2M7 resistor from its collector to the capacitor. That second PWM value becomes the least significant byte of a 16-bit PWM value. Don't expect to get a full 16 bits of resolution though.

Bear in mind that the leakage current of the capacitor will affect the precision, so I suggest using a tantalum or (even better) metal film type if you want repeatability.

Great, thanks. Will continue with 8bits for now and see if that'll do what I need.

Am interested in getting the best precision/repeatability possible... Is this the sort of metal film capacitor you're talking about? (all I'm seeing are 'metallized plastic film' type)

Thanks,
Max

Yes, that sort of capacitor would be fine, if you have room for it, metallized film what what I meant.