Based on contributions by MarkHamberg.
Besides its 16 digital inputs and 16 digital outputs (all 24V), the Doosan controller has analog I/O ports that work in the 0–10V range. These are useful for exchanging continuous values — like position, speed, or a distance reading — with a microcontroller, instead of a simple on/off signal.
What you need
- A Doosan robot
- A microcontroller with analog I/O (e.g. Arduino, ESP32)
- Resistors, if your microcontroller’s analog input can’t tolerate the full 0–10V range (see step 4)
Steps
1. Know the available ports
- AI1, AI2 (inputs): detect an analog signal (0–10V) coming from an external device.
- AO1, AO2 (outputs): send an analog signal (0–10V) from the robot controller to an external device.
Typical uses: sending the robot’s position or speed to an external microcontroller, or reading sensor data (e.g. distance) into the robot to adjust its behavior.
2. Wire the ports to your microcontroller
- Connect AI1/AI2 to an output of your external device, e.g. an Arduino PWM pin converted to a real analog voltage with a low-pass filter.
- Connect AO1/AO2 to an input of your microcontroller, e.g. an Arduino analog input pin or an ESP32 ADC pin.
3. Configure the ports in the Doosan program
In the robot’s programming interface, configure the analog inputs/outputs for your application:
- Specify the input voltage range (0–10V) for AI1/AI2 if your program requires it.
- Define what AO1/AO2 should output in your program logic — for example, a voltage proportional to the robot’s position or speed.
4. Match voltage ranges with your microcontroller
The robot’s analog signals use the full 0–10V range, e.g. an AO1 output of 5V represents 50% of the range. Microcontroller analog inputs are usually rated far lower:
An Arduino analog input tolerates at most about 5V, and an ESP32 ADC pin at most about 3.3V. Never feed a 0–10V signal into either directly — either scale the signal down first (e.g. with a resistor divider) or use a signal conditioning circuit rated for 0–10V input, and confirm the maximum voltage your specific board allows before connecting anything.
Example use cases
- Sending data to the robot: read a sensor (e.g. an infrared distance sensor) with an Arduino, output the reading as a voltage, and feed it into the robot’s AI1 pin. Program the robot to respond to changes in that voltage.
- Receiving data from the robot: output a voltage from AO1 proportional to the robot’s end-effector speed, read it with the Arduino, and display it or use it to control another device.
Related
- How to connect a Doosan digital I/O port to a microcontroller using a transistor
- How to connect a weak-signal sensor to a Doosan robot via Arduino and Python
Rewritten and consolidated (Sept 2026) from the original student how-to’s: How to use analog ports on a Doosan robot.