10-bit ADC (SPI) MCP3008 - 8 Channel

10-bit ADC (SPI) MCP3008 - 8 Channel

New 37 available
Indicative market price: R95.57
R86.88
Shipping
R65.00 Standard shipping applies to orders under R100.00, in most areas in South Africa. R35.00 Standard shipping applies to orders over R100.00. Some areas may attract a surcharge surcharge. This will be calculated at checkout if applicable.
Check my rate
The seller has indicated that they will usually have this item ready to ship within 2 business days. Shipping time depends on your delivery address. The most accurate delivery time will be calculated at checkout, but in general, the following shipping times apply:
 
Standard Delivery
Main centres:  1-3 business days
Regional areas: 3-4 business days
Remote areas: 3-5 business days
Seller
Buyer protection
Get it now, pay later

Product details

Condition
New
Location
South Africa
Product code
777
Bob Shop ID
613700806

The Raspberry Pi is a great computer but there's just one thing that most hardware hackers will find missing: a few inputs for connecting analog sensors. This is where the MCP3008 chip comes in handy, with eight 10-bit channels accessible over SPI. Thanks to the Raspberry Pi's SPI interfaces and its two 'Chip Select' pins available off of the main GPIO connector, the problem is solved.

Features

  • 10-bit resolution
  • Four pseudo-differentials or eight single-ended inputs
  • Small PDIP size makes for great use in embedded applications
  • SPI serial interface
  • On-chip sample and hold
  • Suppler operation 2.7V up to 5.5V
  • ±1 Both DNL and INL
  • 200 ksps sample rate at 5V
  • Temperature range from -40°C up to +85°C

Applications

  • Sensor Interface
  • Process Control
  • Data Acquisition
  • Battery Operated Systems


What's in the box?

1 x 10-bit ADC 8 Channel IC

Resources

The following sample assumes that you're running the latest official Raspbian distribution, that you're logged in as root and that you haven't yet customized Raspbian to use SPI from a Python script. By default, the kernel module managing SPI communications is not loaded on Raspbian, so let's ensure that the 'spidev' device is available.

root@raspberrypi:/# lsmodModule                  Size  Used by  snd_bcm2835            12808  0  snd_pcm                74834  1 snd_bcm2835  snd_seq                52536  0  snd_timer              19698  2 snd_seq,snd_pcm  snd_seq_device          6300  1 snd_seq  snd                    52489  5 snd_seq_device,snd_timer,snd_seq,snd_pcm,snd_bcm2835  snd_page_alloc          4951  1 snd_pcm  

If 'spidev' device is not listed, we need to remove it from the kernel module 'blacklist' so that it's automatically loaded on the next boot:

root@raspberrypi:/# nano /etc/modprobe.d/raspi-blacklist.conf  

Put a hash character in front of the 'blacklist spi-bcm2708' statement and save the file:

#blacklist spi-bcm2708  

then, manually load the SPI device:

root@raspberrypi:/# modprobe spidev  

The command should just complete without returning an error. Validate the list of modules:

root@raspberrypi:/# lsmod  Module                  Size  Used by  spi_bcm2708             4401  0  spidev                  5136  0  snd_bcm2835            12808  0  snd_pcm                74834  1 snd_bcm2835  snd_seq                52536  0  snd_timer              19698  2 snd_seq,snd_pcm  snd_seq_device          6300  1 snd_seq  snd                    52489  5 snd_seq_device,snd_timer,snd_seq,snd_pcm,snd_bcm2835  snd_page_alloc          4951  1 snd_pcm  

The 'spidev' device should now be available.

Next, install the 'git' package. It will be needed to install other packages from Github.

apt-get install git-core  

Install the 'python-dev' package. It will be needed to compile the 'py-spidev' package.

apt-get install python-dev  

Download and compile the 'py-spidev' package.

root@raspberrypi:/# cd /home  root@raspberrypi:/home# git clone git://github.com/doceme/py-spidev  root@raspberrypi:/home# cd py-spidev/  root@raspberrypi:/home# python setup.py install  

At this point, SPI is available from Python 2.7. Assuming that you have wired the MCP3008 to the Raspberry Pi's SPI bus using CE0 as the 'chip select' pin, you can read all eight analog inputs using the following Python script.

root@raspberrypi:/home# nano adc.py  

Paste the script below in the editor and save it.

import spidev  import time    spi = spidev.SpiDev()  spi.open(0,0)    # read SPI data from MCP3008 chip, 8 possible adc's (0 thru 7)  def readadc(adcnum):          if ((adcnum > 7) or (adcnum < 0)):                  return -1          r = spi.xfer2([1,(8 adcnum)<<4,0])          adcout = ((r[1]&3) << 8)   r[2]          return adcoutwhile True:          for adcInput in range(0,8):                  print "ADC(", adcInput,")=", readadc(adcInput)          time.sleep(1)  

To execute the script

root@raspberrypi:/home# python adc.py  

Sample output using a 10K Ohm trimpot connected to the ADC's pin 3 and all other pins pulled down to ground using a 10k resistor.

ADC( 0 )= 0  ADC( 1 )= 0  ADC( 2 )= 0  ADC( 3 )= 507  ADC( 4 )= 0  ADC( 5 )= 0  ADC( 6 )= 0  ADC( 7 )= 0  

Credits go to Jeremy for his work on the 'py-spidev' Python module which makes working with the MCP3008 straight forward. Alternatively, checkout wiringPi's SPI functions if you prefer using a 'C' API.

Related Tutorials & Samples

  • Loading I2C, SPI and 1-Wire drivers on the Raspberry Pi
  • Jeremy's Blog: Raspberry Pi hardware SPI analog inputs using the MCP3008
  • wiringPi 'C' API for interfacing with SPI, I2C, GPIOs and more
  • Adafruit Learning System
    • Save and Graph Analog Temperature Data
    • Note: Stock is currently available in South Africa for national shipping!
Add to cart

Recently viewed

See more
Red Car Front Fog Lamp Trim Frame Cover Sticker Trim
New
R499.00
Manhattan imPORT Link
New
R200.00
PS3 Eyecreate / Sas
Secondhand
R399.00 No bids
Building Blocks Figurines Frozen
New
R100.00

Similar products

ADS1256 High-precision ADC Module Conversion 24-bit 8-channel
New
R556.00
Converter dip analog to digital mcp3008-i/p
New
R101.94
Microchip (MCP3021A5T-E/OT) Analogue to Digital Converter, 10 bit
New
R165.00
31% OFF
USB Interface 16 Channel 12Bit AD Sampling Data Acquisition STM32 UART Communication ADC Module
New
R477.71 R690.18