Przetwornik analogowo-cyfrowy (ADC) jest popularny akcesorium dla Raspberry Pi. Obecnie wiele tańszych mikrokontrolerów ma już wbudowany konwerter, więc ten 8-kanałowy przetwornik został stworzony w oparciu o STM32F030, który jest ekonomicznym, energooszczędnym mikrokontrolerem ARM Cortex M0. Płytka posiada 8 kanałów ADC oraz zintegrowane 4 złącza analogowe Grove, dzięki czemu można przy jej pomocy korzystać również z analogowych modułów Grove.
Kup Teraz |
Właściwości
- Jednostka obliczeniowa CRC
- 5-kanałowy kontroler DMA (bezpośredni dostęp do pamięci)
- Kalendarz RTC z alarmem oraz okresowym budzeniem Stop / Standby
- Timery
- Timer z zaawansowaną kontrolą
- Ogólne timery oraz podstawowe timery
- Niezależny time oraz watchdog timer
- SysTick timer
- Zegar czasu rzeczywistego (RTC)
- Debugowanie przewodu szeregowego (SWD)
Specyfikacje
Cecha | Wartość |
---|---|
Napięcie robocze | 3.3 V |
Rozdzielczość ADC | 12 bit |
Maksymalna częstotliwość sygnału zegarowego |
48 MHz |
Wielkość pamięci odczytu | 16 kB |
Wielkość pamięci RAM | 4 kB |
Szerokość magistrali danych | 32 bit |
Temperatura robocza | od -40°C do 85℃ |
Interfejs komunikacji | I2C |
Adres I2C | 0x04 (domyślny) |
Wymiary | 65 x 55 x 18 mm |
Waga | 25.9 g |
Wymiary opakowania | 140 x 75 x 25 mm |
Waga brutto | 45 g |
Typowe zastosowania
- Pomiar temperatury
- Dobra konsumpcyjne
Przegląd sprzętu
Rozkład wyprowadzeń
Taki sam rozkład jak na Raspberry Pi.
SWD
Portu SWD używamy do nagrania oprogramowania układowego na tej płytce. Dodatkowo w tej sekcji możesz zobaczyć pin 9 / pin 10 / pin 11. Te trzy piny nie są używane przez żaden port Grove, możesz ich używać bez obaw o spięcie pinów.
Grove Port Analogowy
Jak wiadomo, na Raspberry Pi nie ma konwertera ADC, więc ta płytka ADC na bazie STM32 pozwala na pracę czujników analogowych z Raspberry Pi.
Na płytce są 4 gniazda analogowe Grove, więc możesz podłączać moduły Grove bezpośrednio za pomocą Grove - Uniwersalny Przewód Taśmowy 5 cm 4 piny.
Czujnik analogowy wprowadza napięcie analogowe do 12-bitowego przetwornika ADC. Po przekształceniu danych analogowych na cyfrowe, przetwornik wprowadza je do Raspberry Pi poprzez interfejs I2C.
Działają podobnie jak porty analogowe Grove, tylko zamiast Grove - Uniwersalny Przewód Taśmowy 5 cm 4 piny wykorzystują zestaw przewodów Breadboard Jumper Wire Pack.
8 analogowych portów przyłączeniowych, A0 ~ A7.
Podobne do powyższych, mają tylko inną metodę podłączenia. Ta grupa zawiera piny analogowe A0 ~ A7, Vcc oraz GND.
Jak zacząć?
Sprzęt
Wymagane materiały
Raspberry Pi |
8-kanałowy 12-bitowy przetwornik analogowo-cyfrowy dla Raspberry Pi(STM32F030) |
---|---|
- Krok 1. Wprowadź przetwornik do Raspberry Pi.
- Krok 2. Podłącz Raspberry Pi do komputera przez kabel USB.
Oprogramowanie
- Krok 1. Pobierz plik źródłowy, klonując bibliotekę grove.py.
cd ~ git clone https://github.com/Seeed-Studio/grove.py
- Krok 2. Zainstaluj bibliotekę grove.py
cd grove.py # Python2 sudo pip install . # Python3 sudo pip3 install .
- Krok 3. Wykonaj poniższe komendy, aby uruchomić kod.
cd grove.py/grove python adc_8chan_12bit.py
Poniżej znajduje się kod adc_8chan_12bit.py.
import time from 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 class Pi_hat_adc(): def __init__(self,bus_num=1,addr=ADC_DEFAULT_IIC_ADDR): self.bus=Bus(bus_num) self.addr=addr #get all raw adc data,THe max value is 4095,cause it is 12 Bit ADC def get_all_adc_raw_data(self): array = [] for i in range(ADC_CHAN_NUM): data=self.bus.read_i2c_block_data(self.addr,REG_RAW_DATA_START+i,2) val=data[1]<<8|data[0] array.append(val) return array def get_nchan_adc_raw_data(self,n): data=self.bus.read_i2c_block_data(self.addr,REG_RAW_DATA_START+n,2) val =data[1]<<8|data[0] return val #get all data with unit mv. def get_all_vol_milli_data(self): array = [] for i in range(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) return array 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] return val #get all data ratio,unit is 0.1% def get_all_ratio_0_1_data(self): array = [] for i in range(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("raw data for each channel:(1-8chan)(12 bit-max=4096):") print(raw_data) print("voltage for each channel:(unit:mv,max=3300mv):") print(vol_data) print ("ratio for each channel(unit 0.1%,max=100.0%):") print(ratio_data) print(" ") print("NOTICE!!!:") print("The default setting of ADC PIN is floating_input.") print(" ") if __name__ == '__main__': main()
Sukces Jeśli wszystko wykonałeś pomyślnie, powinien wyświetlić się poniższy komunikat. |
pi@raspberrypi:~/grove.py/grove $ python adc_8chan_12bit.py raw data for each channel:(1-8chan)(12 bit-max=4096): [2177, 2098, 2064, 2038, 2127, 2066, 2172, 2145] voltage for each channel:(unit:mv,max=3300mv): [1599, 1741, 1668, 1658, 1644, 1787, 1694, 1677] ratio for each channel(unit 0.1%,max=100.0%): [521, 544, 514, 504, 500, 559, 524, 505] NOTICE!!!: The default setting of ADC PIN is floating_input.
Przykład
Weźmy Grove - Czujnik Dźwięku za przykład, aby zaprezentować, jak korzystać z tej płytki.
Podłączenie sprzętu
- Krok 1. Podłącz przetwornik do Raspberry Pi.
- Krok 2. Podłącz Grove - Czujnik dźwięku przez port A0 do przetwornika.
- Krok 3. Podłącz Raspberry Pi do komputera przez kabel USB.
Schemat połączeń sprzętu
Wpisz następujące polecenie: ++python grove_sound_sensor.py 0++ w wierszu poleceń.
pi@raspberrypi:~/grove.py/grove $ python grove_sound_sensor.py 6 Detecting sound... Sound value: 433 Sound value: 342 Sound value: 443 Sound value: 300 Sound value: 632 Sound value: 258 Sound value: 591 Sound value: 267 Sound value: 871 ^CTraceback (most recent call last): File "grove_sound_sensor.py", line 67, inmain() File "grove_sound_sensor.py", line 64, in main time.sleep(.3) KeyboardInterrupt
Możesz opuścić program, wciskając Ctrl+C.