- Erforderliche Komponenten
- PCF8591 ADC / DAC-Modul
- I2C-Pins in Raspberry Pi
- Verbindung des ADC / DAC-Moduls PCF8591 mit Raspberry Pi
- Python-Programm für die Analog-Digital-Konvertierung (ADC)
Die Analog-Digital-Wandlung ist eine sehr wichtige Aufgabe in der eingebetteten Elektronik, da die meisten Sensoren eine Ausgabe als analoge Werte liefern. Um sie in einen Mikrocontroller einzuspeisen, der nur Binärwerte versteht, müssen wir sie in digitale Werte umwandeln. Um die analogen Daten verarbeiten zu können, benötigen Mikrocontroller einen Analog-Digital-Wandler.
Einige Mikrocontroller haben einen eingebauten ADC wie Arduino, MSP430, PIC16F877A, aber einige Mikrocontroller haben ihn nicht wie 8051, Raspberry Pi usw. und wir müssen einige externe Analog-Digital-Wandler-ICs wie ADC0804, ADC0808 verwenden. Nachfolgend finden Sie verschiedene Beispiele für ADC mit verschiedenen Mikrocontrollern:
- Wie verwende ich ADC in Arduino Uno?
- Raspberry Pi ADC Tutorial
- Schnittstelle zwischen ADC0808 und 8051-Mikrocontroller
- 0-25V Digital Voltmeter mit AVR Mikrocontroller
- Verwendung von ADC in STM32F103C8
- Verwendung von ADC in MSP430G2
- Verwendung von ADC in ARM7 LPC2148
- Verwendung des ADC-Moduls des PIC-Mikrocontrollers mit MPLAB und XC8
In diesem Tutorial erfahren Sie, wie Sie das ADC / DAC-Modul PCF8591 mit Raspberry Pi verbinden.
Erforderliche Komponenten
- Himbeer-Pi
- PCF8591 ADC-Modul
- 100K Pot
- Überbrückungskabel
Es wird davon ausgegangen, dass Sie Raspberry Pi mit dem neuesten Raspbian-Betriebssystem installiert haben und wissen, wie Sie mit einer Terminalsoftware wie Putty SSH in den Pi einbinden. Wenn Sie Raspberry Pi noch nicht kennen, folgen Sie diesem Artikel, um mit Raspberry Pi zu beginnen. Wenn Sie dennoch auf ein Problem stoßen, gibt es unzählige Raspberry Pi-Tutorials, die Ihnen helfen können.
PCF8591 ADC / DAC-Modul
PCF8591 ist ein 8-Bit-Analog-Digital- oder 8-Bit-Digital-Analog-Wandlermodul, dh jeder Pin kann analoge Werte bis zu 256 lesen. Auf der Platine befinden sich außerdem LDR- und Thermistorschaltungen. Dieses Modul verfügt über vier Analogeingänge und einen Analogausgang. Es funktioniert mit I 2 C-Kommunikation, daher gibt es SCL- und SDA-Pins für die serielle Uhr und die serielle Datenadresse. Es benötigt eine Versorgungsspannung von 2,5-6 V und hat einen niedrigen Standby -Strom. Wir können die Eingangsspannung auch manipulieren, indem wir den Knopf des Potentiometers am Modul einstellen. Es gibt auch drei Jumper auf dem Brett. J4 ist angeschlossen, um die Thermistor-Zugangsschaltung auszuwählen, J5 ist angeschlossen, um die LDR / Fotowiderstand-Zugangsschaltung auszuwählenund J6 ist angeschlossen, um die einstellbare Spannungszugriffsschaltung auszuwählen. Auf Karte D1 befinden sich zwei LEDs, und D2 - D1 zeigt die Intensität der Ausgangsspannung und D2 die Intensität der Versorgungsspannung. Je höher die Ausgangs- oder Versorgungsspannung, desto höher die Intensität der LED D1 oder D2. Sie können diese LEDs auch mit einem Potentiometer am VCC oder am AOUT-Pin testen.
I2C-Pins in Raspberry Pi
Um PCF8591 mit Raspberry Pi zu verwenden, müssen Sie zunächst die Raspberry Pi I2C-Port-Pins kennen und den I2C-Port im Raspberry Pi konfigurieren.
Unten sehen Sie das Pin-Diagramm des Raspberry Pi 3 Modell B +. In diesem Lernprogramm werden die I2C-Pins GPIO2 (SDA) und GPIO3 (SCL) verwendet.
I2C in Raspberry Pi konfigurieren
Standardmäßig ist I2C in Raspberry Pi deaktiviert. Also muss es zuerst aktiviert werden. So aktivieren Sie das I2C in Raspberry Pi
1. Gehen Sie zum Terminal und geben Sie sudo raspi-config ein.
2. Nun erscheint das Raspberry Pi Software Configuration Tool.
3. Wählen Sie Schnittstellenoptionen und aktivieren Sie dann den I2C.
4. Nach dem Aktivieren des I2C starten Sie den Pi neu.
Scannen der I2C-Adresse von PCF8591 mit Raspberry Pi
Um nun die Kommunikation mit dem PCF8591-IC zu starten, muss der Raspberry Pi seine I2C-Adresse kennen. Um die Adresse zu finden, verbinden Sie zuerst den SDA- und SCL-Pin von PCF8591 mit dem SDA- und SCL-Pin von Raspberry Pi. Verbinden Sie auch die Pins + 5V und GND.
Öffnen Sie nun das Terminal und geben Sie den folgenden Befehl ein, um die Adresse des angeschlossenen I2C-Geräts zu ermitteln.
sudo i2cdetect –y 1 oder sudo i2cdetect –y 0
Nachdem Sie die I2C-Adresse gefunden haben, ist es jetzt an der Zeit, die Schaltung aufzubauen und die erforderlichen Bibliotheken für die Verwendung von PCF8591 mit Raspberry Pi zu installieren.
Verbindung des ADC / DAC-Moduls PCF8591 mit Raspberry Pi
Der Schaltplan für die Schnittstelle von PCF8591 mit Raspberry Pi ist einfach. In diesem Schnittstellenbeispiel lesen wir die analogen Werte von einem der analogen Pins und zeigen sie am Raspberry Pi-Terminal an. Wir können die Werte mit einem 100K-Pot ändern.
Verbinden Sie VCC und GND mit GPIO2 und GPIO von Raspberry Pi. Verbinden Sie anschließend SDA und SCL mit GPIO3 bzw. GPIO5. Schließen Sie zum Schluss einen 100K Pot mit AIN0 an. Sie können auch ein 16x2-LCD hinzufügen, um ADC-Werte anzuzeigen, anstatt sie auf dem Terminal anzuzeigen. Erfahren Sie hier mehr über die Verbindung von 16x2 LCD mit Raspberry Pi.
Python-Programm für die Analog-Digital-Konvertierung (ADC)
Das vollständige Programm und das Arbeitsvideo finden Sie am Ende dieses Tutorials.
Importieren Sie zunächst die smbus- Bibliothek für die I 2 C- Buskommunikation und die Zeitbibliothek , um eine Ruhezeit zwischen dem Drucken des Werts anzugeben .
Import Smbus Importzeit
Definieren Sie nun einige Variablen. Die erste Variable enthält die Adresse des I 2 C-Busses und die zweite Variable enthält die Adresse des ersten analogen Eingangspins.
Adresse = 0x48 A0 = 0x40
Als nächstes haben wir ein Objekt der Funktion SMBus (1) der Bibliothek smbus erstellt
bus = smbus.SMBus (1)
Nun, während die erste Zeile den IC anweist, die analoge Messung am ersten analogen Eingangspin durchzuführen. In der zweiten Zeile wird die am analogen Pin gelesene Adresse in einem variablen Wert gespeichert . Drucken Sie abschließend den Wert.
während True: bus.write_byte (Adresse, A0) value = bus.read_byte (Adresse) print (Wert) time.sleep (0.1)
Speichern Sie nun endlich den Python-Code in einer Datei mit.py-Entension und führen Sie den Code im Himbeer-Pi-Terminal mit dem folgenden Befehl aus. “
python filename.py
Stellen Sie vor dem Ausführen des Codes sicher, dass Sie die I 2 C-Kommunikation aktiviert haben und alle Pins wie in der Abbildung gezeigt verbunden sind. Andernfalls werden Fehler angezeigt. Die analogen Werte müssen wie unten am Terminal angezeigt werden. Stellen Sie den Knopf des Topfes ein und Sie werden sehen, wie sich die Werte allmählich ändern. Erfahren Sie mehr über das Ausführen des Programms in
Der vollständige Python-Code und das Video sind unten angegeben.