Most industrial process controls applications still use 4-20mA analog signals for transmitting variable data. The Raspberry Pi does not have an on board analog to digital converter. Here is the Pi-SPi-8AI analog input module specifically designed for the Raspberry Pi that has 8 channels of analog inputs based on the Microchip MCP3208 ADC.
The versatile input circuit is configured "out of the box" for 4-20 mA inputs. Here is the input circuit:
This input circuit can accept various type of signals. The MCP3208 uses 3.3 VDC as a reference voltage, so the active range is actually 0 to 3.3 VDC or 0 to 4095 AD Counts.
- 4-20 mA - Rv removed, input mA flows into Rload giving 0.6 to 3 VDC
- Thermistor Input, Typically 10K 3380 Beta - remove Rload
- Potentiometer input typically 10K linear taper - wiper to input, either end of potentiometer to +V and Common
- VDC Input - Remove Rv and replace Rload with 1M ohm load resistor if required. (Without a Rload resistor, and no input, in the channel may "float") Fro voltages greater than 3.3VDC, replace C2 with a resistor, and R1/C2(resistor) becomes a voltage divider
- MQ3 Type gas sensor - remove Rv and replace the Rload with the recommended MQ load resistor, typically 4K
- LDR (Light Dependant Resistor), %RH Sensor, etc.
The Pi-SPi-8DI has a "Spare" chip select line for GPIO22, this gives the RPi the capacity for 16 analog inputs of various types.
Here is the PCB layout for the Pi-SPi-8AI. It comes pre-configured for 8 channels of 4-20 mA inputs. The two load resistors (Rv and Rload from the above circuit) are surface mount resistors in a 1206 package which are easily removed/inserted by hand.
Sample code, schematics and complete specs can be found at this link: