MCP3008 Analog to Digital converter

The Microchip MCP3008 ADC is a 10-bit Analog to Digital (A/D) converter with on-board sample and hold circuitry.
Communication with the device is accomplished using a simple serial interface compatible with the SPI protocol. The MCP3008 operates over a broad voltage range (2.7V – 5.5V), and low-current design permits operation with typical standby currents of only 5 nA and typical active currents of 320 µA.

Here is the pinout of the MCP3008

MCP3008

MCP3008

Features

10bit ADC
8 channels
SPI Interface
Sampling Rate: 200kSPS
Supply Voltage 2.7V to 5.5V
Supply Current: 425µA
16 pin DIP
Conversion Time: 10µs

In the world of Arduino remember you have 6 Analog inputs but if you use I2C devices that could take care of 2 of these. So using this chip can add another 8 analog inputs, which may be useful for certain projects.

 

Schematics

Quite basic schematic, note Pin 9 and 14 linked together and connected to ground and I connected the VREF (15) to 5v, which is pin 16. The example below shows a pot connected to CH0

Arduino-and-MCP3008

Arduino-and-MCP3008

 

Code

Based on the example from the library from https://github.com/nodesign/MCP3008. Connect Pin 1 of the MCP3008 to 0v and look at the result in the Serial monitor, do the same from 5v.

You could also connect a potentiometer or an ldr or something else that you can vary the input reading

#include <MCP3008.h>
 
//define pin connections
#define CS_PIN 12
#define CLOCK_PIN 9
#define MOSI_PIN 11
#define MISO_PIN 10
 
MCP3008 adc(CLOCK_PIN, MOSI_PIN, MISO_PIN, CS_PIN);
 
void setup() 
{
 // open serial port
 Serial.begin(9600);  
}
 
void loop() 
{
 
  int val = adc.readADC(0); // read Channel 0 from MCP3008 ADC (pin 1)
  Serial.println(val);
  delay(1000);   
}

 

Links

You can pick these up quite easily for around $2 a piece.

MCP3008-I/SL MCP3008 SOP 8-CH 10-BIT SUCCESSIVE APPROXIMATION ADC SERIAL ACCESS

Related