- Erforderliche Komponenten
- PCF8591 ADC / DAC-Modul
- Verbindung des ADC / DAC-Moduls PCF8591 mit Arduino
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 werden wir überprüfen, wie das PCF8591 ADC / DAC-Modul mit Arduino verbunden wird.
Erforderliche Komponenten
- Arduino UNO
- PCF8591 ADC-Modul
- 100K Pot
- Überbrückungskabel
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ählen und J6 ist angeschlossen, um die einstellbare Spannungszugriffsschaltung auszuwählen. Um auf diese Schaltkreise zugreifen zu können, müssen Sie die Adressen dieser Jumper verwenden: 0x50 für J6, 0x60 für J5 und 0x70 für J4. 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.
Verbindung des ADC / DAC-Moduls PCF8591 mit Arduino
Das vollständige Programm und das Arbeitsvideo finden Sie am Ende dieses Tutorials.
Zunächst müssen wir die Bibliothek für die I 2 C-Kommunikation und die LCD-Anzeige definieren.
#einschließen
Definieren Sie dann einige Makros. Das erste Makro dient zum Definieren der Adresse des Datenbusses für den IC und das zweite Makro zum Definieren der Adresse des ersten Eingangspins des Moduls, wo der Eingang vom Pot gegeben wird.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
Definieren Sie als nächstes die Pin-Verbindungen des LCD mit Arduino und initialisieren Sie den Wert, den wir am analogen Pin erhalten.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); int Wert = 0;
Kommen wir nun zur Setup- Funktion. Hier haben wir in der ersten Zeile die I 2 C-Kommunikation initialisiert. In der zweiten Zeile haben wir das LCD-Display initialisiert, auf dem die analogen Werte gedruckt werden. Erfahren Sie hier mehr über die Verbindung von 16x2 LCD mit Arduino.
void setup () { Wire.begin (); lcd.begin (16,2); }}
In der Schleifenfunktion beginnt die erste Leitung mit der Übertragung, dh sie startet den PCF8591. Die zweite Zeile weist den IC an, die analoge Messung am ersten analogen Eingangspin durchzuführen. Die dritte Leitung beendet die Übertragung und die vierte Leitung erhält die gemessenen Daten vom analogen Pin.
void loop () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
Setzen Sie im nächsten Abschnitt den vom analogen Pin gelesenen Wert in die zuvor definierte Wertvariable. Drucken Sie diesen Wert in den nächsten Zeilen auf das LCD.
Wert = Wire.read (); lcd.print ("ADC Value ="); lcd.print (Wert); Verzögerung (500); lcd.clear ();}
Laden Sie schließlich den Code in Arduino hoch und führen Sie ihn aus. Die analogen Werte werden auf dem LCD-Display angezeigt. Stellen Sie den Knopf des Topfes ein und Sie werden sehen, wie sich die Werte allmählich ändern.