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

Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

TechEkspert 23 Lut 2016 19:59 3105 0
  • Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.
    Czujnik indeksu UV oraz natężenia oświetlenia SI1132 (Silicon Labs), udostępnia wyniki pomiarów poprzez cyfrowy interfejs I²C. Ponieważ czujnik posiada zintegrowane bloki analogowe, nie musimy zajmować się przetwornikami ADC, źródłami napięć odniesienia itp. Oczywiście obecność światła możemy wykryć prostym czujnikiem np. fotorezystorem, fotodiodą lub fototranzystorem. Jednak skalibrowany czujnik dostarcza powtarzalnych wyników pomiarów, oraz w przypadku SI1132 pozwala na pracę w szerokim zakresie 1 do 128klx, osiągając rozdzielczość nawet do 100mlx (regulowane zakresy czułości oraz osobny czujnik dla promieniowania IR). Czujnik SI1132 pracuje przy napięciu zasilania 1.71V-3.6V, w temperaturze –40 do +85 °C, pobierając niewielką moc (< 500 nA standby current).

    Próbki czujników UV zostały udostępnione przez polski oddział firmy Avnet Memec | Silica.





    Testy działania czujnika SI1132 z wykorzystaniem Arduino pro mini 3.3V 8MHz - Si1132+LCD.
    Aby uprościć testy czujnika została wykorzystana płytka Arduino (ATmega328) pracująca z napięciem zasilania 3.3V, czyli zgodnym z parametrami SI1132. Dzięki temu nie będziemy wykorzystywać konwerterów napięć, linie sygnałowe czujnika można połączyć bezpośrednio z wyprowadzeniami płytki Arduino. Linie SDA i SCL (A4, A5) magistrali I²C zostały podciągnięte do szyny dodatniej rezystorami 2.2kΩ. Rozbudowane biblioteki platformy Arduino powinny ułatwić próby.

    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino. Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.





    Po napisaniu prymitywnego programu w środowisku Arduino, udało się odczytać wartości pomiarów VIS (światła widzialnego), IR (podczerwieni), oraz indeksu UV. Wyniki pomiaru powtarzanego co ~1s przesyłane są portem szeregowym (9600b/s) oraz wyświetlane na wyświetlaczu LCD 2x8 znaków HD44780 (rs-8, enable-9, d4-A0, d5-A1, d6-A2, d7-A3).

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W docelowym kodzie warto wykorzystać współczynniki kalibracyjne możliwe do oczytania z Si1132, a także wykorzystać możliwości energooszczędnych trybów pracy czujnika i mikrokontrolera. Czujnik posiada wyście sygnału przerwania, które może służyć do informowania o wystąpieniu określonych zdarzeń (np. zakończenie konwersji).

    Przykładowe wyniki pomiaru dla źródeł światła oddalonych o 60cm.
    rodzaj źródła VIS IR
    żarówka 60W z odbłyśnikiem 640 10932
    żarówka "bańka" halogen 70W 1200lm 290 1076
    żarówka "bańka" halogen 140W 2840lm 321 1885
    LED 9,5W 3000K 307 544
    świetlówka kompaktowa 18W 6500K 1100lm 310 465
    zapalniczka w odległości 1cm od czujnika 275 643


    Dla porównania w pochmurny poranek, czujnik umieszczony za szybą zarejestrował:
    VIS: 742
    IR: 3545
    UV: 1
    natomiast wystawiony za okno:
    VIS: 1208
    IR: 8210
    UV: 3

    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

    Czujnik tętna - Si1132+OLED SSD1306.
    Czujnik UV Si1132 posiada dużą dynamikę pozwalającą na pracę zarówno w warunkach bezpośredniego oświetlenia słonecznego, jak również przy bardzo niewielkim natężeniu oświetlenia.
    Czujnik po zwiększeniu czułości dla zakresu IR (Parametr ALS_IR_ADC_GAIN 0x1E ustawiony na 0x07) wykrywa zmiany natężenia światła wywołane pulsowaniem krwi w naczyniach krwionośnych wewnątrz palca.
    Palec został oświetlony diodą IR, natomiast wyniki pomiaru zwizualizowane na wyświetlaczu OLED 0.96" Waveshare z kontrolerem SSD1306 oraz magistralą SPI. Adafruit udostępnia ciekawe biblioteki SSD1306 GFX, jednak dla tak prostej czynności jak rysowanie punktów na wyświetlaczu wykorzystanie bibliotek nie jest konieczne. Wyświetlacz został podłączony w następujący sposób: CLK-SCK(13), DIN-MOSI(11), CS-6, D/C-7, RES-RESET.

    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

    Poniższy prosty kod pozwala na graficzną prezentację zmian wartości odczytów z czujnika.
    Kod: c
    Zaloguj się, aby zobaczyć kod


    W docelowych implementacjach, warto wykorzystać szerokie możliwości regulacji czułości czujnika w celu automatycznej adaptacji do warunków oświetlenia.

    Na filmie poniżej widoczne są zmiany odczytów, modulowane tętnem.


    Czujnik indeksu UV - Si1132+karta pamięci SD.
    Przy obecnej pogodzie na słońce trzeba polować, dlatego czujnik został wystawiony za okno, natomiast dane zapisywane były co około minutę na kartę SD podczas całego dnia. Zobaczymy jakie wartości udało się zarejestrować. Środowisko Arduino pozwala na bardzo łatwą obsługę systemu plików na karcie SD, wystarczy skorzystać z biblioteki SD oraz SPI. Kartę micro SD można łatwo połączyć z płytką Arduino dzięki modułowi przejściówki.

    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

    Poniższy kod pozwala na zapisywanie do pliku wartości odczytanych z Si1132, na wyświetlaczu LCD prezentowane są aktualne informacje o cyklu pracy oraz odczytach z czujnika.
    Podłączenie karty pamięci SD z Arduino:
    CS-7
    DI-MOSI
    DO-MISO
    SCLK-SCK

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod jest bardzo prymitywny, jednak do podstawowych testów wystarczający. Do odmierzania czasu zamiast delay() warto wykorzystać liczniki mikrokontrolera taktowane rezonatorem kwarcowym, oraz system przerwań i energooszczędne tryby pracy mikrokontrolera. Warto też spróbować zmniejszyć ilość dostępów do karty SD, np. zapisując dane w RAM, a następnie zapisywać dane "hurtem" w pamięci flash karty.

    Tak wygląda wykres zmian wartości odczytów VIS podczas całego dnia:
    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

    zmiany wartości IR:
    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

    oraz indeksu UV:
    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

    Obudowa QFN-10 - miniaturowe wyzwanie...
    Ze względu na mikroskopijną obudowę czujnika SI1132, najlepiej rozpocząć z nim pracę z wykorzystaniem gotowych modułów z wyprowadzeniami goldpin. W przypadku montażu automatycznego (pick and place) na linii produkującej płytki, rozmiary obudowy mają mniejsze znaczenie. W przypadku montażu ręcznego, obudowa QFN-10 stanowi spore wyzwanie, ale czy ręczny montaż tak małego elementu jest możliwy?

    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

    Na wykonaną (niezbyt precyzyjnie) płytkę (metodą termotransferu), spróbujmy zamontować czujnik. Przyda się pasta lutownicza, którą na pola powinno się nanieść laserowo wyciętym szablonem (stencil). W warunkach amatorskich można spróbować nanieść pastę lutowniczą ręcznie np. igłą (podgrzanie płytki ułatwi nanoszenie pasty).

    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

    Podczas umieszczania czujnika na płytce, należy zwrócić uwagę na odpowiednie położenie wyprowadzenia nr. 1.
    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

    Następnie płytka powinna trafić do pieca, który podgrzeje płytkę zgodnie z profilem termicznym zapewniającym odpowiednie działanie pasty lutowniczej, oraz nie przekroczy dopuszczalnych temperatur dla lutowanych elementów.

    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

    Na płytce warto umieścić kondensator (100nF) blokujący zasilanie, oraz wyprowadzenia dla goldpin, co ułatwi prototypowanie.

    Czy tak małą obudowę można połączyć kynarem 0.24mm bezpośrednio z listwą goldpin?
    Dla eksperymentu można to sprawdzić, natomiast wymaga to dobrej lutownicy, precyzji neurochirurga, dobrego oświetlenia oraz dobrego wzroku (właściwie krótkowidz ma łatwiej) :).

    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino. Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

    Teoretycznie jest to możliwe ale uzyskany efekt jest dość słaby (łatwo uszkodzić połączenie), natomiast po zalaniu wyprowadzeń klejem termicznym (tak aby powierzchnia czujnika została odsłonięta) całość jest sporo większa od oryginału.

    Testy cyfrowego czujnika UV SI1132 z wykorzystaniem Arduino.

    W ramach eksperymentu można spróbować ręcznego montażu czujnika w obudowie QFN-10, jednak znacznie bardziej praktyczne jest użycie gotowego modułu.
    Silicon Labs posiada w ofercie także czujnik SI1145, pozwalający na wysterowanie LED IR i np. budowę czujnika zbliżeniowego.

    Czy korzystasz z czujników oświetlenia z cyfrowym interfejsem?

    Źródła:
    http://www.silabs.com/products/sensors/infraredsensors/Pages/si1132.aspx
    http://www.silabs.com/Support%20Documents/TechnicalDocs/Si1132.pdf
    http://www.waveshare.com/wiki/0.96inch_OLED_(B)
    https://github.com/adafruit/Adafruit_SI1145_Library
    https://github.com/adafruit/Adafruit_SSD1306
    https://github.com/adafruit/Adafruit-GFX-Library


    Fajne! Ranking DIY
  • Mitronik