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
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.
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.
Ä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, inhauptsä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.