Szukaj kodu

Lekcja 98-9: Miernik poziomu napięcia LED z użyciem Arduino lub światło kroczące z potencjometrem

Lekcja 98-9: Miernik poziomu napięcia LED z użyciem Arduino lub światło kroczące z potencjometrem

Ten projekt pokazuje, jak zbudować miernik poziomu napięcia, który wykorzystuje pięć diod LED jako wyświetlacz słupkowy, sterowany w całości przez Arduino i pojedynczy potencjometr. Gdy obracasz pokrętłem, Arduino odczytuje zmieniające się napięcie na pinie analogowym i zapala jedną diodę LED na każdy wolt, więc rząd świateł dosłownie „wędruje” w górę i w dół wraz z pokrętłem. To jeden z najjaśniejszych sposobów zrozumienia wejścia analogowego, ponieważ możesz zobaczyć konwersję analogowo-cyfrową zachodzącą w czasie rzeczywistym jako fizyczny pasek świetlny.

5 leds on breadboard with sliding veriable resistor shown connected to Arduino UNO
5 diod LED na płytce stykowej z przesuwnym rezystorem zmiennym podłączonym do Arduino UNO

Wartość praktyczna wykracza tutaj znacznie poza pokaz świetlny. Gdy zrozumiesz, jak zmapować zmierzone napięcie na zestaw wyjść, możesz ponownie wykorzystać dokładnie ten sam wzorzec do prawdziwej instrumentacji. Na przykład możesz zbudować:

  • Wskaźnik naładowania baterii, który pokazuje pozostałą pojemność power banku 12 V lub USB jako rząd diod LED.
  • Wskaźnik poziomu wody w zbiorniku, w którym czujnik pływakowy wyprowadza napięcie proporcjonalne do głębokości.
  • Wyświetlacz słupkowy temperatury wykorzystujący analogowy czujnik temperatury, taki jak LM35.
  • Miernik siły sygnału lub poziomu dźwięku dla odbiornika radiowego lub wzmacniacza.
  • Prosty odczyt czujnika dla dowolnego przetwornika analogowego 0–5 V (ciśnienie, światło, pozycja).
  • Sondę napięcia do testów warsztatowych do sprawdzania szyn zasilania bez ekranu multimetru.

Ponieważ progi są obliczane jako procenty napięcia płytki, ten sam kod działa na płytkach 5 V, takich jak Uno i Mega, oraz na płytkach 3,3 V przy zmianie tylko jednej linii.

Sprzęt i komponenty

Lista części jest celowo minimalna, a wszystko jest wyjaśnione we wczesnej części filmu (w filmie o 01:54). Będziesz potrzebować:

  • Jedną płytkę Arduino (Uno, Nano lub Mega).
  • Pięć diod LED, najlepiej w jednym kolorze, aby pasek był czytelny, choć mieszane kolory również działają dobrze.
  • Pięć rezystorów ograniczających prąd. W samouczku użyto rezystorów 1 kΩ, ale wszystko od około 300 Ω do 1 kΩ będzie działać; wyższe wartości po prostu powodują, że diody LED są ciemniejsze (w filmie o 05:33).
  • Jeden potencjometr. Zaprezentowano zarówno typ z pokrętłem obrotowym, jak i typ przesuwny (w filmie o 02:19).
  • Płytkę stykową i przewody połączeniowe.

Krótka uwaga na temat samej diody LED, ponieważ ma to znaczenie przy okablowaniu: dioda LED jest diodą, więc przewodzi tylko w jednym kierunku. Płaska strona plastikowej obudowy i krótsza nóżka to katoda (ujemna). Dłuższa nóżka to anoda (dodatnia). Samouczek szczegółowo omawia ten symbol i fizyczny kształt (w filmie o 02:39).

Wartość rezystora nie jest dowolna. Dioda LED ma spadek około 2 V, a małe typy 3 mm i 5 mm pobierają około 10 mA. Przy zasilaniu 5 V pozostałe 3 V musi zostać odłożone na rezystorze, więc prawo Ohma daje R = 3 V / 0,01 A = 300 Ω. To wartość dla maksymalnej jasności; użycie 1 kΩ to bezpieczny, nieco ciemniejszy wybór (w filmie o 04:41).

Przewodnik po okablowaniu

Schematic for Arduino walking light LEDs
Schemat dla diod LED wędrującego światła Arduino
wiring for Arduino walking light LEDs
okablowanie dla diod LED wędrującego światła Arduino

Sekcja okablowania diod LED jest identyczna jak w poprzednim projekcie wędrującego światła: anoda każdej diody LED łączy się z własnym pinem cyfrowym, a każda katoda przechodzi przez rezystor do wspólnej szyny masy. W samouczku diody LED są podłączone do pinów 7, 6, 5, 4 i 3 (w filmie o 43:04).

Potencjometr to jedyna nowa część. Jego dwa zewnętrzne piny idą do dwóch szyn zasilania — jeden zewnętrzny pin do masy, a drugi do 5 V (lub 3,3 V, jeśli mierzysz system 3,3 V). Środkowy pin, zwany suwakiem, jest wyjściem i musi być podłączony do pinu analogowego A0 (w filmie o 43:30). Suwak jest tym, co wytwarza zmienne napięcie: gdy obracasz pokrętłem, suwak przesuwa się po rezystancyjnej ścieżce, a napięcie, które prezentuje, zmienia się płynnie między dwiema szynami.

Jeden ważny szczegół: jeśli usuniesz potencjometr, gdy obwód działa, pin analogowy pozostanie w stanie nieokreślonym i diody LED będą migać losowo. To zachowanie jest zademonstrowane w filmie (w filmie o 48:52) i jest dobrym przypomnieniem, że wejście analogowe zawsze potrzebuje zdefiniowanego źródła napięcia.

Wyjaśnienie kodu

Kod jest krótki, a większość z niego jest prosta, więc ta sekcja skupia się tylko na częściach, które będziesz chciał zmienić. Wszystkie te ustawienia znajdują się na górze szkicu.

Definicje pinów. Mówią one Arduino, do których pinów podłączone są diody LED i potencjometr. Jeśli podłączyłeś diody LED inaczej, zmień te liczby, aby pasowały — kolejność ma znaczenie, ponieważ LED1 to najniższy próg, a LED5 najwyższy.

const int potPin = A0;//define a pin to connect potentiometer
const int LED1 = 7;
const int LED2 = 6;
const int LED3 = 5;
const int LED4 = 4;
const int LED5 = 3;

Napięcie płytki. To najważniejsza wartość, którą trzeba ustawić poprawnie. Jest to odniesienie, względem którego obliczany jest każdy próg. Ustaw je na 5.0 dla Uno lub Mega oraz na 3.3 dla płytki Nano 3,3 V lub podobnej. Jeśli pozostawisz je błędne, każda dioda LED będzie przełączać się przy niewłaściwym napięciu (w filmie o 44:19).

float boardVoltage= 5.0;//for UNO and MEGA 5.0V for Nano either 5V or 3.3V

Wyświetlanie napięcia na porcie szeregowym. Ustaw tę opcję na true, aby wyświetlać zmierzone napięcie w Monitorze Szeregowym przy prędkości 9600 bodów, co jest niezwykle przydatne podczas kalibracji. Ustaw ją na false, aby wyciszyć dane wyjściowe, gdy wszystko już działa.

boolean showVoltage = true;//true or false to read voltage in serial monitor

Jak działa konwersja. Przetwornik analogowo-cyfrowy Arduino zwraca liczbę od 0 do 1023, ponieważ jest to przetwornik 10-bitowy (210 = 1024 kroki). Kod skaluje tę surową liczbę do rzeczywistego napięcia, używając napięcia płytki jako odniesienia. To jest linia, o której należy pamiętać, jeśli kiedykolwiek przejdziesz na płytkę 12-bitową, taką jak Due, gdzie zamiast tego należy dzielić przez 4095.

int sensorValue = analogRead(A0);
float voltage = sensorValue * (boardVoltage / 1023.0);

Logika progów. Zamiast wpisywać napięcia na stałe, każdy krok jest wyrażony jako procent napięcia płytki. Przy 95% lub więcej świecą się wszystkie pięć diod LED; powyżej 80% tylko cztery; i tak dalej aż do 20%, gdzie świeci się pojedyncza dioda LED. To właśnie podejście procentowe sprawia, że szkic jest przenośny między płytkami 5 V i 3,3 V bez przepisywania porównań.

if (voltage >= boardVoltage*0.95)
{
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, HIGH);
      digitalWrite(LED4, HIGH);
      digitalWrite(LED5, HIGH);
}

Ponieważ kod używa else if, dokładnie jedna gałąź jest wykonywana podczas każdego przejścia przez pętlę, więc jednocześnie świeci się zawsze tylko prawidłowa liczba diod LED. Opóźnienie 50 ms na końcu każdej pętli zapobiega migotaniu wyświetlacza.

Projekt na żywo i demonstracja

Po wgraniu szkicu otwórz Monitor Szeregowy przy 9600 bodów i powoli obracaj pokrętłem. Wyświetlane napięcie i pasek LED podążają za sobą blisko: przy około 1 V świeci się jedna dioda LED, przy 2 V dwie, i tak dalej aż do około 4,8 V, gdzie świecą się wszystkie pięć (w filmie o 47:37). Odczyty mieszczą się w granicach kilku setnych wolta od oczekiwanej wartości, co jest doskonałym wynikiem dla przetwornika 10-bitowego.

Jeśli kroki wyglądają na nieco nierówne, zwykle odpowiadają za to rezystory, a nie kod. W samouczku zauważono, że standardowe rezystory węglowe mają tolerancję 10%, podczas gdy niebieskie rezystory metalowe mają zazwyczaj 1% i dają zauważalnie bardziej równomierne, dokładniejsze kroki (w filmie o 48:18).

Możesz także zamienić potencjometr obrotowy na potencjometr suwakowy i uzyskać takie samo zachowanie z liniowym odczuciem, co jest dobrą opcją, jeśli planujesz zamontować miernik w panelu (w filmie o 49:07).

Jeśli chcesz przesuwać światło ręcznie zamiast za pomocą pokrętła, jest to omówione w Lekcja 98-8: Wędrujące światło z przyciskiem i diodami LED z Arduino. A jeśli chcesz po prostu, aby diody LED wędrowały według własnego timera, zobacz Lekcja 98-7: Wędrujące światło przy użyciu Arduino i 5 diod LED.

Powiązane projekty z tego filmu

Rozdziały

  • [00:00] Przegląd 10 projektów z diodami LED
  • [02:29] Podstawy diod LED, symbole i obliczanie rezystorów
  • [42:25] Wprowadzenie do miernika poziomu napięcia z diodami LED
  • [43:04] Okablowanie diod LED i potencjometru
  • [43:54] Omówienie kodu paska napięcia
  • [44:19] Ustawianie odniesienia napięcia płytki
  • [46:00] Logika progów i kroki procentowe
  • [47:14] Demonstracja: odczyt napięcia za pomocą paska LED
  • [48:18] Tolerancja rezystorów i dokładność
  • [49:07] Używanie potencjometru suwakowego

Obrazy

wiring for Arduino walking light LEDs
wiring for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
5 diod LED na płytce stykowej z suwakowym rezystorem zmiennym podłączonych do Arduino UNO
5 diod LED na płytce stykowej z suwakowym rezystorem zmiennym podłączonych do Arduino UNO
941-Lessson 98-LED-9: Arduino code walking LED light controlled by potentiometer
Język: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Pliki📁

Biblioteki Arduino (zip)

Instrukcja obsługi