Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

BH1750 - Sterowanie jasnością LED

DanBK 13 Gru 2016 12:37 891 12
  • #1 13 Gru 2016 12:37
    DanBK
    Poziom 9  

    Witam!
    Mam olbrzymi problem i potrzebuje pomocy. Będę wdzięczny za poprowadzenie wręcz za rękę ku rozwiązaniu tego problemu,
    bo zwyczajnie poległem próbując połączyć sensor jasności ze ściemniaczem na 12V. Wdzięczność jestem w stanie okazać nie tylko poprzez
    kliknięcie "pomógł", ale wszystko w takim zakresie co by skarbówka się nie doczepiła.

    Posiadam moduł BH1750 i na bazie tego modułu muszę wykonać sterowanie oświetleniem w akwarium.
    Ma to działać w taki sposób - im więcej światła dociera do sensora, tym jaśniej świeci LED w akwarium.
    Niby proste ale nie potrawie połączyć danych z sensora z wyjściem.

    Do dyspozycji mam oczywiście Arduino Nano, moduł BH1750, moduły LED na 12V i sklep z elektroniką pod nosem.

    Proszę o wskazówki!

    Jeśli ktoś był by miły i szkic chciał popełnić to BH1750 w miejscu pomiaru pokazuje 83lux i jest to maksymalna wartość, jaśniej nie będzie.

    1 12
  • #3 13 Gru 2016 13:06
    DanBK
    Poziom 9  

    Tak, tam kupiłem ten czujnik i za pomocą tego szkicu zmierzyłem natężenie światła w miejscu gdzie ma czujnik pracować.
    Pies jest pogrzebany w tym że, jestem zbyt głupi żeby przekierować to co wypluwa monitor na jakiś pin który by sterował jasnością LED.
    Kwestia samego ściemniacza też jest kłopotliwa bo nakupiłem pełno drobnicy i jakoś mi się od strony technicznej również nie klei.

    0
  • Pomocny post
    #4 13 Gru 2016 13:10
    kindlar
    Poziom 38  

    Masz jaki program do PWM wgrany do mikrokontrolera, czy tylko kabelki podłączyłeś?

    0
  • #5 13 Gru 2016 13:18
    DanBK
    Poziom 9  

    kindlar napisał:
    Masz jaki program do PWM wgrany do mikrokontrolera, czy tylko kabelki podłączyłeś?

    Pogubiłem się w momencie kiedy robiłem zwykły ściemniacz sterowany potencjometrem. Potencjometr chciałem jakoś Arduino zastąpić i tu się schody zaczęły, kupowanie przeróżnych tranzystorów, stabilizatorów co ostatecznie i tak zaowocowało brakiem jakiegokolwiek konsensusu pomiędzy mną a Arduino, więc aktualnie nie posiadam ani działającego układu ani kodu.

    0
  • Pomocny post
    #6 14 Gru 2016 11:59
    ElectronicRideTV
    Poziom 11  

    Nie musisz przemieniać tego co wypluwa monitor, tylko odczyt z czujnika czyli "lux". I postawić warunek logiczny. A tak z ciekawości napisałeś że jeżeli będzie słabe światło to Arduino ma je pojaśniać, czy źle zrozumiałem - " im więcej światła dociera do sensora, tym jaśniej świeci LED w akwarium. " Jeżeli źle zrozumiałem to proszę o jaśniejsze wytłumaczenie. A Arduino wysyła sygnał PWM w taki sposób np.:
    if (lux<30)
    analogWrite(3,127++); -> 3 to nr. pinu którym pójdzie PWM (nwm, które w nano) a 127 to wypełnienie (od 0 do 255).
    Może zastosuj - kup gotowy ściemniacz pod Arduino? W internecie pod hasłem ściemniacz led arduino jest mnustwo wyników.

    0
  • #7 14 Gru 2016 19:40
    DanBK
    Poziom 9  

    Im słabsze światło tym słabiej świeci. Symulacja dnia w miejscu gdzie światło nie dochodzi. Nie ma gotowych ściemniaczy tego typu. Jakiś dotykowy moduł tylko znalazłem.
    Kolega mądry jest jak widzę, programować umie... to może wskazówka, gdzie warunek w tym kodzie wstawić żeby działało, bo osobiście to ja tylko w oparciu o tutoriale eksperymentuje z Arduino i programowanie to nie moja działka.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Można warunek w skali dać, tak żeby samo wyskalowało 0-80lux do 0-255 na PWM?

    0
  • Pomocny post
    #8 15 Gru 2016 09:44
    ElectronicRideTV
    Poziom 11  

    Warunki wstawia się w głównej pętli loop.
    Czyli czujnik będzie odbierał wartości słońca? Jest funkcja mapowania. Pisze się ją tak tylko musisz dodać dodatkową - int sygnałpin = 3; wyjście sygnałowe PWM.
    sygnałpin = map(lux, 0, 80, 0, 255); -> lux czyli wartości światła z czujnika, które są od 0 lux do 80 a 0 , 255, to skala sygnału pwm. Tak samo wartość 0 lux jest w całkowitej ciemności, a prawdopodobnie przy ok 20 lux będziesz chciał wyłączyć ledy, ale to już sobie wyregulujesz. Teraz to działa tak: jeżeli czujnik podaje o lux to daj sygnał o PWM a jak da więcej to odpowiedni więcej PWM. Jeżeli chcesz ściemniacz to zmień wartości 0, 255 na 255, 0 -> jeżeli 0 lux to świeć na maxa bo 255 to maksymalny poziom PWM. Tzn jeżeli chcesz rozjaśniacz, sorka mój błąd.
    analogWrite (sygnałpin); -> to wykonuje powyższy kod czyli podaje wartości na pin 3 PWM.
    To to by było chyba na tyle ;)

    0
  • #9 15 Gru 2016 10:29
    DanBK
    Poziom 9  

    Logiczne i zapewne zadziała, wieczorem przetestuje, a po świętach biorę się za naukę.
    Czujnik będzie odbierał słońce przez szkło zmatowione, ale tylko w okrojonym zakresie.

    0
  • #10 15 Gru 2016 11:30
    soft.sc
    Poziom 16  

    DanBK napisał:
    Tak, tam kupiłem ten czujnik i za pomocą tego szkicu zmierzyłem natężenie światła w miejscu gdzie ma czujnik pracować....


    Pomiar światła w okresie zimowym i letnim to ogromna różnica natężenia jasności. Słońce może osiągać "jasność"ponad 100000lux. Dlatego trzeba dobrze "przemyśleć" mierzony zakres natężenia jasności (0÷80 lux może być niewystarczające w każdych warunkach i porze roku).

    0
  • #12 15 Gru 2016 11:49
    ElectronicRideTV
    Poziom 11  

    @soft.sc Napisałem w swoim poście aby dobrał odpowiednie wartości metodą prób i błędów. Jeżeli pisze, że czujnik będzie za oknem i szybą i słońce nie pada bezpośrednio na czujnik to te wartości będą moim zdaniem niezależne od pory roku, zachmurzenia, czy sztucznego światła zewnętrznego typu latarnia. Jak na razie pozostaje nam czekać na efekty, które mam nadzieje będą zadowalające ;)
    Pozdrawiam.

    0
  • #13 15 Gru 2016 13:06
    DanBK
    Poziom 9  

    soft.sc napisał:

    Pomiar światła w okresie zimowym i letnim to ogromna różnica natężenia jasności. Słońce może osiągać "jasność"ponad 100000lux. Dlatego trzeba dobrze "przemyśleć" mierzony zakres natężenia jasności (0÷80 lux może być niewystarczające w każdych warunkach i porze roku).

    Ogólnie nawet chowanie się słońca za chmurami ma mieć odzwierciedlenie przy wyjściu. Czujnik schowam w małym pudełku i czujnik odbiera światło rozproszone i odbite. Te 80lux uzyskałem w momencie kiedy słońce świeciło i światło już wtedy wpadało do pudełeczka. Bez pudełeczka pokazywał ponad 3 tyś. lux. Dwa dni poświęciłem na wyciągnięcie średniej.

    Logan napisał:
    Tak będzie prościej, taniej i szybciej. http://physics.uwb.edu.pl/wf/fi-bot/?p=272

    Przez kombinowanie z fotorezystorami straciłem bardzo dużo czasu. Fotorezystor działa wręcz zero jedynkowo.

    ElectronicRideTV napisał:
    @soft.sc Napisałem w swoim poście aby dobrał odpowiednie wartości metodą prób i błędów. Jeżeli pisze, że czujnik będzie za oknem i szybą i słońce nie pada bezpośrednio na czujnik to te wartości będą moim zdaniem niezależne od pory roku, zachmurzenia, czy sztucznego światła zewnętrznego typu latarnia. Jak na razie pozostaje nam czekać na efekty, które mam nadzieje będą zadowalające ;)
    Pozdrawiam.

    Na latarnie reaguje, na szczęście wystarczy tylko czujnik ukryć przed nią i pokazuje zero w nocy.

    0