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.







