Wyznaczanie temperatury barwowej źródeł światła


Wyznaczanie temperatury
barwowej zródeł światła z
wykorzystaniem spektrometru
Projekt realizowany w ramach laboratorium Optoelektronika 2
Grupa V
Michał Bieńkowski
Marcin Czyszczoń
Marcin Wasik
Bartosz Marszał
Prowadzący: dr inż. Dariusz Wysoczański
Wrocław 2012
SPIS TREÅšCI
1. Informacje wstępne ____________________________________________________________ - 2 -
2. Teoretyczna strona projektu _____________________________________________________ - 2 -
2.1. Temperatura barwowa ___________________________________________________________ - 2 -
2.2. Spektrometr ____________________________________________________________________ - 3 -
2.3. Metody pomiaru_________________________________________________________________ - 3 -
3. System pomiarowy _____________________________________________________________ - 5 -
3.1. Stanowisko pomiarowe ___________________________________________________________ - 5 -
3.2. Oprogramowanie ________________________________________________________________ - 8 -
3.2.1. Komunikacja ze spektrometrem __________________________________________________________ - 8 -
3.2.2. Czyszczenie sygnału ____________________________________________________________________ - 9 -
3.2.3. Punkty charakterystyczne widma_________________________________________________________ - 9 -
3.2.4. Wyznaczanie temperatury barwowej ______________________________________________________ - 9 -
3.2.5. Prezentacja wyników __________________________________________________________________ - 10 -
3.2.6. Symulowana praca programu ___________________________________________________________ - 10 -
3.2.7. Kod programu _______________________________________________________________________ - 10 -
3.2.8. Schemat blokowy _____________________________________________________________________ - 12 -
3.3. Interfejs użytkownika ___________________________________________________________ - 13 -
3.3.1. Uruchamianie programu _______________________________________________________________ - 13 -
3.3.2. Pomiar temperatury barwowej __________________________________________________________ - 13 -
3.3.3. Praca z programem w warunkach symulowanych __________________________________________ - 13 -
3.3.4. Zasada działania GUI__________________________________________________________________ - 14 -
4. Testy _______________________________________________________________________ - 15 -
4.1. Testowanie możliwości spektrometru w praktyce_____________________________________ - 15 -
4.2. Ostateczne testy programu _______________________________________________________ - 16 -
5. Odrzucone i niedokończone koncepcje ____________________________________________ - 17 -
5.1. Czyszczenie sygnału _____________________________________________________________ - 17 -
5.2. Porównywanie widm ____________________________________________________________ - 21 -
5.3. Wyznaczanie temperatury barwowej na podstawie porównania chromatyczności__________ - 22 -
6. Chronologiczny zapis rozwoju projektu ___________________________________________ - 24 -
7. Podsumowanie i wnioski _______________________________________________________ - 24 -
8. Przykład ćwiczenia laboratoryjnego ______________________________________________ - 25 -
9. Przykład tematu projektu_______________________________________________________ - 25 -
- 1 -
1. Informacje wstępne
Niniejsza praca jest raportem końcowym, podsumowującym wykonanie projektu  Wyznaczanie
temperatury barwowej zródeł światła z wykorzystaniem spektrometru . Projekt ten został wykonany w
ramach laboratorium z Optoelektroniki. Do głównych zadań należała konstrukcja stanowiska
pomiarowego oraz implementacja oprogramowania realizujÄ…cego akwizycje danych pomiarowych ze
spektrometru i przetworzenie ich celem uzyskania temperatury barwowej badanego zródła światła. Jako
jeden z celów założono sobie prostotę interfejsu użytkownika, jak również wygodę realizacji pomiaru.
Oba te założenia zostały spełnione, gdyż pomiar odbywa się po naciśnięciu jednego przycisku, a dobranie
ustawień odbywa się automatycznie. Od strony stanowiska pomiarowego powyższe założenia zostały
zrealizowane w postaci obrotowego statywu dla trzech zródeł światła montowanych do oprawek E27, z
osobnymi włącznikami zasilania. Ponadto do zródeł światła przymocowane, są klosze których celem było
zmniejszenie rażenia światłem w oczu użytkownika. Zarówno stanowisko jak i interfejs użytkownika
starano się wykonać estetycznie i praktycznie.
Kolejnym celem który starano się zrealizować była praktyczna interpretacja tematu projektu.
Zrealizowano to w ten sposób, że stanowisko można wykorzystać do pomiaru temperatury zródeł światłą
codziennego użytku. Użytkownik może na przykład wykorzystać zrealizowany system pomiarowy do
mierzenia dostępnych na rynku zródeł światła dla których producent nie podał temperatury barwowej. Ze
względu na takie ukierunkowanie projektu zakres poprawnie mierzonej temperatury wynosi 2000K-
7000K.
Środowiskiem programistycznym które zdecydowano się wykorzystać był Matlab, gdyż można w nim w
najszybszy sposób zestawić komunikację ze spektrometrem.
2. Teoretyczna strona projektu
2.1. Temperatura barwowa
Temperatura barwowa jest to jednostka służąca do obiektywnej oceny barwy światła widzialnego.
Temperaturę barwową światła ustala się poprzez porównanie chromatyczności badanego zródła światła z
chromatycznością promieniowania ciała doskonale czarnego (pogrzanego do odpowiedniej temperatury).
Można także stwierdzić, że jest to obiektywna miara wrażenia barwy danego zródła światła.
Ciało doskonale czarne jest to hipotetyczne ciało, które całkowicie pochłania padające na nie
promieniowanie elektromagnetyczne.
Rysunek 1. Barwa światła emitowanego przez ciało doskonale czarne (nie uwzględniono jasności świecenia)
TemperaturÄ™ barwowÄ… wykorzystuje siÄ™ miedzy innymi w astronomii do charakteryzowania
promieniowania gwiazd oraz w fotografii i kinematografii w celu ustalenia odpowiedniego oświetlenia
scenerii.
Światło ciepłe daje zwykła żarówka, zaś zimne jest charakterystyczne dla świetlówek. Najbardziej
neutralne, zbliżone do światła naturalnego jest światło halogenowe. Barwa światła powoduje, że kolory
użyte we wnętrzu mogą się zmienić. Ciepłe światło sprawia, że ciepłe barwy stają się bardziej
rozświetlone, zaś zimne przytłumione. W świetle zimnym kolory ciepłe słabną, a natomiast zimne
wzmacniają się. Światło ciepłe sprzyja rozluznieniu i stwarza przyjemny nastrój, zimne polepsza
zdolność koncentracji.
Przykłady temperatur barwowych:
o 1600 K - wschód i zachód Słońca; o 4000 K - barwa biała;
o 2000 K - barwa światła świeczki; o 5000 K - barwa chłodnobiała;
o 2800 K - barwa bardzo ciepłobiała (żarówkowa); o 6500 K - barwa dzienna;
o 3200 K - barwa światła żarowego lamp o 20000 K - barwa czystego granatowego nieba;
studyjnych; o 28000-30000 K  błyskawica
- 2 -
2.2. Spektrometr
Spektrometr jest przyrządem służącym do otrzymywania i analizowania widm promieniowania
świetlnego (od podczerwieni do ultrafioletu). Najczęściej stosuje się spektrometry optyczne, które tworzą
widma w ten sposób, że światło o różnych długościach fali kierowane jest pod różnym kątem (załamanie
światła, pryzmat), albo dzięki wykorzystaniu różnicy długości dróg optycznych ugiętych i interferujących
ze sobą promieni (siatka dyfrakcyjna, płytka Lummera-Gehreckego).
Rysunek 2. Układ spektrometru
IstniejÄ… ponadto spektrometry optyczne fourierowskie oraz filtracyjne. Typowy spektrometr optyczny
tworzÄ…: kolimator, obiektyw, element dyspersyjny (tj. pryzmat, siatka dyfrakcyjna itp.), obiektyw kamery
rejestrującej i element rejestracji widma, którym w spektrometrze jest fotometr (ekran dla spektroskopu,
klisza fotograficzna dla spektrografu).
Kolimator  przyrząd przetwarzający padające światło lub strumień cząstek w równoległą wiązkę.
Fotometr (luksomierz) - przyrząd pomiarowy do pomiaru natężenia oświetlenia. Głównymi parametrami
charakteryzujÄ…cymi spektrometr optyczny sÄ…: dyspersja liniowa lub kÄ…towa (dyspersja spektrometryczna),
zdolność rozdzielcza, zakres dyspersji. W niektórych rodzajach badań stosuje się modyfikacje
spektrometru optycznego (spektrofotometr).
Ośrodek dyspersyjny różnicuje fale pod względem prędkości rozchodzenia się w nim, załamuje światło
i rozkłada na składniki widmowe. Fale powolniejsze są bardziej załamywane tzn. bardziej zmieniają
kierunek swego rozchodzenia się. Takim ośrodkiem jest pryzmat oraz siatka dyfrakcyjna.
Pryzmat jest odpowiednio przyciętym i wygładzonym kawałkiem szkła. Padająca mieszanina fal światła
ugina się dwukrotnie - raz przy wejściu, drugi raz przy wyjściu ze szkła. Dzięki dyspersyjnym
właściwościom podczas takiego dwukrotnego załamania następuje wyrazne rozdzielenie promieni o
różnych barwach.
Siatka dyfrakcyjna jest przezroczystą płytką z zestawem bardzo gęsto wykreślonych równoległych linii.
Światło przechodzi przez przezroczyste obszary między ciemnymi liniami. Siatka dzieli strumień światła
na oddzielne promienie. Te promienie to ciągi falowe, gdzie jeden z nich musi przebyć dłuższą drogę, niż
drugi. Jeżeli różnica dróg odpowiada wielokrotności całkowitej długości fali, na ekranie fale spotkają się
w zgodnych fazach i nastąpi tam ich wzmocnienie. Fale o różnej długości wzmacniają się (interferują
konstruktywnie) w różnych miejscach ekranu.
2.3. Metody pomiaru
Prawo przesunięć Wiena stwierdza że im gorętszy jest obiekt, tym krótsza jest długość fali dla której
emituje on najwięcej energii. Prawo to wyraża się wzorem:
b
TC = , gdzie b = 2.8977685 Å"10-3 .
(1)
max
W projekcie temperatura liczona jest wprost z powyższego wzoru oraz ze wzoru ze zmienioną stałą b
(więcej na ten temat napisano w punkcie 3.2.4). Bardziej poprawną metoda jest dopasowanie
charakterystyki ciała doskonale czarnego przynajmniej w dwóch zakresach widmowych.
- 3 -
Pomiar temperatury barwowej możne odbywać się również metoda kolorymetryczną przy pomocy
miernika temperatury barwowej. WewnÄ…trz miernika sÄ… zazwyczaj fotodiody krzemowe. Badana
temperatura barwowa może być obliczona za pomocą współrzędnych trójchromatycznych szukając w
pierwszej kolejności współrzędnych chromatyczności na przestrzeni barw CIE1931, a następnie
odnajdując najbliższy punkt na krzywej Plancka (widoczną na diagramie CIE1931 na rysunku 5).
Rysunek 3. Miernik temperatury barwowej Kenko KCM-3100
Współrzędne trójchromatyczne
Ludzkie oko posiada foto receptory (czopki) przystosowane do widzenia średnio jasnych i wysoce
jasnych kolorów ze szczególną czułością na fale z zakresu 420 440 nm (kolor niebieski), 530 540 nm
(kolor zielony) oraz 660 680 (kolor czerwony) (ludzkie oko posiada również monochromatyczne
receptory nocne  pręciki, o czułości około 490 495 nm). Barwę w sposób jednoznaczny opisuje się we
współrzędnych trójchromatycznych X, Y, Z, przy czym współrzędne te zależne są od składowych,
zwanych również względnymi sprawnościami wizualnymi czopków. Te trzy współrzędne
trójchromatyczne odpowiadają procentowemu udziałowi trzech podstawowych barw R (czerwonej), G
(zielonej) i B (niebieskiej). Wartości trójchromatyczne są najczęściej podawane w przestrzeni kolorów
CIEXYZ (CIE1931), w której są one oznaczone przy pomocy współrzędnych X, Y i Z. CIE XYZ jest
opisem trójwymiarowym (rys. 4.). Żeby umożliwić opis w dwóch wymiarach, wprowadzono przestrzeń
barw CIE xyY, która przelicza składowe barw X, Y, Z na współrzędne trójchromatyczne x, y, Y, gdzie x i
y określają chromatyczność a Y jasność. Współrzędne te nakładają się i są odwzorowywane w przestrzeni
barw przedstawionej z pomocą wykresu chromatyczności jako tzw. trójkąt barw: obszar zamknięty
dwiema liniami - krzywÄ… i prostÄ….
Rysunek 5. CIE193
Rysek 4. CIE XYZ
- 4 -
3. System pomiarowy
3.1. Stanowisko pomiarowe
Stanowisko pomiarowe składa się z następujących elementów:
Komputer z systemem Windows, wyposażony w interfejs USB.
Spektrometr (siatkowy, odbiciowy) przystosowany do pomiarów spektralnych w zakresie od 200nm do
1150nm na dwóch kanałach UV-VIS(200nm-700nm) i VIS-IR(400nm-1150nm). Pozostałe dane
techniczne:
Układ optyczny: Czerny-Turner o ogniskowej 80 mm
Rozdzielczość: 3.5nm
Światło rozproszone: <0.2%
Detektor: Linijka CCD 2048 pikseli SONY
Stosunek sygnału do szumu: 200:1
Przetworniki AC: 14 bitów,
Czas integracji: 1 ms do 5000 ms
Interfejs: USB 1.1 i 2.0
1
2
3
4
Zdjęcie 2. Detektor
Zdjęcie 1. Spektrometr CCD 2048/2
(Optel Opole)
1. Włącznik filtru krawędziowego dla kanału UV-VIS
2. Włącznik filtru krawędziowego dla kanału VIS-IR
3. Gniazda służące do podłączenia włókna światłowodowego
4. Gniazdo USB
Sterowniki do spektrometru
Po podłączeniu spektrometru do portu USB 1.1 lub 2.0 komputera system Windows wykrywa nowe
urządzenie i poprosi o wskazanie lokalizacji sterowników tj.
C:\Spektrometr_CCD_2048\Virtual_COM_Port.
Następnie należy sukcesywnie wykonywać polecenia podawane przez kreator dodawania sprzętu do
momentu pojawienia się informacji o zakończeniu procesu. Numer portu do komunikacji przedzielany
jest automatycznie z zakresu COM1 COM256.
Detektor czyli zakończenie włókna światłowodowego wprowadzającego wiązkę badanego światła do
spektrometru.
- 5 -
Obrotowe mocowanie zródeł światła
Mocowanie można obracać o pełny kąt. Po ustawieniu wybranego zródła światła mocowanie blokuje się
przy pomocy śruby z motylkiem. Włączniki zasilania mają zaznaczoną stronę którą zasilają (złota
strzałka).
Zdjęcie 3. Obrotowe mocowanie zródeł światła
Soczewka skupiajÄ…ca
Zastosowanie soczewki skupiającej jest konieczne ze względu na charakterystyczny sposób emitowania
światła przez świetlówki. Dzięki soczewce lepiej rejestruje się piki natężenia w widmie.
Zdjęcie 4. Soczewka skupiająca
- 6 -
Mocowanie, detektor oraz soczewkę przymocowano do koników. Te zaś zostały założone na szynę
przykręconą do granitowej płyty. Zmontowane i przygotowane do pomiaru stanowisko przedstawiono na
zdjęciu poniżej.
Zdjęcie 5. Stanowisko pomiarowe
Zdjęcie 6. Testowe zródła światła z zamocowanymi kloszami
- 7 -
3.2. Oprogramowanie
Poniżej opisano bloki wykonawcze programu wraz z opisem ich funkcji. Przedstawiono główne elementy
kodu ze zwróceniem szczególnej uwagi na te fragmenty przy których komentarze nie oddają pełnej
informacji na temat funkcji danego fragmentu.
3.2.1. Komunikacja ze spektrometrem
Ustalenie parametrów komunikacji
Spektrometr jest podłączony do komputera za pomocą interfejsu USB lecz dzięki zainstalowanym
sterownikom widziany jest w systemie jako port szeregowy COM (może być widziany jako port z
zakresu od COM1 do COM256) i używany jest na zasadzie normalnego portu szeregowego. Odczytany w
menadżerze urządzeń numer portu miał wartość 3 (Mój Komputer Właściwości zakładka Sprzęt
Menadżer urządzeń gałąz Porty (COM i LPT)). Ustawienie tego portu w programie dokonuje się
poprzez polecenie port = serial('COM3'). Ustawienie parametrów komunikacji dokonuje się poleceniem
set. Parametry te przyjmują następujące wartości:
Prędkość : 115200 bps
Bity danych : 8
Parzystość : N
Bity stopu : 1
Ponadto ustalono konwencję kolejności bajtów na big endian oraz wielkości buforów.
Otwarcie połączenia
Po ustawieniu parametrów komunikacji następuje otwarcie połączenia ze spektrometrem poleceniem
fopen. W tym momencie następuje wysłanie rozkazów do spektrometru i odebranie danych pomiarowych
przy pomocy polecenia fread. Po wyzwoleniu pomiaru w jednym z kanałów, mając ustawiony czas
integracji oraz offset, spektrometr odsyła dwu bajtowe zmierzone wartości z zakresu 0-16383 natężeń z
poszczególnych pikseli 1-2048, w sumie 4096 bajtów + 2 bajty równe 254dec i 253dec sygnalizujące koniec
danych. Dane napływają w narastającej kolejności tj.
Tabela 1. Sposób wysłania bajtów z danymi przez spektrometr
pixel 1 pixel 2 & pixel 2048 koniec danych
MSB LSB MSB LSB & MSB LSB 254 253
Po otrzymaniu potrzebnych danych połączenie jest zamykane przy pomocy polecenia fclose.
Rozkazy
Wysyłanie rozkazów, służących do ustawienia spektrometru, w programie wykonywane jest poleceniem
fwrite(port,[Ä…, ², Å‚, ´],'uchar'), gdzie parametry Ä…, ², Å‚, ´ sÄ… bajtami (zapisanymi w postaci dziesiÄ™tnej)
które przyjmują różne wartości w zależności od rozkazu który chce się wysłać. Spektrometr przyjmuje
następujące komendy:
Tabela 2. Spis komend przyjmowanych przez spektrometr
Funkcja rozkazu Ä…dec ²dec Å‚dec ´dec
ustawienie offsetu (położenia niskiego poziomu sygnału) dla kanału UV  VIS
75 5 MSB LSB
wartości z zakresu 0-510, domyślnie 256
ustawienie offsetu (położenia niskiego poziomu sygnału) dla kanału VIS - IR
75 6 MSB LSB
wartości z zakresu 0-510, domyślnie 256
ustawienie czasu integracji
84 MSB LSB -
wartości z zakresu 1-5000 ms
wyzwolenie pomiaru w kanale UV-VIS 82 - - -
wyzwolenie pomiaru w kanale VIS - IR 71 - - -
Automatyczny dobór czasu integracji
Uniwersalne wykorzystanie stanowiska pomiarowego stwarza pewną niedogodność która polega na tym,
że badane zródła światła mają różne natężenie światła w zależności od tego w jakiej odległości znajdują
- 8 -
się one od końca światłowodu wprowadzającego wiązkę światłą do spektrometru. Różne natężenia
światła powodują, że nie można ustawić na stałe wartości czasu integracji gdyż w przypadku gdy
natężenie jest zbyt duże (np. zródło stoi za blisko) i czas integracji (ekspozycji) będzie z byt długi to
płytka krzemowa układu CCD zostanie zbyt mocno naświetlona czego efektem będzie ucięcie widma
badanego światła. Natomiast odwrotna sytuacji spowodować może, że widmo nie zostanie
zarejestrowane. By otrzymane widmo znajdowało się w optymalnym zakresie natężenia światła, które
może odesłać spektrometr dokonuje się automatycznego doboru czasu integracji. Polega on na
wykonywaniu, w pętli, pomiaru (w pierwszej iteracji czas integracji ustawiony jest na maksimum tj.
5000ms) i sprawdzaniu maksymalnej wartości MSB w wektorze wynikowym. Jeżeli wartość MSB jest w
zakresie od 50 do 60 to pętla jest zatrzymywana, a otrzymany wynik pomiaru wykorzystywany jest w
dalszej części programu. Gdy MSB przekroczy podany zakres to aktualnie ustawiony czas integracji
dzielony jest na dwa i z tak otrzymanym czasem dokonywany jest ponowny pomiar, gdy MSB jest
poniżej 50 to aktualny czas integracji jest zwiększany o połowę (gdy nastąpi zwiększenie w efekcie
którego czas integracji przekroczy 5000ms to nowy czas ustawiany jest na 5000ms) i również ponownie
wykonuje się pomiar aż maksymalna wartość MSB w wektorze wynikowym znajdzie się w ustalonym
zakresie. Konwersja wartości czasu integracji na postać dwu bajtową dokonuję się przy pomocy
polecenia typecast.
Obróbka sygnału
Pierwsza obróbka sygnału polega na zamianie wektora wyniku pomiaru z 4098 bajtów do 2048 próbek.
Konwersja ta odbywa siÄ™ po sprawdzeniu czy ostatnie bajty wektora danych sÄ… bajtami oznaczajÄ…cymi
koniec danych. Gdy tak jest zamienia się kolejne dwie próbki wektora na jedną przy pomocy polecenia
typecast (uint16 uint8). Tak utworzony wektor posiada zera w co drugiej próbce tzn. nadal ma
długość 4098 przy czym w nieparzystych komórkach są wyniki, a w parzystych komórkach są zera. Z tak
otrzymanego wektora pozbyto się zer i bajtów sygnalizujących koniec danych, dzięki czemu otrzymano
właściwy sygnał ze spektrometru o długości 2048.
3.2.2. Czyszczenie sygnału
Otrzymany sygnał czyszczony jest z szumu przy pomocy filtru medianowego poleceniem mefilt1 oraz
filtrem dolnoprzepustowym Czybyszewa II typu, który został zaprojektowany w FDATool. Parametry
filtru wczytywane są z pliku filtr.m. Tematowi czyszczenia sygnału przeznaczono punkt 5.1.
3.2.3. Punkty charakterystyczne widma
W tym fragmencie znajdywana jest środkowa długość fali oraz szerokość połówkowa (Full Width at Half
Maximum). Operacje wykonywane sÄ… na znormalizowanym do jedynki widmie. Normalizacja widma jest
uzasadniona tym, że otrzymane wyniki są wyrażone w jednostkach umownych, a zatem pomiar nie niesie
ze sobą informacji o rzeczywistej wartości natężenia światła, a jedynie ilustruje dla jakich długości
światła jest ono największe. Normalizację tłumaczy również fakt, że tak przekonwertowane wartości są
lepiej czytelne.
Oprócz środkowej długości fali (lambda_max) obliczana jest również wypadkowa środkowa długość fali
na podstawie pików w widmie które przekroczą wartość 0.4. Z długości fal, dla których natężenie światła
stanowi maksimum lokalne (przekraczające natężenie 0.4), obliczana jest średnia ważona (wagami są
natężenia światła). Tak otrzymana długość fali jest w programie nazwana lambda_wyp. W zależności od
tego czy widmo jest ciągłe czy nieciągłe środkową długością fali uznaje się lambdę_max dla widma
ciągłego i lambdą_wyp dla widma nieciągłego. FWHM obliczana jest zawsze dla lambda_max. Ciągłość
widma sprawdza się na podstawie pola pod wykresem otrzymanego widma (taki sposób jest słuszny
jedynie przy pomiarach realizowanych w ramach projektu). Gdy otrzymane pole przekroczy wartość 300
to badane widmo uznawane jest za ciągłe.
3.2.4. Wyznaczanie temperatury barwowej
Wyznaczanie temperatury barwowej w programie opiera się na dwóch metodach. Pierwszą jest obliczenie
jej wprost ze wzoru dla prawa przesunięć Wiena tj.:
- 9 -
b
T =
(2)
max
b = 2.897685Å"10-3 [mÅ" K] - staÅ‚a Wiena
max - długość fali o maksymalnej mocy promieniowania mierzona w nanometrach
Drugą metoda jest zmodyfikowane prawo przesunięć Wiena. Modyfikacja polega na zastąpieniu stałej
Wiena stałą otrzymaną na podstawie pomiarów. Stosowany wzór ma postać:
²
T = .
(3)
max
Dobranie stałej polegało na zmierzeniu widma światła dla kilku zródeł światła dla których znana była
temperatura barwowa (badane zródła światła traktowano jak etalony dla konkretnych temperatur), a
następnie stosując przekształcony wzór 2 wyznaczono ile powinna wynieść stała Wiena by pomiar się
zgadzaÅ‚. Otrzymano, że ² = 0.002 dla widm ciÄ…gÅ‚ych i ² = 0.0013 dla widm nieciÄ…gÅ‚ych.
Dodatkowo wyznaczany jest znormalizowany rozkład Plancka dla temperatury wyznaczonej z prawa
przesunięć Wiena.
3.2.5. Prezentacja wyników
Zmierzone temperatury barwowe prezentowane sÄ… wraz z adekwatnym dla danej temperatury
komentarzem. Program zwraca wartość środkowej długości fali (w przypadku widma nieciągłego jest nią
wartość wypadkowa), szerokość połówkową dla maksymalnej długości fali oraz dwie temperatury
barwowe  otrzymane ze wzorów 2 i 3. Komentarz generowany jest w zależności od temperatury
wyznaczonej ze wzoru 3. Generowany jest również wykres na którym widnieje zmierzone widmo
odfiltrowane z szumu z zaznaczoną środkową długością fali oraz rozkład Plancka.
3.2.6. Symulowana praca programu
W celu umożliwienia testowania programu bez dostępu do spektrometru umieszczono w kodzie
fragment roboczy który wczytuje dane otrzymane poleceniem fread po ustaleniu czasu integracji. Po
zakomentowaniu fragmentu odpowiedzialnego za komunikacjÄ™ ze spektrometrem i odkomentowaniu
polecenia load możliwa jest praca z programem na plikach z danymi pomiarowymi. Do kodu programu
dołączono pliki (folder Symulacja) o nazwach:
dane2700  badanie żarówki halogenowej o temperaturze barwowej 2700K
dane4100  badanie światła świetlówki o temperaturze barwowej 4100K
dane6500  badanie świetlówki o temperaturze barwowej 6500K
3.2.7. Kod programu
Poniżej zamieszczono kod programu (folder Skrypt) pozbawiony elementów odpowiedzialnych za
obsługę interfejsu użytkownika.
function[]=TempBarwUVVIS()
clear all
close all
%##########################################################################
% KOMUNIKACJA ZE SPEKTROMETREM
%##########################################################################
port=serial('COM3'); %ustalenie portu
set(port,'BaudRate',115200,'DataBits',8,'Parity','none','StopBits',1,...
'ByteOrder','bigEndian','InputBufferSize',4098,'OutputBufferSize',4098); %ustawienie parametrów komunikacji
fopen(port); %otwarcie połączenia
czas=5000; %predefinicja czasu integracji (maksymalny czas)
while 1 %rozpoczęcie procesu doboru optymalnego czasu integracji
czas_2byte=typecast(int16(czas), 'uint8'); %zapis czasu na dwóch bajtach
czas_2byte=[czas_2byte(2),czas_2byte(1)]; %konwersja na bigEndian
fwrite(port,[75,5,1,254],'uchar'); %ustawianie offsetu
fwrite(port,[84,czas_2byte],'uchar'); %ustawianie czasu integracji
fwrite(port,82,'uchar'); %wyzwolenie pomiaru w kanale UV-VIS
x = fread(port); %odczyt danych
x_MSB=x(1:2:4096); %wyciągnięcie najbardziej znaczących bajtów
if max(x_MSB)>60 %sprawdzanie górnej granicy
czas=czas-1/2*czas; %zmniejszanie czasu integracji
else if max(x_MSB)<50 %sprawdzanie dolnej granicy
czas=czas+2*czas; %zwiększanie czasu integracji
if czas>5000 %sprawdzenie przekroczenia maksymalnego czasu integracji
czas=5000;
end
else break
end
- 10 -
end
end
fclose(port); %zamknięcie połączenia
% %==================fragment roboczy========================================
% x=load('dane6500');
% %==========================================================================
M=length(x); %składanie dwubajtowego wyniku
if(x(M)==253) && (x(M-1)==254) %#253 i #254 sygnalizuje koniec danych
for i=1:2:M-2
y(i)=typecast(uint8([x(i+1),x(i)]),'uint16');
end
y=double(y(1:2:M-2)); %pozbycie siÄ™ zer z wektora wyniku
%##########################################################################
% CZYSZCZENIE SYGNAAU
%##########################################################################
y=medfilt1(y,6); %filtr medianowy;
%wykorzystanie filtru zaprojektowanego w FDATool
y=double(filter(filtr, y)); %filtr dolnoprzepustowy
%##########################################################################
% PUNKTY CHARAKTERYTYCZNE WIDMA
%##########################################################################
y=y./max(y); %normalizacja
lambda_max=find(y==max(y))*500/2048+200; %przeskalowana środkowa długość fali
lambda_max=sum(lambda_max)/length(lambda_max);
FWHMa=find(y>=0.5,1,'first')*500/2048+200; %szerokość połówkowa
FWHMb=find(y>=0.5,1,'last')*500/2048+200;
FWHM=abs(FWHMa-FWHMb);
[pks,locs]=findpeaks(y,'NPEAKS',4,'MINPEAKHEIGHT',0.4,'MINPEAKDISTANCE',50);%wyszukiwanie pików większych od 0.4
locs=locs.*500/2048+200;
lambda_wyp=0;
for k=1:length(pks)
lambda_wyp=lambda_wyp+pks(k)*locs(k);
end
lambda_wyp=lambda_wyp/sum(pks); %obliczenie wypadkowej długości fali
lambda_sr=0;
if sum(y)<=300 %jeżeli widmo jest nieciągłe
lambda_sr=lambda_wyp; %środkowa długość fali = wypadkowa długość fali
beta=0.002;
kom=(['Wypadkowa środkowa długość fali']);
else %widmo jest ciągłe
lambda_sr=lambda_max; %środkowa długość fali = środkowa długość fali
beta=0.0013;
kom=(['Środkowa długość fali']);
end
%##########################################################################
% WYZNACZENIE TEMPERATURY BARWOWEJ
%##########################################################################
%-------------------------WIEN---------------------------------------------
T_Wien=round(((2.8977685*10^(-3))/(lambda_sr*10^(-9)))); %temperatura barwowa obliczona wprost z prawa Wiena
%-------------------------BIEN---------------------------------------------
T_Bien=round((beta/(lambda_sr*10^(-9)))); %temperatura wyznaczona empirycznie
%-------------------------ROZKLAD PLANCKA----------------------------------
h = 6.62606959*10^(-34); %stała Plancka
c = 299792458; %prędkość światła w próżni
K = 1.3806488*10^(-23); %stała Boltzmana.
lambda=(200:500/2047:700); %długość fali
lambda=lambda.*10^(-9);
dl=length(2000:7000);
for k=1:dl
planck=((2*pi*h*c^2)./(lambda.^5))./(exp((h*c)./(lambda.*(K*T_Wien)))-1); %rozkład Plancka w zależności od długości fali
planck=planck./max(planck); %normalizacja rozkładu
k=k+1;
end
%##########################################################################
% PREZENTACJA WYNIKU
%##########################################################################
disp(['Temperatura barwowa - Wien: T=',num2str(T_Wien),'K.'])
disp(['Temperatura barwowa - Bien: T=',num2str(T_Bien),'K.'])
disp(['Środkowa długość fali wynosi ', num2str(lambda_sr), 'nm'])
disp(['Szerokość połówkowa wynosi ',num2str(FWHM),'nm'])
if T_Bien<3000
disp(['Jest to światło o barwie bardzo ciepłobiałej typowej dla żarówek. Przy tym świetle dobrze się odpoczywa.']);
end
if T_Bien>=3000 && T_Bien<=4000
disp(['Jest to światło o barwie ciepłobiałej lub białej typowej dla lamp studyjnych.']);
end
if T_Bien>4000
disp(['Jest to światło o barwie chłodnej. Takie światło sprzyja koncentracji lecz jest jednocześnie męczące.']);
end
plot(lambda,planck,'black'),hold on
plot(lambda,y./max(y),'b'),hold on
stem(lambda_sr*10^(-9),1,'r')
legend('Promieniowanie ciała doskonale czarnego','Widmo zmierzone',kom)
xlim([200 700].*10^(-9))
set(gca,'XTick',[0:100:1200].*10^(-9));
set(gca,'XTickLabel',[0:100:1200]);
ylim([0 1])
xlabel('Długość fali [nm]');
ylabel('Znormalizowane natężenie');
else
disp(['Dane zostały zle pobrane. Sprawdz spektrometr.']) %jeżeli wektor z pobranymi danymi nie kończy
%się wartościami #253 i #254 to dane zostały zle pobrane
end
- 11 -
3.2.8. Schemat blokowy
Rysunek 6. Schemat blokowy przedstawiający sposób działania programu
- 12 -
3.3. Interfejs użytkownika
3.3.1. Uruchamianie programu
Skrypt opisany w punkcie 3.2 został wyposażony w interfejs użytkownika (folder Program) opisany
poniżej.
Aby móc uruchomić program należy włączyć Matlaba i ustawić jako Current Folder ten folder w którym
znajdujÄ… siÄ™ pliki z programem tj.:
TempBarwUVVIS.m
TempBarwUVVIS.fig
Informacje.m
Informacje.fig
Filtr.m
Następnie w oknie Command Window należy wpisać run(TempBarwUVVIS) i poczekać aż uruchomi się
program czego efektem będzie pojawienie się okna TempBarwUVVIS z interfejsem programu.
3.3.2. Pomiar temperatury barwowej
W celu dokonania pomiaru temperatury barwowej należy:
o Nakierować badane zródło światła na detektor (światłowód wprowadzający wiązkę światła do
spektrometru). W przypadku świetlówek konieczne jest sprawdzenie czy soczewka odpowiednio
skupia światło na detektorze.
o Podłączyć spektrometr do portu USB komputera (muszą być zainstalowane sterowniki).
o Uruchomić program TempBarwUVVIS poleceniem run.
o Kliknąć przycisk w oknie TempBarwUVVIS.
o Odczekać kilkadziesiąt sekund aż pojawi się widmo mierzonego sygnału na wykresie.
o Zmierzona temperatura barwowa światła powinna wynosić tyle ile wskazuje wynik ze wzoru
empirycznego, na przykład:
3.3.3. Praca z programem w warunkach symulowanych
W linii 83 pliku TempBarwUVVIS.m znajduje siÄ™ zakomentowany fragment roboczy:
%==================fragment roboczy========================================
[file_name, mach_path] = uigetfile({'*.*','All Files (*.*)'},'Select File');
% Jeśli wybrane jest "Anuluj" zwróć:
if isequal([file_name,mach_path],[0,0])
return
% W przeciwnym wypadku stwórz pełny plik, sprawdz go i wczytaj
else
File= fullfile(mach_path,file_name);
end
x=load(file_name, mach_path);
%==========================================================================
Fragment ten przedstawia możliwość otwarcia pliku z danymi pomiarowymi znajdującymi się na dysku, a
następnie przypisania ich pod zmienna x. Odkomentowanie tego fragmentu i zakomentowanie linii od 56
do 81 (komunikacja ze spektrometrem) zapewni możliwość pracy z zapisanymi na dysku danymi
pomiarowymi.
W celu uruchomienia programu w trybie symulowanym należy:
o Odkomentować linie od 84 do 92 i zakomantować linie od 56 do 81.
o Uruchomić program TempBarwUVVIS poleceniem run.
o Kliknąć przycisk w oknie TempBarwUVVIS.
o Wybrać plik z danymi pomiarowymi.
o Odczekać kilkadziesiąt sekund aż pojawi się widmo mierzonego sygnału na wykresie.
o Zmierzona temperatura barwowa światła powinna wynosić tyle ile wskazuje wynik ze wzoru
empirycznego.
- 13 -
Kliknięcie przycisku
wyświetli informacje o projekcie, imiona i nazwiska autorów oraz
krótką instrukcje programu.
Kliknięcie przycisku zakończy działanie programu i zamknie okno TempBarwUVVIS.
Na błękitnym polu pomiędzy polami wyników, a przyciskami wyświetlane są komentarze na temat
zmierzonego światła bądz komunikat informujący o zle wykonanym pomiarze. Przykład komunikatu
wraz ze zmierzonym widmem i temperaturą zilustrowano poniżej.
Rysunek 7. Przykład działania programu dla widma nieciągłego
3.3.4. Zasada działania GUI
GUI (Graphical User Interface) można tworzyć na dwa sposoby:
o wykorzystując nakładkę GUIDE, gdzie powstaje plik *.fig zawierający rozmieszczenie
poszczególnych elementów oraz plik *.m zawierający kod programu. Oba te pliki zależnie ze sobą
współdziałają.
o programując pliki *.m bez wykorzystania GUIDE i plików *.fig
W projekcie wykorzystano pierwszą metodę. Nakładkę uruchomiono wpisując w oknie poleceń Matlaba
polecenie guide .Następnie wybrano opcję domyślną z pustym GUI, gdzie po wybraniu ukazało się
właściwe okno nakładki GUIDE.Wybrano takie kontrolki jak panel, na którym znalazły się pozostałe
elementy jak wykres, 3 przyciski (pomiar, informacje, wyjdz), ramka na komentarz oraz opis parametrów
z miejscem na wyniki. Dodatkowo do przycisku informacje został stworzony drugi plik *.fig. Służy on
jedynie jako forma reprezentacyjna i nie ma wpływu na program. Ma za zadanie zaznajomić się
użytkownikowi z autorami projektu oraz korzystaniem z interfejsu. Kontrolkami nie są natomiast opisy
osi, ponieważ wyświetlają się automatycznie poprzez kod w programie. Każdą kontrolkę można dowolnie
przestawiać, określać rozmiar oraz wchodząc w Properties Inspector i tam dobierać np. rozmiar
czcionki (jej styl, kolor, tło). Co do wykresu to warto ustawić zakres osi x i y, liniową skalę plus
opcjonalnie siatkę pomocniczą. Najistotniejszą rzeczą w Inspectorze jest opcja Tag, która określa nam
wartość, do której będziemy odwoływać się w programie, czyli w momencie użycia Taga instrukcja
odwoła się do funkcji Callbacki. Tag jest często używana przy takich komendach jak set, get czy findobj.
Wbrew pozorom daje to duże możliwości i pole do popisu dla programistów.. Szczegóły dotyczące
poszczególnych komend przedstawiono krok po kroku w postaci komentarzy zawartych wraz z kodem w
pliku TempBarwUVVIS.m.
- 14 -
4. Testy
4.1. Testowanie możliwości spektrometru w praktyce
Testy przeprowadzono dla 3 zródeł światła: żarówka 2700K, świetlówka 4100K i świetlówka 6500K. Dla
każdej przeprowadzono pomiar na dwóch zakresach: UV-VIS (200nm-700nm) i VIS-IR (400nm-
1150nm) przy włączonym i wyłączonym filtrze krawędziowym. Aącznie zapisano 12 pomiarów.
Zarejestrowano jedynie po jednym pomiarze dla danego ustawienia gdyż większa ilość nie była potrzebna
z tego powodu, że wyniki dla tego samego ustawienia były bardzo podobne.
Wyniki testów zestawiono w tabeli 3.
Tabela 3. Wyniki testów
zródło światła żarówka 2700 świetlówka 4100 świetlówka 6500
filtr filtr on filtr off filtr on filtr off filtr on filtr off
zakres UV IR UV IR UV IR UV IR UV IR UV IR
497,12 1077,71 490,77 758,59 467,0898 446,81 468,5547 1078,35 468,55 1077,40 467,82 1077,40
lambda max
90,58 1074,21 94,26 6,18 59,082 4,52 56,1523 175,8 55,66 1074,52 55,18 1074,21
FWHM
Na podstawie wyników zamieszczonych w tabeli stwierdzono, że stosowanie filtrów krawędziowych nie
przynosi zbyt widocznych efektów (nie licząc pomiarów IR w których mierzono tak naprawdę jedynie
szum) w związku z czym wszystkie kolejne testy były wykonywane przy wyłączonych filtrach.
Po przeprowadzeniu testów zdecydowano, że program zostanie pozbawiony możliwości pomiaru w
zakresie VIS-IR gdyż, pomiar wykonany z wykorzystaniem tego kanału nie zwraca żadnych istotnych
danych. Widoczny jest jedynie szum. Rezultaty pomiarów w tym zakresie zamieszczono poniżej.
Rysunek 8. Pomiar w zakresie VIS-IR.
- 15 -
4.2. Ostateczne testy programu
Pomiary z wykorzystaniem ostatecznej wersji programu dają następujące wyniki:
Tabela 4. Wyniki testów ostatecznych
Temperatura podana przez producenta [K] 2700 4100 6500
Wzór Wiena [K] 5809 6191 6191
Wzór Empiryczny [K] 2606 4274 4355
Lambda środkowa [nm] 499 468 468
FWHM [nm] 94 58 6
Z wyników tych widać, że pomiary wykorzystujące prawo przesunięć Wiena całkowicie odbiegają od
temperatury podanej przez producenta w związku z czym należy traktować ten wynik za całkowicie
niepoprawny. Autorzy projektu uważają, że wzory do wyznaczania temperatury barwowej opracowane w
odniesieniu do ciała doskonale czarnego nie mogą mieć praktycznego zastosowania w tym projekcie. Dla
tego oszacowano empirycznÄ… staÅ‚Ä… ², która zostaÅ‚a wykorzystana do obliczenia temperatury barwowej.
By móc oszacować dokÅ‚adniej staÅ‚Ä… ² należaÅ‚o by wykonać testy dla wiÄ™kszej iloÅ›ci zródeÅ‚ Å›wiatÅ‚a o
szerszym zakresie temperatur. Wyniki uzyskane dzięki wzorowi empirycznemu są zbliżone do
temperatury podanej przez producenta dla dwóch zródeł światła i na podstawie tych dwóch zródeł
oszacowano dokładność pomiaru na ą100K. Oszacowanie tego błędu jest mocno przybliżone gdyż nie
byÅ‚o możliwoÅ›ci dokÅ‚adnej kalibracji programu i dobrania staÅ‚ej ² ze wzglÄ™du na brak etalonu.
Otrzymane wyniki bazują na tym, że przyjęto dane podane przez producenta za wzorcowe co nie
koniecznie musi być słuszne, lecz w warunkach realizowanego projektu  konieczne.
W wyniku testów można stwierdzić, że metoda znajdywania temperatury barwowej na podstawie
długości fali dla której występuje maksymalne natężenie światła nie może być efektywne. W testach
przeprowadzono badanie zródła światła które znacznie różniły się kolorem światła co było ewidentnie
widoczne, lecz środkowa długość fali tych zródeł różniła się o około 50nm podczas gdy temperatury
barwowe podane przez producentów różniły się o 3800K!
By otrzymać prawidłowy efekt należałoby wyznaczać wypadkową długość fali tak jak to robiono w
przypadku widm nieciągłych w projekcie przy czym próg uwzględniania pików musiałby być mniejszy a
zatem konieczne byłoby polepszenie filtracji sygnału.
Rysunek 9. Przykład działania programu dla widma ciągłego
- 16 -
5. Odrzucone i niedokończone koncepcje
5.1. Czyszczenie sygnału
Podczas realizowania projektu dużo czasu poświęcono zagadnieniu filtracji sygnału. Metod czyszczenia
sygnałów z szumów jest bardzo wiele przy czym część z nich sprawdza się lepiej a część gorzej. Zgodnie
z powyższym postanowiono przetestować kilka metod celem uzyskania możliwie najgładszego widma
światła. Takie podejście nie było słuszne biorąc pod uwagę krótki czas na realizację projektu gdyż zajęło
to czas który można było poświęcić na główny algorytm wyznaczania temperatury barwowej.
Sprawdzone metody:
FILR MEDIANOWY - medfilt1
Filtr medianowy jest nieliniowym filtrem, którego działanie polega na wyborze wartości środkowej
uporządkowanego rosnąco ciągu wartości. Zaletą filtru jest to, że wszystkie wartości znacznie
odbiegające od średniej są zupełnie pomijane przy wyznaczaniu nowej wartości punktu.
Funkcja medfilt1(dane_z_szumem,n) realizuje filtracjÄ™ medianowÄ… filtrem o rozmiarze 2n+1 na 2n+1 na
wektorze dane_z_szumem. W programie zastosowano filtr medianowy o wymiarze 6. Poniżej przykład
działania filtru na danych pomiarowych otrzymanych przy badaniu temperatury barwowej żarówki
halogenowej.
Rysunek 10. a) Porównanie sygnału zaszumionego z sygnałem odfiltrowanym przy pomocy funkcji medfilt1 o
rozmiarze 2. b) Porównanie sygnału zaszumionego z sygnałem odfiltrowanym przy pomocy funkcji medfilt1 o
rozmiarze 6.
FILTR FALKOWY - wden
Wden jest jednowymiarowÄ… automatycznÄ… funkcjÄ… odszumiajÄ…cÄ… wykorzystujÄ…cÄ… falki. Zaleta tej funkcji
jest to, że sygnał odfiltrowany przy jej pomocy może być niemal idealnie gładki. Natomiast ogromną
wada jest to, że potrafi diametralnie zmienić kształt sygnału i pomimo tego, że z punktu widzenia
projektu najistotniejsze są tylko punkty charakterystyczne sygnału, to pewna nieprzewidywalność funkcji
wden, powodowana zawiłością algorytmu, przyczynia się do odrzucenia tej metody (choć przez pewien
okres czasu wykorzystywano tę funkcję w metodzie łączonej). Nie wykluczone, że lepsze poznanie
zasady działania tej funkcji umożliwiłoby jej zastosowanie lecz wymagałoby to czasu.
W programie stosowano filtr o następujących parametrach:
scal='mln';
yy=wden(y, 'sqtwolog', 's', scal, 10, 'db5');
Przykład działania tej funkcji umieszczono poniżej. Szczególną uwagę należy zwrócić na deformację
widma nieciągłego.
- 17 -
Rysunek 11. Działanie filtru falkowego wden na przykładzie widma żarówki halogenowej
Rysunek 12. Działanie filtru falkowego wden na przykładzie widma świetlówki
Wśród metod które wymagały własnej implementacji algorytmu udało się wykonać tylko jedną.
TRANSFORMATA HAARA
Transformata Haara jest najprostszą z transformat falkowych. Ze względu na to, że metoda działania
transformat falkowych daleko wykracza poza zakres wiedzy autorów projektu ograniczono się jedynie do
przedstawienia efektów działania filtracji. Poniżej przedstawiono efekt działania sześciokrotnej
transformaty Haara. Efekty są podobne do działania filtru dolnoprzepustowego. By uzyskać lepszą
filtrację trzeba zwiększyć ilość transformat.
Rysunek 13. Efekt działania filtracji wykorzystującej transformatę Haara
- 18 -
Zapis transformaty Haara w Matlabie załączono do sprawozdania (folder Pozostałe plik Haar.m)
Pomimo tego, że filtracja z wykorzystaniem transformaty Haara nie przyniosła zbyt dobrego efektu to
autorzy projektu uważają metody wykorzystujące falki za metody zasługujące na szczególną uwagę
(funkcja wden), gdyż z testów wynika, że mogą zapewnić bardzo dobre rezultaty. Jednocześnie trzeba
podkreślić, że zgłębienie zasady działania tych metod wymaga pewnej względnie sporej ilości czasu.
Wśród testowanych metod najdłużej w projekcie wykorzystywana była
METODA ACZONA
Metoda łączona jest połączeniem filtru medianowego z funkcją wden i funkcją zmniejszająca amplitudę
pików. W efekcie działanie takiej filtracji otrzymywano trochę lepszy efekt niż na rysunku 11 tzn. nie
było pików. Mimo wszystko fakt wykorzystania funkcji wden, która jak już wspomniano jest
nieprzewidywalna spowodował, że zaniechano wykorzystywania tej metody.
Rysunek 14. Efekt działania metody łączonej
Zapis metody Å‚Ä…czonej w Matlabie
y=sygnal_z_szumem
%-------------------------FALKI--------------------------------------------
scal='mln'; %odszumianie sygnału
yd=wden(y, 'sqtwolog', 's', scal, 10, 'db5'); %za pomocÄ… falek
%-------------------------MEDIANA------------------------------------------
ym=medfilt1(yd,2); %filtr medianowy
%--------------------------------------------------------------------------
for k=1:2048 %pozbycie się wartości ujemnych
if ym(k)<0 %które pojawiają się
ym(k)=0; %podczas obróbki
end
end
%-------------------------DODAKOWE WYGAADZANIE-----------------------------
for k=1:2046 %czyszczenie pików
if ym(k+1)/ym(k)>=1 || ym(k+1)/ym(k)<=1
ym(k+1)=(ym(k)+ym(k+2))/2;
end
end
%-------------------------MEDIANA------------------------------------------
ym=medfilt1(ym,14);
%--------------------------------------------------------------------------
plot(ym)
Optymalną metoda była metoda wykorzystująca
FILTR DOLNOPRZEPUSTOWY CZYBYSZEWA II TYPU
Dzięki tej metodzie otrzymano najlepsze rezultaty. Fakt otrzymania najlepszych efektów w tym
przypadku nie koniecznie musi świadczyć o tym, że jest to filtr najlepszy spośród przetestowanych, a
jedynie o tym, że jest on najlepiej poznany przez autorów projektu. Ponadto udogodnienie w postaci
FDATool dzięki któremu można było w krótkim czasie zaprojektować wiele filtrów i przyjrzeć się ich
charakterystykom wpłynęło na to, że właśnie ten filtr znajduje się w ostatecznej wersji projektu.
Podczas testowania filtrów testowano rózne parametry w celu otrzymania możliwie najbardziej gładkiego
sygnały jaki jest możliwy do uzyskania. Niestety, im sygnał jest bardziej gładki tym bardziej oddala się
- 19 -
on od sygnału pierwotnego tzn. przesuwa się on w prawo. Przykład takiego zachowania ilustruje poniższy
rysunek.
Rysunek 15. Efekt zbyt mocnej filtracji
Taka sytuacja wymusza pewien kompromis, w wyniku którego sygnał po przefiltrowaniu nie jest idealnie
gładki lecz jego punkty charakterystyczne pozostają na swoim miejscu (a przynajmniej na pewno w
okolicy). Efekt działania filtru zastosowanego w programie ilustruje poniższy rysunek.
Rysunek 16. Filtracja stosowana w programie
Parametry filtru są następujące:
% Chebyshev Type II Lowpass filter designed using FDESIGN.LOWPASS.
% All frequency values are in Hz.
Fs = 48000; % Sampling Frequency
Fpass = 1000; % Passband Frequency
Fstop = 2000; % Stopband Frequency
Apass = 10; % Passband Ripple (dB)
Astop = 20; % Stopband Attenuation (dB)
match = 'stopband'; % Band to match exactly
% Construct an FDESIGN object and call its CHEBY2 method.
h = fdesign.lowpass(Fpass, Fstop, Apass, Astop, Fs);
Hd = design(h, 'cheby2', 'MatchExactly', match);
Filtr zaprojektowany był przy użyciu interfejsu FDATool (The Filter Design and Analysis Tool) z
Toolboxa Signal Processing. Pracę w tym programie ułatwia między innymi ilustracja przedstawiająca
parametry sygnału (Rysunek 17) oraz możliwość obejrzenia charakterystyk filtru (Rysunek 18.). To
narzędzie zapewniło bardzo szybki i przyjemny sposób tworzenia i testowania filtrów.
- 20 -
Rysunek 17. Ilustracja parametrów filtru
Rysunek 18. Charakterystyka amplitudowa i fazowa zastosowanego filtru
W projekcie wykorzystano połączenie filtru medianowego z filtrem dolnoprzepustowym.
Przed przetestowaniem filtru dolnopasmowego rozpatrywano jeszcze własną implementacje filtru o
średniej kroczącej, filtru dopasowanego i filtru Wienera. Plany te były jednak nie do zrealizowania w
czasie przeznaczonym na wykonanie projektu.
5.2. Porównywanie widm
Jedną z metod wyznaczania temperatury barwowej którą próbowano zrealizować było porównywanie
widma światła badanego z rozkładem Plancka. Ograniczono się tylko do rozkładu Plancka (wykluczono
rozkład Wiena, który nie sprawdza się przy większych długościach fali i rozkład Rayleigha-Jeansa, który
z kolei nie sprawdza się przy krótszych długościach fali), gdyż przybliżenie jego przy pomocy szeregu
hv hv
Taylora, dla małych przechodzi w prawo Rayleigha-Jeansa, a dla dużych rozkład Plancka jest
kT kT
równy rozkładowi Wiena. Czyli w skrócie rozkład Plancka spełnia funkcję rozkładu Wiena i Rayleigha-
Jeansa dla wszystkich długości fal.
Ze względu na to, że badane zródło światła ma inną emisyjność niż ciało doskonale czarne (dla którego
zostały wyznaczone wyżej wspomniane rozkłady) to próby porównania widma spoczęły na niczym.
Jedyną względnie sensowną pozostałością po tych próbach było wyznaczanie temperatury barwowej z
prawa przesunięć Wiena lecz nie ze wzoru ale z porównania max otrzymanego znormalizowanego widma
z max znormalizowanego rozkładu Plancka. Wykorzystany algorytm wyglądał następująco:
%-------------------------ROZKLAD PLANCKA----------------------------------
h = 6.62606959*10^(-34); %stała Plancka
c = 299792458; %prędkość światła w próżni
K = 1.3806488*10^(-23); %stała Boltzmana.
lambda=(200:500/2047:700); %długość fali
lambda=lambda.*10^(-9);
T=2000; %rozpoczęcie procedury porównywania widm
- 21 -
for k=1:7000
planck=((2*pi*h*c^2)./(lambda.^5))./(exp((h*c)./(lambda.*(K*T)))-1); %rozkład Plancka w zależności od długości fali
%-------------------------NORMALIZACJA-------------------------------------
y_norm=y./max(y); %normalizacja wyniku
maxlambda_pomiar=find(y_norm==max(y_norm)); %odnalezienie długości fali dla której występuje maksimum
planck_norm=planck./max(planck); %normalizacja rozkładu
maxlambda_planck=find(planck_norm==max(planck_norm)); %odnalezienie długości fali dla której występuje maksimum
%--------------------------------------------------------------------------
if maxlambda_planck==maxlambda_pomiar %przerwanie pętli gdy spełniony jest warunek
break;
else
T=T+1; %inkrementacja temperatury
end
k=k+1;
end
Działa on w taki sposób, że znajdywana jest max w widmie zmierzonym i sprawdzane jest czy rozkład
Plancka dla danej temperatury ma taką samą max. Gdy powyższy warunek jest spełniony to zwracana jest
temperatura, gdy nie jest spełniony to zwiększana jest wartość temperatury i ponownie porównywane są
długości fal i tak inkrementacja temperatury jest powtarzana aż warunek zostanie spełniony.
Metoda ta jednak jest jedynie bardzie wyszukaną realizacją prawa przesunięć Wiena. Bardziej
poprawnym sposobem jest dopasowanie charakterystyki ciała doskonale czarnego przynajmniej w dwóch
zakresach widmowych.
Nie udało się wykorzystać funkcji wykorzystującej algorytm Neldera-Meada którą opisano na stronie
mathworks.com/matlabcentral/, która dopasowuje widma w kilku miejscach.
5.3. Wyznaczanie temperatury barwowej na podstawie porównania
chromatyczności
Jest to metoda która zdaniem autorów projektu mogłaby się najlepiej sprawdzić przy wyznaczaniu
temperatury barwowej. Odnosi się ona bezpośrednio do definicji w której porównuje się chromatyczność
świtała badanego z chromatycznością ciała doskonale czarnego. Można by to zrealizować przy
zastosowaniu przestrzeń barw. Z otrzymanego widma światła odczytano by chromatyczność tzn.
przyporządkowano by każdej próbce pewien kod zgodny z daną przestrzenią barw. Następnie to samo
zrobiono by dla rozkładu Plancka dla temperatur od np. 2000K do 7000K (w tym zakresie temperatur
znajduje się większość dostępnych na rynku zródeł światła). Zgodnie z przewidywaniami powinna
zaistnieć zgodność kodów barw dla otrzymanego widma i rozkładu Plancka dla jednej temperatury
(ewentualnie kilku niewiele różniących się od siebie). Ewentualnie należałoby szukać kodów najlepiej
zbliżonych do siebie.
Metodę tę próbowano realizować na przestrzeni RGB lecz nie została ona dokończona. Ponadto
stwierdzono, że RGB nie nadaje się do tej metody gdyż dla pewnego pasma (długość fali powyżej
650nm) kod barwy jest staÅ‚y. Lepszym rozwiÄ…zaniem jest zastosowanie przestrzeni barw CIE1931 2° lub
CIE1964 10° dla których kod barwy siÄ™ nie powtarza (dane niezbÄ™dne do tej metody dostÄ™pne sÄ… na
stornie http://www.cvrl.org/cmfs.htm). Ilustracje tego problemu przedstawiają poniższe ilustracje.
Rysunek 19. Przestrzeń barw RGB
- 22 -
Rysunek 20. PrzestrzeÅ„ barw CIE 1964 10°
Ponadto dla przestrzeni CIE rozpisana jest już chromatyczność światła promieniującego z ciała doskonale
czarnego dla szerokiego zakresu temperatur.
Rysunek 21. Diagram przestrzeni barw CIE z naniesionym rozkładem Plancka
Próbę realizacji powyższej metody z wykorzystaniem przestrzeni RGB w Matlabie zamieszczono poniżej
(program jest niedokończony).
Funkcja realizuje sumowanie kolorów składowych widma (kodów barwy dla danej długości fali
przemnożonych przez intensywność).
function[wynik]=kolor(T)
skala=load('skala');
%--rozkład Plancka - ustalenie intensywności--------------------------------
lambda=(380:780)*(10^(-9));
h = 6.62606959*10^(-34);
c = 299792458;
K = 1.3806488*10^(-23);
intens=((2*h*c^2)./(lambda.^5))./(exp((h*c)./(lambda.*(K*T)))-1);
intens=intens./max(intens);
%--------------------------------------------------------------------------
R=0;
G=0;
B=0;
- 23 -
for k=1:401
R=R+skala(k+401)*intens(k);
G=G+skala(k+2*401)*intens(k);
B=B+skala(k+3*401)*intens(k);
end
wynik=[round(R/401),round(G/401),round(B/401)];
6. Chronologiczny zapis rozwoju projektu
o Instalacja sterowników i zapoznanie się ze spektrometrem.
o Przygotowanie prezentacji i nakreślenie planu działania.
o Nieudana próba komunikacji ze spektrometrem w Matlabie.
Zły katalog bieżący w Matlabie.
o Niepoprawna funkcja obliczajÄ…ca temperaturÄ™ barwowÄ….
Metoda opierała się na przekształconym wzorze na rozkład Plancka który nie mógł, z
powodów matematycznych, dostarczyć informacji o zmierzonej temperaturze.
o Nieudana próba komunikacji ze spektrometrem w LV.
Próby zostały zaniechane z powodu bardzo słabej znajomości LV i braku dedykowanych
sterowników.
o Powrót do Matlaba i sukces w komunikacji ze spektrometrem.
o Powstanie funkcji obliczajÄ…cej temperaturÄ™ barwowÄ….
Na etapie powstawania funkcji pojawiało się wiele pomniejszych problemów związanych z
programowaniem w Matlabie.
o Próby pozbycia się szumów.
o Długotrwałe próby znalezienia zródła błędu powodującego dwukrotne zawyżanie wyniku.
Nie znaleziono zródła błędu, zamiast tego dostrzeżono błędne składanie dwubajtowego
wyniku pomiaru. Pózne dostrzeżenie tego błędu spowodowało, opóznienia w realizacji
projektu (brak dostępu do pracowni w okresie świątecznym, a zatem brak możliwości
weryfikacji pomiarów).
o Powstanie GUI
o Próby wykonania pomiaru innymi metodami.
Nie sprawdzono pomysłu porównującego chromatyczność ze względu na brak czasu.
Również ciekawy pomysł porównywania kształtów widm wykorzystujący algorytm
Neldera-Meada nie został sprawdzony z powodu braku czasu.
7. Podsumowanie i wnioski
Najlepiej wykonanym elementem projektu jest stanowisko pomiarowe oraz część programu
odpowiedzialna za akwizycje danych pomiarowych i przetworzenie ich do postaci czystego widma
światła. Jedynymi aspektami które można byłoby poprawić w tej kwestii to zoptymalizować kod w taki
sposób by pomiar wykonywał się szybciej (np. polepszenie automatycznego doboru czasu integracji),
poprawić filtrację sygnału, oraz ewentualnie złączyć wyniki pomiaru na dwóch kanałach do jednego
wektora danych wynikowych tak by mieć pełne widmo w zakresie od 200nm do 1150nm, przy czym ta
ostatnia poprawka programu nie byłaby zbyt potrzebna z punktu widzenia projektu.
Najgorzej w projekcie wypada algorytm wyznaczania temperatury barwowej. Zastosowane wzory sÄ…
mało skuteczne. Wynik otrzymany ze wzoru 2 jest ponad dwa razy większy niż być powinien. Oprócz
tego dla widm nieciągłych otrzymywane są praktycznie te same temperatury mimo, iż na podstawie
informacji podanych przez producenta różnica temperatur powinna wynieść 3800K. Zastosowanie wzoru
3 daje lepsze rezultaty ponieważ, że współczynnik ² zostaÅ‚ dobrany pod konkretne zródÅ‚a Å›wiatÅ‚a. By
otrzymać lepsze rezultaty należałoby dokonać większej ilości pomiarów dla zródeł światła o znanej
temperaturze barwowej z szerokiego zakresu. Przy zastosowanej metodzie błąd pomiaru wynosił
ą100K lecz nie jest on prawdziwy dla wszystkich zródeł światła. Należy zauważyć że widma światła dla
świetlówki 4100K i 6500K są bardzo podobne i różnią się głównie natężeniem światła dla bocznych
pików. Świadczy to o tym, że zarówno wzór Wiena jak i jego modyfikacja nie mogą dobrze działać, gdyż
rozpatrywana w tym przypadku jest jedynie środkowa długość fali. By uwzględnić te subtelne zmiany
widm nieciągłych zdaniem autorów projektu należałoby zastosować metodę opisana w punkcie 5.3 lub
- 24 -
dowolną inną metodę kolorymetryczną która nie ograniczała by się do porównywania punktów
charakterystycznych widm, a opierała się jedynie o analizę całego widma i chromatyczności światła
odczytanego na podstawie zmierzonego widma.
8. Przykład ćwiczenia laboratoryjnego
Wyznaczanie temperatury barwowej zródeł światła z wykorzystaniem spektrometru
1.Wstęp teoretyczny
Należy we własnym zakresie zapoznać się z zagadnieniami metody wyznaczania temperatury barwowej.
Wiadomości te zostaną zweryfikowane podczas laboratorium.
2. Opis stanowiska
Stanowisko laboratoryjne składa się z:
o Komputera z oprogramowaniem
o Spektrometru
o Uchwytu na żarówki
o Soczewka skupiajÄ…ca
o Żarówek testowych
3. Zadanie laboratoryjne
Na stanowisku zaplanowano kilka zadań do wykonania. Pierwszą czynnością będzie zmontowanie
stanowiska laboratoryjnego. Na płycie wykonanej z kamienia została zamontowana już szyna. Należy
przytwierdzić do niej koniki z uchwytami na detektor, który jest podłączony do spektrometru oraz uchwyt
na żarówki. Dla lepszego skupienia zródeł światła można wykorzystać soczewkę skupiającą. Należy teraz
zamontować żarówki w uchwycie. Następnie ustawiamy za pomocą soczewki strumień światła tak aby
padał na detektor znajdujący się w uchwycie. Uruchamiamy program pomiarowy (do tego celu używamy
Matlaba). Dokonujemy pomiaru temperatury barwowej. Należy zwrócić uwagę czy filtry spektrometru są
wyłączone. Możemy teraz wypróbować inną metodę pomiaru, tak aby porównać je potem wzglądem
siebie. Należy za każdym razem zanotować rodzaj żarówki oraz metodę pomiaru  przyda się to podczas
wykonywania sprawozdania. Następnie mierzymy identycznie temperaturę barwową kolejnych żarówek
testowych. Teraz możemy przejść do kolejnej części czyli wpływu filtrów wbudowanych w spektrometr
na uzyskiwane wyniki pomiarów. Pomiaru dokonujemy przy włączonych obu filtrach oraz przy
włączonym pierwszym, wyłączonym drugim i odwrotnie.
4. Zalecenia do sprawozdania
W sprawozdaniu należy umieścić wyniki otrzymanych pomiarów. Najwygodniej będzie to zrobić w
tabelkach aby móc porównać zastosowaną metodę oraz wpływ danego filtru. We wnioskach należy
podsumować otrzymane rezultaty oraz stwierdzić, która metoda okazała się najlepsza i dlaczego. Należy
opisać wpływ dobranego filtru
9. Przykład tematu projektu
Pomiary barwy przedmiotów przy pomocy kolorymetru.
Pomysł na taki projekt wpadł przy szukaniu informacji do powyższego projektu. Serwis YouTube
zawiera wiele ciekawych projektów kolorymetrów konstruowanych na platformie Arduino, które
sprawiają wrażenie jak najbardziej do wykonania w ramach laboratorium optoelektroniki. Projektem
bardziej skomplikowanym byłoby połączenie tematu konstrukcji kolorymetru z tematem pomiaru
temperatury barwowej co realizowałyby temat podjęty w tym projekcie (tzn. pomiaru temperatury
barwowej porównującego chromatyczność światła).
- 25 -


Wyszukiwarka

Podobne podstrony:
Temperatura barwowa Światła
Wpływ wybranych czynników na właściwości półprzewodnikowych źródeł światła
rozdzial 13 etykietowanie energetyczne zrodel swiatla
Temperatura barwowa w stopniach Kelvina
Wyznaczenie temperatury równoważnej nawierzchni asfaltowej ze względu na zmęczenie
Wyznaczanie temperatury topnienia lodu
20 Skalowanie termopary i wyznaczanie temperatury krzepnięcia stopu
Ćwiczenie 1 Badania strumienia świetlnego różnych źródeł światła
Bezstykowy pomiar temperatury, wyznaczanie współczynnika emisyjności wykonanie
24 Wyznaczanie długości?li światła za pomocą siatki dyfrakcyjnej i spektrometru
24 Wyznaczanie długości fali światła za pomocą siatki dyfrakcyjnej i spektrometru
Wyznaczanie wspolczynnika temperaturowego rezystywnosci metali
Wyznaczanie wspolczynnika zalamania swiatla za pomoca refraktrometru?bego

więcej podobnych podstron