Backyard Meteorological Instrumentation

ADC - DAC Module


This module is designed to provide I/O management for the Raspberry Pi. Apart from providing more I/O cpntrol pins, it allows the Raspberry Pi to control higher power devices outside the current and voltage capabilities of the Raspberry Pi I/O pins.

3 x 4-Channel 16-Bit Analogue to Digital Converter

The ADS1115 device is a precision, low-power, 16-bit, I2C-compatible, analog-to-digital converters (ADCs). The ADS1115 devices incorporate a low-drift voltage reference and an oscillator. It also incorporates a programmable gain amplifier (PGA) and a digital comparator.

The ADS1115 perform conversions at data rates up to 860 samples per second (SPS). The PGA offers input ranges from ±256 mV to ±6.144 V, allowing precise large- and small-signal measurements. The ADS1115 features an input multiplexer (MUX) that allows two differential or four single-ended input measurements. The digital comparator in the ADS1115 can be used for under- and overvoltage detection. The disadvantage of this ADC is that when it is used in single ended input mode, the ADC has effectively one (1) less bit, making it a 15-bit ADC in many purposes.

Each unit has an End Of Conversion (EOC) ALERT that can be used to trigger a read interrupt.

2 x Single Channel 12-Bit Digital to Analogue Converter

The MCP4725 is a low-power, high accuracy, single channel, 12-bit buffered voltage output Digital-to-Analog Convertor (DAC) with non-volatile memory (EEPROM). Its on-board precision output amplifier allows it to achieve rail-to-rail analog output swing. The DAC input and configuration data can be programmed to the non-volatile memory (EEPROM) by the user using I2C interface command.

The non-volatile memory feature enables the DAC device to hold the DAC input code during power-off time, and the DAC output is available immediately after power-up. This feature is very useful when the DAC device is used as a supporting device for other devices in the network. The device includes a Power-On-Reset (POR) circuit to ensure reliable power-up and an on-board charge pump for the EEPROM programming voltage.

The DAC reference is driven from VDD directly. In power-down mode, the output amplifier can be configured to present a known low, medium, or high resistance output load.

Physical Construction

The electronics of this device are constructed on a 5cm x 7cm prototype board, mounted in a DIN Rail enclosure. The I/O pins are extended to a 40-pin screw terminal block using a 40-wire flat cable.

Terminal Block Pinout

The ADC-DAC module is powered by +3.3V, making it directly compatible with the Raspberry Pi 4. It also means that the maximum output voltage from the two (2) DAC units, and the maximum input to the twelve (12) ADC channels, in three (3) ADC units is also {+3.3V.

Each of the 4-Channel ADC units have an interrupt pin that signifies when the EOC (End Of Conversion) occurs.

An Earth terminal is provided for each input and output channel that can be used to ensure that noise isn't introduced by using the Earth Supply as the earth connection. All of the earth pins are joined together, so it is possible to  use the Earth Supply pin as the ground in less critical activities.

In this setup, the three ADC units and the two DAC units are the only units on the I2C Bus connected to this module. This make the software simpler as it does not need to consider any other chips that could cause delays on the I2C Bus.

The Raspberry Pi's third I2C channel's SCL and SDA lines are connected to this unit. When you log into the Raspberry Pi enter the following command and confirm that result matches the example below. The addresses 48, 49, and 4a correspond to the ADC units and the addresses 60 and 61 correspond to the DAC addresses.

mark@artemis:~ $ i2cdetect -y 3
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 49 4a -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: 60 61 -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Licenced under Creative Commons Attribution Share Alike 4.0 International or better by Mark Little (2022 - 2023)