Na przestrzeni lat proste czujniki światła otoczenia (ALS, Ambient Light Sensor) otrzymały najpierw kanał bliskiej podczerwieni (NIR, Near Infrared), a następnie zostały wyposażone w filtry zapewniające podział światła widzialnego na trzy kanały: czerwony (R, red), zielony (G, green) i niebieski (B, blue).
Kolejnym etapem rozwoju tych komponentów było opracowanie filtrów interferencyjnych i skonstruowanie czujników XYZ oraz wielospektralnych. Zostały one omówione w artykułach: „Systemy dla Internetu Rzeczy (45) – Czujniki koloru” [2], a także „Czujniki optyczne (4). Sensory koloru oraz czujniki i moduły multispektralne” [8].
Spektroskopia optyczna jest zwykle kojarzona z drogimi urządzeniami spektrometrycznymi, których cena sięga od dziesiątek do nawet setek tysięcy dolarów. Tymczasem firma ams-OSRAM, lider technologii czujników analogowych i optycznych, sprowadziła spektroskopię do skali... układu scalonego. Rodzina czujników wielospektralnych tej firmy obejmuje szeroką gamę sensorów zapewniających od 6 do 18 kanałów w widmie widzialnym i bliskiej podczerwieni. Wszystkie układy wyposażone zostały w filtry wąskopasmowe umieszczone bezpośrednio na fotodiodach, co pozwala na uzyskanie precyzyjnej charakterystyki widmowej. W większości z nich uwzględniono ponadto bezpośrednie sterowniki LED do synchronizacji i sterowania źródłami światła, dzięki czemu mogą one sprawić, że zewnętrzne źródło światła będzie pracowało wydajnie [1].
AS7341 to 11-kanałowy czujnik wielospektralny do zastosowań związanych z wykrywaniem kolorów i analizą widmową. Układ AS7343 ma bardzo podobną budowę oraz dodatkowe kanały XYZ. Oferowane są też wersje AS7341L i AS7343L zaprojektowane specjalnie do pomiarów światła odbitego w blokach pomiarowych aparatury medycznej. Rodzina AS7265x zawiera 3 układy scalone, każdy po 6 kanałów pomiarowych – zastosowanie ich w ramach pojedynczego systemu umożliwia pomiar w 18 kanałach, obejmujących długości fal od bliskiego nadfioletu do bliskiej podczerwieni (410 nm do 940 nm), z szerokością kanałów FWHM równą 20 nm. Dokładniejszy opis znajduje się w artykule [2].
Rozwiązania ams-OSRAM w zakresie czujników spektralnych w skali chipowej umożliwiają projektantom wdrażanie szerokiej gamy nowych aplikacji, takich jak: zaawansowane wykrywanie koloru, wykrywanie rodzaju dymu, optymalizacja w ogrodnictwie czy też uwierzytelnianie oraz analiza kolorów i widma rozmaitych materiałów, w tym płynów.
Układ AS7341 firmy ams-OSRAM
Główne cechy układu AS7341 [4]:
- 8 kanałów optycznych rozmieszczonych w zakresie widzialnym,
- 3 dodatkowe kanały: Clear, NIR oraz Flicker,
- 6 przetworników ADC do przetwarzania sygnału,
- napięcie zasilania (min./typ./maks.): 1,7/1,8/2,0 V,
- napięcie na wyprowadzeniu LDR (abs. maks.) 3,6 V,
- prąd zasilania w stanie aktywnym (typ./maks.): 210/300 μA,
- prąd zasilania w stanie oczekiwania (typ./maks.): 35/60 μA,
- prąd zasilania w stanie uśpienia (typ./maks.): 0,7/5 μA,
- prąd upływu wyprowadzeń SCL, SDA, INT (min./maks.): –5/5 μA,
- zakres ustawień prądu na wyprowadzeniu LDR: 2…258 mA co 2 mA,
- interfejs: I²C,
- adres I²C: 0x39,
- zakres temperatur pracy: od –30°C do 85°C,
- zakres wilgotności roboczej: od 5% RH do 85% RH,
- wymiary: 3,1×2×1 mm.
Układ jest umieszczony w 8-nóżkowej obudowie. Oprócz zasilania i masy (dwie nóżki) ma wyprowadzenia szyny I²C (SCL i SDA), wejście GPIO, wyjście INT (otwarty dren) oraz analogowe wyprowadzenie LDR do sterowania prądem zewnętrznej diody LED.
Sterowanie i monitorowanie układu odbywa się za pomocą ośmiobitowych rejestrów dostępnych poprzez interfejs szeregowy I²C. Rejestry te zapewniają funkcje sterowania układem, można je również odczytywać w celu określenia stanu układu i pobrania z niego danych.
Wyprowadzenia GPIO można użyć jako wejścia do podłączenia zewnętrznych fotodiod lub jako wejścia synchronizacji do rozpoczęcia/zatrzymania pomiaru widma (tryb SYNS/SYND). Wyjście INT zgłasza przerwanie, ale może być również użyte do wskazania stanu (READY/BUSY) pomiaru widma w trybach SYNS i SYND.
Architektura układu
Układ AS7341 zawiera 6 niezależnych kanałów optycznych – każdy ze specjalnym, 16-bitowym przetwornikiem światło-częstotliwość. Wzmocnienie i czas integracji wszystkich sześciu kanałów regulowane są za pomocą interfejsu I²C. Możliwe jest również zaprogramowanie czasu oczekiwania, aby automatycznie ustawić opóźnienie pomiędzy dwoma kolejnymi pomiarami widma i tym samym zmniejszyć całkowite zużycie energii. Dostęp do pozostałych kanałów można uzyskać za pośrednictwem multipleksera (SMUX) łączącego je z jednym z wewnętrznych przetworników ADC.
Układ wyposażony został w matrycę fotodiod 4×4 z parami fotodiod kolorów [2]. Powyżej i poniżej matrycy znajdują się dwie fotodiody z wyspecjalizowanymi funkcjami, takimi jak wykrywanie migotania (FLICKER) i detekcja w bliskiej podczerwieni (NIR). W lewym i prawym dolnym rogu znajduje się przezroczysty kanał (CLEAR) – fotodiody bez filtra. Każdą parę fotodiod można przypisać do jednego z sześciu wewnętrznych przetworników ADC (CH0...CH5).
Jak już wspomniano, układ AS7341 zawiera multiplekser (SMUX) umożliwiający bardzo elastyczne mapowanie kanałów fotodiod do sześciu dostępnych przetworników ADC. Limit 6 ADC wymaga, aby każdy pomiar obejmujący więcej niż sześć z grupy obejmującej 8 kanałów VIS+3 kanały specjalne był wykonywany w dwóch cyklach integracji. Po włączeniu zasilania SMUX musi zostać skonfigurowany przed rozpoczęciem jakichkolwiek pomiarów widmowych. Producent układu udostępnia kod referencyjny i notę aplikacyjną dotyczącą konfiguracji SMUX [7]. Gdy używana jest detekcja migotania, odpowiednią fotodiodę należy skonfigurować na ADC5.
8 kanałów optycznych (VIS) obejmuje widmo widzialne, jeden kanał może służyć do pomiaru bliskiej podczerwieni, a jeden kanał to fotodioda bez filtra („czysta”). Układ ma również osobny kanał do wykrywania migotania światła otoczenia o częstotliwości 50 Hz lub 60 Hz.
Czujnik jest zdolny również do mierzenia widmowych wielkości charakteryzujących światło, takich jak współczynnik oddawania barw (CRI), jasność czy też CCT. W zakresie widzialnym pomiar za pomocą sensora wielospektralnego odbywa się na poziomie radiometrycznym, a nie kolorymetrycznym – oznacza to, że czujnik mierzy widmowy rozkład mocy próbki. AS7341 integruje filtry ze standardowym krzemem CMOS za pomocą technologii nanooptycznych filtrów interferencyjnych, a jego obudowa zapewnia osłonę potrzebną do kontrolowania światła wpadającego do matrycy czujnika.
Kanały optyczne układu AS7341:
- F1 (405...425 nm),
- F2 (435...455 nm),
- F3 (470...490 nm),
- F4 (505...525 nm),
- F5 (545...565 nm),
- F6 (580...600 nm),
- F7 (620...640 nm),
- F8 (670...690 nm),
- NIR (910 nm),
- Clear (charakterystyka odpowiedzi „gołej” diody Si),
- FD – Flicker Detection (jak w kanale Clear).
Pasma fotodiod czujnika są ułożone w taki sposób, że ich graniczne zakresy ulegają wyrównaniu, nie pozostawiając prawie żadnych przerw w wybranym widmie. Czułości w kanałach są różne. Teoretycznie filtr wąskopasmowy w czujnikach spektralnych powinien przepuszczać jedynie unikalną częstotliwość światła odpowiadającą widmu transmisyjnemu filtra (jak spektrometr). W praktyce, szczególnie w przypadku czujnika AS7341, transmisja i blokowanie poza nim nie są idealne, co skutkuje zakłóceniami optycznymi. Filtry nie są doskonałe – kanał odpowiada też na oświetlenie poza pasmem przepustowym – jednak współczynniki skalujące, macierze lub specjalne algorytmy podczas procesu kalibracji i korekcji zmniejszą takie efekty. Warto podkreślić, że czujnik udostępnia surowe dane, w związku z czym uzyskanie wyników w bardziej użytecznej postaci wymaga wykonania wielu obliczeń. Udostępniany przez producenta arkusz Excel pokazuje sposób obliczenia „od wartości ADC do xyz, uv i poziomu w luksach” [3]. W pliku znalazły się gotowe, olbrzymie tablice potrzebne do obliczeń macierzowych, które umożliwiają wykonanie skalowania i konwersji dla typowych scenariuszy aplikacyjnych.
Tryby integracji
AS7341 obsługuje trzy tryby integracji umożliwiające wykonanie pomiaru spektralnego. Tryb integracji (INT_MODE) konfiguruje się w rejestrze 0x70 (CONFIG). Czas całkowania w trybach INT_MODE = „00” i „01” (SPM i SYNS) ustawia się natomiast za pomocą rejestrów ATIME (0x81) i ASTEP (0xCB:0xCA).
Czas całkowania w milisekundach jest równy:
tint=(ATIME+1)×(ASTEP+1)×2,78 μF
Zawartość domyślna rejestru ASTEP wynosi 999 (2,78 ms), a zalecana konfiguracja tych dwóch rejestrów to ASTEP = 599 i ATIME = 29, co daje czas całkowania 50 ms. Czas całkowania określa również wartość ADC w pełnej skali, która jest równa:
ADCfullscale=(ATIME+1)×(ASTEP+1)
Jeśli włączone będzie odczekiwanie pomiędzy kolejnymi pomiarami (WEN = „1”, 0x80), to każdy nowy pomiar rozpocznie się po czasie WTIME (0x83). Należy zwrócić uwagę, by WTIME był wystarczająco długi – tak aby całkowanie widmowe i wszelkie inne funkcje mogły zostać zakończone w tym okresie.
Specjalne rejestry zapewniają konfigurację 6 zintegrowanych przetworników ADC (CH0...CH5). Istnieje możliwość regulacji wzmocnienia, skonfigurowania i włączenia automatycznej kontroli wzmocnienia (AGC) oraz ustawienia automatycznej kompensacji zera. Wzmocnienie jest ustawiane w zakresie 0,5×…512×.
W odniesieniu do detekcji migotania istnieje możliwość skonfigurowania czasu całkowania i wzmocnienia CH5 ADC niezależnie od innych przetworników ADC.
Tryb SPM (spectral measurement, no sync) INT_MODE = 0x0
Ustawienie domyślne. Całkowanie rozpoczyna się od ustawienia bitu SP_EN = „1” w rejestrze ENABLE (0x80). Czas całkowania ustalany jest przez rejestry ATIME (0x81) i ASTEP (0xCB:0xCA). Pomiar przebiega bez synchronizacji.
Rejestry: SP_EN = „1”, INT_MODE = 0x0, ATIME [7:0], ASTEP [15:0], WTIME [7:0]
Tryb SYNS (spectral measurement, start sync) INT_MODE = 0x1
Całkowanie ze startem określanym przez zewnętrzny sygnał. Integracja rozpoczyna się zboczem narastającym/opadającym sygnału na pinie GPIO. Czas całkowania ustalany jest przez rejestry ATIME i ASTEP.
Rejestry: SP_EN = „1”, INT_MODE = 0x1, ATIME [7:0], ASTEP [15:0], WTIME [7:0]
Tryb SYND (spectral measurement, start/stop sync) INT_MODE = 0x3
Całkowanie ze startem i stopem określanym przez zewnętrzny sygnał, a kontrolowane poprzez narastające/opadające zbocze na pinie GPIO. Czas integracji jest definiowany przez rejestr EDGE (0x72) zawierający liczbę opadających zboczy SYNC pomiędzy początkiem i zakończeniem całkowania. Układ przeprowadza integrację do momentu osiągnięcia liczby zboczy opadających na pinie GPIO. Rzeczywisty czas całkowania można odczytać w rejestrze ITIME (0x65:0x64:0x63).
Rejestry: SP_EN = „1”, INT_MODE = 0x3, EDGE[7:0], ITIME[23:0]