Mike Is Making Stuff sticker

Optocoupler Relay Isolation for Arduino

By Mike · Published October 6, 2026 · Updated October 9, 2026

The moment an Arduino project grows up from blinking LEDs to switching lamps, pumps, or heaters, it needs relays, and relays need isolation. An optocoupler sits between the low-voltage logic side and the high-current coil side, passing the control signal as light across a physical gap instead of copper. That gap is what keeps motor back-EMF, mains transients, and ground bounce from reaching your microcontroller. Understanding how optocoupler isolation works, and where it still leaves you exposed, is the difference between a reliable automation project and one that resets randomly or dies on first contact with real loads.

What the optocoupler actually isolates

Inside an optocoupler is an LED and a phototransistor facing each other in a sealed package. The Arduino drives the LED; the light switches the phototransistor, which in turn drives the relay coil (usually through a second transistor stage, since the phototransistor alone cannot source enough current). There is no electrical connection between the two sides, only photons. This breaks ground loops and blocks the voltage spikes that relay coils generate when they switch off.

It is important to understand what isolation does not do. It does not regulate voltage, limit current, or make a circuit safe to touch. The relay contacts and mains wiring remain hazardous regardless of how well the control side is isolated. Isolation protects the electronics from the load side, not you from the load side. Treat every mains connection as lethal even with perfect isolation in place.

Wiring for true isolation

Many relay modules sold for Arduino use include optocouplers but are shipped with a jumper that ties the logic ground to the relay-coil ground. With that jumper in place, the optocoupler still switches the signal, but the grounds are common, which defeats half the point of isolation. For full isolation, remove the jumper and power the relay coils from a separate supply, with the Arduino providing only the signal and its own ground reference to the input side.

The input side needs a current-limiting resistor sized for the optocoupler's LED, typically in the low hundreds of ohms for a 5 volt drive, chosen so the LED gets its rated forward current without overloading the Arduino pin. The output side needs a flyback diode across the relay coil if the module does not already include one; without it, the coil's collapse voltage on switch-off can punch through the driving transistor over time. Verify the module's schematic or board markings before assuming either detail.

Current, voltage, and creepage limits

Optocouplers have their own ratings: maximum LED current, maximum collector-emitter voltage on the output, and an isolation voltage rating for the gap itself, often quoted in the thousands of volts. These are real limits. Running the LED hot shortens its life and dims it over time, which can eventually make the relay chatter. Exceeding the output transistor's voltage rating risks a short straight through the isolation barrier.

Board layout matters as much as the part. Isolation only works if the two sides stay separated on the PCB: no copper pours bridging the gap, no ground traces sneaking across, and physical spacing appropriate to the voltages involved. On home-etched or hand-wired builds, keep the high-voltage side physically distant and route its wiring so it cannot contact the logic side even if a wire comes loose.

Troubleshooting isolated relay circuits

The classic symptom of isolation problems is the Arduino resetting or hanging exactly when a relay switches. If the grounds are tied together, coil transients ride straight into the logic supply; separating the supplies and removing the jumper usually fixes it. If the relay chatters or only half-engages, check the LED drive current first, then look at whether the separate coil supply is drooping under load. A weak coil supply causes exactly the same symptoms as a bad driver.

Another common issue is the relay working on the bench but failing with the real load attached. That points to the load side, not the isolation: contact arcing, inrush current, or inductive kickback on the load wiring. Snubbers or MOVs across the contacts (on the AC load side) and keeping load wiring twisted or separated from signal wiring handle most of it.

When isolation is not enough

Some loads deserve more than optocoupler isolation. Large inductive loads like big motors and compressors throw transients that can couple through even well-separated circuits via the shared mains or radiated EMI. For those, solid-state relays with zero-cross switching, contactors driven through the relay module, and metal enclosures with proper earth grounding are the right escalation. And any project switching mains voltage should live in a proper enclosure with strain relief, fusing on the mains side, and no exposed terminals, regardless of how clean the control side is.

Optocoupler isolation is cheap insurance for Arduino automation: a few cents of LED and phototransistor standing between your microcontroller and the ugly electrical reality of coils and mains. Wire it for genuine separation with independent supplies, respect the ratings, and treat the mains side as dangerous no matter what. Do that and your relays become a solved problem instead of a recurring mystery.

Related Guides

← Back to Resources