Spisu treści:
- Krok 1: Rewizja
- Krok 2: Dlaczego AnalogRead() zwraca wartość z przedziału od 0 do 1023?
- Krok 3: Czym więc jest AREF?
- Krok 4: Zewnętrzny AREF
- Krok 5: Wewnętrzny AREF
Wideo: Pin Arduino AREF: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
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
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?
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:
Złącze ICSP dla Arduino Nano bez lutowanego złącza pinowego, ale pin Pogo: 7 kroków
Złącze ICSP dla Arduino Nano bez lutowanej listwy stykowej, ale Pogo Pin: Zrób złącze ICSP dla Arduino Nano bez lutowanej listwy stykowej na płycie, ale Pogo Pin.Części Gniazdo pinowe 3 × 2 x1 - APitch 2,54 mm przewód Dupont Line Wire Złącze żeńskie Końcówki obudowy x6 - BP75-E2 (głowica stożkowa 1,3 mm) Sonda testowa sprężyny Pogo Pin
Elektroniczny system bezpieczeństwa z RTC i kodem PIN definiowanym przez użytkownika: 7 kroków
Elektroniczny system bezpieczeństwa z RTC i kodem PIN definiowanym przez użytkownika: Hi Guys! Jest to projekt, który wykonałem za pomocą mikrokontrolera pic, który jest elektronicznym systemem zabezpieczającym kod PIN z zegarem czasu rzeczywistego i funkcjami kodu PIN definiowanymi przez użytkownika, ta strona zawiera wszystkie szczegóły, które można zrobić samemu. JEGO DZIAŁANIE I KONCEPCJA: Cóż
Jedna klawiatura pin 4×4: 10 kroków
Jedna klawiatura 4×4: Za każdym razem, gdy widzę klawiaturę, ma ona wiele pinów, to duża strata twoich pinów Arduino, więc czy możemy uruchomić klawiaturę z jednym i tylko jednym pinem? Odpowiedź jest tutaj
Polecenia AT dla modułu Bluetooth (HC-05 W / EN Pin i BUTTON) za pomocą płytki Arduino!: 5 kroków
Polecenia AT dla modułu Bluetooth (HC-05 W / EN Pin i BUTTON) Korzystanie z płyty Arduino!: Jay Amiel AjocGensan PH Ta instrukcja pomoże ci rozpocząć korzystanie z modułu bluetooth HC05. Pod koniec tej instrukcji nauczysz się o wysyłaniu komend AT do modułu w celu jego skonfigurowania/zmodyfikowania (nazwa, hasło, prędkość transmisji
Wykrywacz metali Pin-Pointer - Arduino: 6 kroków (ze zdjęciami)
Wykrywacz metali Pin-Pointer - Arduino: Jeśli jesteś entuzjastą wykrywaczy metali lub po prostu szukasz poręcznego narzędzia warsztatowego, spodoba ci się ten wyjątkowy ręczny pinpointer do zawężania określonej lokalizacji metalowego celu. Kolory LED do sygnalizacji