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, in
main() File "grove_sound_sensor.py", line 64, in main time.sleep(.3) KeyboardInterrupt
Możesz opuścić program, wciskając Ctrl+C.