Keine plausiblen Werte – MCP3008 Probleme am Raspberry

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.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.