Relay Interfacing with Arduino, ULN, and Diode Protection

Relays are electromechanical switches that can be used to control high-current or high-voltage loads. By interfacing relays with Arduino boards, you can create automation and control systems. This guide will explore the use of the ULN2003 Darlington array and diode protection for relay interfacing with Arduino.

ULN2003 Darlington Array

The ULN2003 is a high-current Darlington array that can drive multiple relays or other high-current loads from a single microcontroller pin. It provides isolation between the microcontroller and the load, protecting the microcontroller from high voltages and currents.

Hardware Setup

To interface a relay with Arduino using a ULN2003, you’ll need the following components:

  • Arduino Board: Choose a suitable Arduino board with digital input/output pins.
  • Relay: Select a relay with appropriate voltage and current ratings for your load.
  • ULN2003 Darlington Array: A ULN2003 or similar Darlington array.
  • Resistor: A resistor to limit the base current of the Darlington array.
  • Diode: A flyback diode to protect the transistor from voltage spikes when the relay switches off.

Connect the components as follows:

  • Relay: Connect the coil pin of the relay to the output pin of the Darlington array. Connect the common pin of the relay to the load.
  • ULN2003: Connect the input pin of the Darlington array to a digital output pin on the Arduino. Connect the collector pin of the Darlington array to the positive supply voltage.
  • Resistor: Connect a resistor between the input pin of the Darlington array and the 5V pin on the Arduino.
  • Diode: Connect the diode in reverse polarity across the coil of the relay.

Arduino Code

Here’s a basic example of how to control a relay using a ULN2003:

C++

const int relayPin = 2;
const int ulnPin = 13;

void setup() {
  pinMode(ulnPin, OUTPUT);
  pinMode(relayPin, OUTPUT);
}

void loop() {
  digitalWrite(ulnPin, HIGH); // Activate the relay
  digitalWrite(relayPin, HIGH);
  delay(1000);
  digitalWrite(relayPin, LOW);
  digitalWrite(ulnPin, LOW);
  delay(1000);
}

In this code, the ulnPin controls the Darlington array, which in turn controls the relay. The relayPin is used to monitor the relay’s state.

Additional Tips

  • Relay Ratings: Ensure that the relay’s voltage and current ratings are suitable for the load you want to control.
  • ULN2003 Ratings: Check the ULN2003’s datasheet for its current and voltage ratings.
  • Diode Selection: Choose a diode with a suitable voltage rating and current capacity.
  • Multiple Relays: You can control multiple relays using a single ULN2003 by connecting each relay’s coil to a different output pin on the Darlington array.

By following these steps and understanding the principles of relay interfacing with ULN2003 and diode protection, you can effectively control high-current or high-voltage loads using Arduino.

Transistor and Button Interfacing with Relay
EEPROM Overview and Its Importance in Embedded Systems

Get industry recognized certification – Contact us

keyboard_arrow_up
Open chat
Need help?
Hello 👋
Can we help you?