Spisu treści:

Kalibracja jasności LED: 5 kroków
Kalibracja jasności LED: 5 kroków

Wideo: Kalibracja jasności LED: 5 kroków

Wideo: Kalibracja jasności LED: 5 kroków
Wideo: Kalibracja obrazu monitora - krok po kroku 2024, Listopad
Anonim
Kalibracja jasności LED
Kalibracja jasności LED

Podczas tworzenia bajkowego światła zdałem sobie sprawę, że wartość PWM jest nieliniowo proporcjonalna do jasności diody LED. Mówiąc prosto, jeśli wartość PWM jest podwójna, jasność nie jest podwójna; szczególnie gdy PWM jest bliskie maksimum, żadna zmiana nie jest dla mnie rozpoznawalna. Pomyślałem, że powinien to być prosty problem z kalibracją! i tak powstał ten projekt! Chodzi o to, aby zmierzyć jasność diody LED za pomocą jakiegoś urządzenia (czujnika jasności lub fotorezystora) i znaleźć korelację między wartością PWM a jasnością. Później, jeśli ustawię jasność na 50%, Arduino obliczy odpowiednią PWM i odpowiednio przyciemni diodę LED.

Dlatego potrzebuję czujnika jasności i diody LED do pomiaru jasności. Za pomocą karty SD zapiszę dane do późniejszego dopasowania. Dopasowanie zostanie wykonane w programie Excel (lub dowolnym innym programie). Wyjście zostanie użyte w kodzie Arduino i to wszystko! Należy to zrobić raz. Wtedy możesz na zawsze używać parametru kalibracji!

Krok 1: Części

1- WEMOS mini D1: Aliexpress 3€

2- TSL 2561 (czujnik jasności): Aliexpress 3€

3- moduł karty SD: Aliexpress 1€

4-LED

5- Rezystor 220 omów

6-przewodowy

całkowity koszt: 8 -10 €

Krok 2: Okablowanie

Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie

Nie należy zmieniać przewodów modułu karty SD i czujnika jasności (większość z nich). Dioda powinna być podłączona do pinu PWM.

Krok 3: Kod

Kod
Kod

Połączyłem trzy kawałki kodów:

Karta SD: użyty przykład > SD > ReadWrite w Arduino IDE

TSL 2561: używany przykład biblioteki Adafruit TSL2561 (sensorapi); znajdziesz to w przykładach, jeśli zainstalujesz bibliotekę (zakładam, że wiesz, jak zainstalować bibliotekę w Arduino IDE).

Zanikanie LED: użyte przykłady > Analogowe > zanikanie

Kod po inicjalizacji modułów przygaśnie diodę i odczyta jasność oraz zapisze ją na karcie SD. w ten sposób zbierzę trochę danych do kalibracji.

Zmieniłem każdy z kodów zgodnie z moimi potrzebami. ostateczny kod w załączeniu.

Sygnał powinien wyglądać jak na załączonym obrazku. Niestety zapomniałem zrobić zdjęcie, więc przedrukowuję je w excelu, aby pokazać, jak powinno być.

UWAGA: używam wemo mini D1 zamiast Arduino. z jakiegoś powodu, którego nie znam, PWM wynosi od 0 do 1023. W Arduino powinno być od 0 do 255. Jeśli chcesz użyć kodu dla arduino, powinieneś o to zadbać (linia 90).

Krok 4: Dopasowywanie i używanie

Dopasowanie i używanie
Dopasowanie i używanie
Dopasowanie i używanie
Dopasowanie i używanie

po zebraniu danych otworzyłem plik w excelu i wykreśliłem dane (patrz zdjęcie). pierwsza kolumna to wartość PWM a druga to luksy (odczyt czujnika, jednostka nie ma większego znaczenia). Dlatego wykreśl luks (oś y) w funkcji PWM (oś x). Jak widać jasność jest liniowo proporcjonalna do wartości PWM. Dopasowałem do niego linię.

Aby dopasować linię, wykonaj następujące czynności:

1- wykreślić dane (wstawić> wykres punktowy) Zakładam, że wiesz jak.

2- kliknij prawym przyciskiem myszy na wykreślonych danych

3- kliknij na linię trendu.

4- (w programie Excel 2013) po prawej stronie wyskakuje panel. Wybierz liniowy. Na dole wybierz "wyświetl równanie na wykresie".

Relacja liniowa różni się od mojego postrzegania. Dlatego uważam, że między moją percepcją a jasnością powinna istnieć logarytmiczna relacja (to najprostszy sposób, jaki przyszło mi do głowy!). Więc wziąłem nachylenie dopasowania. Przechwycenie nie jest ważne, ponieważ zależy od otaczającego zanieczyszczenia światłem! zamiast tego dodałem 1. Ponieważ Log10(0) jest nieskończony. Potrzebuję więc przechwycenia, żeby rozwiązać problem. W moim przypadku równanie wygląda tak:

y = Log10 (0,08 x +1), y to jasność, a x to wartość PWM (0-1023)

Znormalizowałem równanie do wartości maksymalnej. wtedy zakres wyjściowy jest zawsze pomiędzy 0-100. w ten sposób mogę poprosić arduino o określoną jasność względną, nie biorąc pod uwagę maksymalnej jasności bezwzględnej.

y =Dziennik10(0,08 x +1)*100/1,914

Ponieważ w arduino moim wejściem jest względna jasność, muszę ponownie ułożyć równanie na x (PWM):

x = (10^(y*1,914/100) - 1) / 0,08

używając tego równania w kodzie jesteśmy w stanie uzyskać liniową zmianę jasności. Więc pytasz arduino o jasność (y) między 0-100, a arduino oblicza odpowiednią wartość PWM. w ten sposób, jeśli podwoisz jasność, twoja percepcja również będzie taka sama.

jeśli chcesz go użyć w swoim kodzie, lepiej dodaj te wiersze:

jasność=50; // w procentach

PWM = pow(10, jasność*1,914/100)-1)/0,0793;

zapis analogowy(ledpin, PWM);

UWAGA: normalizacja odbywa się dla maksymalnego PWM 1023 (dla Wemos mini D1). Dla Arduino PWM wynosi od 0 do 255. musisz to odpowiednio obliczyć.

UWAGA 2: Dodałem wykres log-liniowy, aby pokazać, w jaki sposób nasza percepcja i wartość PWM są powiązane. nie należy go używać do dopasowania!

Krok 5: Wniosek

kalibracja działa u mnie dobrze. Gdy wartości PWM są duże, widzę różnicę. Wcześniej jak przy dużych wartościach nie widziałem efektu ściemniania. Zasadniczo większość zmian została wykonana w małym zakresie PWM. teraz jest skalibrowany!

każda dioda LED, specjalnie w różnych kolorach, powinna mieć własne parametry kalibracyjne. Jednak skalibrowałem niebieską diodę LED i użyłem parametru dla białej diody LED i wynik był akceptowalny. więc może możesz użyć mojego parametru kalibracji bez zawracania sobie głowy!!

Zalecana: