Der Analog-Digital-Wandler (ADC) ist ein beliebtes Zubehör für den Raspberry Pi. Heutzutage haben viele billigere Mikrocontroller bereits einen eingebauten Konverter, daher basiert dieser 8-Kanal-Konverter auf dem STM32F030, der ein kostengünstiger, energiesparender ARM Cortex M0-Mikrocontroller ist. Das Board verfügt über 8 ADC-Kanäle und integrierte 4 analoge Grove-Anschlüsse, sodass Sie es auch mit analogen Grove-Modulen verwenden können.

  

kaufe jetzt

Eigenschaften

  • CRC-Rechnungseinheit
  • 5-Kanal-DMA-Controller ( direkter Speicherzugriff )
  • RTC-Kalender mit Alarm und periodischem Aufwachen Stop / Standby
  • Timer
    • Timer mit erweiterter Steuerung
    • Allgemeine Timer und einfache Timer
    • Unabhängiger Zeit- und Watchdog-Timer
    • SysTick-Timer
  • Echtzeituhr (RTC)
  • Serielles Kabel-Debugging (SWD)

Spezifikationen

Charakteristisch Wert
Betriebsspannung 3,3 V.
ADC-Auflösung 12-bit

Maximale Frequenz

Taktsignal

48MHz
Speichergröße lesen 16 KB
RAM-Größe 4 KB
Datenbusbreite 32-Bit
Arbeitstemperatur von -40 °C bis 85 °C
Kommunikationsinterface I2C
I2C-Adresse 0x04 (Standard)
Maße 65 x 55 x 18 mm
Waage 25,9 gr
Größe des Pakets 140 x 75 x 25 mm
Bruttogewicht 45 gr

Typische Anwendungen

  • Temperatur messung
  • Konsumgüter

Hardware-Übersicht

Verteilung von Leads

GPIO

Gleiches Layout wie auf dem Raspberry Pi.

SWD

Wir verwenden den SWD-Port, um die Firmware auf diesem Board aufzuzeichnen. Außerdem sehen Sie in diesem Abschnitt Pin 9 / Pin 10 / Pin 11. Diese drei Pins werden von keinem Grove-Port verwendet, Sie können sie verwenden, ohne sich Gedanken über das Pinning machen zu müssen.

Grove Analogport

Wie Sie wissen, gibt es auf dem Raspberry Pi keinen ADC-Wandler, daher ermöglicht dieses STM32-basierte ADC-Board, dass analoge Sensoren mit dem Raspberry Pi arbeiten.

Auf der Platine befinden sich 4 analoge Grove-Buchsen, sodass Sie Grove-Module direkt mit Grove - Universal Ribbon Cable 5 cm 4 Pin Y verbinden können .

 

Der analoge Sensor führt die analoge Spannung dem 12-Bit-ADC zu. Nach der Umwandlung der analogen Daten in digitale gibt der Konverter sie über die I2C-Schnittstelle an den Raspberry Pi weiter.

Buchsensteckverbinder

Sie funktionieren ähnlich wie analoge Grove-Anschlüsse, nur statt Grove-Universal-Flachbandkabel 5 cm 4-polig y Breadboard Jumper Wire Pack verwenden .

8 analoge Anschlüsse, A0 ~ A7.

Schraubverbindungen

Ähnlich wie oben, nur eine andere Verbindungsmethode. Diese Gruppe umfasst die analogen Pins A0 ~ A7, Vcc und GND.

Wie man anfängt?

Ausrüstung

Benötigtes Material

Himbeer-Pi

8-Kanal-12-Bit-Analog-Digital-Wandler

für Raspberry Pi (STM32F030)

  • Schritt 1 . Geben Sie den Konverter auf dem Raspberry Pi ein.
  • Schritt 2 . Verbinden Sie den Raspberry Pi über das USB-Kabel mit dem Computer.

Software

  • Schritt 1 . Laden Sie die Quelldatei herunter, indem Sie die Bibliothek grove.py klonen.

 CD ~
Git-Klon https://github.com/Seeed-Studio/grove.py

  • Schritt 2 . Installieren Sie die grove.py-Bibliothek

 cd grove.py
#Python2
sudo pip installieren.
#Python3
sudo pip3 installieren.

  • Schritt 3 . Befolgen Sie die folgenden Befehle, um den Code auszuführen.

 cd grove.py/grove
python adc_8chan_12bit.py 

Unten ist der adc_8chan_12bit.py-Code.

 

 Importzeit
aus grove.i2c import Bus

ADC_DEFAULT_IIC_ADDR = 0x04

ADC_CHAN_NUM = 8

REG_RAW_DATA_START = 0x10
REG_VOL_START = 0x20
REG_RTO_START = 0x30

REG_SET_ADDR = 0XC0


Klasse Pi_hat_adc ():
    def __init __ (self, bus_num = 1, addr = ADC_DEFAULT_IIC_ADDR):
        self.bus = Bus (bus_num)
        self.addr = Adr


    #Alle ADC-Rohdaten abrufen, der maximale Wert ist 4095, da es sich um einen 12-Bit-ADC handelt
    def get_all_adc_raw_data (selbst):
        Array = []
        für i im Bereich (ADC_CHAN_NUM):  
            data = self.bus.read_i2c_block_data (self.addr, REG_RAW_DATA_START + i, 2)
            Wert = Datum [1] << 8 | Datum [0]
            array.append (val)
        Rückgabe-Array

    def get_nchan_adc_raw_data (selbst, n):
        data = self.bus.read_i2c_block_data (self.addr, REG_RAW_DATA_START + n, 2)
        Wert = Datum [1] << 8 | Datum [0]
        Rücklaufwert
    #Alle Daten mit der Einheit mv abrufen.
    def get_all_vol_milli_data (selbst):
        Array = []
        für i im Bereich (ADC_CHAN_NUM):  
            data = self.bus.read_i2c_block_data (self.addr, REG_VOL_START + i, 2)
            Wert = Datum [1] << 8 | Datum [0]
            array.append (val)
        Rückgabe-Array

    def get_nchan_vol_milli_data (selbst, n):
        data = self.bus.read_i2c_block_data (self.addr, REG_VOL_START + n, 2)
        Wert = Datum [1] << 8 | Datum [0]
        Rücklaufwert

    #Get All Data Ratio, Einheit ist 0,1 %
    def get_all_ratio_0_1_data (selbst):
        Array = []
        für i im Bereich (ADC_CHAN_NUM): data = self.bus.read_i2c_block_data (self.addr, REG_RTO_START + i, 2) val = data [1] << 8 | data [0] array.append (val) return array def get_nchan_ratio_0_1_data (self, n): data = self.bus.read_i2c_block_data (self.addr, REG_RTO_START + n, 2) val = data [1] << 8 | data [0] return val ADC = Pi_hat_adc () def main (): raw_data = ADC.get_all_adc_raw_data () vol_data = ADC.get_all_vol_milli_data () ratio_data = ADC.get_all_ratio_0_1_data () print ("Rohdaten für jeden Kanal: (1-8chan) (12 Bit-max = 4096):") print (raw_data) print ("Spannung für jeden Kanal: (unit: mv, max = 3300mv): ") print (vol_data) print (" Ratio für jeden Kanal (Einheit 0,1 %, max = 100,0 %): ") print (ratio_data) print (" ") print (" HINWEIS! !!: ") print (" Die Standardeinstellung der ADC-PIN ist floating_input. ") print (" ") if __name__ == '__main__': main ()

Erfolg

Wenn Sie alles erfolgreich durchgeführt haben, sollten Sie die folgende Meldung sehen.


pi @ himbeerpi: ~ / grove.py / grove $ python adc_8chan_12bit.py Rohdaten für jeden Kanal: (1-8 Kanäle) (12 Bit-max = 4096): [2177, 2098, 2064, 2038, 2127, 2066, 2172, 2145] Spannung für jeden Kanal: (Einheit: mv, max = 3300mv): [1599, 1741, 1668, 1658, 1644, 1787, 1694, 1677] Verhältnis für jeden Kanal (Einheit 0,1 %, max = 100,0 %): [521, 544, 514, 504, 500, 559, 524, 505] NOTIZ !!!: Die Standardeinstellung der ADC-PIN ist floating_input.

Beispiel

Nehmen wir den Grove - Sound Sensor als Beispiel, um zu demonstrieren, wie man dieses Board verwendet.

 

Hardware-Verbindung

  • Schritt 1 . Verbinden Sie den Konverter mit dem Raspberry Pi.
  • Schritt 2 . Schließen Sie den Grove - Schallsensor über Anschluss A0 an den Konverter an.
  • Schritt 3 . Verbinden Sie den Raspberry Pi über das USB-Kabel mit dem Computer.

Hardware-Anschlussdiagramm

Geben Sie den folgenden Befehl ein: ++ python grove_sound_sensor.py 0 ++ an der Eingabeaufforderung.

 

 pi @ himbeerpi: ~ / grove.py / grove $ python grove_sound_sensor.py 6
Geräusch erkennen ...
Schallwert: 433
Schallwert: 342
Schallwert: 443
Schallwert: 300
Schallwert: 632
Schallwert: 258
Schallwert: 591
Schallwert: 267
Schallwert: 871
^ CTraceback (letzter Aufruf zuletzt):
  Datei "grove_sound_sensor.py", Zeile 67, in
    hauptsächlich ()
  Datei "grove_sound_sensor.py", Zeile 64, in main
    time.sleep (.3)
KeyboardInterrupt

Sie können das Programm beenden, indem Sie Strg + C drücken.

Verknüpfungen

Wir freuen uns auf die Zusammenarbeit mit Ihnen!