Siku Control 32 Servo

Siku ServoOne of the biggest mysteries in the RC tractor world for a long times has been “How do I control a 4 Wire Siku Control 32 Servo?”. I wondered this for a long times and I had a few ideas, I taught the four wires might be ground, positive, a data signal and a clock signal. Another idea was that two wires were going to the motor and two wires were going to a potentiometer. The idea being that the Siku control board measured the position using the potentiometer and used a motor driver on the control board to move the servo motor.

After many hours staring at the oscilloscope and trying various Arduino logic analyzer sketches I eventually discovered I was completely wrong with my theories. On the plus side I did figure out what the four wires are, how to control the servo and I even made an Arduino library to control the 4 wire Siku Control 32 servos.



Siku Control 32 Servo Pinout

Siku Control 32 4 Wire Servo PinoutI discovered that the first wire which was brown on both of the servos I removed from the Control 32 John Deere 6920S was unsurprisingly the ground wire.

The next wire which was red on both servos was directly connected to the positive of the single cell LiPo battery which comes with the control 32 models.

The next wire in turned out to be a sleep or standby control similar to what we have on the TB6612FNG motor driver chips I usually use. This needs to be pulled low to turn the servo on.

The final wire which was blue on one servo and green on the other, I can’t see any difference between the servo so I don’t know why they are different colours. This wire is the data line and I’ll discuss the required control signal in the next section.


Signal Required to Control a Siku Servo

When I probed the data line with the oscilloscope I discovered that the signal is normally high and there is a repeating train of nine low pulses separated by around 150 microseconds. The nine pulses appeared to vary between two states as I rotated the steering potentiometer on the controller and it became clear that this was a byte of data preceded by a flag to indicate data was coming. Each pulse appeared to be around 15 microseconds for a 0 and around 21 microseconds for a 1. Here are some images of the signals I recorded.

Siku Servo Center Signal Image

Siku Servo Control Signal for Central Position

 

Siku Servo Left Signal Image

Siku Servo Control Signal for Left Position

 

Siku Servo Right Signal Image

Siku Servo Control Signal for Right Position

 

Here are some data files with a sampling period of 0.4 microseconds in case anyone want to write their own code to control the servos, I’m no expert so I’m sure better code than mine can be written.


Arduino Library for Siku Control 32 Servos

I’m no expert when it comes to programming so there is probably a lot of room to improve this code but I have put together a library which should be as usable as the normal servo library which comes with the Arduino IDE. Simply download the zip folder and extract it into the Arduino libraries folder in exactly the same way you would any other library.