Erweitern Sie die Fähigkeiten Ihres Raspberry Pi mit einem ADC-Wandler: Was Sie wissen müssen

Der Raspberry Pi ist ein hervorragendes Gerät für verschiedene elektronische Projekte, aber durch die Verwendung eines ADC-Wandlers können Sie seine Fähigkeiten erweitern, um analoge Signale zu messen und mit einer größeren Auswahl an Geräten zu interagieren.

Dem Raspberry Pi fehlen standardmäßig analoge Eingänge. Dies stellt einen Nachteil gegenüber Mikrocontroller-basierten Platinen wie dem Arduino dar.

Aber verzweifeln Sie nicht: Es gibt viele Möglichkeiten, die Sie in Betracht ziehen können. Sie können mit einem Raspberry Pi und einem externen ADC loslegen. In diesem Leitfaden geben wir Ihnen einen umfassenden Überblick über die Verwendung eines ADC-Wandlers mit einem Raspberry Pi und konzentrieren uns dabei auf die wichtigsten Schritte und potenziellen Vorteile. Lesen Sie weiter, um zu erfahren, wie Sie Ihr Gerät optimal nutzen und es effektiv in Ihre elektronischen Projekte integrieren können. Verifizieren Was ist ein Analog-Digital-Wandler (ADC)? Verstehen Sie seine Arbeit und ihre Bedeutung im Zeitalter der digitalen Technologie.

Warum möchten Sie Einträge hinzufügen?

Die reale Welt ist voller Phänomene, die sich mit der richtigen Schaltung leicht mit Spannung beschreiben lassen. Wandeln Sie diese elektrischen Spannungen in digitale Form um und Sie können sie aufzeichnen, verarbeiten und zur Steuerung von Parametern und anderen Geräten verwenden.

Vielleicht möchten Sie die Feuchtigkeit Ihres Bodens, die Temperatur Ihres Gewächshauses oder das Gewicht Ihres Hamsters überwachen. Vielleicht möchten Sie Ihrem Pi einen Lautstärkeregler hinzufügen, einen Equalizer bauen oder einen Joystick von Grund auf entwerfen. Die Möglichkeiten sind mehr oder weniger grenzenlos.

ADC-Optionen

Welcher ADC eignet sich also am besten für Anfänger?

Zu den beliebtesten und unkompliziertesten Optionen gehören Chipsätze MCP3004 (Und MCP3008) von Microchip. Sie erhalten vier (oder acht) 10-Bit-Kanäle, die bis zu 200 SPS lesen können. Auf der anderen Seite gibt es die ADS111x-Geräte von Texas Instruments, die 16 Bit bei 860 SPS lesen. Daher gibt es einen Kompromiss zwischen Geschwindigkeit und Genauigkeit (und natürlich dem Preis).

Viele Mikrocontroller verfügen über integrierte ADC-Wandler. Der ATMega, den Sie in einem durchschnittlichen Arduino finden, bietet mehrere 10-Bit-Kanäle und alles andere. Dies ermöglicht es dem Arduino, analoge Eingänge bereitzustellen, wo der Raspberry Pi dies nicht kann. Wenn Sie bereits einen Arduino in Ihr Setup eingebunden haben und 10 Bit Genauigkeit ausreichen, ist dies möglicherweise tatsächlich die einfachste Methode.

Hier machen wir es einfach, mit dem ADS1115 von Adafruit. Verifizieren Vor- und Nachteile der Verwendung eines Arduino-Klons in Ihren Projekten.

Was ist ein Verstärker mit programmierbarer Verstärkung?

Dieser Chip verfügt über einige interessante Funktionen, darunter einen Programmable Gain Amplifier (PGA). Dadurch können Sie den gewünschten Wertebereich bis auf den Bruchteil einer Spannung digital anpassen. Mit der Anzahl der Werte, die 16 Bit darstellen können, können Sie so Unterschiede von nur wenigen Mikrovolt erkennen.

Der Vorteil hierbei ist, dass man die Verstärkung in der Mitte verändern kann. Andere Chips wie der MCP3004 verfolgen einen anderen Ansatz; Es verfügt über einen zusätzlichen Pin, für den Sie eine Referenzspannung bereitstellen können.

Was ist mit Multiplexing?

Ein Multiplexer (oder Mux) ist ein Schalter, der es Ihnen ermöglicht, mehrere Eingänge mit einem einzigen ADC zu lesen. Wenn Ihr ADC-Chip über mehrere Eingangsports verfügt, findet ein gewisses internes Multiplexing statt. Der Mux des ADS1115 ermöglicht vier Eingänge, die Sie über interne Register auswählen können.

Umgang mit Aufzeichnungen

Der ADS1115 bietet diese und noch einige weitere Optionen. Sie können den Multiplexer manipulieren, die Verstärkung anpassen, den integrierten Komparator aktivieren, die Abtastrate ändern und das Gerät in den Energiesparmodus versetzen – alles durch Antippen einiger Tasten.

Aber wo sind diese Schlüssel? Sie liegen innerhalb des Pakets in Form sehr kleiner Speicherstücke vor, die als Register bezeichnet werden. Um eine bestimmte Funktion zu aktivieren, setzen Sie einfach das entsprechende Bit auf 1 statt auf 0.

Blick auf ein Datenblatt ADS111xSie werden feststellen, dass diese Modelle über vier Register verfügen, darunter Konfigurationsregister, die das Verhalten des Geräts steuern.

Beispielsweise steuern die Bits 14 bis 12 den Multiplexer. Mithilfe dieser drei Bits können Sie aus acht Konfigurationen wählen. Die gewünschte Zahl ist hier „100“, was die Differenz zwischen dem Nulleintrag und dem Minimum angibt. Andererseits steuern die Bits 7 bis 5 die Abtastrate. Wenn Sie das Maximum von 860 Samples pro Sekunde wünschen, können Sie es auf „111“ einstellen.

Sobald Sie wissen, welche Optionen Sie festlegen möchten, müssen Sie zwei Bytes an den ADC senden. Wenn Sie später hier oder da ein einzelnes Bit setzen möchten, können Sie diese mithilfe von Bitoperatoren einzeln behandeln.

Hier kann es verwirrend werden. In diesem Fall stellt die Binärdatei keinen Wert dar, sondern die Werte der einzelnen Transformatoren. Sie können diese Variablen als eine große Zahl dezimal oder hexadezimal ausdrücken. Wer jedoch Stress vermeiden möchte, sollte sich an die Binärversion halten, die einfacher zu lesen ist.

Verbindungsdrähte

Sie können diesen Adapter direkt an das Einzelpanel anschließen. Es akzeptiert positive Spannungseingänge zwischen 2 und 5.5 Volt, was bedeutet, dass die 3.3-Volt-Schiene des Raspberry Pi einwandfrei funktioniert.

Verbinden Sie die SDA- und SCL-Eingänge mit ihren Gegenstücken am RPi und machen Sie dasselbe mit Masse und 3.3 V. Bringen Sie ein Voltmeter zwischen Masse und Spannungsleitungen an und stecken Sie dann den mittleren Draht in den ersten Eingang des ADC. Das ist alles, was Sie brauchen, um loszulegen!

Umgang mit I2C

Verschiedene ADCs arbeiten mit unterschiedlichen Protokollen. Im Fall des ADS1115 verwenden wir I2C.

Das folgende Beispiel interagiert mit dem ADC über Python. Aber bevor Sie das tun, müssen Sie es einrichten. Aktuelle Versionen des Raspberry Pi OS haben dies sehr einfach gemacht. Gehe zu Einstellungen > Raspberry Pi-Konfiguration. Aktivieren Sie dann auf der Registerkarte „Schnittstellen“ I2C.

Um zu überprüfen, ob alles funktioniert, öffnen Sie Terminal und führen Sie Folgendes aus:

sudo i2cdetect -y 1

Dieser Befehl gibt ein Netz aus. Vorausgesetzt, dass alles funktioniert und Sie es richtig angeschlossen haben, wird im Raster ein neuer Wert angezeigt. Dies ist die Adresse Ihres ADC. Beachten Sie hierbei, dass es sich um einen Hexadezimalwert handelt. Sie müssen ihm also „0x“ voranstellen, wenn Sie ihn im folgenden Code verwenden. Und hier ist 0x48:

Sobald Sie die Adresse haben, können Sie die SMBus-Bibliothek zum Senden von I2C-Befehlen verwenden. Sie werden sich hier mit zwei Methoden befassen. Das erste ist write_word_data(), das drei Argumente akzeptiert: die Geräteadresse, das Register, in das Sie schreiben, und den Wert, den Sie schreiben möchten.

Das zweite ist read_word_data(), Akzeptiert nur Geräteadresse und -verlauf. Der ADC liest die Spannungen kontinuierlich und speichert das Ergebnis im Schaltregister. Mit dieser Methode können Sie den Inhalt dieses Datensatzes abrufen.

Sie können das Ergebnis ein wenig verschönern und es dann ausdrucken. Machen Sie eine kurze Pause, bevor Sie zum Anfang der Schleife zurückkehren. Dadurch wird sichergestellt, dass Sie nicht mit Daten überhäuft werden.

ab smbus importieren SMBus
importieren Zeitadresse = 0x48
Bus = SMBus(1)

# die Register zum Lesen einstellen
CONFIGREG = 1
CONVERSIONREG = 0# Stellen Sie das Adressregister so ein, dass es auf das Konfigurationsregister zeigt# in die Konfigurationsregister schreiben
bus.write_word_data(Adresse, CONFIGREG, (0b00000100 << 8 | 0b10000010)) 

# Definieren Sie die Obergrenze des Bereichs
TOP = 26300und gleichzeitig dierichtig:
 # das Register lesen
 b = bus.read_word_data(Adresse, CONVERSIONREG)

 # tausche die beiden Bytes
 b = ((b & 0xFF) < 8) | ((b >> 8) & 0xFF)
 
 # Subtrahieren Sie die Hälfte der Reichweite, um den Boden auf Null zu setzen
 b -= 0x8000# Teilen Sie das Ergebnis durch den Bereich, um einen Wert zwischen null und eins zu erhalten
 b /= TOP

 # Deckelung bei eins
 b = min(B, 1)

 # unten ist Null
 b = max(B, 0)

 # zwei Dezimalstellen
 b = rund(B, 2)
 print(b) Zeit.Schlaf(.01)

Du bist fast fertig. Stellen Sie den Wertebereich, den Sie erhalten, auf den von Ihnen bevorzugten Wert ein und kürzen Sie ihn dann auf die gewünschte Anzahl von Dezimalstellen. Sie können die Druckfunktion so anpassen, dass nur dann ein neuer Wert gedruckt wird, wenn dieser vom letzten Wert abweicht.

Umgang mit Lärm

Wenn Ihr Setup nicht wirklich schön, ordentlich und aufgeräumt ist, werden Sie einige Geräusche bemerken. Dies ist der inhärente Nachteil der Verwendung von 16 Bit anstelle von nur zehn: Das geringe Rauschen fällt deutlicher auf.

Indem Sie den benachbarten Eingang (Eingang 1) mit Masse verbinden und den Modus so umschalten, dass Sie den ersten und zweiten Eingang vergleichen, können Sie stabilere Ergebnisse erzielen. Sie können bei dieser Anpassung auch lange rauschaufnehmende Kabel durch kleinere ersetzen und ein paar Kondensatoren hinzufügen. Auch der Wert Ihres Potentiometers kann einen Unterschied machen.

Es gibt auch Softwareoptionen. Sie können einen gleitenden Durchschnitt erstellen oder kleine Änderungen einfach ignorieren. Der Nachteil besteht darin, dass der zusätzliche Code einen Rechenaufwand verursacht. Wenn Sie bedingte Anweisungen in einer Hochsprache wie Python schreiben und jede Sekunde Tausende von Proben nehmen, summieren sich diese Kosten schnell. Verifizieren Anleitung zur Temperaturüberwachung für Raspberry Pi und Sense HAT: Beste Schritte und Tipps.

häufige Fragen

Q1. Was ist ein ADC-Wandler und wie funktioniert er mit Raspberry Pi?

Ein ADC (Analog-Digital-Wandler) ist ein Gerät, das analoge Signale in digitale Signale umwandelt. Ein ADC kann an einen Raspberry Pi angeschlossen werden, damit dieser analoge Signale von Quellen wie Sensoren und Umgebungsvariablen lesen kann.

Q2. Was sind die Hauptvorteile der Verwendung eines ADC-Wandlers mit Raspberry Pi?

  • Erweitern Sie die Messmöglichkeiten: Ermöglicht die Verwendung analoger Signale wie Licht, Temperatur, Ton und mehr.
  • Höhere Genauigkeit: Die Umwandlung analoger Signale in digitale sorgt für eine höhere Genauigkeit der Messwerte.
  • Unterstützt eine Vielzahl von Geräten: Es kann mit einer Vielzahl elektronischer Geräte und Raspberry Pi-Projekte verwendet werden.

Q3. Wie schließe ich einen ADC-Wandler an einen Raspberry Pi an?

Über die GPIO-Schnittstelle kann der ADC-Wandler mit entsprechenden Kabeln und Steckern an den Raspberry Pi angeschlossen werden. Sie müssen vorsichtig sein und die dem ADC-Wandler beiliegende Kommunikationsanleitung befolgen.

Q4. Kann ich den ADC-Wandler mit allen Versionen des Raspberry Pi verwenden?

Ja, der ADC kann mit den meisten Versionen des Raspberry Pi verwendet werden. Möglicherweise müssen Sie jedoch erwägen, den Adapter an den entsprechenden GPIO-Port für Ihre spezielle Hardwareversion anzuschließen.

F5. Erfordert die Verwendung eines ADC-Wandlers Programmiererfahrung?

Das hängt vom Umfang des Projekts ab. In einfachen Fällen können vorgefertigte Bibliotheken verwendet werden. Allerdings erfordern einige Projekte möglicherweise Programmierkenntnisse, um die Daten effektiv nutzen zu können.

Wir gehen mit mehreren möglichen nächsten Schritten voran

Die Messung über I2C ist sehr einfach und das Gleiche gilt auch für andere Methoden, wie zum Beispiel SPI. Auch wenn es den Anschein hat, dass es erhebliche Unterschiede zwischen den verfügbaren ADC-Optionen gibt, ist es in Wahrheit so, dass es einfach ist, das Wissen auf die anderen anzuwenden, sobald man eine davon in Betrieb hat.

Warum gehen wir also nicht weiter? Verbinden Sie mehrere Potentiometer miteinander oder versuchen Sie, Licht, Ton oder Temperatur abzulesen. Erweitern Sie den soeben erstellten Controller und erstellen Sie ein Raspberry Pi-Setup, das wirklich funktionsfähig ist! Sie können es jetzt ansehen Mögliche Herausforderungen beim Selbsthosten Ihrer Projekte auf Raspberry Pi.

Nach oben gehen