An MKR shield with 4 digital inputs, 4 digital outputs and 2 analog inputs, all rated 24V.
Nowadays, most common microcontroller operate with 3.3V logic, while the older classic Arduino UNO uses 5V logic, but sometimes you want to connect your project to 12V or 24V gadgets, which are common in automation and home systems.
We created the GO-24V MKR shield with 24V tolerant inputs and outputs exactly for this purpose.
Description
The Omzlo GO-24V MKR shield is designed to fit on top of Arduino MKR compatible boards, such as the Arduino MKR Zero. But it really shines as part of an IoT project on top of an Omzlo CANZERO node.
It features:
4 digital inputs (0-24V).
4 digital open-drain outputs (0-24V), sinking up to 2A.
2 analog inputs (0-24V).
The shield also breaks out the GND and VIN pins of the MKR board.
Details
The following table provides details of the shield input/output capabilities:
Shield connector
Arduino MKR Pin
Characteristics
Sink 1 (Output)
D0
0-24V (max 60V, 3.1A)
Sink 2 (Output)
D1
0-24V (max 60V, 3.1A)
Sink 3 (Output)
D2
0-24V (max 60V, 3.1A)
Sink 4 (Output)
D3
0-24V (max 60V, 3.1A)
Input 1
D4
0-24V
Input 2
D5
0-24V
Input 3
D6
0-24V
Input 4
D7
0-24V
Analog in 1
A0
0-24V mapped to 0-3.2V
Analog in 2
A1
0-24V mapped to 0-3.2V
GND
GND
Connected to the GND reference on the MKR board.
VIN
VIN
Connected to VIN on the MKR board.
Note that this shield does not feature isolated inputs/outputs (e.g. using optocouplers) or galvanic isolation.
Digital inputs
The digital inputs have the same shifting characteristic as the GPIO of the MCUs they are connected to. For a SAMD21 board like the Arduino MKR Zero or the Omzlo CANZERO, this means that any input below 1V will be considered LOW (0), and any input above 1.8V will be considered as HIGH (1).
Digital outputs
The digital outputs are sinking outputs, which means that they are used to switch loads on the low side, as shown in the picture below.
The sinking outputs are controlled by MOSFETs, which have a comfortable maximum 3.1A current rating. In practice, it's best to keep safely away from those limits. We tested currents up to 1.5A without any issue, for low-side switching power LEDs. Lower currents should also be considered when switching these MOSFETs very rapidly (e.g. through fast PWM). In doubt, please consult the safe operating area of the MOSFET in the datasheet.
If you want to use the digital output to drive a signal between 0 and 24V (or lower), you will need to add a pull-up resistor between the sinking output and the high voltage level (e.g. 24V), as shown in the example below.
In that case, the logic is inverted: setting the sinking output to "high" sets VOUT to 0V, whereas setting the sinking output to "low" sets VOUT to high (e.g. 24V).
Analog inputs
Analog inputs are managed by feeding input voltage in a voltage divider and a buffering op-amp, resulting in a scaled voltage range where 24V corresponds to 3.2V on the analog input of the Arduino-compatible board (and 24.75V corresponds to 3.3V). In terms of accuracy, the voltage divider uses 1% resistors, but the greatest source of inaccuracy can come from the ADC of the MCU itself. It is possible to apply calibration to each board to substantially increase accuracy.
What's included
As shown in the picture below, the Omzlo GO-24V MKR shield comes as a shield with the following unsoldered headers:
One breakable male 2.54mm pin headers (0.1")
Three 4-pin 3.5mm terminal blocks (colors may vary).
This board is designed to be compatible with the Arduino-MKR form factor. In compliance with the Arduino trademark usage rules, we note that this product is not otherwise connected to Arduino S.r.l.