Skip to content
MPINO-8A4R-SU industrial Arduino controller — front view

MPINO Series

MPINO-8A4R-SU

MPINO-8A4R-SU Industrial Arduino Controller

I/O at a glance
8 DI / 4 Relay / 4 AI / 2 NTC / RS-485 / I²C

MPINO-8A4R-SU is an ATmega128-AU-based industrial Arduino-compatible PLC controller with 8 isolated digital inputs and 4 relay outputs. Onboard RS-485, I²C with Modbus RTU, programmable in the Arduino IDE. DIN-rail mountable for automation, testing, HMI integration and embedded control.

$75.00 In stock
Options
Analog input range A0
Analog input range A1
Analog input range A2
Analog input range A3
TOP CASE
Total$75.00
Shipping

International shipping (EMS · DHL · UPS) — calculated at checkout by destination & weight

Dispatch

Ships the next business day (regardless of order time)

Large orders may take 1 extra day to dispatch

Returns & Exchange

Cancel before dispatch · request a return/exchange after delivery

Overview

/ OVERVIEW

MPINO-8A4R-SU is an ATmega128-AU-based industrial Arduino-compatible PLC controller with 8 isolated digital inputs and 4 relay outputs. Onboard RS-485, I²C with Modbus RTU, programmable in the Arduino IDE. DIN-rail mountable for automation, testing, HMI integration and embedded control.

Key features

  • ATmega128-AU core, programmable in the Arduino IDE (MegaCore)
  • 8 opto-isolated digital inputs (NPN/PNP, up to 40 V tolerant)
  • 4 relay outputs for AC/DC dry-contact switching
  • 4 analog inputs (0–5 V / 4–20 mA / 0–10 V ranges)
  • 2 NTC temperature inputs (−40 to +120 °C)
  • Industrial communication: RS-485, I²C · Modbus RTU
  • DIN-rail 35 mm mountable, isolated field I/O for the factory floor

Specifications

/ SPEC
MCUATmega128-AU
Power inputDC 24V only
Digital inputs8
Relay outputs4
Analog inputs4
Temperature sensor inputs2
High-speed pulse inputs4
High-speed pulse outputs6
RS-4851ch
I²C1ch
Modbus RTUYes
LS CnetYes
Mitsubishi MCYes
Arduino IDE compatibleYes

Field wiring, COM grouping, and the full Arduino pin map for the MPINO-8A4R-SU are documented in the user manual (download below). Digital inputs are opto-isolated and accept NPN or PNP sensors depending on COM wiring; outputs and analog ranges follow the terminal layout in the manual.

Software

Arduino IDE / MPINO Studio

Editing an MPINO sketch in the Arduino IDE, with the serial monitor showing the board runningMPINO Studio 2 with the explorer, the code editor and the ladder diagram side by side in one window

Arduino IDE compatible

Works with the Arduino toolchain you already use

MPINO Studio included

Arduino code and ladder logic in one tool

Arduino + ladder logic

Build control logic faster with familiar ladder rungs

Digital input

8 isolated digital input channels

Eight digital input channels read external switches and sensors reliably, straight from the terminal block.

  • D0–D7 inputs

    Eight digital input points in total

  • COM0 / COM1 commons

    Two independent input groups

  • Optocoupler isolation

    Control circuit protected from field noise

  • NPN / PNP sensors

    Works with either sensor wiring convention

Input channel layout

D0D1D2D3+COM0D0~D3 / COM04P · 1COMD4D5D6D7+COM1D4~D7 / COM14P · 1COM

* Example wiring for external switches or sensors (NPN/PNP shared)

Optocoupler isolation

DxCOMx

The digital inputs use a bidirectional optocoupler stage (anti-parallel LEDs), so either NPN or PNP signals are read reliably, with all 8 channels referenced to COM0 / COM1.

Relay output

4 relay output channels (1a1c)

4 relay output channels switch and control external loads reliably.

  • D32–D35 outputs

    4 relay contact output points

  • 4 × 1a1c relays

    Each output is an independent relay contact

  • 1 output per COM

    Each output has its own COM terminal

  • Electrical isolation

    Control and output sides separated by the relay

Output channel layout

D32+COM2D33+COM3D34ACCOM4D35ACCOM5D32~D354P · 1P/1COM

* Example wiring for external loads (relay contact output)

Relay output structure

Control (MCU)Output

Each relay output is a 1a1c relay that mechanically separates the control side from the output side, and each output has its own dedicated COM terminal. Being a volt-free contact, it switches both AC and DC loads.

Analog inputAnalog Input

4 analog input channels, current or voltage selected per channel by jumper

A0–A3 come out on a 5-pole screw terminal block on the board's left edge, reading GND, A(3), A(2), A(1), A(0) from the top. Every channel ships as a 0–20 mA current input; pull that channel's jumper on the SELECT header and it becomes a DC 0–5 V voltage input. DC 0–10 V can be selected as an option when ordering.

  • A0–A3 · 4 channels

    Four 10-bit (0–1023) analog input points

  • 020 mA by default

    Jumper fitted at the factory · 250 Ω input

  • Jumper off → DC 05 V

    Selected independently per channel · 100 MΩ

  • External reference

    5 V on the VREF pin via analogReference(EXTERNAL)

Analog input terminals

A0–A3 / GND4CH · 10BITBoard interiorGNDA(3)A(2)A(1)A(0)Input circuit → ADCSELECT 0~20mAA0250ΩA1250ΩA2250ΩA3250ΩJumper fitted = 250 Ω shunt
Analog input A0–A3SELECT range jumperGND (shared)

* A 5-pole screw terminal block on the board's left edge, in the order GND · A(3) · A(2) · A(1) · A(0) from the TOP — note that GND is the topmost terminal and A(0) the lowest. One GND is shared by all four channels. The range is set on the SELECT header at board centre, one jumper per channel, all four fitted as shipped.

Input range options

Input rangeHow it is setInput resistance
0–20 mA / 4–20 mAJumper fitted (factory default)250 Ω ±1%
DC 0–5 VJumper removed100 MΩ
DC 0–10 VOption at order time200 kΩ

All four channels are 10-bit (0–1023); a 4–20 mA input reads 0–818. The reference is the 5 V on the VREF pin, so analogReference(EXTERNAL) must be called. On USB power alone the reference becomes the USB 5 V and readings wander — use the DC 24 V supply for accurate measurement.

Temperature inputNTC Temperature

2 NTC temperature channels on their own connectors

A(4) and A(5) each take an NTC 3950 10 kΩ thermistor and read −40 to 120 °C in 0.1 °C steps. They sit on two separate connectors at the board's upper right, apart from the analog input terminals, and have no polarity — the two leads are interchangeable.

  • A(4) · A(5)

    Two temperature channels on A4 (D49) / A5 (D50)

  • NTC 3950 10

    10 kΩ at 25 °C, B constant 3950 K

  • 40 to 120 °C

    0.1 °C resolution (over 0–40 °C)

  • Own 2-pin connectors

    Separate from the analog terminals · no polarity

NTC temperature connectors

NTC 3950 10kΩA(4)A4 (D49)NTC 3950 10kΩA(5)A5 (D50)

* Two 2-pin connectors at the board's upper right, silkscreened A(4) and A(5) under a shared NTC-TEMP legend — 2 pins per channel. The NTC input has no polarity, so the two leads are interchangeable.

Temperature sensor specs

SensorNTC 3950 K · 10 kΩ at 25 °C
ChannelsA(4) = A4 (D49) · A(5) = A5 (D50)
Measuring range−40 to 120 °C
Resolution0.1 °C (over 0–40 °C)
Connector2-pin × 2, at the board's upper right · no polarity
ReadingntcRead() returns tenths of a degree (251 → 25.1 °C)

A4 / A5 share the ADC with the analog inputs, so analogReference(EXTERNAL) must be called for the temperature channels too. ntcRead() returns INT16_MIN when the sensor reads faulty — treat that value as an error rather than a temperature.

High-speed pulse outputPWM Output

6 PWM output points on two 4-pin headers, driven by two timers

D21, D22, D23 (Timer3) and D26, D27, D28 (Timer1) come out on two 4-pin headers — three outputs plus a GND on each. The output swings LOW DC 0 V to HIGH DC 5 V at up to 30 mA per point, and analogWrite() takes a duty of 0–255 that extends to 0–65535 once the timer registers are changed.

  • 6 PWM points

    Two 4-pin headers · three outputs + GND on each

  • Two timer groups

    D21–D23 = Timer3 · D26–D28 = Timer1

  • 8-bit → 16-bit duty

    0–255 by default, 0–65535 after the register change

  • DC 5 V · 30 mA

    LOW 0 V / HIGH 5 V · up to 30 mA per point

Pulse output headers and duty

Timer1262728GNDTimer3212223GNDOutput waveform by duty value (analogWrite)25%50%75%5V0V
Timer1 · D26–D28Timer3 · D21–D23GND

* Two 4-pin headers on the board's right edge. The upper one is silkscreened PWM over 26 · 27 · 28 · GND, the lower one 21 · 22 · 23 · GND, and each header carries its own GND pin. The two headers are driven by different timers, so the timer a pin belongs to decides which pins can change together.

Timer assignment per pin

PinTimer channelNote
D21Timer3 A
D22Timer3 BShares its pin with INT4
D23Timer3 CShares its pin with INT5
D26Timer1 ASame physical pin as D13
D27Timer1 BSame physical pin as D14
D28Timer1 CSame physical pin as D15

The output is LOW DC 0 V / HIGH DC 5 V at up to 30 mA. Duty is set with analogWrite(pin, value) over 0–255; for 16-bit duty, set TCCR3A=0xAA; TCCR3B=0x1A; ICR3=65535; in setup() for D21–D23, or TCCR1A=0xAA; TCCR1B=0x1A; ICR1=65535; for D26–D28.

Before you wire it

  • D26, D27 and D28 are the same physical pins as D13, D14 and D15 (PB5–PB7). Use the D26–D28 numbers for PWM and the D13–D15 numbers for plain GPIO, and never drive one pin under both numbers at once.
  • D12 is not a PWM pin — Timer0 owns it for millis() and delay().
  • D22 and D23 are also external interrupts INT4 and INT5. Each of those pins does one job or the other, not both.
  • Writing Timer1 or Timer3 registers directly affects every PWM pin that timer drives, not just the one you are changing.

External interruptInterrupt

Count high-speed pulses and read a rotary encoder from the interrupt inputs

CLK (D24), DIO (D25), SCL (D18) and SDA (D19) are the four interrupt inputs, and each of them carries a built-in 10 kΩ pull-up. attachInterrupt() catches the edge, so the same inputs count high-speed pulses or read a rotary encoder's rotation and direction, at up to 50 kHz. Two pins on the pulse output header, D22 and D23, can serve as interrupts as well.

  • 4 interrupt inputs

    CLK (D24) · DIO (D25) · SCL (D18) · SDA (D19)

  • High-speed pulse counting

    Counted in the ISR · inputs up to 50 kHz

  • Rotary encoder input

    A CLK edge samples DIO to get the direction

  • 10 kΩ pull-ups built in

    On all four inputs · DC 0–5 V · HIGH recognised from 3 V

  • Two more: D22 and D23

    These two are pins on the pulse output header (21 · 22 · 23 · GND) and can be used as interrupts as well. They have no pull-up or pull-down of their own, so add an external one if the signal needs it — and while a pin is used as an interrupt it cannot output PWM.

Interrupt pin mapping

PinINTShared with
D18INT0I²C SCL
D19INT1I²C SDA
D24INT6CLK · FND / encoder
D25INT7DIO · FND / encoder

Input is DC 0–5 V, with HIGH recognised from 3 V, and up to 50 kHz. All four inputs above carry built-in 10 kΩ pull-ups, and while one is used as an interrupt the function sharing that pin (I²C, FND) cannot be used. INT2 and INT3 are taken by RS-485 (Serial1) and are not brought out. The frequency actually handled depends on the length of the ISR and the load of the whole program, so it is not guaranteed as a fixed figure.

What the interrupts are for

High-speed pulse counting+5VGNDCLKGND10kΩ → VCCRising edge → count++ in the ISRRotary encoderCLKDIOCLK edge samples DIO → direction

Example sketch — pulse counting

volatile unsigned int count = 0;

void setup() {
  Serial.begin(9600);
  attachInterrupt(digitalPinToInterrupt(CLK), countFunc, RISING);
}

void loop() {
  noInterrupts();
  unsigned int snapshot = count;
  interrupts();
  Serial.println(snapshot);
}

void countFunc() { count++; }

Example sketch — rotary encoder

volatile long encoderValue = 0;

void setup() {
  Serial.begin(115200);
  attachInterrupt(digitalPinToInterrupt(CLK), updateEncoder, RISING);
}

void loop() {
  Serial.print("Encoder Value: ");
  Serial.println(encoderValue);
  delay(500);
}

void updateEncoder() {
  if (digitalRead(DIO)) { encoderValue++; }
  else { encoderValue--; }
}

* On the left the pulse source's output goes to the CLK terminal and its ground to GND, and every rising edge adds one in the interrupt service routine. On the right the encoder's two phases sit 90° apart, so the level of DIO at a rising CLK edge is the direction of rotation.

Interrupt connectors

FND/ENCO/INT+5VGNDDIOD25CLKD24I2C/ENCO/INTGND+5VSDAD19SCLD18

* Two 4-pin connectors on the board's right edge, drawn in the order the pins are silkscreened. CLK is D24 (INT6), DIO is D25 (INT7), SCL is D18 (INT0) and SDA is D19 (INT1), and all four carry the built-in 10 kΩ pull-ups. The FND (7-segment) accessory and I²C use the same pins, so they cannot be used while those pins serve as interrupts.

Before you wire it

  • The interrupt inputs accept DC 0–5 V only. Connecting a 24 V signal directly will destroy the MCU.
  • Using D24 and D25 as interrupts means the FND (7-segment) accessory on the same connector cannot be used at the same time.
  • Using D18 and D19 as interrupts means I²C cannot be used at the same time.
  • D22 and D23 have no built-in pull-up or pull-down. Add an external pull-up where the signal needs one, and remember that a pin used as an interrupt cannot output PWM at the same time.
  • Inside the ISR, only increment the count — do not call Serial, delay() or floating-point maths.
  • On this board the high-speed counter is the attachInterrupt() ISR method, not a timer external-clock counter.

CommunicationRS-485 · I²C

RS-485, I²C and a USB serial port

RS-485 runs on a MAX13487EESA+ AutoDirection transceiver, so there is no direction-control pin to handle in code — call Serial1.begin() and transmit. Modbus RTU works as either master or slave. I²C brings its own 10 kΩ pull-ups for a DS3231 RTC or a character LCD, and the USB port handles upload and debugging.

  • RS-485 · 1 channel

    MAX13487 AutoDirection · no direction pin in code

  • Modbus RTU

    Works as master or slave

  • I²C · 1 channel

    10 kΩ pull-ups built in · RTC, character LCD

  • USB serial

    Upload and debug over the USB port

RS-485 two-wire bus

MAX13487 AutoDirection485+485-+5VGNDTwo-wire RS-485 busNode 1Node 2Node 3

* The 4-pole screw block at the board's top edge, right of the digital input terminals, in the order 485+ · 485− · +5V · GND from the left. The schematic ties 485+ to the transceiver's A and 485− to its B. To reach RS-232 or UART instead, use the M-CONV converter (sold separately).

I²C · USB connectors

I²CGND+5VSDASCLUSBUPLOAD

* The I²C connector is silkscreened I2C/ENCO/INT — it doubles as an interrupt and encoder input — and reads GND · +5V · SDA · SCL. The upload port is the mini USB-B connector silkscreened UPLOAD at the board's upper left.

Communication ports

PortPinsUse
SerialD16 · D17USB upload and debug (9600 bps in the examples)
Serial1PD2 · PD3 (not brought out)RS-485 on the 485+ / 485− terminals
Wire (I²C)SCL = D18 · SDA = D194-pin connector · 10 kΩ pull-ups built in

The RS-485 driver is a MAX13487EESA+ with automatic direction control, so you transmit straight after Serial1.begin() with no direction handling. Modbus RTU works as either master or slave. I²C supports 1:N connections and takes accessories such as the DS3231 RTC and 1602 / 2004 character LCDs.

Before you wire it

  • No 120 Ω RS-485 termination resistor is fitted on the board.
  • The +5V pole of the RS-485 block is a supply OUTPUT rated 0.5 A or less; a +5 V battery can be connected there to ride through a power failure.
  • Using D18 and D19 as external interrupts means I²C cannot be used at the same time.
  • Uploading requires the MP download cable, which has the USB-TTL converter built in. An off-the-shelf mini 5P cable cannot upload.
  • Serial1 (PD2 · PD3) is reserved for RS-485 and is not brought out to any connector.

Downloads

/ FILES

FAQ

How many I/O points does the MPINO-8A4R-SU have?

The MPINO-8A4R-SU provides 8 isolated digital inputs and 4 relay outputs, with onboard RS-485, I²C communication. See the specification table for the full breakdown.

Does the MPINO-8A4R-SU support Modbus RTU?

Yes. The MPINO-8A4R-SU supports Modbus RTU — master and slave alike — over its serial interface.

Related controllers

/ RELATED