The I2C-SC8 is an 8-channel servo controller module. This ESC can control position and speed of the servo individually. I2C-SC8 module can drive up to 8 RC servos at a 24mS refresh rate regardless of the number of servo's used and servo position. It can be operated by sending commands over the I2C bus.

This controller can not be used with Mindstorms NXT.

Power SupplyI2C-SC8 module requires two different power sources. A 5V supply for the logic section and a separate 6v-7.2v supply for the servos. 5V supply comes from I2C bus port and servo supply comes from separate connector for servo power. The logic and servo grounds are internally connected on the PCB. The I2C-SC8 monitors the servo battery voltage, which is available for reading from an internal register.

Supported Servos Any servo motors with "1500 us neutral" specifications.
The common brands available for this spec are: Hitec, Futaba.

The servo motors are plugged directly onto the I2C-SC8, with your signal pin towards the thick white line adjacent to the connector.

Control Registers:Servo Position Register
The position (low byte/high byte) is a 16-bit number, which directly sets the output pulse width in uS. Setting the position to 1500 (1500uS or 1.5mS) will typically set servos to their center position. The range of pulse widths that are normally supported are from 500uS (0.5mS) to 2500uS (2.5mS). Take care though, as it?s easy to make the servo run into internal stops, if you give it pulse widths at the upper or lower extremes.

The registers can also be read back. The position will be the current position of the servo during a speed-controlled movement, so you can track its progress towards the requested position. Setting the servo position to 00 will deactivate the servo output.

Servo Speed Register
The speed register controls the speed at which the servo moves to its new position. The servo pulses are automatically refreshed every 24mS. On power up the Speed registers are set to the EEPROM stored value stored using STORE command.

If the Speed register is zero (0x00) then the servo is simply set to the requested position.
If the Speed register is set to something other than zero then that value is added to the current position every 24mS until the target position is reached. e.g. If you wish to move from 1000 to 2000 and the Speed register is set to 10, then it will take 2.4 seconds to reach the set position. The formula for the time it will take to make the move is: ((Target position-Start position)/Speed Reg)*24mS

Summary of RegistersControl Register:
Control register allows you to change the I2C address of the device as well store and reset the start up conditions. By default, factory shipped I2C-SC8 Servo module has all registers set to 0x00. That is, all the servo are disabled on power up. However you can select the desired start up condition by storing it in the internal EEPROM.

To Store the startup condition write the desired values in the registers, write Set 'S' (0x53) command at control register address (0x00). It takes around 100 ms to store the registers in the EEPROM memory.
To reset to the factory default value (does not reset the I2C address) write the Reset 'R' (0x52) command at control register.

Servo Register:
For precision control of the servos there is the real 16-bit register, which sets the each servo position directly in uS. For low resource controllers the servo's can be controlled by 8-bit extended register set.

Extended registers:
Extended register set allows the quick change in the servo position possible at reduced resolution. Servo timing pulse for extended register set is 500us +8*extended register.
Although extended registers are not direct readable the servo position can be read back using servo position register.

Battery Voltage:
Register 0x19 contains the servo battery voltage in 39mV units up to a maximum of 10v.
A battery voltage of 7.2v will read about 184. 6v will read about 154. It is updated every 24mS whether its read or not.

I2C Address:
factory shipped The I2C-SC8 Servo module has address of 0xb0 on the I2C bus. This address can be changed to any thing above 0xa0 for user convenience. At power up the present I2C address is indicated by using Morse code. Control Register allows you to change the I2C address of the device.