Lecture Analogique SPI

Le RPi ne dispose d’entrées analogiques. Pour palier à ce problème j’utilise un MCP3202 convertisseur avec deux entrées analogiques pour bus SPI

Schéma de câblage

MCP3202_01

Programme utilisé

J’ai installé un potentiomètre sur l’entrée « 0 » du MCP3202 afin de varier la tension entre 0 et 3,3V.

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Lire la valeur d'un potentiomètre sur le CH0 d'un MCP3202 sur un Raspberry Pi
#
import spidev #bibliothèque du SPI
import time
 
spi = spidev.SpiDev() #Création de l'objet SpiDev
spi.open(0, 0)	#Ouverture du Port 0 sur le Bus 0 du RPi
 
def Lireadc(adcnum):
	# Lire la valeur sur le MCP3202, 2 canaux (0, 1)
	if adcnum > 2 or adcnum < 0:
		return -1
	r = spi.xfer2([1, 8 + adcnum << 4, 0])
	adcout = ((r[1] & 3) << 8) + r[2]
	return adcout
 
while True:
	value = Lireadc(0)
	volts = (value * 3.3) / 1024
	print ("%4d/1023 => %5.3f V" % (value, volts))
	time.sleep(0.5) # Pause d'une demi-seconde

Sites utilisés

DataSheet MCP3202
Documentation SPI
scruss.com
thewagner.net