Analogově-digitální převodník (ADC) je oblíbeným doplňkem pro Raspberry Pi. Mnoho levnějších mikrokontrolérů dnes již má vestavěný převodník, takže tento 8kanálový převodník je založen na STM32F030, což je nákladově efektivní a energeticky úsporný mikrokontrolér ARM Cortex M0. Deska má 8 kanálů ADC a integrované 4 analogové konektory Grove, takže ji můžete také použít s analogovými moduly Grove.

  

kup nyní

Vlastnosti

  • Zúčtovací jednotka CRC
  • 5kanálový řadič DMA ( přímý přístup do paměti )
  • RTC kalendář s alarmem a periodickým budením Stop / Standby
  • Časovače
    • Časovač s pokročilým ovládáním
    • Obecné časovače a základní časovače
    • Nezávislý čas a hlídací časovač
    • Časovač SysTick
  • Hodiny reálného času (RTC)
  • Ladění sériového kabelu (SWD)

Specifikace

Vlastnosti Hodnota
Pracovní napětí 3,3 V.
Rozlišení ADC 12 bitů

Maximální frekvence

hodinový signál

48 MHz
Přečíst velikost paměti 16 kB
Velikost RAM 4 kB
Šířka datové sběrnice 32 bitů
Pracovní teplota od -40 ° C do 85 ° C
Komunikační rozhraní I2C
Adresa I2C 0x04 (výchozí)
Rozměry 65 x 55 x 18 mm
Hmotnost 25,9 g
Velikost balení 140 x 75 x 25 mm
Celková hmotnost 45 g

typické aplikace

  • Měření teploty
  • Spotřební zboží

Přehled hardwaru

Distribuce vedení

GPIO

Stejné rozložení jako na Raspberry Pi.

SWD

K záznamu firmwaru na tuto desku používáme port SWD. Kromě toho v této části vidíte pin 9 / pin 10 / pin 11. Tyto tři piny nepoužívá žádný port Grove, můžete je použít bez obav o připnutí pinů.

Grove Analog Port

Jak víte, na Raspberry Pi není žádný převaděč ADC, takže tato deska ADC založená na STM32 umožňuje analogovým senzorům pracovat s Raspberry Pi.

Na desce jsou 4 analogové zásuvky Grove, takže můžete připojit moduly Grove přímo pomocí Grove - Universal Ribbon Cable 5 cm 4 pin y .

 

Analogový senzor napájí analogové napětí do 12bitového ADC. Po převodu analogových dat na digitální převaděč vstupuje přes rozhraní I2C do Raspberry Pi.

Zásuvkové konektory

Fungují podobně jako analogové porty Grove, pouze místo Grove - Universal Ribbon Cable 5 cm 4 pin y používají Breadboard Jumper Wire Pack .

8 analogových připojovacích portů, A0 ~ A7.

Šroubová spojení

Podobně jako v předchozím případě mají pouze jinou metodu připojení. Tato skupina zahrnuje analogové piny A0 ~ A7, Vcc a GND.

Jak začít?

Zařízení

Potřebné materiály

Raspberry Pi

8kanálový 12bitový analogově-digitální převodník

pro Raspberry Pi (STM32F030)

  • Krok 1 . Zadejte převaděč na Raspberry Pi.
  • Krok 2 . Připojte Raspberry Pi k počítači pomocí kabelu USB.

Software

  • Krok 1 . Stáhněte si zdrojový soubor klonováním knihovny grove.py.

 cd ~
git clone https://github.com/Seeed-Studio/grove.py

  • Krok 2 . Nainstalujte si knihovnu grove.py

 cd grove.py
# Python2
sudo pip install.
# Python3
sudo pip3 nainstalovat.

  • Krok 3 . Spusťte kód podle následujících pokynů.

 cd grove.py/grove
python adc_8chan_12bit.py 

Níže je uveden kód adc_8chan_12bit.py.

 

 čas importu
z importu sběrnice grove.i2c

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


třída Pi_hat_adc ():
    def __init __ (self, bus_num = 1, addr = ADC_DEFAULT_IIC_ADDR):
        self.bus = Bus (bus_num)
        self.addr = adresa


    #get all raw adc data, THe max value is 4095, cause it is 12 Bit ADC
    def get_all_adc_raw_data (self):
        pole = []
        pro i v rozsahu (ADC_CHAN_NUM):  
            data = self.bus.read_i2c_block_data (self.addr, REG_RAW_DATA_START + i, 2)
            val = datum [1] << 8 | datum [0]
            array.append (val)
        návratové pole

    def get_nchan_adc_raw_data (self, n):
        data = self.bus.read_i2c_block_data (self.addr, REG_RAW_DATA_START + n, 2)
        val = datum [1] << 8 | datum [0]
        zpáteční val
    # získejte všechna data s jednotkou mv.
    def get_all_vol_milli_data (self):
        pole = []
        pro i v rozsahu (ADC_CHAN_NUM): data = self.bus.read_i2c_block_data (self.addr, REG_VOL_START + i, 2) val = data [1] << 8 | data [0] array.append (val) návratové pole def get_nchan_vol_milli_data (self, n): data = self.bus.read_i2c_block_data (self.addr, REG_VOL_START + n, 2) val = data [1] << 8 | data [0] návratová hodnota # poměr všech dat, jednotka je 0,1% def get_all_ratio_0_1_data (self): array = [] pro i v rozsahu (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) návratové pole 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 ("nezpracovaná data pro každý kanál: (1-8chan) (12 bit-max = 4096):") print ( raw_data) print ("napětí pro každý kanál: (jednotka: mv, max = 3300 mv):") print (vol_data) print ("poměr pro každý kanál (jednotka 0,1%, max = 100,0%):") print (ratio_data) tisk ("") tisk ("UPOZORNĚNÍ !!!:") print ("Výchozí nastavení ADC PIN je floating_input.") Print ("") if __name__ == '__main__': main ()

Úspěch

Pokud jste vše úspěšně provedli, měla by se zobrazit zpráva níže.


pi @ raspberrypi: ~ / grove.py / grove $ python adc_8chan_12bit.py nezpracovaná data pro každý kanál: (1-8chan) (12 bit-max = 4096): [2177, 2098, 2064, 2038, 2127, 2066, 2172, 2145] napětí pro každý kanál: (jednotka: mv, max = 3300 mv): [1599, 1741, 1668, 1658, 1644, 1787, 1694, 1677] poměr pro každý kanál (jednotka 0,1%, max = 100,0%): [521, 544, 514, 504, 500, 559, 524, 505] OZNÁMENÍ !!!: Výchozí nastavení PIN kódu ADC je floating_input.

Příklad

Vezměme si jako příklad Grove - zvukový senzor , který ukazuje, jak tuto desku používat.

 

Hardwarové připojení

  • Krok 1 . Připojte převodník k Raspberry Pi.
  • Krok 2 . Připojte snímač Grove - zvuk přes port A0 k převaděči.
  • Krok 3 . Připojte Raspberry Pi k počítači pomocí kabelu USB.

Schéma připojení hardwaru

Zadejte následující příkaz: ++ python grove_sound_sensor.py 0 ++ na příkazovém řádku.

 

 pi @ raspberrypi: ~ / grove.py / grove $ python grove_sound_sensor.py 6
Detekuje se zvuk ...
Akustická hodnota: 433
Akustická hodnota: 342
Akustická hodnota: 443
Akustická hodnota: 300
Akustická hodnota: 632
Akustická hodnota: 258
Akustická hodnota: 591
Akustická hodnota: 267
Akustická hodnota: 871
^ CTraceback (poslední hovor poslední):
  Soubor "grove_sound_sensor.py", řádek 67, v
    hlavní ()
  Soubor "grove_sound_sensor.py", řádek 64, hlavní
    time.sleep (.3)
Přerušení klávesnice

Program můžete ukončit stisknutím Ctrl + C.

Odkazy

zveme vás ke spolupráci!