The instrumentation board version 3 was designed to fit the needs of the 16kW system. The board itself is mostly an extended version and an upgrade of the IB2.


  • 15 ADC configurable channels for generic measurements1
  • 8 NTC channels for temperature measurements with 2-pole low-pass filters
  • 8 channels for 4-20mA current signals2
  • 8 0-10V output channels 20mA maximum load3
  • 8 0V/5V binary output channels 20mA maximum load
  • 10 0V/24V binary output channels 3A maximum load
  • 8 0V/24V binary output channels 10A maximum load
  • On-board temperature sensor
  • Supply voltage measurement
  • 2 CAN Controllers
  • I2C connector
  • SPI (MOSI, MISO, and SCLK) connector for debugging or extension
  • SPI chip select connector with the 8 chip select lines used in the board (for debugging)
  • SPI chip select connector with 4 unused chip select lines for extending the board
  • LCD connector
  • Selectable voltage for MCU (5V or 3,3V)
  • Voltage isolators between Ethernut and board signals

(1) Can be configured to have single pole RC filter and/or voltage divider. Also mA measurement is possible but the channel can not be configured to have filtering in combination with mA measurement.
(2) mA measurement below 4mA is not recommended because the ADC voltage gets distorted due to single-sided supply voltage.
(3) The channels can be individually configured to have smaller range to increase resolution


  • IB3: enable pin of the decoder for the CS lines (SPI bus) connected to ground
  • IB3.1: enable pin of the decoder for the CS lines (SPI bus) connected to pin 41 of the Ethernuts' HW expansion port


  • ib3tester. NutDAC_Micro dependent project that contains the drivers and ib3tester, a simple program that helps to test the IB3.
  • ib3tester-gui. NutDAC_GUI dependent project which contains a GUI from which all the IB3 I/Os can be controlled.


The IB3 uses the following ICs:

NutDAC_Micro provides drivers for all of them (but the CAN controller) in the chaldrivers library. Thus, the drivers for the IB3 board itself are mostly an instantiation and configuration of the ICs, plus the driver for the two mcp2515.


All the ICs are connected to the micrcontroller of the Ethernut through SPI bus. Thus the SPI driver has to be configured properly. Use the following parameters in your nutdac-config.h (extracted from nutdac-config.h of the ib3tester project)

/*-------------------------SPI settings of the IB3 ------------------------*/

#if defined(ETHERNUT2)
/* Connector pin 41 of the HW expansion port for decoder enable pin. Only for the IB3.1 */

#define SPI_CSLINE0_PIN 5
#define SPI_CSLINE1_PIN 6
#define SPI_CSLINE2_PIN 7
#define SPI_CSLINE3_PIN 3

#elif defined (ETHERNUT3)
/* Connector pin 41 of the HW expansion port for decoder enable pin */
/* The chip select lines of the Ethernut3 are defined in the NutOS configurator */
#endif /* ETHERNUTX */

Using the IB3 with the Ethernut2 requires the definition of the chip select lines, as you can see in the settings above. For use with the Ethernut3, the chip select lines are selected with the configurator of the NutOS. Here you can find files with the appropriate definitions set

or if you want to do it manually...

SPI bus speed

The use of voltage isolators make it possible to use different Ethernut boards with the IB3, but also cause propagation delay in the SPI lines, which limits the SPI speed.

Maximum theoretical SPI frequencies

component frequency
AD7490 20MHz
TLV5630 30MHz
MCP2515 10MHz
MCP23S17 10MHz
TC77 7MHz
Ethernut2 7,3728MHz
Ethernut3 4,6080MHz

Maximum tested SPI speeds with Ethernut 2

chip frequency
AD7490 7,3728MHz
TLV5630 7,3728MHz
MCP2515 3,6864MHz
MCP23S17 3,6864MHz
TC77 3,6864MHz

Voltage Configuration

  • The broken compatibility between Ethernut2 and Ethernut3 explained in the Version 2 entry has been addressed.

There are two jumpers that need to be configured before using the IB3. Care must be taken when configuring the jumpers because some combinations will destroy some or all of the IB's ICs and some combinations will also endanger the Ethernut.

  • The VIO jumper (J16) defines the IO voltage used for communication with the microcontroller. The VIO pin must be connected to 5V pin when the IB is used with Ethernut 2 or to the 3,3V pin when the IB is used with Ethernut3.
  • The other jumper (J23) must be connected when Ethernut3 is powered through the IB. The jumper connects the unregulated power line of the Ethernut to the 5V line of the IB3, so it must not be connected when the Ethernut is powered through its barrel connector. Best practice is to leave the J23 jumper disconnected always except when Ethernut3 is powered through the IB.

Filter Configuration

The 4-20mA signal channels have RC-filters which can be used if the noise proves excessive.

There are 15 configurable voltage inputs on the which have a impedance setup shown in the picture below. Vin is the voltage coming from the input connector and Vout goes to the ADC. The impedances can be arranges at least in the following configurations.

  • Z1 is a resistor and Z2 is a capacitor -> low-pass filter
  • Z1 is a capacitor and Z2 is a resistor -> high-pass filter
  • Z1 and Z2 are resistors -> voltage divider
  • Z1 and Z2 are resistors and Z3 is a capacitor -> combined voltage divider and low-pass filter
  • Z1 is a short circuit and Z2 is a resistor -> current measurement channel.

The setup uses 1206 components so basically anything can be placed there if it can be soldered to 1206 pads. Besides the configurations mentioned above, there are at least inductors available in compatible packages.

Design files:

Instrumentation Board Version 3 files:

Instrumentation Board Version 3.1 files: