

The ULN2803A is an octal high-voltage, high-current Darlington transistor array. It consists of eight NPN Darlington pairs, each capable of driving high-current loads up to 500 mA per channel, with a maximum voltage rating of 50V. This component is widely used to interface low-level logic signals, such as those from microcontrollers, with high-power devices like relays, lamps, motors, and solenoids. Its built-in freewheeling diodes make it ideal for driving inductive loads.








The ULN2803A is designed to simplify the control of high-power devices by providing a robust interface between logic-level signals and high-current loads.
| Parameter | Value |
|---|---|
| Supply Voltage (Vce) | Up to 50V |
| Output Current (Ic) | 500 mA per channel (max) |
| Input Voltage (Vin) | 5V to 12V (logic-level input) |
| Number of Channels | 8 |
| Input Current (Iin) | 0.93 mA (typical per channel) |
| Built-in Diodes | Yes (for inductive load protection) |
| Package Type | DIP-18, SOIC-18 |
| Operating Temperature | -20°C to 85°C |
The ULN2803A has 18 pins, with 8 input pins, 8 output pins, and 2 common pins.
| Pin Number | Name | Description |
|---|---|---|
| 1-8 | IN1-IN8 | Input pins for channels 1 to 8 |
| 9 | COM | Common pin for freewheeling diodes (connect to load supply voltage) |
| 10-17 | OUT1-OUT8 | Output pins for channels 1 to 8 |
| 18 | GND | Ground pin |
The ULN2803A is straightforward to use in circuits. Follow these steps to integrate it into your design:
Below is an example of how to use the ULN2803A to drive a relay using an Arduino UNO.
// Example code to control a relay using ULN2803A and Arduino UNO
#define RELAY_PIN 2 // Define the Arduino pin connected to ULN2803A IN1
void setup() {
pinMode(RELAY_PIN, OUTPUT); // Set the relay pin as an output
}
void loop() {
digitalWrite(RELAY_PIN, HIGH); // Turn the relay ON
delay(1000); // Wait for 1 second
digitalWrite(RELAY_PIN, LOW); // Turn the relay OFF
delay(1000); // Wait for 1 second
}
Load Not Turning On
Excessive Heat
Voltage Spikes
No Output Signal
Q1: Can the ULN2803A drive a stepper motor?
Yes, the ULN2803A can drive stepper motors by controlling each coil through its output channels. Ensure the current and voltage ratings of the motor are within the ULN2803A's limits.
Q2: Can I use the ULN2803A with a 3.3V microcontroller?
The ULN2803A is optimized for 5V logic levels. While it may work with 3.3V signals, the input current may not be sufficient to fully saturate the Darlington pairs. Consider using a level shifter or a different driver IC for 3.3V systems.
Q3: What is the purpose of the COM pin?
The COM pin is connected to the load's supply voltage and is used to activate the built-in freewheeling diodes, which protect the circuit from voltage spikes generated by inductive loads.
Q4: Can I leave unused channels unconnected?
Yes, unused input and output pins can be left unconnected without affecting the operation of the other channels.
By following this documentation, you can effectively use the ULN2803A in your projects to drive high-power loads with ease and reliability.