Raspberry Pi to doskonałe urządzenie do różnych projektów elektronicznych, ale stosując przetwornik ADC, można rozszerzyć jego możliwości o pomiar sygnałów analogowych i współpracę z szerszą gamą urządzeń.
Raspberry Pi domyślnie nie posiada wejść analogowych, co stawia go w niekorzystnej sytuacji w porównaniu z płytkami opartymi na mikrokontrolerach, takimi jak Arduino.
Ale nie trać nadziei: jest wiele opcji do rozważenia. Możesz zacząć od Raspberry Pi i zewnętrznego przetwornika ADC. W tym przewodniku przedstawimy kompleksowy przegląd korzystania z przetwornika ADC z Raspberry Pi, skupiając się na kluczowych krokach i potencjalnych korzyściach. Czytaj dalej, aby dowiedzieć się, jak w pełni wykorzystać możliwości swojego urządzenia i skutecznie zintegrować je z projektami elektronicznymi. Sprawdź Czym jest przetwornik analogowo-cyfrowy (ADC)? Poznaj jego działanie i znaczenie w erze cyfrowej..

Szybkie linki
Dlaczego warto dodawać wpisy?
Rzeczywistość jest pełna zjawisk, które można łatwo opisać za pomocą napięcia, jeśli dysponuje się odpowiednimi obwodami. Przekształć te napięcia w postać cyfrową, a będziesz mógł je rejestrować, przetwarzać i wykorzystywać do sterowania innymi parametrami i urządzeniami.
Może chcesz monitorować wilgotność gleby, temperaturę w szklarni lub wagę chomika. Możesz dodać regulator głośności do swojego Raspberry Pi, stworzyć korektor dźwięku lub zaprojektować joystick od podstaw. Możliwości są praktycznie nieograniczone.
Opcje ADC
Który ADC jest najlepszy dla początkujących?
Jedną z najpopularniejszych i najprostszych opcji są plastry. MCP3004 (I MCP3008) firmy Microchip. Otrzymujesz cztery (lub osiem) 10-bitowych kanałów, które mogą odczytywać do 200 tys. SPS. Z drugiej strony, mamy ADS111x firmy Texas Instruments, który odczytuje 16 bitów z szybkością 860 SPS. Jest to więc kompromis między szybkością a dokładnością (i oczywiście ceną).
Wiele mikrokontrolerów ma wbudowane przetworniki ADC. ATMega, którą znajdziesz w przeciętnym Arduino, oferuje kilka 10-bitowych kanałów, oprócz wszystkich innych funkcji. Dzięki temu Arduino może dostarczać dane analogowe, których Raspberry Pi nie jest w stanie obsłużyć. Jeśli masz już Arduino w swojej konfiguracji i rozdzielczość 10 bitów jest wystarczająca, może to być w rzeczywistości najłatwiejsza metoda.
Tutaj postawimy na prostotę, z Adafruit ADS1115. Sprawdź Zalety i wady korzystania z klonu Arduino w projektach.

Czym jest wzmacniacz o programowalnym wzmocnieniu?
Ten układ oferuje kilka interesujących funkcji, w tym programowalny wzmacniacz wzmocnienia (PGA). Pozwala on na cyfrową regulację żądanego zakresu wartości, nawet do ułamka wolta. Dzięki liczbie wartości, które można przedstawić za pomocą 16 bitów, możliwe jest wykrywanie różnic rzędu zaledwie kilku mikrowoltów.
Zaletą jest to, że można zmienić wzmocnienie w środku. Inne układy, takie jak MCP3004, stosują inne podejście; są wyposażone w dodatkowy pin, do którego można podać napięcie odniesienia.
A co z multipleksowaniem?
Multiplekser (lub mux) to przełącznik umożliwiający odczyt wielu sygnałów wejściowych za pomocą jednego przetwornika ADC. Jeśli układ ADC ma wiele pinów wejściowych, występuje multipleksowanie wewnętrzne. Multiplekser w układzie ADS1115 umożliwia dostęp do czterech sygnałów wejściowych, które można wybrać za pomocą rejestrów wewnętrznych.
Obsługa rekordów
ADS1115 oferuje te opcje i kilka innych. Możesz sterować multiplekserem, regulować wzmocnienie, aktywować wbudowany komparator, zmieniać częstotliwość próbkowania i przełączać urządzenie w tryb uśpienia o niskim poborze mocy – wszystko za naciśnięciem kilku klawiszy.
Ale gdzie są te klucze? Znajdują się wewnątrz obudowy, w maleńkich fragmentach pamięci zwanych rejestrami. Aby aktywować daną funkcję, wystarczy ustawić odpowiedni bit na 1 zamiast 0.
Patrząc na kartę danych ADS111xOdkryjesz, że te modele są wyposażone w cztery rejestry, w tym rejestry konfiguracyjne, które regulują zachowanie urządzenia.

Na przykład bity od 14 do 12 sterują multiplekserem. Za pomocą tych trzech bitów można wybrać jedną z ośmiu konfiguracji. Wartość, którą chcesz tutaj ustawić, to „100”, co oznacza różnicę między zerowym sygnałem wejściowym a wartością minimalną. Natomiast bity od 7 do 5 sterują częstotliwością próbkowania. Jeśli chcesz uzyskać maksymalnie 860 próbek na sekundę, możesz ustawić ją na „111”.
Gdy już wiesz, które opcje chcesz ustawić, będziesz mieć dwa bajty do wysłania do przetwornika ADC. Jeśli później zechcesz ustawić bit tu i tam, możesz obsłużyć je indywidualnie za pomocą operatorów bitowych.
Tutaj sprawy mogą się skomplikować. W tym przypadku zapis binarny nie reprezentuje wartości, a raczej wartości poszczególnych konwerterów. Można wyrazić te zmienne jako pojedynczą dużą liczbę, w systemie dziesiętnym lub szesnastkowym. Ale jeśli chcesz uniknąć stresu, powinieneś trzymać się wersji binarnej, która jest łatwiejsza do odczytania.
Przewody łączące
Możesz podłączyć ten adapter bezpośrednio do pojedynczej płytki. Akceptuje on napięcie wejściowe od 2 do 5.5 V, co oznacza, że szyna 3.3 V na Raspberry Pi będzie działać bez zarzutu.
Podłącz wejścia SDA i SCL do odpowiednich pinów w RPi, a następnie zrób to samo z masą i napięciem 3.3 V. Umieść potencjometr między przewodami masy i napięcia, a następnie podłącz środkowy przewód do pierwszego pinu przetwornika ADC. To wszystko, czego potrzebujesz, aby zacząć!
Radzenie sobie z I2C
Różne przetworniki ADC działają w oparciu o różne protokoły. W przypadku ADS1115 użyjemy I2C.
Poniższy przykład będzie interakcją z przetwornikiem ADC za pomocą Pythona. Zanim to zrobisz, musisz go skonfigurować. Najnowsze wersje systemu operacyjnego Raspberry Pi znacznie uprościły to zadanie. Przejdź do… Preferencje > Konfiguracja Raspberry PiNastępnie na karcie Interfejsy należy włączyć I2C.

Aby sprawdzić czy wszystko działa poprawnie otwórz terminal i uruchom:
sudo i2cdetect -y 1Spowoduje to wygenerowanie siatki. Zakładając, że wszystko działa i podłączyłeś je poprawnie, zobaczysz nową wartość w siatce. To adres Twojego przetwornika ADC. Pamiętaj, że jest to wartość szesnastkowa, więc musisz poprzedzić ją prefiksem „0x” podczas używania jej w poniższym kodzie. Oto 0x48:

Po uzyskaniu adresu możesz użyć biblioteki SMBus do wysyłania poleceń I2C. Będziesz mieć tutaj do czynienia z dwiema metodami. Pierwsza to write_word_data(), który akceptuje trzy argumenty: adres urządzenia, rejestr, do którego dokonujesz zapisu, oraz wartość, którą chcesz zapisać.
Drugi jest read_word_data(), Akceptuje tylko adres urządzenia i rejestr. Przetwornik ADC będzie stale odczytywać napięcie i zapisywać wynik w rejestrze konwersji. Za pomocą tej metody można pobrać zawartość tego rejestru.
Możesz nieco poprawić wynik, a następnie go wydrukować. Przed powrotem do początku pętli zrób krótką przerwę. Dzięki temu unikniesz przytłoczenia danymi.
od smbus importować SMBus
importować adres czasu = 0x48
autobus = SMBus(1)
# ustaw rejestry do odczytu
KONFIGURACJA = 1
REG KONWERSJI = 0# ustaw rejestr adresowy tak, aby wskazywał na rejestr konfiguracyjny# zapisz do rejestrów konfiguracyjnych
bus.write_word_data(addr, CONFIGREG, (0b00000100 << 8 | 0b10000010))
# zdefiniuj górną część zakresu
GÓRA = 26300jednocześniePrawdziwy:
# przeczytaj rejestr
b = bus.read_word_data(addr, REJESTR KONWERSJI)
# zamień dwa bajty
b = ((b & 0xFF) < 8) | ((b >> 8) I 0xFF)
# odejmij połowę zakresu, aby ustawić punkt odniesienia na zero
b -= 0x8000# Podziel wynik przez zakres, aby uzyskać wartość od zera do jednego
b /= TOP
# limit jeden
b = min(B, 1)
# dno to zero
b = max(B, 0)
# dwa miejsca po przecinku
b = okrągły(B, 2)
(b) czas.sen(.01)Już prawie gotowe. Ustaw zakres otrzymywanych wartości na preferowaną wartość, a następnie skróć do żądanej liczby miejsc po przecinku. Możesz dostosować funkcję drukowania tak, aby drukowała nową wartość tylko wtedy, gdy różni się ona od poprzedniej.
Radzenie sobie z hałasem
No cóż, chyba że twoja konfiguracja jest bardzo elegancka, schludna i uporządkowana, zauważysz trochę szumu. To naturalna wada używania 16 bitów zamiast zaledwie XNUMX: ten drobny szum będzie znacznie bardziej zauważalny.
Podłączając sąsiednie wejście (wejście 1) do masy i zmieniając tryb, aby porównać wejścia XNUMX i XNUMX, można uzyskać bardziej stabilne rezultaty. Można również wymienić długie przewody połączeniowe, które zbierają szumy, na mniejsze, dodając kilka kondensatorów podczas regulacji. Wartość potencjometru również może mieć znaczenie.
Dostępne są również opcje programowe. Możesz utworzyć średnią kroczącą lub po prostu zignorować drobne zmiany. Wadą jest to, że dodatkowy kod będzie generował koszty obliczeniowe. Jeśli piszesz instrukcje warunkowe w języku wysokiego poziomu, takim jak Python, i pobierasz tysiące próbek na sekundę, koszty te szybko się zsumują. Sprawdź Przewodnik po monitorowaniu temperatury Raspberry Pi i Sense HAT: najważniejsze kroki i wskazówki.
często zadawane pytania
P1. Czym jest przetwornik ADC i jak działa z Raspberry Pi?
Przetwornik analogowo-cyfrowy (ADC) to urządzenie, które konwertuje sygnały analogowe na sygnały cyfrowe. ADC można podłączyć do Raspberry Pi, aby umożliwić odczyt sygnałów analogowych ze źródeł takich jak czujniki i zmienne środowiskowe.
P2. Jakie są główne korzyści ze stosowania przetwornika ADC z Raspberry Pi?
- Rozszerzanie możliwości pomiarowych:Pozwala na korzystanie z sygnałów analogowych, takich jak światło, temperatura, dźwięk i inne.
- Wyższa dokładnośćKonwersja sygnałów analogowych na cyfrowe zapewnia większą dokładność odczytów.
- Obsługa różnych urządzeń:Można go stosować z szeroką gamą urządzeń elektronicznych i projektów Raspberry Pi.
P3. Jak podłączyć przetwornik ADC do Raspberry Pi?
Przetwornik ADC można podłączyć do Raspberry Pi poprzez interfejs GPIO za pomocą odpowiednich kabli i złączy. Należy zachować ostrożność i postępować zgodnie z instrukcją połączeń dołączoną do przetwornika ADC.
P4. Czy mogę używać przetwornika ADC ze wszystkimi wersjami Raspberry Pi?
Tak, przetwornik ADC można używać z większością wersji Raspberry Pi. Może jednak zaistnieć konieczność podłączenia przetwornika do odpowiedniego portu GPIO dla danego urządzenia.
P5. Czy korzystanie z przetwornika ADC wymaga doświadczenia w programowaniu?
Zależy to od zakresu projektu. W prostych przypadkach można skorzystać z gotowych bibliotek. Jednak niektóre projekty mogą wymagać umiejętności programistycznych, aby efektywnie wykorzystać dane.
Ruszamy naprzód z wieloma potencjalnymi kolejnymi krokami
Odczyt danych przez I2C jest bardzo prosty i podobnie jest z innymi metodami, takimi jak SPI. Choć może się wydawać, że istnieją znaczące różnice między dostępnymi opcjami przetworników ADC, prawda jest taka, że po uruchomieniu jednego z nich, łatwo jest zastosować zdobytą wiedzę do innych.
Dlaczego więc nie pójść o krok dalej? Połącz ze sobą kilka potencjometrów lub spróbuj odczytać światło, dźwięk lub temperaturę. Rozbuduj kontroler, który właśnie zbudowałeś, i stwórz praktyczną konfigurację Raspberry Pi! Możesz już teraz sprawdzić Potencjalne wyzwania związane z samodzielnym hostingiem projektów Raspberry Pi.










