Kategorie: Obwody mikrokontrolera
Liczba wyświetleń: 18998
Komentarze do artykułu: 0

Podłączanie czujników analogowych do Arduino, czytanie czujników

 

Czujniki służą do pomiaru wielkości, warunków środowiskowych i reakcji na zmiany stanów i pozycji. Na ich wyjściu mogą znajdować się sygnały cyfrowe składające się z zer i jedynek, a także sygnały analogowe, składające się z nieskończonej liczby napięć w pewnym przedziale.


O czujnikach

W związku z tym czujniki są podzielone na dwie grupy:

1. Cyfrowy.

2. Analogowy.

Do odczytu wartości cyfrowych można w naszym przypadku wykorzystać zarówno cyfrowe, jak i analogowe wejścia mikrokontrolera Avr na tablicy Arduino. Czujniki analogowe muszą być podłączone przez przetwornik analogowo-cyfrowy (ADC). ATMEGA328, to jest zainstalowany na większości płyt ARDUINO (więcej na ten temat na stronie znajduje się artykuł), zawiera w swoim obwodzie wbudowane ADC. Do wyboru jest aż 6 wejść analogowych.

Jeśli to ci nie wystarczy, możesz użyć dodatkowego zewnętrznego ADC do połączenia z wejściami cyfrowymi, ale to skomplikuje kod i zwiększy jego głośność, z powodu dodania algorytmów przetwarzania i kontroli ADC. Temat konwerterów analogowo-cyfrowych jest na tyle szeroki, że można o nich napisać osobny artykuł lub cykl. Łatwiej jest korzystać z tablicy z dużą ich liczbą lub multiplekserów. Zobaczmy, jak podłączyć czujniki analogowe do Arduino.

Podłączanie czujników analogowych do Arduino, odczyt odczytów czujników

Ogólny schemat czujników analogowych i ich połączeń

Czujnik może być nawet konwencjonalnym potencjometrem. W rzeczywistości jest to rezystancyjny czujnik położenia, na tej zasadzie kontrolują poziom cieczy, kąt nachylenia, otwarcie czegoś. Można go podłączyć do arduino na dwa sposoby.

Ogólny schemat czujników analogowych i ich połączeń

Powyższy obwód pozwala odczytać wartości od 0 do 1023, ponieważ wszystkie napięcia spadają na potencjometrze. Tutaj działa zasada dzielnika napięcia, w dowolnym położeniu silnika napięcie rozkłada się liniowo na powierzchni warstwy rezystancyjnej lub w skali logarytmicznej (w zależności od potencjometru) ta część napięcia, która pozostaje między mocą wyjściową suwaka (styk ślizgowy) a masą (gnd) dociera do wejścia. Na tablicy kontrolnej to połączenie wygląda następująco:

Schemat połączeń dla czujników analogowych

Druga opcja jest podłączona zgodnie ze schematem klasycznego dzielnika rezystancyjnego, tutaj napięcie w punkcie maksymalnej rezystancji potencjometru zależy od rezystancji górnego rezystora (na rysunku R2).

Klasyczny dzielnik rezystancyjny

Ogólnie rzecz biorąc, dzielnik rezystancyjny jest bardzo ważny nie tylko w dziedzinie pracy z mikrokontrolerami, ale także ogólnie w elektronice. Poniżej znajduje się ogólny schemat, a także obliczone stosunki do określania wartości napięcia na przedramieniu.

Schematy i zależności projektowe do określania wartości napięcia na przedramieniu

Takie połączenie jest charakterystyczne nie tylko dla potencjometru, ale dla wszystkich czujników analogowych, ponieważ większość z nich działa na zasadzie zmiany rezystancji (przewodności) pod wpływem źródeł zewnętrznych - temperatury, światła, różnego rodzaju promieniowania itp.

Oto najprostszy schemat połączeń termistor, w zasadzie termometr może być wykonany na jego podstawie. Ale dokładność jego odczytów będzie zależeć od dokładności tabeli przeliczania rezystancji na temperaturę, stabilności źródła zasilania i współczynników zmiany rezystancji (w tym rezystora ramienia) pod wpływem tej samej temperatury. Można to zminimalizować, wybierając optymalne rezystancje, ich moc i prądy robocze.

Najprostszy schemat połączeń dla termistora

W ten sam sposób można podłączyć fotodiody, fototranzystory jako czujnik światła. Fotoelektronika znalazła zastosowanie w czujnikach określających odległość i obecność obiektu, z których jeden rozważymy później.

Fotorezystor

Rysunek pokazuje połączenie fotorezystora z arduino.

Schemat podłączenia fotorezystora do arduino

Część oprogramowania

Zanim zacznę mówić o podłączeniu określonych czujników, postanowiłem rozważyć oprogramowanie do ich przetwarzania. Wszystkie sygnały analogowe są odczytywane z tych samych portów za pomocą polecenia analogRead ().Warto zauważyć, że Arduino UNO i inne modele z atmega 168 i 328 mają 10-bitowy ADC. Oznacza to, że mikrokontroler odbiera sygnał wejściowy jako liczbę od 0 do 1023 - łącznie 1024 wartości. Jeśli uważasz, że napięcie zasilania wynosi 5 woltów, to czułość wejściowa:

5/1024 = 0,0048 V lub 4,8 mV

Oznacza to, że przy wartości 0 na wejściu napięcie wynosi 0, a przy wartości 10 na wejściu - 48 mV.

W niektórych przypadkach, aby przekonwertować wartości na pożądany poziom (na przykład w celu przesłania na wyjście PWM), 1024 dzieli się przez liczbę, a w wyniku podziału należy uzyskać wymagane maksimum. Funkcja mapy (źródło, niska, wysoka, wysoka, wysoka, niska) działa wyraźniej, gdzie:

  • niska - niższa liczba przed konwersją według funkcji;

  • vch - górny;

  • VCh - niższa liczba po przetworzeniu przez funkcję (na wyjściu);

  • VHV - góra.

Praktyczna aplikacja do konwersji funkcji na wartość wejściową do transmisji do PWM (maksymalna wartość to 255, do konwersji danych z ADC na wyjście PWM, 1024 jest podzielone przez 4):

Opcja 1 - podział.

int x;

x = analogRead (pot) / 4;

// otrzymana zostanie liczba od 0 do 1023

// podzielmy przez 4, otrzymujemy liczbę całkowitą od 0 do 255 analogWrite (led, x);

Opcja 2 - funkcja MAP - otwiera więcej możliwości, ale więcej na ten temat później.

void loop ()

{int val = analogRead (0);

val = mapa (val, 0, 1023, 0, 255);

analogWrite (led, val); }

Lub nawet krócej:

analogWrite (led, mapa (val, 0, 1023, 0, 255))

Nie wszystkie czujniki mają na wyjściu 5 woltów, tj. liczba 1024 nie zawsze jest wygodna do podzielenia, aby uzyskać takie same 256 dla PWM (lub dowolnego innego). Mogą to być 2 i 2,5 wolta oraz inne wartości, gdy maksymalny sygnał wyniesie na przykład 500.


Popularne czujniki analogowe

Ogólny widok czujnika arduino i jego połączenia pokazano poniżej:

Jak podłączyć czujnik analogowy

Zwykle są trzy wyjścia, może być czwarty - cyfrowy, ale są to cechy.

Objaśnienie oznaczenia wyjść czujnika analogowego:

  • G - minus moc, wspólna magistrala, masa. Może być oznaczony jako GND, „-”;

  • V - plus moc. Może być oznaczony jako Vcc, Vtg, „+”;

  • S - sygnał wyjściowy, możliwa notacja - Out, SGN, Vout, znak.

Początkujący uczą się, jak odczytać wartości czujników, wybierają projekty wszelkiego rodzaju termometrów. Takie czujniki są zaprojektowane cyfrowo, na przykład DS18B20, i analogowo - są to wszelkiego rodzaju mikroukłady, takie jak LM35, TMP35, TMP36 i inne. Oto przykład modułowej konstrukcji takiego czujnika na płycie.

Czujnik analogowy w TMP36

Dokładność czujnika wynosi od 0,5 do 2 stopni. Zbudowany na układzie TMP36, podobnie jak wiele jego analogów, jego wartości wyjściowe wynoszą 10 mV / ° C. Przy 0 ° sygnał wyjściowy wynosi 0 V, a następnie dodaje się 10 mV na 1 stopień. Oznacza to, że przy 25,5 stopnia napięcie wynosi 0,255 V, możliwe jest odchylenie w granicach błędu i samonagrzewania kryształu IC (do 0,1 ° C).


W zależności od zastosowanego mikroukładu zakresy pomiarowe i napięcia wyjściowe mogą się różnić, patrz tabela.

Zakresy temperatur i napięcia wyjściowe czujnika

Jednak w przypadku termometru wysokiej jakości nie można po prostu odczytać wartości i wyświetlić ich na wskaźniku LCD lub porcie szeregowym w celu komunikacji z komputerem, aby zapewnić stabilność sygnału wyjściowego całego systemu jako całości, należy uśrednić wartości z czujników, zarówno analogowych, jak i cyfrowych, w określonych granicach, podczas gdy bez wpływu na ich szybkość i dokładność (wszystko jest ograniczone). Wynika to z obecności hałasu, zakłóceń, niestabilnych styków (w przypadku czujników rezystancyjnych opartych na potencjometrze, patrz nieprawidłowe działanie czujnika poziomu wody lub paliwa w zbiorniku samochodu).

Kody do pracy z większością czujników są dość obszerne, więc nie dam ich wszystkich, można je łatwo znaleźć w sieci na żądanie „czujnik + nazwa Arduino”.

Kolejnym czujnikiem, z którego często korzystają inżynierowie arduino, jest czujnik liniowy. Opiera się na urządzeniach fotoelektronicznych, rodzaj fototranzystorów.

Czujnik linii

Z ich pomocą robot poruszający się wzdłuż linii (wykorzystywany w automatycznej produkcji do dostarczania części) określa obecność białego lub czarnego paska. Po prawej stronie rysunku widoczne są dwa urządzenia podobne do diod LED. Jednym z nich jest dioda LED, która może emitować w niewidzialnym spektrum, a drugim fototranzystor.

Światło odbija się od powierzchni, jeśli jest ciemne - fototranzystor nie odbiera odbijanego strumienia, ale jeśli światło odbiera i otwiera się. Algorytmy wprowadzone do mikrokontrolera przetwarzają sygnał i określają poprawność i kierunek ruchu oraz je poprawiają. Mysz optyczna, którą najprawdopodobniej trzymasz w dłoni podczas czytania tych linii, jest podobnie ułożona.

Uzupełnię o sąsiedni czujnik - czujnik odległości od Sharpa, jest również stosowany w robotyce, a także w warunkach monitorowania położenia obiektów w przestrzeni (z odpowiednim błędem TX).

Ostry czujnik odległości

Działa na tej samej zasadzie. Biblioteki oraz przykłady szkiców i projektów z nimi dostępnych są w dużych ilościach na stronach poświęconych Arduino.


Wniosek

Korzystanie z czujników analogowych jest bardzo proste, a dzięki łatwemu do nauczenia się językowi programowania Arduino szybko uczysz się prostych urządzeń. To podejście ma znaczące wady w porównaniu z odpowiednikami cyfrowymi. Wynika to z dużej zmienności parametrów, co powoduje problemy przy wymianie czujnika. Konieczna może być edycja kodu źródłowego programu.

To prawda, że ​​poszczególne urządzenia analogowe zawierają referencyjne źródła napięcia i stabilizatory prądu, co ma pozytywny wpływ na powtarzalność produktu końcowego i urządzenia w produkcji masowej. Wszystkich problemów można uniknąć za pomocą urządzeń cyfrowych.

Obwody cyfrowe jako takie zmniejszają potrzebę dostrajania i regulacji obwodu po montażu. Daje to możliwość montażu kilku identycznych urządzeń na tym samym kodzie źródłowym, których szczegóły dadzą te same sygnały, przy rezystancyjnych czujnikach jest to rzadkie.

Zobacz także na naszej stronie internetowej:Podłączanie urządzeń zewnętrznych do Arduino

Zobacz także na bgv.electricianexp.com:

  • Jaka jest różnica między czujnikami analogowymi i cyfrowymi
  • Pomiar temperatury i wilgotności na Arduino - wybór metod
  • Jak przebiega konwersja sygnału analogowego na cyfrowy
  • Najpopularniejsze czujniki dla Arduino
  • Jak ustawiony jest czujnik linii i jak działa

  •