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.
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).
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.
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
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.
Poniższy prosty kod pozwala na graficzną prezentację zmian wartości odczytów z czujnika.
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.
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 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:
zmiany wartości IR:
oraz indeksu UV:
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?
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).
Podczas umieszczania czujnika na płytce, należy zwrócić uwagę na odpowiednie położenie wyprowadzenia nr. 1.
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.
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)
.
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.
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
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.


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).
Code: c
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

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.

Poniższy prosty kod pozwala na graficzną prezentację zmian wartości odczytów z czujnika.
Code: c
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.

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
Code: c
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:

zmiany wartości IR:

oraz indeksu UV:

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?

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).

Podczas umieszczania czujnika na płytce, należy zwrócić uwagę na odpowiednie położenie wyprowadzenia nr. 1.

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.

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)



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.

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
Cool? Ranking DIY