The Arduino Portenta Machine Control is much more than a Portenta H7 fitted into an industrial enclosure.
The board combines a:
|
1 2 3 4 5 6 7 8 9 |
Portenta H7 STM32H747XI Cortex-M7 up to 480 MHz Cortex-M4 up to 240 MHz 8 MB SDRAM 16 MB QSPI Flash |
with a large industrial I/O carrier containing:
- 24 V digital input conditioning;
- 24 V protected high-side outputs;
- software-configurable analogue inputs;
- 0-10 V analogue outputs;
- thermocouple and PT100 front ends;
- ABZ encoder inputs;
- CAN transceiver;
- RS-232/RS-422/RS-485 transceiver;
- Ethernet physical interface;
- USB and Grove I2C;
- Wi-Fi and Bluetooth through Portenta H7.
This makes its pinout very different from a normal Arduino development board.
Quick I/O Summary
| Interface | Portenta Machine Control |
|---|---|
| Power input | 24 V DC ±20% |
| Dedicated digital inputs | 8 × 0-24 V |
| Dedicated digital outputs | 8 × 24 V high-side outputs, up to 0.5 A per channel at connector specification |
| Programmable digital I/O | 12 × 24 V channels configurable as input/output |
| Analogue inputs | 3 channels: 0-10 V, 4-20 mA or NTC |
| Analogue outputs | 4 × 0-10 V, up to 20 mA each |
| Temperature channels | 3 × PT100 / J/K thermocouple channels |
| Encoders | 2 × ABZ encoder channels |
| CAN | Onboard high-speed CAN transceiver |
| Serial fieldbus | Software-selectable RS-232 / RS-422 / RS-485 |
| Ethernet | RJ45 with onboard transformer interface |
| I2C | Grove connector, 3.3 V logic |
| USB | USB-A + Micro-USB |
| Wireless | Wi-Fi / BLE via Portenta H7, external SMA antenna |
| Operating temperature | -40 °C to +85 °C |
Power Supply Connector
The main power terminal provides:
|
1 2 3 4 5 6 7 |
+24V IN +24V IN GND GND |
The recommended operating supply is:
|
1 2 3 4 |
24 V DC ±20% |
which corresponds approximately to:
|
1 2 3 4 |
19.2 V to 28.8 V |
around the nominal 24 V industrial rail.
The board also includes reverse-polarity protection.
Do Not Confuse the Separate 24 V Domains
This is one of the most important wiring details.
The:
|
1 2 3 4 |
DIGITAL OUTPUTS |
connector has its own:
|
1 2 3 4 |
24V IN |
terminal.
The:
|
1 2 3 4 |
PROGRAMMABLE DIGITAL I/O |
connector also has its own:
|
1 2 3 4 |
24V IN |
terminal.
Arduino explicitly notes that these are not internally tied to the board’s main 24 V supply input.
You may feed them from the same external 24 V supply, but the wiring must be made externally.
Ground Is Common
The official pinout states:
|
1 2 3 4 5 |
GND is the same all over the board |
This is important because the industrial I/O system is not organised as a set of independently galvanically isolated channels.
Dedicated Digital Inputs
The:
|
1 2 3 4 |
DIGITAL INPUTS |
connector provides:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
DI0 DI1 DI2 DI3 DI4 DI5 DI6 DI7 GND |
Each channel accepts:
|
1 2 3 4 |
0-24 V DC |
signals.
How the 24 V Inputs Reach the STM32
Arduino documents a resistor-divider network on each channel:
|
1 2 3 4 5 6 |
680 kΩ + 100 kΩ |
which scales:
|
1 2 3 4 5 |
0-24 V → approximately 0-3 V |
for the internal logic circuitry.
This means you should use the industrial terminal inputs rather than wiring 24 V directly to Portenta H7 GPIO.
Dedicated Digital Outputs
The:
|
1 2 3 4 |
DIGITAL OUTPUTS |
connector provides:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
DO0 DO1 DO2 DO3 DO4 DO5 DO6 DO7 GND +24V IN |
These are:
|
1 2 3 4 5 6 |
24 V high-side switched outputs |
High-Side Output Meaning
When an output is active, the Machine Control supplies the positive side of the 24 V load.
A typical load is wired:
|
1 2 3 4 5 6 |
Machine Control output → load → GND |
This is different from an open-collector low-side output that switches the ground side.
Output Current
Arduino specifies the external digital outputs at up to approximately:
|
1 2 3 4 |
0.5 A per channel |
for normal connector use.
The internal TPS4H160-Q1 high-side switch has current limiting and the datasheet explains that the semiconductor current-limit threshold itself has tolerance above the nominal value.
Do not design a load around that fault threshold.
Use the published board/output rating.
Inductive Load Protection
The high-side output circuitry includes:
- current limiting;
- short-circuit protection;
- inductive kick-back protection.
This makes the outputs suitable for industrial loads such as:
- relay coils;
- small contactors;
- solenoid valves;
- indicator lamps;
- 24 V actuators within the channel rating.
There Are No Onboard Relay Contacts
This distinction matters.
Portenta Machine Control provides:
|
1 2 3 4 |
24 V transistor outputs |
not isolated electromechanical:
|
1 2 3 4 |
NO / NC / COM relay contacts |
If the load requires mains isolation or larger switching capacity, use the 24 V output to drive an appropriately rated external relay or contactor.
12 Programmable Digital I/O Channels
The:
|
1 2 3 4 |
PROGRAMMABLE DIGITAL I/O |
terminal provides:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
DIO0 DIO1 DIO2 DIO3 DIO4 DIO5 DIO6 DIO7 DIO8 DIO9 DIO10 DIO11 GND +24V IN |
Each channel can be used as:
|
1 2 3 4 5 6 |
24 V input or 24 V high-side output |
under software control.
Programmable Output Protection
The 12 programmable channels use protected high-side switches with:
- current limiting;
- inductive-load protection;
- readback through the corresponding digital-input circuitry.
Current-Limit Behaviour
The firmware can use two fault behaviours:
|
1 2 3 4 5 6 7 8 9 10 |
Latch → output shuts down → channel must be toggled/reset Retry → output shuts down → automatically retries |
This is useful in machinery where a temporary short or overload should be handled predictably.
Three Software-Configurable Analogue Inputs
The analogue input connector provides:
|
1 2 3 4 5 6 |
AI0 AI1 AI2 |
and each channel can be configured for one of three modes:
|
1 2 3 4 5 6 |
0-10 V 4-20 mA NTC |
0-10 V Input Mode
In 0-10 V mode the input passes through a divider:
|
1 2 3 4 5 6 |
100 kΩ + 39 kΩ |
so:
|
1 2 3 4 5 |
0-10 V → approximately 0-2.8 V |
at the MCU ADC.
Arduino lists an input impedance of approximately:
|
1 2 3 4 |
28 kΩ |
4-20 mA Input Mode
In current-loop mode the board switches in a:
|
1 2 3 4 |
120 Ω |
measurement resistor.
A standard process current therefore produces approximately:
|
1 2 3 4 5 6 7 8 |
4 mA → 0.48 V 20 mA → 2.4 V |
for the ADC front end.
Why 4-20 mA Matters
This allows direct connection of many industrial transmitters such as:
- pressure sensors;
- level sensors;
- flow transmitters;
- industrial temperature transmitters;
- process instruments.
Sensor 24 V Supply
The analogue-input area provides:
|
1 2 3 4 |
+24V OUT |
for powering compatible sensors.
Arduino documents a:
|
1 2 3 4 5 |
500 mA PTC resettable fuse |
protecting this output.
NTC Mode
In NTC mode, the board uses a:
|
1 2 3 4 5 |
3 V precision reference REF3330 |
and a:
|
1 2 3 4 |
100 kΩ |
resistor to form the measurement divider.
Be Careful When Changing Analogue Modes
The same physical AI terminal changes its internal electrical connection depending on software configuration.
Before changing between:
|
1 2 3 4 5 6 |
0-10 V 4-20 mA NTC |
verify the external wiring.
The official pinout explicitly warns that incorrect wiring can damage the board.
Four 0-10 V Analogue Outputs
The output terminals are:
|
1 2 3 4 5 6 7 |
AO0 AO1 AO2 AO3 |
with individual ground terminals.
Each output can generate:
|
1 2 3 4 |
0-10 V DC |
and source up to:
|
1 2 3 4 |
20 mA |
per channel.
Portenta H7 Mapping of Analogue Outputs
| Machine Control output | Portenta H7 MCU pin |
|---|---|
| AO0 | PJ11 |
| AO1 | PK1 |
| AO2 | PG7 |
| AO3 | PC7 |
The 0-10 V Outputs Are PWM-Derived
The Machine Control does not simply expose the STM32 DAC directly.
Instead the carrier generates the industrial analogue voltage using:
|
1 2 3 4 5 6 7 |
Portenta PWM → double low-pass filter → op-amp gain stage → 0-10 V output |
AO2 Has a High-Resolution Timer Limitation
Arduino’s current datasheet highlights AO2 because it is connected to:
|
1 2 3 4 5 |
PG7 HRTIM |
with a maximum period of approximately:
|
1 2 3 4 |
1.3 ms |
in its documented high-resolution timer configuration.
For slower analogue/PWM periods, Arduino recommends using:
|
1 2 3 4 5 6 7 |
AO0 AO1 or AO3 |
Temperature Probe Terminals
There are three temperature channels:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Channel 0: TP0 TN0 RTD0 Channel 1: TP1 TN1 RTD1 Channel 2: TP2 TN2 RTD2 |
Each channel can be used for:
- PT100 RTD;
- non-grounded K-type thermocouple;
- non-grounded J-type thermocouple with software compensation.
Temperature Front Ends
The board includes dedicated converter ICs:
|
1 2 3 4 5 6 7 8 |
with analogue switching that selects the required channel/front end.
Do Not Connect Both Sensor Types to the Same Channel
A temperature channel can measure:
|
1 2 3 4 5 6 |
but not both simultaneously.
Thermocouple Wiring
For thermocouples:
|
1 2 3 4 5 6 7 8 |
positive → TPx negative → TNx |
Do not connect the thermocouple negative conductor to board GND.
Arduino specifies:
|
1 2 3 4 |
non-grounded thermocouples |
for this interface.
Two-Wire PT100 Wiring
For a two-wire RTD:
|
1 2 3 4 5 6 7 8 9 10 11 |
RTD wire 1 → TPx RTD wire 2 → TNx jumper → TPx to RTDx |
Three-Wire PT100 Wiring
For a three-wire RTD:
|
1 2 3 4 5 6 7 8 9 10 11 |
wire 1 → TPx wire 2 → TNx wire 3 → RTDx |
Two ABZ Encoder Inputs
The encoder connector provides:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
A0 B0 Z0 A1 B1 Z1 GND +24V OUT |
These are intended for two independent incremental encoders.
Portenta Mapping of Encoder Signals
| Encoder terminal | Portenta H7 pin |
|---|---|
| A0 | PJ8 |
| B0 | PH12 |
| Z0 | PH11 |
| A1 | PC13 |
| B1 | PI7 |
| Z1 | PJ10 |
Encoder Inputs Are 24 V Industrial Inputs
Each ABZ signal is pulled up to the board’s:
|
1 2 3 4 |
24 V rail |
through a:
|
1 2 3 4 |
10 kΩ |
resistor.
These are therefore not ordinary 3.3 V encoder GPIO pins.
CAN Bus Has an Onboard Transceiver
Unlike many Arduino boards where CAN_TX/CAN_RX are only MCU logic signals, Portenta Machine Control includes the physical:
|
1 2 3 4 5 |
TJA1049T/3J CAN transceiver |
and exposes:
|
1 2 3 4 5 6 |
CAN H CAN L GND |
directly.
CAN Speed
Arduino documents a nominal maximum CAN data rate of:
|
1 2 3 4 |
5 Mbit/s |
for the transceiver hardware.
Actual protocol configuration still depends on:
- CAN mode;
- controller configuration;
- network cabling;
- termination;
- all nodes on the bus.
CAN Termination
The board includes onboard termination components and a:
|
1 2 3 4 |
4.7 nF |
capacitor to ground in the termination network.
Do not add termination blindly.
A normal CAN bus should be terminated only at the two physical ends of the trunk.
CAN MCU Mapping
The Portenta H7-side CAN signals are:
|
1 2 3 4 5 6 7 8 |
CAN TX → PH13 CAN RX → PB8 |
The Machine Control carrier then routes them through the onboard transceiver to CAN_H/CAN_L.
RS-232, RS-422 and RS-485 Share One Interface
The communication terminal provides:
|
1 2 3 4 5 6 7 8 |
RS485 TX P RS485 TX N RS485 RX P RS485 RX N GND |
but software selects how the transceiver operates.
RS-422 / RS-485 Full Duplex
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
TX P → TX+ TX N → TX- RX P → RX+ RX N → RX- |
RS-485 Half Duplex
|
1 2 3 4 5 6 7 8 |
TX P → Data+ TX N → Data- |
The separate RX pair is not used in this mode.
RS-232 Mode
In RS-232 mode:
|
1 2 3 4 5 6 7 8 |
RS485 TX N → TXD RS485 RX P → RXD |
The other differential terminals are not used.
Serial Termination
The board contains:
|
1 2 3 4 |
120 Ω RS-485 termination |
that can be connected or disconnected in firmware.
This is useful because termination should depend on where the Machine Control sits on the RS-485/RS-422 network.
Serial Data Rates
The current datasheet lists nominal transceiver capability around:
|
1 2 3 4 5 6 7 8 |
RS-485: up to 20 Mbps RS-232: up to 1 Mbps |
with an optional:
|
1 2 3 4 |
250 kbps slew-limited mode |
for slower networks and reduced EMI.
Grove I2C Connector
The Grove connector exposes:
|
1 2 3 4 5 6 7 |
+3V3 GND SCL SDA |
with Portenta H7 mappings:
|
1 2 3 4 5 6 7 8 |
SCL → PH7 SDA → PH8 |
The board includes:
|
1 2 3 4 5 |
10 kΩ pull-up resistors |
on the I2C bus.
The Grove I2C Bus Is 3.3 V
This is not a 24 V industrial signal.
Use only 3.3 V-compatible I2C hardware unless proper level shifting is provided.
Ethernet
The Portenta Machine Control includes an:
|
1 2 3 4 |
RJ45 Ethernet connector |
with the required onboard transformer/magnetics.
This means no external Ethernet shield or carrier is required.
Wi-Fi and Bluetooth
The installed Portenta H7 provides:
|
1 2 3 4 5 |
2.4 GHz Wi-Fi Bluetooth Low Energy |
through its Murata 1DX module.
Machine Control exposes an:
|
1 2 3 4 5 |
SMA 50 Ω |
antenna connection for external wireless antenna installation.
USB-A
The board provides a:
|
1 2 3 4 5 |
USB-A Full-Speed |
connector for USB peripheral applications.
Micro-USB
The:
|
1 2 3 4 |
Micro-USB |
connector is used for programming the Portenta H7 and USB communication.
Arduino’s current pinout notes a current limit around:
|
1 2 3 4 |
1 A |
on the associated USB supply path.
RTC
The board includes a real-time clock subsystem intended to retain time for at least:
|
1 2 3 4 |
48 hours |
under the documented backup conditions.
This is useful for:
- production timestamps;
- batch records;
- alarm history;
- maintenance logs;
- data logging.
Portenta H7 Processing Core
The installed Portenta H7 uses:
|
1 2 3 4 5 6 7 8 9 10 |
STM32H747XI Cortex-M7 → up to 480 MHz Cortex-M4 → up to 240 MHz |
with:
|
1 2 3 4 5 |
8 MB SDRAM 16 MB QSPI Flash |
on the module.
Dual-Core Applications
The two cores can be split into:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
M7 → Ethernet → cloud → HMI → logging → AI → higher-level application M4 → deterministic control → encoders → timing → machine state → fast I/O |
depending on the application architecture.
Current Arduino Machine Control Library
For new projects, use:
|
1 2 3 4 |
Arduino_PortentaMachineControl |
Arduino describes it as the current upgraded library for controlling the Portenta Machine Control hardware.
The Old Arduino_MachineControl Library Is Deprecated
The older:
|
1 2 3 4 |
Arduino_MachineControl |
repository is deprecated and archived.
Its examples are not API-compatible with the new:
|
1 2 3 4 |
Arduino_PortentaMachineControl |
library.
This matters when copying older examples from forums or GitHub.
Current Library Covers the Industrial Interfaces
The new library provides classes for functions including:
- analogue inputs;
- analogue outputs;
- digital inputs;
- digital outputs;
- programmable digital I/O;
- encoders;
- CAN communication;
- RS-485 communication;
- RTD temperature probes;
- thermocouples;
- RTC;
- USB control.
PLC IDE Support
Portenta Machine Control can also be programmed through Arduino PLC IDE.
The PLC environment supports IEC 61131-3-style programming including:
- Ladder Diagram;
- Function Block Diagram;
- Structured Text;
- Sequential Function Chart;
- Instruction List support in Arduino’s PLC environment.
PLC IDE also provides fieldbus integration for protocols such as:
- Modbus RTU;
- Modbus TCP;
- CANopen.
No Isolation Assumption
Do not assume that every terminal is galvanically isolated simply because the product is industrial.
Arduino’s datasheet explicitly describes the 24 V output supplies as:
|
1 2 3 4 |
non-galvanically isolated |
and referred to the board ground.
System-level isolation may still be required depending on:
- machine grounding;
- remote sensors;
- long cables;
- different power domains;
- safety requirements.
Common Mistake 1: Feeding 24 V into Portenta GPIO
Use the conditioned 24 V terminal inputs.
Do not bypass the carrier front end and connect industrial voltage directly to the STM32.
Common Mistake 2: Forgetting the Separate 24 V Output Supplies
The digital-output and programmable-I/O 24 V input terminals must be externally powered.
They are not internally tied to the main supply input.
Common Mistake 3: Treating the Outputs as Relays
They are protected high-side semiconductor switches.
Use an external relay/contactor where galvanic isolation or larger switching capacity is required.
Common Mistake 4: Wiring a 4-20 mA Sensor While the Channel Is in 0-10 V Mode
The analogue input circuitry changes internally with the selected mode.
Set the channel mode to match the wiring before energising the system.
Common Mistake 5: Connecting a Thermocouple Negative to GND
For the supported non-grounded thermocouple arrangement:
|
1 2 3 4 5 |
positive → TPx negative → TNx |
not board GND.
Common Mistake 6: Adding CAN Termination Without Checking the Existing Network
The board already contains CAN termination hardware.
Only two ends of a normal CAN trunk should be terminated.
Common Mistake 7: Using Old Library Examples
Examples written for:
|
1 2 3 4 |
Arduino_MachineControl |
may not compile against:
|
1 2 3 4 |
Arduino_PortentaMachineControl |
without migration.
Quick Terminal Reference
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
POWER 2 × +24V IN 2 × GND DIGITAL INPUTS DI0-DI7 GND DIGITAL OUTPUTS DO0-DO7 GND +24V IN PROGRAMMABLE I/O DIO0-DIO11 GND +24V IN ANALOG INPUTS AI0-AI2 GND +24V OUT sensor supply ANALOG OUTPUTS AO0-AO3 individual GND TEMPERATURE TP0 TN0 RTD0 TP1 TN1 RTD1 TP2 TN2 RTD2 ENCODER 0 A0 B0 Z0 ENCODER 1 A1 B1 Z1 CAN CAN H CAN L GND SERIAL RS485 TX P RS485 TX N RS485 RX P RS485 RX N GND |
Final Thoughts
The Portenta Machine Control should be thought of as:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Portenta H7 + 24 V industrial I/O + analogue process I/O + temperature instrumentation + encoder inputs + fieldbus transceivers + Ethernet + industrial power/protection |
The carrier is what transforms a 3.3 V microcontroller module into a practical machine controller.
The most important wiring rules are:
|
1 2 3 4 5 6 7 8 9 |
use the conditioned 24 V terminals power output groups correctly respect common ground architecture configure analogue mode before wiring check termination before enabling CAN/RS485 termination use external relays/contactors when isolation is required |
For the MCU underneath the industrial I/O, see our Arduino Portenta H7 pinout guide. For CAN wiring and termination fundamentals on the same STM32H747 family, see our Arduino GIGA R1 CAN bus guide.