- ADC0804 i Raspberry Pi:
- Wymagane składniki:
- Objaśnienie obwodu:
- Objaśnienie programowania:
- Pracujący:
Raspberry Pi to płyta oparta na architekturze ARM przeznaczona dla elektroników i hobbystów. PI jest obecnie jedną z najbardziej zaufanych platform do tworzenia projektów. Dzięki większej szybkości procesora i 1 GB pamięci RAM PI może być używany w wielu ważnych projektach, takich jak przetwarzanie obrazu i Internet rzeczy.
Aby wykonać którykolwiek z ważnych projektów, należy zrozumieć podstawowe funkcje PI. W tych samouczkach omówimy wszystkie podstawowe funkcje Raspberry Pi. W każdym samouczku omówimy jedną z funkcji PI. Pod koniec tej serii samouczków Raspberry Pi będziesz mógł samodzielnie wykonywać ważne projekty. Przejdź przez poniższe samouczki:
- Pierwsze kroki z Raspberry Pi
- Konfiguracja Raspberry Pi
- Miga dioda LED
- Interfejs przycisków Raspberry Pi
- Generacja Raspberry Pi PWM
- Sterowanie silnikiem prądu stałego za pomocą Raspberry Pi
- Sterowanie silnikiem krokowym z Raspberry Pi
- Połączenie rejestru Shift z Raspberry Pi
W tym samouczku podłączymy układ ADC (konwersja analogowo-cyfrowa) do Raspberry Pi. Znamy wszystkie parametry analogu, co oznacza, że zmieniają się one w sposób ciągły w czasie. Załóżmy na przykład, że temperatura w pomieszczeniu zmienia się w czasie w sposób ciągły. Ta temperatura jest podawana za pomocą liczb dziesiętnych. Ale w świecie cyfrowym nie ma liczb dziesiętnych, więc musimy przekonwertować wartość analogową na cyfrową. Ten proces konwersji jest wykonywany techniką ADC. Dowiedz się więcej o ADC tutaj: Wprowadzenie do ADC0804
ADC0804 i Raspberry Pi:
Normalne kontrolery mają kanały ADC, ale dla PI nie ma wewnętrznych kanałów ADC. Więc jeśli chcemy połączyć jakiekolwiek czujniki analogowe, potrzebujemy jednostki konwersji ADC. W tym celu przejdziemy do interfejsu ADC0804 z Raspberry Pi.
ADC0804 to układ przeznaczony do konwersji sygnału analogowego na 8-bitowe dane cyfrowe. Ten chip jest jedną z popularnych serii ADC. Jest to 8-bitowa jednostka konwersji, więc mamy wartości lub wartości od 0 do 255. Przy napięciu pomiarowym maksymalnie 5 V będziemy mieli zmianę co 19,5 mV. Poniżej znajduje się Pinout ADC0804:
Teraz kolejną ważną rzeczą jest to, że ADC0804 działa przy 5 V, a więc dostarcza wyjściowy sygnał logiczny 5 V. Na wyjściu 8-pinowym (reprezentującym 8 bitów), każdy pin zapewnia wyjście + 5V reprezentujące logikę „1”. Problem polega na tym, że logika PI ma + 3,3 V, więc nie można podać logiki + 5 V na pin + 3,3 V GPIO PI. Jeśli podasz + 5V na którykolwiek pin GPIO PI, płytka zostanie uszkodzona.
Tak więc, aby obniżyć poziom logiki z + 5V, użyjemy obwodu dzielnika napięcia. Omówiliśmy wcześniej obwód dzielnika napięcia, aby uzyskać dalsze wyjaśnienia. Zrobimy, że użyjemy dwóch rezystorów, aby podzielić logikę + 5 V na logikę 2 * 2,5 V. Więc po podzieleniu podamy logikę + 2,5v do PI. Tak więc, ilekroć logika `` 1 '' jest prezentowana przez ADC0804, zobaczymy + 2,5 V na Pin PI GPIO zamiast + 5 V.
Dowiedz się więcej o pinach GPIO Raspberry Pi tutaj i przejrzyj nasze poprzednie samouczki.
Wymagane składniki:
Tutaj używamy Raspberry Pi 2 Model B z Raspbian Jessie OS. Wszystkie podstawowe wymagania sprzętowe i programowe zostały wcześniej omówione, możesz je sprawdzić we wprowadzeniu do Raspberry Pi, poza tym, czego potrzebujemy:
- Kołki łączące
- Rezystor 220Ω lub 1KΩ (17 sztuk)
- Potencjometr 10K
- Kondensator 0,1 µF (2 sztuki)
- ADC0804 IC
- Deska do chleba
Objaśnienie obwodu:
Działa na napięciu zasilania + 5V i może mierzyć zmienny zakres napięcia w zakresie 0-5V.
Do połączenia do łączenia ADC0804 do malinowy PI, przedstawiono na schemacie powyżej.
ADC zawsze ma dużo szumów, ten szum może znacznie wpłynąć na wydajność, więc używamy kondensatora 0,1 uF do filtracji szumów. Bez tego będzie dużo wahań na wyjściu.
Układ działa na zegarze oscylatora RC (rezystor-kondensator). Jak pokazano na schemacie obwodu, C2 i R20 tworzą zegar. Ważną rzeczą do zapamiętania jest to, że kondensator C2 można zmienić na niższą wartość, aby uzyskać wyższą szybkość konwersji ADC. Jednak przy większej prędkości zmniejszy się dokładność. Jeśli więc aplikacja wymaga większej dokładności, wybierz kondensator o większej wartości, a dla większej prędkości wybierz kondensator o niższej wartości.
Objaśnienie programowania:
Po podłączeniu wszystkiego zgodnie ze schematem obwodu, możemy włączyć PI, aby napisać program w PYHTON.
Porozmawiamy o kilku komendach, których będziemy używać w programie PYHTON, Zamierzamy zaimportować plik GPIO z biblioteki, poniższa funkcja umożliwia zaprogramowanie pinów GPIO PI. Zmieniamy również nazwę „GPIO” na „IO”, więc w programie zawsze, gdy będziemy chcieli odwołać się do pinów GPIO, użyjemy słowa „IO”.
importuj RPi.GPIO jako IO
Czasami, gdy piny GPIO, których próbujemy użyć, mogą wykonywać inne funkcje. W takim przypadku podczas wykonywania programu będziemy otrzymywać ostrzeżenia. Poniższe polecenie mówi PI, aby zignorował ostrzeżenia i kontynuował program.
IO.setwarnings (fałszywe)
Możemy odnosić się do pinów GPIO PI, albo przez numer pinu na płycie, albo przez numer ich funkcji. Tak jak „PIN 29” na płycie to „GPIO5”. Więc mówimy tutaj albo będziemy reprezentować pinezkę jako „29” lub „5”.
IO.setmode (IO.BCM)
Ustawiamy 8 pinów jako piny wejściowe. Wykryjemy 8-bitowe dane ADC przez te piny.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Jeśli warunek w nawiasach klamrowych jest prawdziwy, instrukcje wewnątrz pętli zostaną wykonane raz. Jeśli więc pin 19 GPIO przejdzie w stan wysoki, instrukcje wewnątrz pętli IF zostaną wykonane raz. Jeśli pin 19 GPIO nie przejdzie w stan wysoki, instrukcje wewnątrz pętli IF nie zostaną wykonane.
if (IO.input (19) == True):
Poniższe polecenie jest używane jako pętla wieczna, z tym poleceniem instrukcje wewnątrz tej pętli będą wykonywane w sposób ciągły.
Podczas gdy 1:
Dalsze wyjaśnienia dotyczące programu znajdują się w części dotyczącej kodów poniżej.
Pracujący:
Po napisaniu programu i wykonaniu go na ekranie pojawi się „0”. „0” oznacza 0 woltów na wejściu.
Jeśli dostosujemy pulę 10K podłączoną do chipa, zobaczymy zmianę wartości na ekranie. Wartości na ekranie przewijają się w sposób ciągły, są to wartości cyfrowe odczytywane przez PI.
Powiedzmy, że jeśli doprowadzimy potencjometr do punktu środkowego, na wejściu ADC0804 mamy + 2,5V. Widzimy więc 128 na ekranie, jak pokazano poniżej.
Dla wartości analogowej + 5 V będziemy mieli 255.
Tak więc, zmieniając potencjometr, zmieniamy napięcie od 0 do + 5V na wejściu ADC0804. Z tym PI odczytaj wartości od 0-255. Wartości są drukowane na ekranie.
Więc połączyliśmy ADC0804 z Raspberry Pi.