Skip to content
MPINO-16A16R industrial Arduino controller — front view

MPINO Series

MPINO-16A16R

MPINO-16A16R Industrial Arduino Controller

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

MPINO-16A16R is an ATmega128-AU-based industrial Arduino-compatible PLC controller with 16 isolated digital inputs and 16 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.

$104.50 In stock
Options
TOP CASE
Add-on products
Add related items you may need (optional)
MP Download Cable — product photo 1
MP Download Cable
MP Download Cable (USB-TTL converter built in)
$12.00
Super capacitor DDL 5.5V 1F — a radial supercapacitor with two leads, for the +5V terminal
Super Capacitor DDL 5.5V 1F
Super Capacitor DDL 5.5V 1F (power-fail retention)
$4.40
Total$104.50

Shipping

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

Shipping weight 350 g (per unit)

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

Key features

/ FEATURES
  • ATmega128-AU core, programmable in the Arduino IDE and MPINO STUDIO2
  • 16 opto-isolated digital inputs (NPN/PNP, up to 40 V tolerant)
  • 16 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 12V – 24V
Digital inputs16
Relay outputs16
Analog inputs4
Temperature sensor inputs2
High-speed pulse inputs4
High-speed pulse outputs3
RS-4851ch
I²C1ch
Modbus RTUYes
LS CnetYes
Mitsubishi MCYes
Arduino IDE compatibleYes

Software

Arduino IDE / MPINO Studio 2

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 STUDIO2 included

Arduino code and ladder logic in one tool

Arduino + ladder logic

Build control logic faster with familiar ladder rungs

Setting up the toolchain

Installing the ARDUINO SDK adds this product's board definition to the Arduino IDE and makes the functions that earn their keep in industrial work available as built-in commands. There is no library to add — the Arduino IDE offers them with autocompletion as you type.

Built-in commands the SDK unlocks

  • PLC timers · callback timersIton · Itof · Itpl · Itmr · ItimerSet
  • CountersIctu · Ictd · Ictud · IgetCount
  • Scaling · PID controlIscale · Iscalef · IpidSet · IpidRun
  • First-in and last-in buffersFIFO · FILO
  • Input debounce · edge detectionIbounce · IdigitalRead · Iup · Idown · Ialt
  • Debug · watchdogdebug · debugln · WDT_ENABLE · WDT
  • Modbus RTU · LS Cnet · Mitsubishi MCImodbusRTU · ICnet · IMcProtocol
  • Analog input · 4–20 mA correctionanalogRead2 · IanalogRead · IanalogFilter · ntcRead
  • PWM · pulse · high-speed counterPWM · FDPWM · NPWM · TCNTSETUP · TCNTOUT

Using the Arduino IDE requires the ARDUINO SDK (the ILOGICS board package) to be installed. MPINO STUDIO2 can be used without installing it.

Download CableMP DOWNLOAD CABLE

Programming this board needs the dedicated download cable

The upload port on this board is a mini 5P USB socket, but the USB-to-serial conversion lives in the CABLE, not on the board. Plug in an off-the-shelf mini 5P USB cable and the PC never enumerates a port, so nothing uploads. The MP download cable is one we build ourselves — buy one and keep using it.

  • USB-TTL converter inside

    The conversion IC sits in the connector housing

  • Generic mini 5P cannot be used

    An ordinary cable enumerates no port and cannot upload

  • USB-A to mini 5P

    Connects the PC's USB port to the board's upload port.

  • Made by ILOGICS

    A dedicated cable for use with ILOGICS products.

What the cable is

USB-TTL converter insideUSB-TTLCable length 1 mUSB-A · PCmini 5P · board upload port

* Having the conversion IC inside the housing is what sets this apart from an ordinary cable. Board end is mini 5P, PC end is USB-A, and the cable is 1 m long.

Sold separately — order it with the board under Add-on products.

Cable specification

ItemDetail
PC endUSB-A plug
ConversionUSB-TTL converter inside the cable
Board endUSB mini 5P plug
Length1 m
DriverFTDI

Installing the driver

  1. Connect the MP download cable between the PC's USB port and the board's upload port.
  2. Open Device Manager and check whether USB Serial Port (COMx) appears under Ports (COM & LPT).
  3. If it does not appear, install the FTDI driver from the resources section and reconnect the cable.
  4. In your development tool, select the same COM number Device Manager shows, then upload.

Digital input

16 isolated digital input channels

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

  • D0–D15 inputs

    Sixteen 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

D0D1D2D3D4D5D6D7+COM0D0~D7 / COM08P · 1COMD8D9D10D11D12D13D14D15+COM1D8~D15 / COM18P · 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 16 channels referenced to COM0 / COM1.

Example sketch — reading an input
void setup() {
  for (int k = 32; k <= 47; k++) pinMode(k, OUTPUT);
}

void loop() {
  for (int k = 0; k < 16; k++) {
    digitalWrite(32 + k, digitalRead(k) ? HIGH : LOW);
  }
}

Relay output

16 relay output channels (1a1c)

16 relay output channels control external loads running on AC or DC, reliably.

  • D32–D47 outputs

    16 relay contact output points

  • 16 × 1a1c relays

    Each output is an independent relay contact

  • 4 outputs per COM

    Each COM terminal is shared by 4 outputs

  • Electrical isolation

    Control and output sides separated by the relay

Output channel layout

D32D33D34D35+COM2D36D37D38D39+COM3D40D41D42D43ACCOM4D44D45D46D47ACCOM5D32~D4716P · 4P/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, with 4 outputs sharing one COM terminal. Being a volt-free contact, it switches both AC and DC loads.

Example sketch — driving a relay output
void setup() { pinMode(32, OUTPUT); }
void loop() {
  digitalWrite(32, HIGH); delay(1000);
  digitalWrite(32, LOW);  delay(1000);
}

Analog inputAnalog Input

4 analog input channels, 0(4)–20 mA as shipped, DC 0–5 V with the cap removed

A(0)–A(3) are poles of the terminal block along the top edge, next to AGND. The board ships as a 0(4)–20 mA current input with every position of the SELECT header capped; pull a channel's cap and that channel becomes a DC 0–5 V voltage input. DC 0–10 V is an order option.

  • A(0)–A(3) · 4 channels

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

  • 0(4)–20 mA as shipped

    SELECT header capped · 250 Ω

  • Cap removed → DC 05 V

    Switched per channel · 200 kΩ

  • External reference

    REF3025 2.5 V ±0.2% on AREF

Analog input terminals

A(0)–A(3) / AGND4CH · 10BITA(0)A(1)A(2)A(3)AGNDBoard interiorInput circuit → ADCGNDA(0)A(1)A(2)A(3)Header cap2-pin header
Analog input A(0)–A(3)SELECT range capAGND

* Poles of the terminal block along the top edge, silkscreened ANALOG INPUT, in the order A(0) · A(1) · A(2) · A(3) · AGND. The range is set on the header silkscreened SELECT 0-20mA, whose four positions are legended A0, A1, A2 and A3 — all four are capped as shipped.

Range selection

Input rangeHow it is setInput resistance
0(4)–20 mACap fitted (as shipped)250 Ω
DC 0–5 VCap removed200 kΩ
DC 0–10 VOrder option (resistor removed)400 kΩ

All four channels are 10-bit. The reference is an external REF3025 at 2.5 V ±0.2%. ⚠ In the 4–20 mA range the digital value only reaches about 818, not 1023 — use 818 as the maximum when you scale it.

Example sketch — reading an analog input
unsigned int ADC0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  ADC0 = analogRead(A0);
  // Scale = (in / in_Max) * (Scale_Max - Scale_Min) + Scale_Min
  ADC0 = ((unsigned long)ADC0 * (3000 - 0)) / 1023 + 0;
  Serial.print("Analog: ");
  Serial.println(ADC0);
  delay(500);
}

NTC temperature inputNTC Temperature

2 NTC temperature channels on their own connectors

Put an NTC 3950K 10 kΩ thermistor on A(4) or A(5) and read −40 to 120 °C in tenths of a degree. The two channels sit on their own two-pin connectors under the TEMP legend along the top edge, separate from the analog input block, and the sensor has no polarity.

  • A(4) · A(5)

    Two temperature channels — A4 (D52) / A5 (D53)

  • NTC 3950K 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 (D52)NTC 3950 10kΩA(5)A5 (D53)

* Two 2-pin connectors along the top edge, silkscreened A(4) and A(5) under a shared TEMP legend. One channel per connector; the NTC input has no polarity, so the two leads can go either way round.

Temperature sensor specs

SensorNTC 3950K · 10 kΩ at 25 °C
ChannelsA(4) = A4 (D52) · A(5) = A5 (D53)
Measuring range−40 to 120 °C
Resolution0.1 °C (over 0–40 °C)
Pull-up10 kΩ 1%, built in
Connector2 pins × 2 along the top edge · no polarity

A4 and A5 use the same ADC and the same external 2.5 V reference as the analog inputs. The conversion is the standard Steinhart–Hart equation and returns tenths of a degree — 251 means 25.1 °C.

Example sketch — reading the NTC temperature
unsigned int Temp;

void setup() {
  Serial.begin(9600);
}

void loop() {
  Temp = ntcRead(analogRead(A4));
  Serial.print("Temp: ");
  Serial.print(Temp / 10);
  Serial.print(".");
  Serial.println(Temp % 10);   // 251 means 25.1 C
  delay(500);
}

int ntcRead(unsigned int RawADC) {
  float v = (1023.0F / (float)RawADC) - 1.0F;
  v = 10000.0F / v;
  float s = v / 10000.0F;
  s = log(s);
  s /= 3950.0F;
  s += 1.0F / (25.0F + 273.15F);
  s = 1.0F / s;
  s -= 273.15F;
  return (int)(s * 10);
}

High-speed pulse outputPWM Output

3 PWM points on one header, 8-bit or 16-bit duty

The connector silkscreened PWM brings out three pulse outputs — 21, 22 and 23 — plus GND. Each swings 0 V to 5 V at up to 30 mA, and the duty is 8-bit by default or 16-bit once the timer registers are set. All three run on Timer3, so they share one frequency while their duty stays independent.

  • 3 PWM points

    21 · 22 · 23 on the PWM connector

  • Timer3 · OC3A–OC3C

    One shared frequency, independent duty

  • 8-bit or 16-bit duty

    0–255 by default, 0–65535 with the registers set

  • 0 V / 5 V · 30 mA

    Max 30 mA per point

Pulse output specs

ItemValueNote
Points321 · 22 · 23 on the PWM connector
Output levelLOW DC 0 V / HIGH DC 5 VMax 30 mA per point
Duty resolution8-bit (0–255)Up to 16-bit (0–65535)
Timer321 (OC3A) · 22 (OC3B) · 23 (OC3C)Shared frequency
IsolationNot isolatedReferenced to the board's GND

analogWrite() works on 21, 22 and 23 only — it has no effect on any other pin of this board. Writing the Timer3 registers to reach 16-bit duty affects all three points at once, because they share the timer.

PWM connector and duty

Timer3212223GNDDuty (analogWrite)25%50%75%5V0V
Timer3 (21 · 22 · 23)GND (shared return)

* Drawn as the silkscreen reads: 21 · 22 · 23 · GND. The numbers on the connector are the pin numbers analogWrite() takes, and GND is the return for all three points.

Before you use it

  • All three points and the 16-bit high-speed counter run on Timer3, so PWM output and the 16-bit counter cannot be used at the same time. Count on the interrupt pin instead if you need both.
  • Each point supplies at most 30 mA. Drive anything larger through the relay outputs or an external driver.
  • The outputs are not isolated. They are referenced to the board's own GND, so a load with its own supply needs a common ground.
Example sketch — PWM output
void setup() {}

void loop() {
  // I(0) ON -> 50% duty on PWM 21, OFF -> output stops
  if (digitalRead(0) == 1) analogWrite(21, 127);
  else                     analogWrite(21, 0);
}

Interrupt · high-speed counterInterrupt · Counter

4 interrupt inputs, plus a 16-bit hardware counter clocked from CLK

CLK, DIO, SCL and SDA are four external interrupt inputs. Count edges in an ISR, read a two-phase encoder across CLK and DIO, or let Timer3 count the CLK input in hardware — 16-bit, extended to 32-bit through the overflow interrupt.

  • 4 interrupt inputs

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

  • 16-bit hardware counter

    Timer3 clocked from CLK · 32-bit with the overflow ISR

  • Rotary encoder

    Phase A = CLK, phase B = DIO

  • HIGH from 3 V · 50 kHz and above

    DC 0–5 V input, 50 kHz minimum

Interrupt pin mapping

PinINTShared with
D18INT0I²C SCL · 4.7 kΩ pull-up
D19INT1I²C SDA · 4.7 kΩ pull-up
D24INT6CLK · Timer3 external clock · 100 kΩ pull-down
D25INT7DIO · Timer3 input capture · 100 kΩ pull-down

The input range is DC 0–5 V, HIGH is recognised from 3 V and the input frequency is at least 50 kHz. INT2–INT5 exist on the MCU but RS-485 and the PWM outputs take those pins, so they are not brought out. What frequency a sketch actually keeps up with depends on the length of the ISR and the load of the whole program, so no fixed figure is guaranteed.

What the interrupt inputs are for

Fast pulse counting+5VGNDCLKGNDThe ISR counts on every rising edgeRotary encoderCLKDIORead DIO at a CLK edge for direction

* On the left the pulse source's output goes to CLK and its ground to the GND pole of the same connector, and the ISR counts every rising edge. On the right the two encoder phases are 90° apart, so the level of DIO at a CLK edge is the direction of rotation.

Interrupt connectors

ENC / FND24CLK25DIOGND+5VI2CSCLD18SDAD19+5VGND

* Two 4-pin connectors on the left edge, drawn as the silkscreen reads. On the ENC / FND connector the pin numbers are printed instead of the signal names: 24 is CLK (INT6) and 25 is DIO (INT7), both with a 100 kΩ pull-down. SCL = D18 (INT0) and SDA = D19 (INT1) carry 4.7 kΩ pull-ups. The 7-segment accessory and I²C use the same pins, so they cannot run if these serve as interrupts.

Before you use it

  • The interrupt inputs take DC 0–5 V only. Anything above 5 V destroys the MCU.
  • The 16-bit hardware counter and the PWM outputs 21 / 22 / 23 both need Timer3 and cannot be used at the same time. Count in an ISR on D25 if you need both.
  • An external 4.7 kΩ pull-down on CLK and DIO is recommended for stable operation.
  • If CLK and DIO are used as interrupts, the 7-segment accessory on the same connector cannot be used; the same applies to I²C on SCL and SDA.
  • Inside the ISR, do nothing but increment the count — no Serial, no delay(), no floating-point maths.
Example sketch — pulse counting
volatile unsigned int count = 0;

void setup() {
  Serial.begin(9600);
  // a rising edge on CLK (D24) calls countFunc()
  attachInterrupt(digitalPinToInterrupt(CLK), countFunc, RISING);
}

void loop() {
  Serial.println(count);
  delay(500);
}

void countFunc() {
  count++;
}
Example sketch — rotary encoder
volatile long encoderValue = 0;

void setup() {
  Serial.begin(115200);
  // CLK(24) = phase A, DIO(25) = phase B
  attachInterrupt(digitalPinToInterrupt(CLK), updateEncoder, RISING);
}

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

void updateEncoder() {
  if (digitalRead(DIO)) { encoderValue++; }
  else { encoderValue--; }
}
Example sketch — 32-bit hardware counter
unsigned long HCNT3;
unsigned int _ofcH3;

void setup() {
  // Timer3 external clock on CLK (D24), rising edge
  TIMSK  = 0x01;
  TCCR3A = 0x00;
  TCCR3B = 0x07;
  TCNT3  = 0x00;
  ETIMSK = (1 << TOIE3);   // allow the Timer3 overflow interrupt
}

void loop() {
  // 16-bit counter + overflow count = a 32-bit total
  HCNT3 = ((unsigned long)_ofcH3 << 16) | TCNT3;
}

ISR(TIMER3_OVF_vect) {
  _ofcH3++;
}

CommunicationRS-485 · I²C

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

RS-485 is Serial1, brought out on a screw terminal as 485+, 485− and GND for a 1:N multidrop bus, and Modbus RTU works as either master or slave. The MAX485 transceiver switches direction on its own, so no DE/RE control pin has to be driven. I²C brings its own 4.7 kΩ pull-ups for an RTC, an external EEPROM or a character LCD, and the USB port handles upload and debugging.

  • RS-485 · 1 channel

    Serial1 · 1:N multidrop on the 485+ / 485− terminals

  • Modbus RTU

    Works as master or slave

  • I²C · 1 channel

    4.7 kΩ pull-ups built in · 1:N · RTC, EEPROM, character LCD

  • USB serial

    Upload and debug over the UPLOAD port

I²C · USB connectors

I²CSCLSDA+5VGNDUSBUPLOAD

* The I²C connector is silkscreened I2C and reads SCL · SDA · +5V · GND from the pin-1 end, so an I²C device can take its power from the same connector. The program port is silkscreened UPLOAD.

RS-485 link

MAX485 · Serial1485+485-GNDRS-485 linkNode 1Node 2Node 3

* The 3-pole screw block along the bottom edge, in the order 485+ · 485− · GND. RS-485 is a multidrop bus, so 485+ goes to every node's 485+ and 485− to every node's 485−. Direction is switched by the transceiver itself; no DE/RE control pin has to be driven from the sketch. To reach RS-232 or UART instead, use the converter module sold separately.

Communication ports

PortPinsUse
SerialD31 (TX0) · D30 (RX0)Program upload and debug over the UPLOAD port
Serial1D28 (TX) · D27 (RX)RS-485 on the 485+ / 485− terminals · 1:N
Wire (I²C)SCL = D18 · SDA = D194-pin connector · 4.7 kΩ pull-ups built in

RS-485 is reached as Serial1 and supports 1:N multidrop with a MAX485 transceiver rated ±15 kV HBM and ±8 kV IEC 1000-4-2 contact discharge; Modbus RTU works as either master or slave. I²C also supports 1:N and takes accessories such as an RTC, an external EEPROM and 1602 / 2004 character LCDs. This board has no Serial2 or Serial3.

Before you wire it

  • D27 and D28 belong to Serial1 / RS-485. Never reuse them as interrupts or as general-purpose I/O.
  • Using D18 and D19 as external interrupts or as an encoder input means I²C cannot be used at the same time.
  • SPI is not brought out to any external connector — those pins are the ISP header. Connect an external device over I²C or Serial1 instead.
  • To reach RS-232 or UART, use the separately-sold converter module rather than changing the transceiver in the field.
  • Uploading requires the MP download cable, which has the USB-TTL converter built in. An off-the-shelf mini 5P cable cannot upload.
  • This board has no Serial2 or Serial3 — only Serial and Serial1 exist.
Example sketch — serial send and receive
void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);   // RS-485
}

void loop() {
  while (Serial1.available()) {
    char c = Serial1.read();
    Serial1.write(c);   // echo back onto the bus
    Serial.write(c);    // and to USB for debugging
  }
}

Display connectionLCD · FND

Show status on a character LCD or a 7-segment display — four wires either way

A character LCD goes on the I²C 4-pin connector and a 7-segment (FND) display on the ENC/FND 4-pin connector. Both connectors bring out +5V and GND beside the two signal lines, so the whole run is four wires, and the I²C pull-ups are already on the board.

  • Character LCD 1602 · 2004

    16 × 2 or 20 × 4 characters over I²C

  • 7-segment (FND)

    CLK and DIO on the ENC/FND connector · up to 2

  • 4.7 kΩ pull-ups built in

    No external resistors to add for I²C

  • 1:N on I²C

    Shares the bus with accessories such as the DS3231 RTC

Character LCD on I²C

ILOGICSMPINO-16A16R1602 character LCD (16 × 2)SCLSDA+5VGNDI2C

* The I²C connector is silkscreened I2C and reads SCL · SDA · +5V · GND. SDA is D19 and SCL is D18, both with a 4.7 kΩ pull-up on the board. The 1602 shows 16 characters over 2 lines and the 2004 shows 20 over 4.

7-segment (FND) on ENC/FND

7-segment (FND) display24CLK25DIOGND+5VENC / FND

* The connector is silkscreened ENC / FND and reads 24 · 25 · GND · +5V. CLK is D24 and DIO is D25. On this board the connector is marked with those pin numbers rather than the signal names. One display goes on this connector, and using the PWM connector as well takes the total to 2. The display comes in a decimal-point form and a time-displaying form.

Before you wire it

  • Using D18 and D19 as external interrupts means I²C — and with it the character LCD — cannot be used at the same time.
  • Using D24 and D25 as external interrupts or as an encoder input means the 7-segment (FND) display cannot be used at the same time.
  • The signal pins on both connectors are DC 0–5 V inputs. Applying more than 5 V destroys the MCU.
  • D24 is also Timer3's external clock input, which that timer shares with the PWM connector's 21, 22 and 23. A pole driving a display cannot serve the high-speed counter at the same time.
  • The character LCD and the 7-segment display are accessories sold separately — neither is included with the board.

Displays and their connectors

DisplayConnectorSignals
Character LCD 1602I²C 4-pin16 characters × 2 lines · SDA = D19 · SCL = D18
Character LCD 2004I²C 4-pin20 characters × 4 lines · SDA = D19 · SCL = D18
7-segment (FND)ENC/FND 4-pinCLK = D24 · DIO = D25
I²C pull-upsOn the board4.7 kΩ · 1:N connection supported

Both connectors carry +5V and GND alongside the two signal lines, so a display needs no supply of its own. I²C has its 4.7 kΩ pull-ups fitted on the board and supports 1:N, so a character LCD can share the bus with another I²C accessory such as the DS3231 RTC. Character LCDs and 7-segment displays are sold separately.

Power · Data retentionPower · Backup

DC 12V ~ 24V in, 5 V out — and your data survives the blackout

The controller takes DC 12V ~ 24V and converts it to 5 V internally with a LM2576 regulator. Size the supply for at least 24V 0.5A.

  • DC 12V ~ 24V

    Size the supply for 24V 0.5A or more

  • 5 V internal

    LM2576 DC-DC conversion

  • +5 V out 1A

    From the +5 V pole of the power terminal block

  • Supercapacitor hold-up

    About ten seconds on the +5 V pole

Before wiring the supply

  • EEPROM cells last about 100,000 writes. Keep fast-changing values in RAM and write them only when the mains drops — see the two methods below — not every loop.
  • USB power is for development and bench testing. Apply the external supply for field installation.

Where the power goes

DC 12V ~ 24V24V 0.5A min.LM2576DC-DC to 5V5V internalFeeds the control circuit+5V terminalout 1A maxUSB 5VDownload portSupercapacitorAbout 10 s hold-up
Supply input5 V railData retention

* Either source runs the board: the external supply through the regulator, or the download port's 5 V directly. The supercapacitor sits on the same 5 V node and keeps it alive when both go away.

Power and data retention

Input voltageDC 12V ~ 24V
Recommended supply24V 0.5A or more
Internal conversionLM2576 DC-DC to 5 V
+5 V output1A max, from the +5 V pole of the power terminal block
USB-powered operationRuns on the PC's 5 V through the download port
Non-volatile memoryEEPROM 4 KB, about 100,000 writes
Hold-up on a power cutSupercapacitor on the +5 V pole, about ten seconds
Blackouts retainedMore than 100,000, writing only when the mains drops

Size the supply for 24V 0.5A or more, plus whatever the +5 V pole is feeding (up to 1A).

Two ways to keep data through a blackout

Which one you want depends on how often the value changes. They are meant to be combined.

EEPROM — values that change occasionally

The on-board EEPROM holds 4 KB with no power at all and is written a byte at a time, but the same cell survives only about 100,000 writes. That makes it right for setpoints, calibration data and machine configuration — and wrong for anything the loop updates.

Supercapacitor — values that change constantly

Fit a supercapacitor to the +5 V pole and the internal 5 V stays up for about ten seconds after the main supply is cut. Wire the main supply into a digital input, and the moment digitalRead() sees that input go off, write the value to EEPROM; when power comes back, setup() reads the stored value out of EEPROM and puts it into memory. Because the EEPROM is written only at the instant of a blackout, it survives more than 100,000 of them.

MPINO STUDIO2 — done for you

MPINO STUDIO2 offers supercapacitor-based retention as an option, so the sequence above can be set up in the tool instead of being coded by hand.

Mounting · DIN railDIN Rail

Screws down through the PCB's own holes, or clips onto a 35 mm DIN rail

The board measures 160.0 × 100.0 mm and screws down through the four ⌀3.2 mounting holes in its corner tabs, 143.2 mm apart across and 90.0 mm apart down. For a control panel, the optional rail clips let it hook onto a 35 mm DIN rail instead.

  • 160.0 × 100.0 mm

    PCB outline with no rail clip fitted

  • Direct PCB mounting

    Screws through the ⌀3.2 mounting holes

  • 35 mm DIN rail

    Rail clips are an option on this board

  • 143.2 × 90.0 mm

    Mounting-hole pitch, across and down

Mounting and dimensions

MountingDirect to PCB (⌀3.2 holes) / 35 mm DIN rail clip (option)
DIN rail35 mm
PCB alone (no clip)160.0 × 100.0 mm
Mounting holes⌀3.2 · 143.2 × 90.0 mm apart
Rail clipOption · ⌀4.0 hole · 7.0 mm proud above, 7.2 mm below

The rail clips are an option on this board, so it ships for direct PCB mounting; specify them if it is going onto a rail. The figures for the clip are how far it stands proud of the board — no overall height with the clip fitted is stated for this model.

Mounting on a 35 mm DIN rail

35 mm
DIN rail clip (option)35 mm DIN railBoard

* The optional clips hook over a 35 mm DIN rail, standing 7.0 mm proud above the board and 7.2 mm below it once engaged, and their own holes are ⌀4.0. The drawing shows the mounting method rather than the clip's own shape.

Outline and mounting holes

160.0143.2100.0Mounting hole ⌀3.2

* The outline and mounting holes with no rail clip fitted. All dimensions in millimetres.

Installation notes

  • Indoors only. Do not install where there is rain, dust, frost, direct sunlight or condensation.
  • Do not install in an atmosphere with flammable or explosive gas.
  • Do not install where there is heavy vibration or shock.
  • For equipment where life or property is at stake (nuclear, medical, marine, vehicle, aviation and the like), always fit a second layer of safety devices.

FAQ

How many I/O points does the MPINO-16A16R have?

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

Does the MPINO-16A16R support Modbus RTU?

Yes. The MPINO-16A16R supports Modbus RTU — master and slave alike — over its serial interface.

Related controllers

/ RELATED

Related guides

/ DOCS