The Pi-SPi-8AI-16B is based on the MCP33131, a 16 Bit Analog to Digital Converter.
The 26 pin GPIO port is duplicated on either side of the module, so more modules can be "daisy chained" together.
With the latest libwidgetlords v2.0 release, up to 4 PI-SPI-8AI-16B modules can be connected together giving a total of 32 analog inputs to one Raspberry Pi.
All Accessories Including Ribbon Cables Sold Separately
Node-Red support is available.
These are the standard versions of analog inputs available:
PI-SPI-8AI-16B-8MA:Inputs 1 thru 8 are 4-20 mA (Load Resistor 150 Ohms)
PI-SPI-8AI-4MA-16B-4VDC: Inputs 1 thru 4 are 4-20 mA Input (load Resistor 150 Ohms)Inputs 5 thru 8 are 0 to 6.6 VDC Input
PI-SPI-8AI-16B-TEMP :Inputs 1 thru 8 are 10K Thermistor Inputs for Temperature Sensor Applications
PI-SPI-8AI-16B-4MA-4TEMP :Inputs 1 thru 4 are 4-20 mA Input (load Resistor 150 Ohms)Inputs 5 thru 8 are 10K Thermistor Inputsfor Temperature Sensor Applications
PI-SPI-8AI-16B-4TEMP-4VDC :Inputs 1 thru 4 are 10K Thermistor InputsInputs 5 thru 8 are 0 to 6.6 VDC Inputsfor Temperature Sensor and Voltage Input Applications
Each channel can be configured as either mA or Voltage. Another feature is all inputs can easily be configured for thermistor input making the Pi-SPi-8AI-16B an 8 channel temperature sensor module.
Changing an Input Type is as easy as removing and adding a solder jumper on the back of the module - here is the A1 jumper selection:
mA = 0 to 20 mATH = 10K Thermistor Input for temperature applications5 VDC = 0 to 6.6 VDC Input10 VDC = 0 to 12 VDC Input
Other input configurations are available, please contact us before ordering!
For 4-20mA transmitter descriptions and connections, please visit:
4-20 mA Current Loop
Please download the latest Widgetlords libwidgetlords library. The instructions can be found at
Getting Started with PI-SPI Libraries
All of the sample code examples are based on the latest library installation. Please note the code samples all use Python 3.
Basic Python "Read" 8 Channels 0 to 20 mA Program:
from time import sleepimport spidevfrom widgetlords.pi_spi import *from widgetlords import *init()inputs_12b = Mod8AI(True)spi = spidev.SpiDev()spi.open(0, 1)spi.max_speed_hz =100000def read_channel(channel: int): channel %= 8 spi.xfer([channel]) spi.xfer([channel]) data = spi.xfer([channel, channel]) return data + data * 256def read_channel_avg(channel: int): channel %= 8 spi.xfer([channel]) spi.xfer([channel]) sum = 0 for i in range(8): data = spi.xfer([channel, channel]) sum += data + data * 256 return sum >> 3while True: for i in range(8): ADC = read_channel_avg(i) print(i, " %.4f" % ( ADC / ((2 ** 16) - 1) * 3300 / 150)) print("") print("") sleep(0.5)
For DIN Rail applications, the PI-SPI-ENC series of DIN rail mount enclosures are available in the Accessories Collection