Contact Sales & After-Sales Service

Contact & Quotation

  • Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
  • Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Drag & Drop Files, Choose Files to Upload You can upload up to 3 files.

Notes:
For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.

Solid State Relay Arduino: High-Power Control

When I first started designing industrial control systems, mechanical relays were the standard solution for switching high-power loads. The constant clicking noise, contact arcing, and eventual failure after millions of cycles taught me there had to be a better approach. That’s when I discovered solid state relays—and the difference was transformative for reliability and system longevity.

Integrating a solid state relay Arduino system gives you the control precision of a microcontroller combined with the power-handling capability of industrial switching equipment. Unlike mechanical relays that physically move contacts to make or break connections, SSRs use semiconductor switching elements that have no moving parts, no contact bounce, and theoretically unlimited switching cycles. For Arduino projects controlling heaters, motors, pumps, or lighting systems, this technology delivers professional-grade performance.

Understanding Solid State Relay Technology

A solid state relay acts as an electronic switch controlled by low-voltage signals to manage high-voltage or high-current loads. The fundamental advantage lies in its construction: instead of electromagnets and mechanical contacts, SSRs employ optical isolation combined with semiconductor switches like TRIACs, SCRs, or MOSFETs.

The optical isolation component—typically a LED-photodiode pair called an optocoupler—provides complete electrical separation between your control circuit and the load circuit. When your Arduino applies voltage to the SSR’s input terminals, an internal LED illuminates. This light activates a photosensitive transistor or photodiode on the isolated side, which then triggers the main switching element to conduct current through the load circuit.

This isolation is critical for safety and noise immunity. Your 5V Arduino circuit remains completely separated from the 120VAC or 240VAC mains voltage, with zero direct electrical connection. Voltage spikes, surges, or faults on the load side cannot propagate back to damage your microcontroller.

AC SSR Internal Architecture

For alternating current loads, the switching element is typically a TRIAC (Triode for Alternating Current) or back-to-back SCRs (Silicon Controlled Rectifiers). TRIACs are bidirectional devices that can conduct current in both directions, making them ideal for AC power control.

Most AC SSRs incorporate zero-crossing detection circuitry. This feature ensures the relay switches on only when the AC voltage passes through zero volts, minimizing electrical noise (RFI/EMI) generation and extending relay lifespan. When you command the SSR to turn off, it waits until current naturally crosses zero before opening the circuit.

DC SSR Internal Architecture

DC solid state relays use MOSFETs or IGBTs as switching elements since these devices can interrupt DC current flow. Unlike TRIACs designed for AC bidirectional current, MOSFETs provide unidirectional switching with extremely low on-resistance, minimizing power dissipation and heat generation.

DC SSRs don’t benefit from natural zero-crossing like AC applications, so they must interrupt current immediately when commanded. This can generate inductive voltage spikes with motor or solenoid loads, requiring careful consideration of snubber circuits and protection diodes.

Solid State Relay Arduino Specifications

Understanding electrical ratings prevents costly mistakes and safety hazards. Here’s a comprehensive specification comparison:

ParameterTypical AC SSRTypical DC SSRNotes
Control Voltage (Input)3-32V DC3-32V DCCompatible with 5V Arduino output
Control Current5-25mA5-25mAWell within Arduino pin capability (40mA max)
Load Voltage (AC SSR)24-480V ACN/AZero-crossing or random turn-on
Load Voltage (DC SSR)N/A3-220V DCPolarity sensitive
Load Current Rating10-100A10-100ARequires heatsinking at high currents
Voltage Drop1.2-1.6V AC0.15-0.5V DCMOSFET vs TRIAC characteristics
Switching Time8-10ms (zero-cross)<1msHalf AC cycle delay vs instant
Off-State Leakage<5mA<1mASmall current when “off”
Isolation Voltage2500V AC minimum2500V AC minimumInput-to-output isolation rating
Operating Temperature-30°C to 80°C-30°C to 80°CDerate current above 40°C

Current Derating Requirements

The published current rating assumes ideal conditions: 25°C ambient temperature, proper heatsinking, and adequate ventilation. Real-world applications require derating based on actual operating conditions.

Temperature derating: For every 10°C above 25°C ambient, reduce maximum current by approximately 10-15%. A 40A SSR operating at 50°C ambient should be derated to roughly 30A maximum continuous.

Heatsinking requirements: SSRs generate heat proportional to load current. Calculate thermal dissipation using: Power (W) = Voltage Drop × Load Current. A 25A AC SSR with 1.5V drop dissipates 37.5W at full load—enough to require substantial heatsinking.

As a practical rule: SSRs rated 10A or less may operate without heatsinks for currents below 5A. Anything above 10A requires aluminum heatsinks, and loads above 25A benefit from forced-air cooling.

SSR Types and Selection Criteria

Choosing the correct SSR type prevents application failures and safety issues. The primary classification depends on input and output power types.

SSR Type Comparison Table

SSR TypeInput SignalOutput ControlCommon ApplicationsKey Characteristics
DC-AC SSR3-32V DC24-480V ACHeaters, pumps, AC motors, lightingZero-crossing switching reduces EMI
DC-DC SSR3-32V DC3-220V DCDC motors, LED arrays, solar systemsMOSFET-based, very low voltage drop
AC-AC SSR90-280V AC24-480V ACIndustrial control, PLC replacementLess common for Arduino projects
AC-DC SSR90-280V AC3-220V DCSpecialized control systemsRarely used in microcontroller applications

For Arduino projects, DC-AC SSRs are most common since Arduino provides DC control signals and most high-power loads operate on AC mains voltage.

Zero-Crossing vs Random Turn-On

Zero-crossing SSRs: Switch on only when AC voltage crosses zero volts. This feature minimizes electrical noise, reduces voltage transients, and extends load lifespan. Ideal for resistive loads like heaters, incandescent lighting, and resistive heating elements.

Random turn-on SSRs: Switch immediately when control signal applied, regardless of AC phase. Necessary for phase-control applications, transformer loads, or situations where switching must occur instantly. Can generate significant RFI/EMI.

For Arduino applications controlling standard household or industrial equipment, zero-crossing SSRs are preferred.

Wiring Solid State Relay Arduino Connections

Proper wiring ensures safe operation and reliable switching. SSR modules typically have four connection points: two for control (input) and two for load (output).

Basic SSR Wiring Configuration

Control Side (Low Voltage):

– SSR Control + Terminal → Arduino Digital Pin (e.g., Pin 7)

– SSR Control – Terminal → Arduino GND

Load Side (High Voltage – AC Example):

– SSR Output Terminal 1 → AC Load (e.g., heater, lamp)

– SSR Output Terminal 2 → AC Neutral or Line

– AC Line/Neutral → Other Load Terminal

Important: Only switch ONE conductor (typically LINE), never both

Safety Considerations for AC Wiring

Critical safety rule: Only interrupt one side of the AC circuit—typically the LINE (hot) conductor. Never switch both LINE and NEUTRAL simultaneously. The SSR acts like a switch inserted in the hot wire path.

Fusing: Always install an appropriate fast-blow fuse rated 1.5-2× the expected load current on the AC line before the SSR output. This protects against SSR failure modes and load short circuits.

Wire gauge: Use wire rated for the current and voltage. For 15A loads, minimum 14 AWG copper wire. For 20A loads, 12 AWG minimum. Undersized wire generates heat and voltage drop.

Polarity: DC SSRs are polarity-sensitive. Reversing load connections prevents operation and may damage the SSR. AC SSRs are non-polarized—either output terminal can connect to line or neutral.

Arduino Code for SSR Control

The beauty of solid state relay Arduino integration is the simplicity. SSRs appear as simple on/off switches to your code—no special libraries required.

Basic SSR Control Example

// Solid State Relay Arduino Control

// Controls AC heater or lamp via SSR

const int ssrPin = 7;  // SSR control connected to pin 7

void setup() {

  pinMode(ssrPin, OUTPUT);

  digitalWrite(ssrPin, LOW);  // Ensure SSR starts OFF

  Serial.begin(9600);

  Serial.println(“SSR Control Ready”);

}

void loop() {

  // Turn load ON for 5 seconds

  digitalWrite(ssrPin, HIGH);

  Serial.println(“Load ON”);

  delay(5000);

  // Turn load OFF for 5 seconds

  digitalWrite(ssrPin, LOW);

  Serial.println(“Load OFF”);

  delay(5000);

}

Temperature-Controlled Heater

This practical example uses a DS18B20 temperature sensor to maintain a target temperature by controlling a heater through an SSR:

#include <OneWire.h>

#include <DallasTemperature.h>

// Temperature sensor setup

#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

// SSR control pin

const int ssrPin = 7;

// Temperature setpoint

const float targetTemp = 25.0;  // 25°C target

const float hysteresis = 1.0;   // 1°C dead band

void setup() {

  pinMode(ssrPin, OUTPUT);

  digitalWrite(ssrPin, LOW);

  sensors.begin();

  Serial.begin(9600);

  Serial.println(“Temperature Controller Started”);

}

void loop() {

  // Request temperature reading

  sensors.requestTemperatures();

  float currentTemp = sensors.getTempCByIndex(0);

  // Print status

  Serial.print(“Temperature: “);

  Serial.print(currentTemp);

  Serial.print(“°C | Target: “);

  Serial.print(targetTemp);

  Serial.print(“°C | Heater: “);

  // Control logic with hysteresis

  if (currentTemp < (targetTemp – hysteresis)) {

    digitalWrite(ssrPin, HIGH);  // Turn heater ON

    Serial.println(“ON”);

  } else if (currentTemp > (targetTemp + hysteresis)) {

    digitalWrite(ssrPin, LOW);   // Turn heater OFF

    Serial.println(“OFF”);

  } else {

    // Within dead band – maintain current state

    Serial.println(digitalRead(ssrPin) ? “ON” : “OFF”);

  }

  delay(2000);  // Update every 2 seconds

}

Time-Based Load Scheduling

Control loads based on schedules using the TimeLib library:

#include <TimeLib.h>

const int ssrPin = 7;

// Schedule: ON at 18:00, OFF at 22:00

const int onHour = 18;

const int offHour = 22;

void setup() {

  pinMode(ssrPin, OUTPUT);

  Serial.begin(9600);

  // Set initial time (would normally sync from RTC or NTP)

  setTime(12, 0, 0, 1, 1, 2026);  // 12:00:00, Jan 1, 2026

}

void loop() {

  int currentHour = hour();

  if (currentHour >= onHour && currentHour < offHour) {

    digitalWrite(ssrPin, HIGH);

    Serial.println(“Scheduled ON”);

  } else {

    digitalWrite(ssrPin, LOW);

    Serial.println(“Scheduled OFF”);

  }

  delay(60000);  // Check every minute

}

PWM Control with SSRs (Phase Control Alternative)

Some applications require variable power control, not just on/off switching. While true phase-angle control requires specialized SSRs with analog inputs, you can achieve proportional control using time-proportional PWM.

Time-Proportional Control

Instead of varying AC phase angle, vary the on-time over fixed periods. For example, 50% power = ON for 5 seconds, OFF for 5 seconds in a 10-second cycle.

// Time-proportional PWM for heater power control

const int ssrPin = 7;

const long cycleTime = 10000;  // 10 second cycle

void loop() {

  int powerPercent = 75;  // 75% power desired

  long onTime = (cycleTime * powerPercent) / 100;

  long offTime = cycleTime – onTime;

  digitalWrite(ssrPin, HIGH);

  delay(onTime);

  digitalWrite(ssrPin, LOW);

  delay(offTime);

}

Important limitation: This approach works for slow-response loads like heaters or incandescent lights. It’s unsuitable for motors, fans, or LED lighting where rapid cycling causes flicker or mechanical stress.

Common SSR Problems and Solutions

After debugging hundreds of SSR installations, these issues appear repeatedly.

SSR Won’t Turn On

Symptom: Load remains off regardless of control signal.

Diagnostic steps:

  1. Measure control voltage at SSR input terminals—should read 3-5V DC when Arduino pin HIGH
  2. Check for reversed polarity on DC SSR inputs (+ and – swapped)
  3. Verify load voltage is within SSR rating (some SSRs require minimum load voltage)
  4. Test SSR LED indicator—should illuminate when control signal applied

Common causes:

  • Insufficient control current (use transistor buffer if Arduino pin drives multiple SSRs)
  • Failed SSR internal LED or optocoupler
  • Load voltage below minimum threshold (some SSRs need 24V AC minimum)

Load Stays Partially On

Symptom: Load doesn’t fully turn off, remains dimly lit or partially energized.

Root cause: SSR leakage current. All SSRs leak small current (typically 1-5mA) when “off” due to TRIAC or SCR characteristics.

Solutions:

  • Add bleeder resistor across load (1kΩ, 10W for AC applications)
  • Use SSR with lower leakage rating
  • Acceptable for most resistive loads; problematic for sensitive electronics

Overheating and Thermal Shutdown

Symptom: SSR works initially, then stops switching. May resume after cooling.

Engineering solutions:

  • Install proper heatsink (aluminum, sized for power dissipation)
  • Add thermal compound between SSR and heatsink for better heat transfer
  • Implement forced-air cooling with small fan
  • Verify load current doesn’t exceed SSR rating
  • Derate SSR for ambient temperature (reduce current 10% per 10°C above 25°C)

Thermal calculation example: 40A load through SSR with 1.5V drop = 60W dissipation. Requires heatsink rated for 60W thermal resistance or better.

False Triggering or Erratic Switching

Symptom: Load switches unpredictably, doesn’t correlate with control signals.

Typical causes:

  1. Electrical noise coupling: EMI from load switching couples into control wiring
  2. Ground loops: Improper grounding creates voltage differentials
  3. Inductive kickback: Motor or solenoid loads generate voltage spikes

Fixes:

  • Use shielded cable for SSR control wiring, ground shield at one end only
  • Add RC snubber network across inductive loads (0.1μF + 100Ω in series)
  • Separate control and power wiring, maintain 6″ minimum spacing
  • Ensure Arduino and SSR share common ground reference

SSR vs Mechanical Relay Comparison

Understanding when to use SSRs versus mechanical relays optimizes system design.

CharacteristicSolid State RelayMechanical Relay
Switching SpeedVery fast (1-10ms)Moderate (5-15ms)
Switching CyclesUnlimited (billions)Limited (100k-10M)
Contact BounceNonePresent (requires debounce)
Electrical NoiseMinimal (zero-cross)Significant (arcing)
Voltage Drop1-2V<0.1V (contact resistance)
Power EfficiencyLower (heat dissipation)Higher (minimal loss)
HeatsinkingRequired for >10ANever required
CostHigherLower
Audible NoiseSilentClicking sound
Failure ModeShort circuit (common)Contacts weld or burn
Inductive Load HandlingExcellentRequires arc suppression

Choose SSR when:

  • High switching frequency required (>1Hz)
  • Silent operation essential
  • Vibration or shock present
  • Inductive loads need clean switching
  • Long operational life critical

Choose mechanical relay when:

  • Cost is primary concern
  • Voltage drop unacceptable
  • Very high currents (>100A)
  • Switching speed non-critical
  • Heat dissipation problematic

Practical Applications

Automated Greenhouse Heater Control

// Greenhouse temperature and humidity control

#include <DHT.h>

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

const int heaterSSR = 7;

const int fanSSR = 8;

const float targetTemp = 22.0;

void loop() {

  float temp = dht.readTemperature();

  if (temp < targetTemp – 1.0) {

    digitalWrite(heaterSSR, HIGH);  // Heater ON

    digitalWrite(fanSSR, LOW);       // Fan OFF

  } else if (temp > targetTemp + 1.0) {

    digitalWrite(heaterSSR, LOW);    // Heater OFF

    digitalWrite(fanSSR, HIGH);      // Fan ON

  }

  delay(5000);

}

Industrial Pump Control with Level Sensing

// Water tank level control with SSR pump

const int levelSensorLow = 3;

const int levelSensorHigh = 4;

const int pumpSSR = 7;

void loop() {

  bool lowLevel = digitalRead(levelSensorLow);

  bool highLevel = digitalRead(levelSensorHigh);

  if (!lowLevel) {

    // Water below low sensor – pump ON

    digitalWrite(pumpSSR, HIGH);

  } else if (highLevel) {

    // Water above high sensor – pump OFF

    digitalWrite(pumpSSR, LOW);

  }

  // Between sensors – maintain current state

  delay(500);

}

Useful Resources and Downloads

Official Documentation

Design Tools

Arduino Libraries and Code

Component Sources

Safety Standards

  • IEC 60947-4-3 – International standard for AC semiconductor controllers and contactors
  • UL 508 – Industrial control equipment safety certification

Frequently Asked Questions

Q: Can I control multiple high-power loads with one Arduino using SSRs?

Yes, Arduino can control multiple SSRs simultaneously. Each SSR requires only one digital output pin and draws 5-25mA control current. Arduino UNO can safely drive 10+ SSRs with proper current budgeting. For very high SSR counts, consider using shift registers (74HC595) or I/O expanders to conserve pins while each SSR still operates independently.

Q: Why does my LED light flicker when controlled by an SSR?

LED lights often flicker with standard zero-crossing SSRs because LEDs turn off completely during each AC zero-crossing transition. This creates visible 100Hz or 120Hz flicker (2× mains frequency). Solutions: Use random turn-on SSRs instead of zero-crossing types, or switch to DC power with DC SSRs for LED loads. Another option is installing film capacitors across the LED driver to maintain voltage during zero-crossings.

Q: Can I use PWM from Arduino to dim lights through an SSR?

No, standard Arduino PWM (490Hz-980Hz) doesn’t work with AC SSRs. Zero-crossing SSRs can only complete switching at AC zero points (100-120 times per second maximum), far slower than Arduino’s PWM frequency. For dimming, either implement time-proportional control (slow on/off cycling over seconds) or use specialized phase-angle SSRs with analog control inputs that accept 0-10V or 4-20mA signals for true dimming capability.

Q: What’s the difference between a SSR module and a bare SSR component?

SSR modules include the relay component plus protection circuitry, LED indicators, screw terminals, and sometimes heatsinks on a PCB. These plug-and-play modules are ideal for prototyping and Arduino projects. Bare SSR components (like Crydom hockey-puck style) require you to design PCB circuitry, add protection networks, and handle high-voltage connections directly. Modules cost more but save significant development time and reduce wiring errors.

Q: How do I know if my SSR has failed, and what’s the typical failure mode?

SSR failure typically manifests as either stuck-on (short circuit) or stuck-off (open circuit). Stuck-on is more common and dangerous—the load remains energized regardless of control signals due to failed TRIAC or MOSFET. Test with multimeter: measure load-side resistance with power removed. Should read infinite ohms (open) when SSR unpowered. If resistance is low (<100Ω), SSR has failed short. Also check for visible thermal damage, burnt components, or cracked package. Always install fuses rated 1.5× load current to protect against catastrophic SSR failure.

Conclusion

Solid state relay Arduino integration brings industrial-grade control capability to microcontroller projects. The elimination of mechanical parts translates to silent operation, unlimited switching cycles, and immunity to vibration—advantages that become apparent immediately in real-world applications.

From a PCB engineering perspective, SSRs represent mature, proven technology. The optical isolation provides robust protection between your delicate 5V logic and potentially lethal mains voltages. The semiconductor switching elements deliver clean, bounce-free transitions that mechanical contacts simply cannot match.

Understanding thermal management is critical for reliable operation. SSRs dissipate power proportional to load current—1.5V drop at 40A equals 60W of heat that must be removed. Proper heatsinking isn’t optional for high-current applications; it’s essential for preventing thermal shutdown and extending operational life.

The key to successful implementation lies in respecting electrical ratings, providing adequate cooling, and implementing proper wiring practices. Zero-crossing SSRs minimize EMI generation for most resistive loads, while random turn-on types serve specialized applications requiring instant switching. Choose the correct type for your load characteristics.

For Arduino makers transitioning from hobby projects to semi-professional or industrial applications, mastering SSR integration represents a significant capability upgrade. The ability to safely control kilowatt-scale loads opens possibilities for home automation, greenhouse control, industrial process automation, and countless other applications where reliable high-power switching is essential.

Leave a Reply

Your email address will not be published. Required fields are marked *

Contact Sales & After-Sales Service

Contact & Quotation

  • Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.

  • Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.

Drag & Drop Files, Choose Files to Upload You can upload up to 3 files.

Notes:
For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.