Spisu treści:

Pin Arduino AREF: 6 kroków
Pin Arduino AREF: 6 kroków

Wideo: Pin Arduino AREF: 6 kroków

Wideo: Pin Arduino AREF: 6 kroków
Wideo: 6 ARDUINO ANALOG analogReference 2024, Lipiec
Anonim
Pin Arduino AREF
Pin Arduino AREF

W tym samouczku przyjrzymy się, jak można mierzyć mniejsze napięcia z większą dokładnością za pomocą analogowych pinów wejściowych na Arduino lub kompatybilnej płytce w połączeniu z pinem AREF. Jednak najpierw zrobimy kilka poprawek, aby przyspieszyć. Prosimy o zapoznanie się z tym postem w całości przed pierwszą współpracą z AREF.

Krok 1: Rewizja

Rewizja!
Rewizja!

Być może pamiętasz, że możesz użyć funkcji Arduino analogRead() do pomiaru napięcia prądu elektrycznego z czujników i tak dalej za pomocą jednego z pinów wejścia analogowego. Wartość zwrócona z analogRead() będzie wynosić od zera do 1023, przy czym zero reprezentuje zero woltów, a 1023 reprezentuje napięcie robocze używanej płyty Arduino.

A kiedy mówimy o napięciu roboczym – to jest napięcie dostępne dla Arduino po obwodach zasilających. Na przykład, jeśli masz typową płytkę Arduino Uno i uruchamiasz ją z gniazda USB – na pewno jest 5V dostępne na płytce z gniazda USB w twoim komputerze lub hubie – ale napięcie jest nieznacznie zmniejszane, gdy prąd krąży wokół obwód do mikrokontrolera – lub źródło USB po prostu nie jest do zera.

Można to łatwo zademonstrować, podłączając Arduino Uno do USB i umieszczając zestaw multimetru do pomiaru napięcia na pinach 5V i GND. Niektóre płyty zwrócą tak niskie, jak 4,8 V, niektóre wyższe, ale nadal poniżej 5 V. Więc jeśli dążysz do dokładności, zasilaj swoją deskę z zewnętrznego zasilacza przez gniazdo DC lub pin Vin – na przykład 9V DC. Następnie przechodzi przez obwód regulatora mocy, będziesz miał ładne 5 V, na przykład obraz.

Jest to ważne, ponieważ na dokładność dowolnych wartości analogRead() wpłynie brak prawdziwego 5 V. Jeśli nie masz żadnej opcji, możesz użyć matematyki w swoim szkicu, aby zrekompensować spadek napięcia. Na przykład, jeśli twoje napięcie wynosi 4,8 V – zakres analogRead() 0~1023 będzie odnosić się do 0~4,8V, a nie 0~5V. Może to zabrzmieć banalnie, jednak jeśli używasz czujnika, który zwraca wartość jako napięcie (np. czujnik temperatury TMP36) – obliczona wartość będzie błędna. Dlatego w trosce o dokładność używaj zewnętrznego źródła zasilania.

Krok 2: Dlaczego AnalogRead() zwraca wartość z przedziału od 0 do 1023?

Dlaczego AnalogRead() zwraca wartość z zakresu od 0 do 1023?
Dlaczego AnalogRead() zwraca wartość z zakresu od 0 do 1023?

Wynika to z rozdzielczości ADC. Rozdzielczość (w tym artykule) to stopień, w jakim coś można przedstawić liczbowo. Im wyższa rozdzielczość, tym większa dokładność, z jaką można coś przedstawić. Mierzymy rozdzielczość w kategoriach liczby bitów rozdzielczości.

Na przykład, rozdzielczość 1-bitowa pozwoliłaby tylko na dwie (dwie do potęgi jeden) wartości – zero i jeden. Rozdzielczość 2-bitowa pozwoliłaby na cztery (dwie do potęgi dwójki) wartości – zero, jeden, dwa i trzy. Gdybyśmy spróbowali zmierzyć zakres pięciu woltów z dwubitową rozdzielczością, a zmierzone napięcie wyniosło cztery wolty, nasz ADC zwróciłby wartość liczbową 3 – ponieważ cztery wolty spadają między 3,75 a 5V. Łatwiej sobie to wyobrazić za pomocą obrazu.

Tak więc w naszym przykładzie ADC z 2-bitową rozdzielczością może reprezentować napięcie tylko z czterema możliwymi wartościami wynikowymi. Jeśli napięcie wejściowe spadnie między 0 a 1,25, ADC zwraca wartość liczbową 0; jeśli napięcie spadnie między 1,25 a 2,5, ADC zwraca wartość liczbową 1. I tak dalej. Z zakresem ADC naszego Arduino od 0 do 1023 – mamy 1024 możliwych wartości – lub od 2 do potęgi 10. Tak więc nasze Arduino mają ADC z 10-bitową rozdzielczością.

Krok 3: Czym więc jest AREF?

Krótko mówiąc, gdy Arduino wykonuje odczyt analogowy, porównuje napięcie zmierzone na używanym styku analogowym z tak zwanym napięciem odniesienia. W normalnym użyciu analogRead napięcie odniesienia jest napięciem roboczym płyty.

Dla bardziej popularnych płyt Arduino, takich jak Uno, Mega, Duemilanove i Leonardo/Yún, napięcie pracy 5V. Jeśli masz płytkę Arduino Due, napięcie robocze wynosi 3,3V. Jeśli masz coś jeszcze – sprawdź stronę produktu Arduino lub zapytaj swojego dostawcę płytki.

Więc jeśli masz napięcie odniesienia 5 V, każda jednostka zwrócona przez analogRead() jest wyceniana na 0,00488 V. (Jest to obliczane przez podzielenie 1024 na 5 V). A co jeśli chcemy mierzyć napięcia od 0 do 2 lub od 0 do 4,6? Skąd ADC wiedziałby, co stanowi 100% naszego zakresu napięcia?

I w tym tkwi przyczyna pinu AREF. AREF oznacza Analogowe Odniesienie. Dzięki temu możemy zasilić Arduino napięciem odniesienia z zewnętrznego zasilacza. Na przykład, jeśli chcemy mierzyć napięcia z maksymalnym zakresem 3,3 V, wprowadzilibyśmy ładne, gładkie 3,3 V do pinu AREF – być może z regulatora napięcia IC.

Wtedy każdy krok ADC reprezentowałby około 3,22 miliwolta (podziel 1024 na 3,3). Zauważ, że najniższe napięcie odniesienia, jakie możesz mieć, to 1,1 V. Istnieją dwie formy AREF – wewnętrzna i zewnętrzna, więc sprawdźmy je.

Krok 4: Zewnętrzny AREF

Zewnętrzny AREF to miejsce, w którym dostarczasz zewnętrzne napięcie odniesienia do płyty Arduino. Może to pochodzić z regulowanego zasilacza lub jeśli potrzebujesz 3,3 V, możesz je uzyskać z pinu 3,3 V Arduino. Jeśli korzystasz z zewnętrznego zasilacza, upewnij się, że podłączyłeś GND do pinu GND Arduino. Lub jeśli używasz źródła 3,3 V Arduno – po prostu uruchom zworkę z pinu 3.3 V do pinu AREF.

Aby aktywować zewnętrzny AREF, użyj następującego polecenia w void setup():

analogReference(ZEWNĘTRZNY); // użyj AREF dla napięcia odniesienia

To ustawia napięcie odniesienia na to, co podłączyłeś do pinu AREF – co oczywiście będzie miało napięcie między 1,1 V a napięciem roboczym płyty. Bardzo ważna uwaga – używając zewnętrznego napięcia odniesienia, musisz ustawić analogowe odniesienie na ZEWNĘTRZNE przed użyciem analogRead(). Zapobiegnie to zwarciu aktywnego wewnętrznego napięcia odniesienia i pinu AREF, co może uszkodzić mikrokontroler na płytce. Jeśli jest to konieczne dla twojej aplikacji, możesz powrócić do napięcia roboczego płyty dla AREF (tj. Powrót do normalnego) w następujący sposób

AnalogReference (DOMYŚLNE);

Teraz zademonstruj działanie zewnętrznego AREF. Używając AREF 3,3 V, poniższy szkic mierzy napięcie od A0 i wyświetla procent całkowitego AREF i obliczone napięcie:

#include "LiquidCrystal.h"

LCD LiquidCrystal (8, 9, 4, 5, 6, 7);

int wejście analogowe = 0; // nasz pin analogowy

int kwota analogowa = 0; // przechowuje przychodzącą wartość float procent = 0; // służy do przechowywania naszej wartości procentowej float voltage =0; // służy do przechowywania wartości napięcia

pusta konfiguracja()

{ lcd.rozpocznij(16, 2); analogReference(ZEWNĘTRZNY); // użyj AREF jako napięcia odniesienia }

pusta pętla()

{ lcd.wyczyść(); kwota analogowa=analogRead(wejście analogowe); procent=(wartość analogowa/1024,00)*100; napięcie=wartość analogowa*3,222; // w miliwoltach lcd.setCursor(0, 0); lcd.print("% AREF: "); lcd.print(procent, 2); lcd.setCursor(0, 1); lcd.print("A0 (mV): "); lcd.println(napięcie, 2); opóźnienie(250); }

Wyniki powyższego szkicu są pokazane na filmie.

Krok 5: Wewnętrzny AREF

Mikrokontrolery na naszych płytach Arduino mogą również generować wewnętrzne napięcie odniesienia 1,1 V i możemy je wykorzystać do pracy AREF. Wystarczy skorzystać z linii:

analogReference(WEWNĘTRZNY);

W przypadku płyt Arduino Mega użyj:

referencja analogowa(INTERNAL1V1);

w void setup() i jesteś wyłączony. Jeśli masz Arduino Mega, dostępne jest również napięcie odniesienia 2,56 V, które jest aktywowane za pomocą:

referencja analogowa(INTERNAL2V56);

Wreszcie – przed ustaleniem wyników z pinu AREF, zawsze kalibruj odczyty względem znanego dobrego multimetru.

Wniosek

Funkcja AREF zapewnia większą elastyczność przy pomiarach sygnałów analogowych.

Ten post został dostarczony przez pmdway.com - wszystko dla producentów i entuzjastów elektroniki, z bezpłatną dostawą na całym świecie.

Zalecana: