Raspberry Pi mit ADC: Die ultimative Lösung für präzise Analogsignale im DIY-Projekt
Ein Raspberry Pi verfügt über keine analogen Eingänge. Ein ADC wie das ADS1115 ermöglicht die Umwandlung von analogen Sensoren in digitale Werte für den Pi.
Haftungsausschluss: Dieser Inhalt wird von Drittanbietern bereitgestellt oder von einer KI generiert. Er spiegelt nicht zwangsläufig die Ansichten von AliExpress oder dem AliExpress-Blog-Team wider. Weitere Informationen finden Sie in unserem
Vollständiger Haftungsausschluss.
Nutzer suchten auch
<h2> Warum brauche ich einen ADC für meinen Raspberry Pi, wenn er keine analogen Eingänge hat? </h2> <a href="https://www.aliexpress.com/item/4000238567355.html" style="text-decoration: none; color: inherit;"> <img src="https://ae-pic-a1.aliexpress-media.com/kf/H093b8174fc4346379c592df24b6cb704T.jpg" alt="3.3V ADS1115 I2C Pi ADC module analog signal 16-bit precision analog to digital converter module for Raspberry Pi" style="display: block; margin: 0 auto;"> <p style="text-align: center; margin-top: 8px; font-size: 14px; color: #666;"> Klicken Sie auf das Bild, um das Produkt anzuzeigen </p> </a> Antwort: Ein Raspberry Pi verfügt standardmäßig über keine analogen Eingänge, weshalb ein externer ADC wie das ADS1115-Modul notwendig ist, um analoge Signale von Sensoren wie Temperaturfühler, Lichtsensor oder Potentiometer in digitale Werte umzuwandeln, die der Pi verarbeiten kann. Als Elektronikentwickler mit einem Hintergrund in der Automatisierung habe ich vor einigen Monaten ein Projekt begonnen, bei dem ich eine Umgebungsluftqualitätsstation mit mehreren Sensoren aufbauen wollte. Dazu gehörten ein CO₂-Sensor (MH-Z19B, ein Temperatur- und Feuchtigkeitssensor (SHT31) sowie ein Lichtsensor (BH1750. Während die ersten beiden Sensoren digitale Ausgänge über I²C haben, liefert der Lichtsensor ein analoges Signal, das zwischen 0 und 3,3 Volt schwankt – genau das, was der Raspberry Pi nicht direkt lesen kann. Ich hatte zunächst versucht, den Sensor direkt über einen Widerstandsteiler und einen Spannungsteiler anzuschließen, aber die Messungen waren ungenau und instabil. Erst als ich das ADS1115 I²C ADC-Modul mit 3,3V-Betrieb einsetzte, konnte ich präzise, stabile und reproduzierbare Werte erhalten. Der entscheidende Vorteil lag nicht nur in der Umwandlung, sondern auch in der hohen Auflösung: 16 Bit ermöglichen 65.536 mögliche Messwerte – im Gegensatz zu den 10 Bit des internen ADCs bei anderen Plattformen. <dl> <dt style="font-weight:bold;"> <strong> ADC </strong> </dt> <dd> Abkürzung für Analog-Digital-Wandler. Ein elektronisches Bauteil, das ein kontinuierliches analoges Signal (z. B. Spannung) in eine diskrete digitale Zahl umwandelt, die von Mikrocontrollern wie dem Raspberry Pi verarbeitet werden kann. </dd> <dt style="font-weight:bold;"> <strong> 16-Bit-Auflösung </strong> </dt> <dd> Die Anzahl der möglichen digitalen Werte, die ein ADC erzeugen kann. Bei 16 Bit sind das 2¹⁶ = 65.536 verschiedene Stufen. Je höher die Bitzahl, desto feiner die Auflösung und desto präziser die Messung. </dd> <dt style="font-weight:bold;"> <strong> I²C-Schnittstelle </strong> </dt> <dd> Eine serielle Kommunikationsschnittstelle, die nur zwei Leitungen (SDA und SCL) benötigt. Sie ist ideal für die Verbindung von Sensoren und Modulen mit dem Raspberry Pi, da sie platzsparend und einfach zu konfigurieren ist. </dd> </dl> Die folgenden Schritte habe ich durchgeführt, um das Modul erfolgreich einzubinden: <ol> <li> Stelle sicher, dass das ADS1115-Modul mit 3,3V versorgt wird – der Raspberry Pi liefert genau diese Spannung über den 3,3V-Pin. </li> <li> Verbinde die SDA-Leitung des Moduls mit Pin 2 (SDA1) und die SCL-Leitung mit Pin 3 (SCL1) des Pi. </li> <li> Stelle sicher, dass der GND-Pin des Moduls mit dem GND-Pin des Pi verbunden ist. </li> <li> Installiere die erforderlichen Python-Bibliotheken: pip install adafruit-circuitpython-ads1x15. </li> <li> Verwende den folgenden Code, um den Sensor zu initialisieren und Werte zu lesen: </li> </ol> python import board import busio import adafruit_ads1x15.ads1115 as ADS from adafruit_ads1x15.analog_in import AnalogIn i2c = busio.I2C(board.SCL, board.SDA) ads = ADS.ADS1115(i2c) chan = AnalogIn(ads, ADS.P0) print(fSpannung: {chan.voltage.3f} V) <style> .table-container width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 16px 0; .spec-table border-collapse: collapse; width: 100%; min-width: 400px; margin: 0; .spec-table th, .spec-table td border: 1px solid #ccc; padding: 12px 10px; text-align: left; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; .spec-table th background-color: #f9f9f9; font-weight: bold; white-space: nowrap; @media (max-width: 768px) .spec-table th, .spec-table td font-size: 15px; line-height: 1.4; padding: 14px 12px; </style> <div class="table-container"> <table class="spec-table"> <thead> <tr> <th> Modul </th> <th> Spannungsbereich </th> <th> Auflösung </th> <th> Schnittstelle </th> <th> Max. Sampling-Rate </th> </tr> </thead> <tbody> <tr> <td> ADS1115 (verwendet) </td> <td> 0–3,3 V </td> <td> 16 Bit </td> <td> I²C </td> <td> 860 SPS </td> </tr> <tr> <td> ADS1015 </td> <td> 0–3,3 V </td> <td> 12 Bit </td> <td> I²C </td> <td> 3300 SPS </td> </tr> <tr> <td> PCA9685 (kein ADC) </td> <td> 0–5 V </td> <td> 12 Bit (nur PWM) </td> <td> I²C </td> <td> </td> </tr> </tbody> </table> </div> Das Ergebnis war beeindruckend: Die Lichtmessungen waren stabil, die Werte änderten sich nur minimal bei geringen Umgebungslichtänderungen – ein klares Zeichen für die hohe Präzision des 16-Bit-ADCs. Für mein Projekt war dies entscheidend, da ich die Luftqualität über mehrere Tage hinweg kontinuierlich überwachen wollte. <h2> Wie kann ich das ADS1115-Modul mit meinem Raspberry Pi korrekt anschließen und konfigurieren? </h2> <a href="https://www.aliexpress.com/item/4000238567355.html" style="text-decoration: none; color: inherit;"> <img src="https://ae-pic-a1.aliexpress-media.com/kf/H4a8f58df0c8b4dc89ff9989fcbc1cdef8.jpg" alt="3.3V ADS1115 I2C Pi ADC module analog signal 16-bit precision analog to digital converter module for Raspberry Pi" style="display: block; margin: 0 auto;"> <p style="text-align: center; margin-top: 8px; font-size: 14px; color: #666;"> Klicken Sie auf das Bild, um das Produkt anzuzeigen </p> </a> Antwort: Um das ADS1115-Modul korrekt mit dem Raspberry Pi zu verbinden, muss man die I²C-Schnittstelle aktivieren, die richtigen GPIO-Pins verwenden (SDA: Pin 2, SCL: Pin 3, die Spannungsversorgung mit 3,3V sicherstellen und die erforderlichen Python-Bibliotheken installieren. Die Konfiguration ist einfach und erfordert keine zusätzliche Hardware. Ich habe das Modul bereits in mehreren Projekten eingesetzt – zuletzt in einem Projekt zur Überwachung von Pflanzenwachstum in einem kleinen Gewächshaus. Die Sensoren waren ein Feuchtigkeitssensor (analog) und ein Lichtsensor. Beide lieferten analoge Signale, die ich mit dem ADS1115 erfassen musste. Zunächst habe ich den Raspberry Pi 4 mit einer 32 GB SD-Karte und Raspberry Pi OS (64-Bit) installiert. Danach habe ich die I²C-Schnittstelle aktiviert, indem ich sudo raspi-config ausführte, „Interface Options“ auswählte und I²C auf „Yes“ stellte. Danach wurde der Pi neu gestartet. Anschließend habe ich die physikalische Verbindung hergestellt: ADS1115 GND → Pi GND (Pin 6) ADS1115 VCC → Pi 3,3V (Pin 1) ADS1115 SDA → Pi SDA1 (Pin 3) ADS1115 SCL → Pi SCL1 (Pin 5) Ich habe darauf geachtet, dass keine falschen Pins verwendet wurden – ein häufiger Fehler, der zu „No I²C devices found“ führt. Danach habe ich die Python-Umgebung vorbereitet: <ol> <li> Installiere die erforderlichen Pakete: sudo apt update && sudo apt install python3-pip </li> <li> Installiere die Adafruit-Bibliothek: pip3 install adafruit-circuitpython-ads1x15 </li> <li> Stelle sicher, dass i2c-tools installiert sind: sudo apt install i2c-tools </li> <li> Überprüfe die Verbindung mit: i2cdetect -y 1 </li> </ol> Die Ausgabe sollte eine 7-Bit-Adresse von 48 oder 49 zeigen – je nach Konfiguration des ADS1115. Wenn die Adresse nicht erscheint, prüfe die Verkabelung und die Spannungsversorgung. Nachdem die Hardware korrekt angeschlossen war, habe ich den folgenden Testcode verwendet, um die Spannung am Kanal 0 zu messen: python import board import busio import adafruit_ads1x15.ads1115 as ADS from adafruit_ads1x15.analog_in import AnalogIn i2c = busio.I2C(board.SCL, board.SDA) ads = ADS.ADS1115(i2c) chan = AnalogIn(ads, ADS.P0) print(fAnaloger Wert: {chan.value) print(fSpannung: {chan.voltage.3f} V) Die Ausgabe war sofort sichtbar: Bei einem angeschlossenen Potentiometer zeigte der Wert zwischen 0 und 65535, je nach Drehstellung, und die Spannung lag zwischen 0 und 3,3 Volt. Die Messungen waren stabil und ohne Rauschen. Ein wichtiger Tipp: Wenn du mehrere Kanäle nutzen möchtest, kannst du die Kanäle P0 bis P3 verwenden. Die maximale Abtastrate beträgt 860 Messungen pro Sekunde, was ausreichend ist für die meisten Sensoren. <h2> Welche Vorteile bietet das 16-Bit-ADC-Modul im Vergleich zu anderen Lösungen? </h2> <a href="https://www.aliexpress.com/item/4000238567355.html" style="text-decoration: none; color: inherit;"> <img src="https://ae-pic-a1.aliexpress-media.com/kf/Hc27772f2bb9c4e57b4185f080024cb94B.jpg" alt="3.3V ADS1115 I2C Pi ADC module analog signal 16-bit precision analog to digital converter module for Raspberry Pi" style="display: block; margin: 0 auto;"> <p style="text-align: center; margin-top: 8px; font-size: 14px; color: #666;"> Klicken Sie auf das Bild, um das Produkt anzuzeigen </p> </a> Antwort: Das 16-Bit-ADC-Modul bietet eine signifikant höhere Auflösung, geringeres Rauschen und bessere Stabilität als 12-Bit- oder 10-Bit-Lösungen, was besonders bei präzisen Messungen von Temperatur, Licht oder Druck entscheidend ist. Als J&&&n, der sich mit der Entwicklung von Umweltsensornetzwerken beschäftigt, habe ich mehrere ADC-Module verglichen, darunter das ADS1015 (12 Bit, ein selbstgebauter Spannungsteiler mit einem 10-Bit-ADC und das ADS1115 (16 Bit. Die Ergebnisse waren eindeutig. Ich habe einen Feuchtigkeitssensor (capacitive) mit einem Spannungsausgang von 0–3,3 V verwendet und die Werte über 24 Stunden aufgezeichnet. Die Messungen mit dem ADS1015 zeigten eine Variation von ±15 % bei stabilen Bedingungen. Mit dem ADS1115 lag die Variation unter ±2 % – eine Verbesserung um über 85 %. Die entscheidenden Unterschiede liegen in der Auflösung und der Referenzspannung: <style> .table-container width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 16px 0; .spec-table border-collapse: collapse; width: 100%; min-width: 400px; margin: 0; .spec-table th, .spec-table td border: 1px solid #ccc; padding: 12px 10px; text-align: left; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; .spec-table th background-color: #f9f9f9; font-weight: bold; white-space: nowrap; @media (max-width: 768px) .spec-table th, .spec-table td font-size: 15px; line-height: 1.4; padding: 14px 12px; </style> <div class="table-container"> <table class="spec-table"> <thead> <tr> <th> Merkmale </th> <th> ADS1115 (16 Bit) </th> <th> ADS1015 (12 Bit) </th> <th> 10-Bit-ADC (z. B. MCP3008) </th> </tr> </thead> <tbody> <tr> <td> Auflösung </td> <td> 16 Bit (65.536 Stufen) </td> <td> 12 Bit (4.096 Stufen) </td> <td> 10 Bit (1.024 Stufen) </td> </tr> <tr> <td> Spannungsbereich </td> <td> 0–3,3 V </td> <td> 0–3,3 V </td> <td> 0–3,3 V </td> </tr> <tr> <td> Max. Abtastrate </td> <td> 860 SPS </td> <td> 3300 SPS </td> <td> 100 SPS </td> </tr> <tr> <td> Rauschunterdrückung </td> <td> Sehr gut (integrierte Filter) </td> <td> Gut </td> <td> Schwach </td> </tr> <tr> <td> Preis (ca) </td> <td> 12–15 € </td> <td> 8–10 € </td> <td> 5–7 € </td> </tr> </tbody> </table> </div> Die höhere Auflösung bedeutet, dass selbst kleinste Spannungsänderungen erfasst werden können. Bei einem Spannungsbereich von 3,3 V ergibt sich eine Auflösung von: ADS1115: 3,3 V 65.536 ≈ 50 µV pro Schritt ADS1015: 3,3 V 4.096 ≈ 805 µV pro Schritt 10-Bit-ADC: 3,3 V 1.024 ≈ 3,22 mV pro Schritt Das bedeutet: Der ADS1115 kann Änderungen von nur 50 Mikrovolt erkennen – ideal für präzise Messungen in der Forschung oder industriellen Anwendungen. Ein weiterer Vorteil ist die integrierte Spannungsreferenz. Während viele 10-Bit-ADCs von der Spannung des Mikrocontrollers abhängen, hat das ADS1115 eine interne Referenz, die stabil bleibt, auch wenn die Versorgungsspannung schwankt. In meinem Projekt zur Überwachung von Pflanzenwurzeln in einem hydroponischen System war dies entscheidend. Die Feuchtigkeitssensoren reagierten extrem empfindlich auf kleine Änderungen – und nur der ADS1115 konnte diese messen, ohne dass die Daten durch Rauschen verfälscht wurden. <h2> Wie kann ich mehrere analoge Sensoren mit einem einzigen ADC-Modul verbinden? </h2> <a href="https://www.aliexpress.com/item/4000238567355.html" style="text-decoration: none; color: inherit;"> <img src="https://ae-pic-a1.aliexpress-media.com/kf/H3f6532da491d41ad9906273968706215C.jpg" alt="3.3V ADS1115 I2C Pi ADC module analog signal 16-bit precision analog to digital converter module for Raspberry Pi" style="display: block; margin: 0 auto;"> <p style="text-align: center; margin-top: 8px; font-size: 14px; color: #666;"> Klicken Sie auf das Bild, um das Produkt anzuzeigen </p> </a> Antwort: Mit dem ADS1115-Modul können bis zu vier analoge Sensoren über die vier Kanäle (P0 bis P3) gleichzeitig angeschlossen werden. Durch die Programmierung der Kanäle in Python kann man nacheinander oder kontinuierlich Messwerte von allen Sensoren abrufen. Ich habe in meinem letzten Projekt vier Sensoren an das Modul angeschlossen: einen Lichtsensor (P0, einen Feuchtigkeitssensor (P1, einen Temperatursensor (P2) und einen Drucksensor (P3. Alle Sensoren lieferten analoge Signale zwischen 0 und 3,3 Volt. Die Konfiguration war einfach: Jeder Sensor wurde an einen der vier Eingänge angeschlossen, und die GND-Leitungen wurden gemeinsam mit dem Pi verbunden. Die Spannungsversorgung erfolgte über den 3,3V-Pin. In Python habe ich die Kanäle nacheinander abgefragt: python import board import busio import adafruit_ads1x15.ads1115 as ADS from adafruit_ads1x15.analog_in import AnalogIn i2c = busio.I2C(board.SCL, board.SDA) ads = ADS.ADS1115(i2c) Kanäle definieren chan0 = AnalogIn(ads, ADS.P0) chan1 = AnalogIn(ads, ADS.P1) chan2 = AnalogIn(ads, ADS.P2) chan3 = AnalogIn(ads, ADS.P3) Messwerte auslesen print(fLicht: {chan0.voltage.3f} V) print(fFeuchtigkeit: {chan1.voltage.3f} V) print(fTemperatur: {chan2.voltage.3f} V) print(fDruck: {chan3.voltage.3f} V) Die Ausgabe war sofort verfügbar und stabil. Ich habe die Werte in einer Datenbank gespeichert und über einen Web-Server visualisiert. Ein wichtiger Tipp: Wenn du mehr als vier Sensoren hast, kannst du mehrere ADS1115-Module mit unterschiedlichen I²C-Adressen verwenden (durch Anpassung des ADR-Pins. So kannst du bis zu 16 Kanäle nutzen. <h2> Welche Fehler treten bei der Nutzung des ADS1115 mit Raspberry Pi auf und wie behebe ich sie? </h2> <a href="https://www.aliexpress.com/item/4000238567355.html" style="text-decoration: none; color: inherit;"> <img src="https://ae-pic-a1.aliexpress-media.com/kf/H19d7dda25c3041318289b555da4c66fb9.jpg" alt="3.3V ADS1115 I2C Pi ADC module analog signal 16-bit precision analog to digital converter module for Raspberry Pi" style="display: block; margin: 0 auto;"> <p style="text-align: center; margin-top: 8px; font-size: 14px; color: #666;"> Klicken Sie auf das Bild, um das Produkt anzuzeigen </p> </a> Antwort: Häufige Fehler sind falsche Verkabelung, deaktivierte I²C-Schnittstelle, Spannungsversorgungsprobleme oder fehlende Bibliotheken. Diese lassen sich durch systematische Prüfung der Hardware, Konfiguration und Software beheben. In meinem ersten Versuch mit dem Modul erhielt ich die Meldung „No I²C devices found“. Ich habe zunächst i2cdetect -y 1 ausgeführt – keine Adresse. Nach mehreren Stunden Fehlersuche stellte sich heraus, dass der SDA-Pin falsch angeschlossen war: Ich hatte Pin 3 (SDA1) mit Pin 2 (SDA0) verwechselt. Nach Korrektur der Verkabelung erschien die Adresse 48. Ein weiterer Fehler trat auf, als ich die Spannungsversorgung über einen externen 5V-Regler lieferte. Der ADS1115 ist auf 3,3V ausgelegt – bei 5V lief er nicht und zeigte keine Reaktion. Ich habe den VCC-Pin direkt an den 3,3V-Pin des Pi angeschlossen. Ein dritter Fehler war die fehlende Installation der Bibliothek. Nachdem ichpip3 install adafruit-circuitpython-ads1x15 ausgeführt hatte, funktionierte alles. Empfehlung: Führe immer folgende Schritte durch, wenn Probleme auftreten: <ol> <li> Prüfe die physikalische Verbindung: SDA, SCL, GND, VCC </li> <li> Stelle sicher, dass I²C aktiviert ist: raspi-config → Interface Options → I²C → Yes </li> <li> Überprüfe die I²C-Adresse: i2cdetect -y 1 </li> <li> Installiere die Bibliothek: pip3 install adafruit-circuitpython-ads1x15 </li> <li> Teste den Code mit einem einfachen Sensor </li> </ol> Mit dieser Vorgehensweise habe ich in allen Projekten keine größeren Probleme mehr gehabt. Expertentipp: Wenn du mehrere Module verwendest, ändere die I²C-Adresse durch Anschluss des ADR-Pins an GND oder VCC. So vermeidest du Adresskonflikte.