The FZ0430 is a resistive voltage divider module that scales DC voltages up to 25 V down to the 0–5 V range readable by an Arduino analog input. Connecting one to an Arduino-based PLC gives you direct voltage monitoring with no additional signal conditioning — useful anywhere you need to track DC bus voltage, battery state, or panel output without breaking the circuit.
This post covers the module specifications, wiring to an M-Duino PLC, and a working Arduino sketch that converts the raw ADC reading to the actual measured voltage.
FZ0430 specifications
| Parameter | Value |
|---|---|
| Input voltage range | 0–25 V DC |
| Output voltage range | 0–5 V |
| Voltage divider ratio | 5:1 (R1 = 30 kΩ, R2 = 7.5 kΩ) |
| Supply voltage | 3.3–5 V |
| Interface | Analog output (SIG pin) |
The module applies a fixed voltage divider: Vout = Vin × R2 / (R1 + R2) = Vin / 5. Reversing this in the sketch gives the actual input voltage: Vin = Vout × 5.
Requirements
- Arduino-based PLC with analog inputs (M-Duino 21+, 42+, 58+, or Ardbox Analog)
- FZ0430 voltage sensor module
- Arduino IDE with the Industrial Shields board library installed
- DC voltage source to measure (battery, bus, panel output — max 25 V)
No additional libraries required.
Wiring
The FZ0430 has two sets of connections: signal pins (VCC, GND, SIG) for the Arduino side, and screw terminals (VIN+, VIN−) for the voltage being measured.
| FZ0430 pin | M-Duino connection |
|---|---|
| VCC | 5 V pin |
| GND | GND |
| SIG | I0.12 (analog input, pin A0) |
| VIN+ | Positive of the voltage source |
| VIN− | GND / negative of the voltage source |
Do not exceed 25 V on the VIN+ terminal. The VIN− terminal must share the same ground reference as the M-Duino.
Arduino sketch
The sketch reads the SIG output, converts it to voltage, then applies the divider ratio to recover the actual input voltage. Adjust DIV_RATIO if you calibrate against a reference meter.
// FZ0430 voltage sensor — Arduino-based PLC
// Reads DC voltage up to 25 V on M-Duino analog input
#define SENSOR_PIN A0 // I0.12 on M-Duino
#define DIV_RATIO 5.0 // FZ0430 divides input voltage by 5
#define NUM_SAMPLES 50 // Samples to average per reading
void setup() {
Serial.begin(9600);
}
void loop() {
long sum = 0;
for (int i = 0; i < NUM_SAMPLES; i++) {
sum += analogRead(SENSOR_PIN);
delay(2);
}
float avgADC = sum / (float)NUM_SAMPLES;
// M-Duino 0–10 V input: full ADC range (0–1023) = 10 V
float vout = (avgADC / 1023.0) * 10.0;
// Recover actual input voltage using the divider ratio
float vin = vout * DIV_RATIO;
Serial.print("Vout: ");
Serial.print(vout, 3);
Serial.print(" V | Vin: ");
Serial.print(vin, 3);
Serial.println(" V");
delay(500);
}The FZ0430 outputs 0–5 V for a 0–25 V input. On the M-Duino 0–10 V analog input, this uses roughly half the ADC range (ADC ≈ 512 at Vin = 25 V). For tighter resolution on a known voltage range, add a software calibration factor against a reference meter.
Industrial use cases
DC voltage monitoring with the FZ0430 applies to a range of field instrumentation tasks:
- Battery state monitoring — track 12 V or 24 V battery voltage on UPS and backup systems
- DC bus monitoring — watch inverter and drive DC bus voltage for out-of-range conditions
- Solar panel output — measure open-circuit and operating voltage per string
- Generator output verification — confirm DC output is within spec before connecting to load
- Power supply health — log voltage drift over time as an early indicator of PSU degradation
For AC voltage measurement, a dedicated AC voltage transducer with 4–20 mA output is the appropriate choice. The FZ0430 is DC only.
Running this on Industrial Shields hardware
The M-Duino and Ardbox families from Industrial Shields are programmable controllers built on original Arduino boards — the same hardware and IDE you are already using. M-Duino PLCs (21+, 42+, 58+) are DIN-rail mounted controllers based on the Arduino Mega, with industrial-grade I/O protection, 12–24 VDC power input, and relay, analog, and digital I/Os ready for panel installation. The Ardbox series brings the same industrial hardening to a more compact form factor based on the Arduino Leonardo.
Both families run standard Arduino sketches without modification. The FZ0430 example above works as-is — wire the module to the analog input, upload via the Arduino IDE, and the PLC reads and reports voltage inside an IP20-rated enclosure ready for industrial cabinet installation.

