Q: Connecting to Arduino and other devices with TTL Serial
A: Roboteq controllers have a full RS232 serial interface. RS232 has the following differences from TTL serial:
RS232 TTL Serial
Voltage Levels +10V/-10V 0-3V
Logic level Inverted Non-Inverted
A TTL to RS232 adapter must be used to convert to the Arduino serial interface like this part.
Newer Roboteq controller allow the RS232 signal to be non-inverted. Interfacing to Arduino or other TTL Serial interface can therefore be done with just a resitors, and 2 optional diodes as shown in the diagram below:
The data sent from the Arduino are 0-3V and can be directly connected to the controller's RS232 input where it will be captured as valid 0-1 levels.
The data at the output of the controller is +/-10V. At the other end of the resistor, the voltage is clamped to around 0-3.3V by the protection diodes that are included in the Arduino MCU. However, to avoid any stress it is highly recommended to insert the 2 diodes shown on the diagram.
To operate, the RS232 output must be set to inverted. This must be done from the Console of the Roborun Utility while connected via USB. This will only work on newer controller models fitted with firmware version 1.6a or more recent.
From the Console, send the following commands:
where nn =
5: 115200 + Inverted RS232
6: 57600 + Inverted RS232
7: 38400 + Inverted RS232
8: 19200 + Inverted RS232
9: 9600 + Inverted RS232
Make sure that the controller respond to this command with a +. Check that the value has been accepted by sending ~RSBR. If a - is replied or if the value is different than the one entered, then the hardware and/or firmware does not support serial inverted and cannot be used with this circuit.
Send %EESAV from the console to store the new configuration to flash.