Analog - Digital - Wandler

Bild

Was ist es?

Der Raspberry Pi besitzt nur digitale Ein- und Ausgänge, das heißt: Es können nur die Werte 1 oder 0 eingelesen werden. Mit Hilfe eines Analog-Digital-Wandlers können Analoge Signale von 0%-100% in feiner Abstufung erkannt werden. Ein AD-Wandler kommuniziert über den SPI Bus mit dem Raspberry Pi. Der AD-Wandler kann bis zu 8 analoge Geräte einlesen, diese können per Pythonscript ausgelesen, verarbeitet und angezeigt werden.

Fritzing

Hinweise

unterschiedliche Vorgehensweisen bei Raspberry Pi 2 und Raspberry Pi 3 beachten!!

(A) SPI Bus enabeln : (beim Pi3 nicht notwendig !, hier im raspi-config den SPI Bus enablen !!!)

sudo nano /etc/modprobe.d/raspi-blacklist.conf

bei der Zeile blacklist spi-bcm2708 ein # davorsetzen (#spi-bcm2708) (B) SPI-Modul automatisch laden beim booten:

sudo nano /etc/modules

einfach die Zeile spidev hinzufügen, speichern, beenden und rebooten: sudo reboot

(C) Checken, ob SPI-Geräte vorhanden sind: ls /dev/spidev* Antwort: /dev/spidev0.0 /dev/spidev0.1

(D) spidev Bibliothek installieren (wenn nicht schon geschehen…), beim Pi3 nicht notwendig !!!

(E) MCP3008 auslesen mit sudo nano spitest.py

spitest.py
import spidev
import time
spi = spidev.SpiDev()
spi.open(0,0) # bus und client bekommen beide die Nummern 0
while True:
channel=0 # Wir lesen Kanal 0 aus
wert=spi.xfer2([1, 128+(channel<<4), 0]) # Wir lesen 3 Bytes an
verschiedenen Stellen aus
print wert # Array wird angezeigt
time.sleep(2)
print (wert[1] &3) * 256 + wert[2] # Wir verrechnen die Bytes im
Array
time.sleep(2)

CODE

ad-wandler.py
#!/usr/bin/python
 
import spidev            #Bibliotheken importieren
import time
 
spi = spidev.SpiDev()    #spi als Funktion definieren
spi.open(0,1)
 
while True:                   #eigentliche Programmschleife, die als Ausgabe Voltzahlen liefert
antwort = spi.xfer([1,128,0])
if 0 < = antwort[1] <=3:
wert = ((antwort[1] * 256) + antwort[2]) * 0.00322
print wert ," V"
time.sleep(1)