Konwersja sygnału analogowego na cyfrowy (szeregowy odczyt analogowy) - Podstawy Arduino

Wypróbuj Nasz Instrument Do Eliminowania Problemów





W tych podstawach Arduino staramy się zrozumieć procedurę implementacji kodu, w której zewnętrzny sygnał analogowy jest podawany na wejście analogowe Arduino i tłumaczony lub konwertowany na odpowiednio proporcjonalny odczyt cyfrowy. Tutaj jako analogowe źródło sygnału używamy zmiennej rezystancji w postaci potencjometru.

Analogowy odczyt szeregowy

W tym przykładzie uczymy się sposobu odczytu wejścia analogowego z urządzenia zewnętrznego takiego jak potencjometr, który jest urządzeniem elektromechanicznym przeznaczonym do wprowadzania zmiennej rezystancji w obwodzie poprzez sterowanie ręczne.



Arduino można wykorzystać do pomiaru wielkości napięcia wychodzącego z potencjometru w celu odczytania i zidentyfikowania odpowiednio zmieniającej się rezystancji. Można to zrobić, podając napięcie do analogowego portu wejściowego Arduino jako wartość analogową.

Tutaj zobaczymy, jak powyższe jest egzekwowane po ustanowieniu komunikacji szeregowej przez Arduino i połączony komputer.



Wymagany sprzęt

Płytka Arduino

Potencjometr 10 kiloomów

Działanie obwodu

Jak pokazano na powyższym schemacie, podłącz trzy przewody wychodzące z garnka do portów Arduino.

Przewód z jednego z zewnętrznych wyprowadzeń doniczki jest przyporządkowany do masy lub ujemnej linii płytki.

Drugi wolny skrajny zewnętrzny przewód końcowy jest podłączony do + 5V płyty.

Pozostało środkowe wyprowadzenie potencjometru, które jest zakończone analogowym wejściem na płycie Arduino.

Gdy wałek garnka jest obracany, opór w poprzek środkowego przewodu i zewnętrznego zacisku zmienia się z wyższego na niższy i odwrotnie, w zależności od tego, do której strony ramię suwaka zbliża się.

Na przykład, gdy ramię suwaka jest obracane w kierunku przewodu + 5 V, przewód środkowy zbliża się do 5 V i ma tendencję do uzyskiwania całej wartości, gdy dotyka przypisanego przewodu 5 V. Podobnie, gdy wałek suwaka jest przesuwany w kierunku przewodu uziemienia garnka, przewód środkowy ma tendencję do osiągania potencjału zerowego.

Powyższe liniowo zmieniające się napięcie zasilania na środkowym wyprowadzeniu potencjometru jest odczytywane przez wejście analogowe arduino w celu zinterpretowania go na odpowiednio zmieniającą się rezystancję potencjometru.

Arduino zawiera wewnętrzny obwód konwertera analogowo-cyfrowego, który efektywnie interpretuje powyższy ruch potencjometru i konwertuje go na liczby od 0 do 1023.

Określone położenie nad wałem garnka powoduje, że proporcjonalna liczba od 0 do 1023 jest tłumaczona przez Arduino, a dla wartości końcowych 5 V i zero woltów interpretacje wynoszą oczywiście od 0 do 1023.

W programie, o którym mowa, funkcja konfiguracji musi być uruchomiona wyłącznie w celu zainicjowania komunikacji szeregowej, z szybkością 9600 bitów danych na sekundę, na całej płycie Arduino i komputerze.

Oczekiwane polecenie ma postać:

Serial.begin (9600)

Następnie w głównej pętli twojego kodu wymuszamy zmienną w celu ustalenia wartości rezystancji (która byłaby taka, jak omówiono między 0 a 1023, tylko odpowiednia dla typu danych int) otrzymanej z potencjometrów:

int sensorValue = analogRead (A0)

Podsumowując, wydrukuj te informacje w oknie szeregowym jako wartość dziesiętną (DEC). Możesz użyć polecenia Serial.println (), aby zaimplementować to w ostatnim wierszu kodu:

Serial.println (sensorValue, DEC)

Następnie za każdym razem, gdy Serial Monitor jest inicjowany w domenie programistycznej Arduino (odbywa się to poprzez kliknięcie przycisku znajdującego się bezpośrednio po prawej stronie przycisku „Prześlij” w nagłówku programu).

widzielibyśmy spójny łańcuch cyfr biegnący od 0 do 1023, odpowiadający zmieniającej się pozycji obrotowej wału garnka.

Jeśli w pewnym momencie zatrzymamy obrót wału garnka, odpowiednia chwilowa liczba zostanie wyświetlona na ekranie Arduino, co ponownie zmieni się proporcjonalnie, gdy będziemy zmieniać pozycję wału garnka.

Kod

/ *
AnalogReadSerial
Odczytuje wejście analogowe na pinie 0, drukuje wynik na monitorze szeregowym.
Podłącz środkowy kołek potencjometru do styku A0, a piny zewnętrzne do + 5 V i uziemienia.

Ten przykładowy kod należy do domeny publicznej.
* /

// procedura konfiguracji jest uruchamiana raz po naciśnięciu resetowania:
void setup () {
// zainicjuj komunikację szeregową przy 9600 bitach na sekundę:
Serial.begin (9600)
}

// procedura pętli działa w kółko w nieskończoność:
void loop () {
// odczytaj wejście na pinie analogowym 0:
int sensorValue = analogRead (A0)
// wydrukuj odczytaną wartość:
Serial.println (sensorValue)
delay (1) // opóźnienie między odczytami dla stabilności
}




Poprzedni: Monitorowanie stanu przełącznika (szeregowy odczyt cyfrowy) - Podstawy Arduino Dalej: Obwód regulatora napięcia o napięciu od 1,25 V do 120 V