Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

Lektion 10: PCF8591 ADC DAC Converter Modul

In dieser Lektion lernen Sie, wie Sie das ESP32-Entwicklungsboard mit einem PCF8591 ADC DAC Converter Modul verbinden. Wir werden das Auslesen von analogen Werten vom Eingang AIN0, das Senden dieser Werte an den DAC (AOUT) und das Anzeigen sowohl der Rohwerte als auch der spannungsumgerechneten Messwerte im seriellen Monitor behandeln. Das Potentiometer des Moduls ist mit AIN0 über Jumperkappen verbunden, und die D2-LED auf dem Modul ist mit AOUT verbunden, sodass Sie sehen können, dass sich die Helligkeit der D2-LED ändert, wenn Sie das Potentiometer drehen.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:

Name

ITEMS IN THIS KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

Sie können sie auch einzeln über die unten stehenden Links kaufen.

Component Introduction

Purchase Link

ESP32 & Development Board

BUY

PCF8591 ADC-DAC-Wandlermodul

KAUFEN

Steckbrett

KAUFEN

Verdrahtung

../_images/Lesson_10_PCF8591_Module_esp32_bb.png

Code

Bemerkung

Um die Bibliothek zu installieren, verwenden Sie den Arduino Library Manager und suchen Sie nach „Adafruit PCF8591“ und installieren Sie sie.

Code-Analyse

  1. Bibliothek einbinden und Konstanten definieren

    Bemerkung

    Um die Bibliothek zu installieren, verwenden Sie den Arduino Library Manager und suchen Sie nach „Adafruit PCF8591“ und installieren Sie sie.

    // Include Adafruit PCF8591 library
    #include <Adafruit_PCF8591.h>
    // Define the reference voltage for ADC conversion
    #define ADC_REFERENCE_VOLTAGE 3.3
    

    Dieser Abschnitt bindet die Adafruit PCF8591 Bibliothek ein, die Funktionen für die Interaktion mit dem PCF8591-Modul bereitstellt. Die ADC-Referenzspannung wird auf 3,3 Volt festgelegt, was die maximale Spannung ist, die der ADC messen kann.

  2. PCF8591-Modul einrichten

    // Create an instance of the PCF8591 module
    Adafruit_PCF8591 pcf = Adafruit_PCF8591();
    void setup() {
      Serial.begin(9600);
      Serial.println("# Adafruit PCF8591 demo");
      if (!pcf.begin()) {
        Serial.println("# PCF8591 not found!");
        while (1) delay(10);
      }
      Serial.println("# PCF8591 found");
      pcf.enableDAC(true);
    }
    

    In der Setup-Funktion wird die serielle Kommunikation gestartet und eine Instanz des PCF8591-Moduls erstellt. Die Funktion pcf.begin() überprüft, ob das Modul korrekt angeschlossen ist. Wenn nicht, wird eine Fehlermeldung ausgegeben und das Programm angehalten. Wenn das Modul gefunden wird, wird der DAC aktiviert.

  3. Lesen vom ADC und Schreiben zum DAC

    void loop() {
      AIN0 = pcf.analogRead(0);
      pcf.analogWrite(AIN0);
      Serial.print("AIN0: ");
      Serial.print(AIN0);
      Serial.print(", ");
      Serial.print(int_to_volts(AIN0, 8, ADC_REFERENCE_VOLTAGE));
      Serial.println("V");
      delay(500);
    }
    

    Die Loop-Funktion liest kontinuierlich den analogen Wert von AIN0 (analog input 0) des PCF8591-Moduls aus und schreibt diesen Wert zurück an den DAC. Außerdem druckt sie den Rohwert und den spannungsumgerechneten Wert von AIN0 auf den seriellen Monitor.

    Jumperkappen verbinden das Potentiometer des Moduls mit AIN0, und die D2-LED ist mit AOUT verbunden; bitte sehen Sie sich das Schaltbild des PCF8591-Moduls an schematic für Details. Die Helligkeit der LED ändert sich, wenn das Potentiometer gedreht wird.

  4. Funktion zur Umwandlung von Digital zu Spannung

    float int_to_volts(uint16_t dac_value, uint8_t bits, float logic_level) {
      return (((float)dac_value / ((1 << bits) - 1)) * logic_level);
    }
    

    Diese Funktion wandelt den digitalen Wert zurück in die entsprechende Spannung um. Sie nimmt den digitalen Wert (dac_value), die Anzahl der Bits der Auflösung (bits) und die Spannung des Logikpegels (logic_level) als Argumente. Die verwendete Formel ist ein Standardansatz zur Umwandlung eines digitalen Wertes in die entsprechende Spannung.