Die Tatsache, dass der Raspberry Einplatinencomuter nur digitale Signale in Form von 0 und 1 (Low und high) messen kann, zwingt uns zusätzliche Hardware zu verwenden. Sobald also analoge Spannungswerte gemessen werden sollen benötigt man einen Wandler. Die zusätzliche Hardware kann ein MCP3008 A/D Wandler (Analog -> Digital) sein.
Wer eine der vielen Anleitungen im Internet nutzt und die Klasse MCP3008.py in Python erstellt muss nun auch die maximale Abtastfrequenz definieren, die in der siebten Zeile zu sehen ist. Die Klasse kann mittels dem „nano“ Editor als Textdatei erstellt werden. Dazu wird folgender Befehl ausgeführt
sudo nano MCP3008.py
Im nun offenen Editor kann der, um die Frequenz ergänzte Code hineinkopiert werden. Gespeichert wird mit CTRL+X, was wiederum mit J + ENTER quittiert wird.
from spidev import SpiDev
class MCP3008:
def __init__(self, bus = 0, device = 0):
self.bus, self.device = bus, device
self.spi = SpiDev()
self.open()
self.spi.max_speed_hz=100000
def open(self):
self.spi.open(self.bus, self.device)
def read(self, channel = 0):
adc = self.spi.xfer2([1, (8 + channel) << 4, 0])
data = ((adc[1] & 3) << 8) + adc[2]
return data
def close(self):
self.spi.close()
In der DIP (Dual in-line Package) Bauform passt dieser perfekt in ein Breadboard.