Odczytywanie wartości z analogowych czujników za pomocą pyMCU

Jedną z bardzo przydatnych funkcjonalności pyMCU jest czytanie wartości analogowych - a dokładnie napięcia w obwodzie, które zmieniane jest przez analogowy czujnik. Tym czujnikiem może być dowolny element o zmieniającej się rezystancji. Fotodiody, fototranzystory, fotorezystory reagują na światło. Termopary, termoelementy i inne czujniki temperatury pozwalają mierzyć temperaturę w różnych zakresach. Czujnik Halla reaguje na obecność pola magnetycznego. Czujników tego typu jest bardzo dużo i mogą znaleźć różnorakie zastosowanie.

Odczytywanie wartości

Odczyt wartości analogowej możliwy jest poprzez metodę analogRead(NUMER_PINU). Pinów mamy 6 (A1-A6), więc na raz możemy pracować z maksymalnie sześcioma czujnikami. Metoda ta zwróci wartość z przedziału 0-1023, gdzie 0 to brak napięcia, a 1023 to napięcie zadane przez płytkę (brak spadku napięcia).

Prosty układ czytający wartość z czujnika potrzebuje także dodatkowe rezystora. Dobór jego rezystancji trzeba dobrać do danego czujnika, tak by rejestrowane wartości z interesującego nas zakresu rozkładały się jak najlepiej na skali 0-1023. W przypadku typowego czujnika światła można zacząć od około 10 kΩ. Schemat układu wygląda następująco:

Schemat układu z fotorezystorem

Czujnik podłączamy z jednej strony do VCC(+) a z drugiej poprzez rezystor do GND(-). Wyjście analogowe mierzące wartość z czujnika podłączamy pomiędzy rezystorem a czujnikiem.

Układ z fotorezystorem, fotodiodą
Fotorezystor
Czujnik temperatury
Prosty skrypt do ciągłego odczytywania wartości wygląda tak:
import pymcu

mb = pymcu.mcuModule()

while 1:
    print mb.analogRead(1)

10 kΩ rezystor dał w połączeniu z wspomnianymi czujnikami światła zmiany wartości rzędu kilkuset jednostek (jasno-ciemno). Dla czujnika temperatury o znacznie mniejszej rezystancji był zbyt mocny. Wykorzystałem fototranzystor L53P3BT reagujący na światło podczerwone 940 nm. Żeby taki czujnik działał poprawnie musi być podłączony w kierunku zaporowym (na odwrót niż normalnie, np. dla diody LED). Fotorezystor nie jest spolaryzowany i można go podłączyć w dowolnej orientacji.

Potencjometr nie jest czujnikiem, a jedynie rezystorem o zmiennej rezystancji, która możemy ustawiać. Potencjometry są/były wykorzystywane w sprzęcie elektronicznym do wszelkiego rodzaju pokręteł i suwaków ustawiających np. głośność radia. W układach podłączonych do pyMCU możemy odczytywać obecne napięcie w układzie tak jak dla wcześniej omawianych czujników. Przykład znajduje się w tutorialach na stronie pyMCU.

W przypadku potencjometrów nie potrzebujemy drugiego rezystora. Wyjście analogowe A1 możemy podłączyć do trzeciego pinu potencjometru, które dotyka materiału rezystywnego gdzieś pomiędzy końcami potencjometru. Układ z potencjometrem będzie działał niezależnie od kierunku jego podłączenia. Jeżeli jednak podłączymy potencjometr "odwrotnie" to uzyskamy odwrócone wartości (1023 gdy potencjometr jest wyłączony i nie ma przepływu prądu).

Układ z potencjometrem

Kalibracja i jednostki

Podłączając np. termoparę nie otrzymamy temperatury jako odpowiedzi. Żeby z wartości od 0 do 1023 uzyskać temperaturę, czy inną jednostkę dla pozostałych czujników trzeba je skalibrować. Mierzymy wartość dla np. znanych temperatur i wyprowadzamy wzór na funkcję opisującą relację mierzonej wartości 0-1023 do temperatury. Najprościej jest gdy czujnik ma liniową lub np. logarytmiczną odpowiedź na bodziec - łatwo to opisać wzorem matematycznym i dokładnie przeliczać odczytaną wartość.

RkBlog

Elektronika i Python, 9 June 2013

Comment article
Comment article RkBlog main page Search RSS Contact