ESH10000589 - 4 DPDT Relay Module
Overview
The ESH10000589 is a relay switching module providing 4 double-pole double-throw (DPDT) relays with LED status indication and adjustable luminance control.
Description
The 4 DPDT Relay Module offers four high-quality DPDT relays suitable for signal routing, switching, and isolation applications. Each relay features break-before-make operation and integrated LED status indication.
Key Features:
4 DPDT Relays: Double-pole double-throw configuration
- Break-before-make switching
- Suitable for signal and low-power switching
- Individual relay control
- LED status indication per relay
LED Control: Configurable status LEDs
- Adjustable luminance (0.0 to 1.0)
- Per-relay status indication
- RGB LED driver
Hardware Details
Relay Control:
- Chip: NXP PI4IOE5V6416 GPIO expander
- I²C Address: 0x20
- Control: Digital signals for relay coil drive
- Relay Type: DPDT (2 Form C)
LED Driver:
- Chip: TI LP5024 RGB LED driver
- I²C Address: 0x28
- Channels: 24 (8 RGB LEDs)
- LED Control: PWM-based intensity control
Channel Naming Convention
All channels follow the naming pattern: {ModuleIndex}.ESH10000589.{ChannelName}
Example: Module at position 0, relay 0 would be: 0.ESH10000589.RELAY0
User-Accessible Channels
| Channel Name | Type | Direction | Usage | Description |
|---|---|---|---|---|
| RELAY0 | Digital | OUT | UserAllocatable | Relay 0 control (false=open, true=closed) |
| RELAY1 | Digital | OUT | UserAllocatable | Relay 1 control (false=open, true=closed) |
| RELAY2 | Digital | OUT | UserAllocatable | Relay 2 control (false=open, true=closed) |
| RELAY3 | Digital | OUT | UserAllocatable | Relay 3 control (false=open, true=closed) |
| LUMINANCE | Ratiometric | OUT | UserAllocatable | LED intensity control (0.0-1.0) |
Total User Channels: 5 (4 relays + 1 luminance control)
Channel Configuration
Relay Control
Each relay channel accepts boolean values:
- false: Relay open (de-energized, NC contacts closed)
- true: Relay closed (energized, NO contacts closed)
Luminance Control
Luminance channel accepts values 0.0 to 1.0:
- 0.0: LEDs off
- 1.0: Maximum brightness
Programming Interface
Set Relay State:
SetValues(
new[] { "0.ESH10000589.RELAY0", "0.ESH10000589.RELAY1" },
new[] { "true", "false" } // Close RELAY0, open RELAY1
);
Adjust LED Brightness:
SetValues(
new[] { "0.ESH10000589.LUMINANCE" },
new[] { "0.5" } // 50% brightness
);
Read Relay State:
string[] states = GetValues(new[] {
"0.ESH10000589.RELAY0",
"0.ESH10000589.RELAY1"
});
// states[0] = "true" or "false"
Relay Switching Sequence
The module uses a 3-phase switching sequence to ensure break-before-make:
- Make Phase: Energize relay coils (30ms)
- Idle Phase: De-energize coils to minimize power consumption
This sequence occurs automatically on SetValues() or Update().
Best Practices
- Batch relay operations: Use SetValues with multiple relays for synchronized switching
- Allow settling time: Wait 30-50ms after switching before measuring signals
- Minimize switching frequency: Relays have limited cycle life (typically 100k-1M operations)
- Set appropriate luminance: Reduce LED brightness to minimize power consumption
- Verify relay state after power-on: Relays default to open (de-energized) state
Module Initialization Sequence
On Reset(), the module performs:
- Clear existing channel list
- Create LED luminance control channel (default: 1.0)
- Create relay device with GPIO expander and LED driver
- Add 4 relay channels (RELAY0-RELAY3)
- Reset hardware (all relays open)
- Initialize LED driver