C2000 Piccolo LanuchPad. Łatwy pomiar koloru. cz. 12

C2000 Piccolo LanuchPad. Łatwy pomiar koloru. cz. 12
Pobierz PDF Download icon
Scalone czujniki koloru RGB pozwalają na łatwe dodanie pomiaru koloru do systemu procesorowego. Znajduje to zastosowanie w wielu dziedzinach. Na przykład czujniki pozwalają na polepszenie rozdzielczości i jakości wyświetlania koloru w telewizorach i urządzeniach mobilnych przy zmiennych warunkach oświetlenia zewnętrznego. Przetwornik światło-częstotliwość TCS32000 firmy AMS (dawniej TAOS) jest tanim układem o dużej rozdzielczości. Po dołączeniu go do modułu eCAP procesora Piccolo F2802x jest możliwe wykonywanie pomiarów koloru w szerokim zakresie dynamiki pracy.

Modele barw

Rysunek 1. Koło barw modelu HSL [22]

Zagadnienia związane z widzeniem barwnym są dosyć trudne. Już samo nazewnictwo prowadzi do kłopotów. "W potocznym języku polskim określenie barwa i kolor to synonimy. W piśmiennictwie specjalistycznym częściej stosowany jest termin barwa niż kolor. Zaznacza się tendencja do stosowania pojęcia barwa (jako pojęcia poprawnego) zamiast kolor, traktując barwę nie tylko jako wrażenie psychologiczne, ale też jako wielkość mierzalną o określonych danych liczbowych w przestrzeniach barwnych."[21]

"Wrażenie barwy uzyskuje się w wyniku oddziaływania bodźca - światła na receptory człowieka - oczy, które dokonują częściowej analizy bodźca i konwersji na odpowiednie sygnały wysyłane do mózgu, gdzie następuje ostateczna analiza. Wrażenia wzrokowe są potocznie określane efektami związanymi z kolorem." [20]

Odcień barwy (Hue) określa to, co jest potocznie nazywane kolorem, na przykład czerwony, zielony czy żółty. Odcień barwy zależy od długości świetlnej.

Nasycenie barwy (Saturation) jest związane z długością przedziału, w jakim występuje obserwowane promieniowanie. Im przedział jest krótszy, tym bardziej nasycona jest barwa. Przy zmniejszaniu nasycenia barwy do zera, to niezależnie od odcienia barwy, uzyskuje się barwę białą.

Jasność barwy ( Luminance) odnosi się do strumienia światła, i jest związana z natężeniem oświetlenia. Przy zmniejszaniu jasności do zera, to niezależnie od odcienia barwy, uzyskuje się barwę czarną.

Model RGB

Jest wiele modeli barw. Jednym z bardziej rozpowszechnionych jest model RGB. Jest to model addytywny. Barwy podstawowe to czerwony (R), zielony (G) i niebieski (B). Typowo barwa jest reprezentowana numerycznie jak trójka wartości o zakresie 0 do 255. Barwy różne od podstawowych uzyskuje się w wyniku sumowania strumieni świateł o barwach podstawowych.

Model HSL

Rysunek 2. KPS-5130PD7C (Kingbright) [28]

Bardzo przydatny jest model HSL (nazywany też HLS). W modelu tym określa się bezpośrednio odcień barwy (H), nasycenie (S) i jasność (L). Podobny jest model HSV (nazywany też HSB), gdzie trzecią składową jest wartość (V - Value) [23].

Model jest rozpatrywany jako podwójny stożek o wspólnej podstawie, którą jest koło barw [23]. Wysokość bryły opisuje składowa L (wartość 0 do 1). Promień koła jest określony przez składową S (wartość 0 do 1). Odcienie barwne H są reprezentowane na obwodzie stożka (wartość 0° do 360°). Każdemu odcieniowi jest przypisany kąt liczony przeciwnie względem ruchu wskazówek zegara.

Centrum barwy czerwonej odpowiada kąt 0° lub 360°, barwy zielonej 120°, niebieskiej 240°. Pozostałe barwy pośrednie dla składowej Hue są odpowiednio rozłożone pomiędzy kolorami czerwonym, zielonym i niebieskim. Barwy nasycone znajdują się na obwodzie koła. Im bliżej środka koła tym mniejsze nasycenie barwy. Na rysunku 1 pokazano przykładowe koło barw z wartościami odcienia barw pomiędzy 0 i 1. W dolnym wierzchołku bryły jest barwa czarna. W górnym barwa biała. Wzdłuż osi głównej reprezentowane są poziomy szarości.

"Korzystanie z model HSL umożliwia wybieranie barw w sposób zbliżony do stosowanego przy malowaniu. Można najpierw określić potrzebny odcień barwy, następnie dodając barwy białej zmniejszyć jej nasycenie i wreszcie dodając czarnej barwy dobrać jej jasność." [20]

Scalone układy czujników koloru RGB

Rysunek 3. S10917-35GT (Hamamatsu) [24]

Scalone układy czujników koloru RGB są produkowane przez wielu producentów (rysunek 2...5): Hamamatsu [24], AMS (dawniej TAOS) [25], Maxim [26], Intersil [27], Kingbright [28] i inni.

Czujniki scalone mają powierzchnie światłoczułe o kształtach prostokąta (wiele układów) lub koła, np. KPS-5130PD7C (Kingbright) [28]. Powierzchnie światłoczułe są podzielone na obszary osobne dla każdego kanału koloru. Mogą być też zorganizowane w postaci matrycy elementów. Na przykład czujnik S11012-01CR firmy Hamamatsu [24] ma matrycę 9×9 elementów światłoczułych. W trybie wysokiej czułości pracują wszystkie elementy. W trybie niskiej czułości pracują elementy 3×3 ze środka matrycy.

Czujniki reagują na różne zakresy widma światła, typowo od 400 nm do 720 nm: niebieski (B) 400...540 nm, zielony (G) 480...600 nm, czerwony (B) 590...720 nm, poczerwień (IR) powyżej 700 nm. Typowo charakterystyka spektralna jest zbliżona do czułości oka ludzkiego. Czujniki mają też różne czułości, typowo od 0.16 do 0,45 A/W.

Zwykle czujniki mają zamontowane odpowiednie filtry dla pomiaru koloru w osobnych kanałach: czerwony (R), zielony (G), niebieski (B). Niektóre z układów mają dodatkowy kanał pomiaru podczerwieni (IR), inne mają jeszcze dodatkowy kanał pomiaru całego widma światła (C), bez filtru kolorowego.

Rysunek 4. S11012-01CR (Hamamatsu) [24]

Scalone czujniki koloru RGB dostarczają sygnału wyjściowego w postaci:

  • Analogowej, przetworniki światło-napięcie, S10917-35GT (Hamamatsu, RGB)
  • Cyfrowej szeregowej, S9706 (Hamamatsu, RGB 12b)
  • Cyfrowej w standardzie I²C, S11059-01WT (Hamamatsu, RGBIR 16b), MAX44005 (Maxim, RGBCIR Proxy 14b, TMD37821(AMS, RGBC Proxy 16b)
  • Cyfrowej, jako częstotliwość, TCS32000 (AMS, RGBC)

Rozdzielczość wewnętrznego pomiaru cyfrowego zależy od czasu integracji i może się zmieniać w dużym zakresie, np. od 10b/2,38 ms do 16b/609 ms dla układu TMD37821 (AMS). Pomiary dla poszczególnych kanałów mogą być wykonywane synchronicznie w trzech kanałach np. S9706, S11012-01CR (Hamamatsu) lub niezależnie.

Czujniki mogą mieć zintegrowane filtry podczerwieni np. S10917-35GT (Hamamatsu), ISL29125 (Intersil), jak również mogą mieć osobny kanał pomiaru zakresu podczerwieni. Czujniki mogą mieć możliwość ustawiania (zmiany) czułości. Scalone czujniki koloru mogą być również zintegrowane z czujnikami położenia (proximity sensor) [26, 30].

Wydaje się, że najbardziej jest rozbudowany układ scalony MAX44005 firmy Maxim [26]. Zawiera on czujnik RGB, czujnik światła otoczenia ALS (C), czujnik podczerwieni (IR), czujnik położenia (z drajwerem dla diody LED) oraz czujnik temperatury. Podobne czujniki produkowała firma Avago. Są również dostępne przemysłowe czujniki koloru produkowane przez różne firmy. Są to jednak spore urządzenia pozwalające na rozpoznawanie koloru w warunkach przemysłowych.

Układ scalony TCS32000

Rysunek 5. TCS32000 (AMS -TAOS) [29]

Układ scalony TCS32000 firmy AMS (dawniej TAOS) jest przetwornikiem światło-częstotliwość [29]. Na wyjściu układu jest podawane cyfrowy przebieg o wypełnieniu 50% i częstotliwości bezpośrednio proporcjonalnej do poziomu oświetlenia (rysunek 6). W porównaniu z układami z wbudowanym przetwornikiem a/c układ TCS32000 ma dużą większą prędkość pomiaru oraz dynamikę.

Czujnik ma matrycę 8×8 elementów światłoczułych o wymiarach 1 mm×1 mm. Szesnaście fotodiod ma filtr niebieski (B), szesnaście fotodiod ma filtr czerwony (R), szesnaście fotodiod ma filtr zielony (G) i ostanie szesnaście fotodiod nie ma filtru (C). Te cztery typy fotodiod (kolorów) są przeplecione w matrycy, aby zminimalizować efekt nierównomiernego oświetlenia.

Fotodiody tych samych kolorów są połączone równolegle. Pojedyncze fotodiody mają wymiary 110 mm×110 mm i są równomiernie umieszczone w rozstawie 134 mm. Wewnętrzny multiplekser, sterowany wejściami S2 i S3, wybiera do wyprowadzania na wyjście OUT sygnał danych z jednego z czterech kanałów koloru (tabela 1). Wyjście OUT jest trójstanowe i sterowane jest przez wejście /OE (aktywne niskim poziomem).

Rysunek 6. TCS3200 Funkcjonalny schemat blokowy [29]

Wyjście wewnętrznego przetwornika światło-częstotliwość jest dzielone przez dwa, co daje wypełnienie 50%. Częstotliwość sygnału wyjściowego na wyjściu OUT jest skalowana zgodnie ze stanem wejść S0 i S1 (tabela 2). Gdy wybrane jest 100%, to sygnał wewnętrzny jest bezpośrednio podawany na wyjście OUT. Dla wyboru 20% sygnał wewnętrzny jest dzielony przez 5 poprzez zliczanie 5 okresów sygnału podstawowego.

Podobnie dla wyboru 2% sygnał wewnętrzny jest dzielony przez 50 poprzez zliczanie 50 okresów sygnału podstawowego. Okres podzielonego sygnału jest uśrednioną wielokrotnością okresu wewnętrznego. Przy zmianie wyboru podziału, jak i przy skokowej zmianie poziomu oświetlenia czujnika poprawna wartość nowego okresu sygnału wejściowego występuje po czasie jednego nowego okresu zwiększonego o 1 µs.

Tabela 1. Wybór kanału koloru [29]

Zmiana podziału sygnału wyjściowego powoduje zmianę zakresu częstotliwości tego sygnału (tab. 2). Dla zupełnej ciemności częstotliwość wyjściowa jest bardzo mała i wynosi 2 Hz (typ). Liniowość sygnału jest bardzo dobra i wynosi ±0.5% wartości zakresowej (do 500 kHz). Dla częstotliwości sygnału do 5 kHz wynosi tylko ±0.1% wartości zakresowej. Czułość spektralna czterech kanałów czujnika pokazano na rysunku 7. Układ nie ma filtru podczerwieni, dlatego wszystkie cztery kanały mają sporą odpowiedź w zakresie podczerwieni aż do 1100 nm.

Moduł KAmodCOLOR

Tabela 2. Wybór funkcji [29]

Jest dostępnych wiele modułów uruchomieniowych z czujnikiem koloru TCS3200. Typowo zawierają one układ scalony oraz białe diody LED. Jedynie firmowy (AMS) zestaw uruchomieniowy TCS3200-EK-ST produkowany przez firmę Paralax jest dodatkowo rozbudowany o czarną osłonę układu i soczewkę z filtrem podczerwieni.

Moduł KAmodCOLOR firmy KAMAMI [31] został zbudowany z zastosowaniem scalonego czujnika koloru TCS3200D firmy TAOS [29]. Moduł zawiera trzy białe diody LED doświetlające badany obiekt (rysunek 8). Diody są kluczowane tranzystorem sterowanym sygnałem LED ze złącza Con1. Na tym złączu są dostępne wszystkie wyprowadzenia układu TCS3200 oraz masa i zasilanie. Zwory JP0 do JP3 pozwalają na ustalanie poziomu logicznego na wejściach S0-S3 układu TCS3200. Powodują one bezpośrednie zwarcie linii do masy lub zasilania, co może być niebezpieczne dla dołączonego jednocześnie do linii wyjścia procesora.

Moduł eCAP procesora Piccolo TMS320F28027

Rysunek 7. Charakterystyka spektralna układu TCS3200 [29]

Procesor serii Piccolo F2802x ma tylko jeden moduł peryferyjny przydatny do pomiaru częstotliwości. Jest to moduł eCAP, który reprezentuje kompletny kanał zbierania danych o zależnościach czasowych sygnałów cyfrowych [11, 14].

Moduł eCAP w trybie CAPTURE obsługuje cztery niezależne zdarzenia. Zdarzenie polega na wykryciu zbocza sygnału cyfrowego na podzielonym sygnale wejściowym. Do modułu eCAP1 zostaje przypisane wyprowadzenie GPIO układu procesorowego jako wejście ECAP1. Piccolo TMS320F28027 wejście/wyjście ECAP1 może być przypisane do wyprowadzenia GPIO5 lub GPIO19.

Do tworzenia w środowisku CCSv5 programów przeznaczonych dla procesorów rodziny Piccolo TMS320F2802x firmy Texas Instruments potrzebny jest pakiet programowy controlSUITE tej firmy. Zawiera on oprogramowanie "firmware", biblioteki, opisy zestawów sprzętowych oraz projekty przykładowe dla wszystkich serii procesorów rodziny C2000. Projekty przykładowe pakietu controlSUITE zwierają na początku kodu programu sekwencję inicjalizacji systemowej układu procesorowego serii Piccolo F2802x.

Konfiguracja sprzętowa i programowa

Rysunek 8. Moduł KAmodCOLOR fi rmy KAMAMI [31]

Do wykonania ćwiczenia potrzebny jest komputer z zainstalowanym (darmowym) oprogramowaniem:

  • Środowisko Code Composer Studio v5.5.0.00077 (Sep 9, 2013) firmy Texas Instruments [2, 18]. Umożliwia tworzenie w środowisku CCSv5 programów przeznaczonych dla procesorów serii Piccolo TMS320F2802x.
  • Pakiet programowy controlSUITE v3.2.4 (10-Dec-2013) firmy Texas Instruments [2, 18]. Zawiera oprogramowanie "firmware", biblioteki, opisy zestawów sprzętowych oraz projekty przykładowe dla wszystkich serii procesorów rodziny C2000.

Platforma sprzętowa wymaga dwóch elementów:

  • Zestaw ewaluacyjny C2000 Piccolo LaunchPad firmy Texas Instruments z układem procesorowym Piccolo TMS320F28027 firmy Texas Instruments (zawiera kabel USB-A USB-mini) [1, 16]
  • Moduł ze scalonym czujnikiem koloru TCS3200D, np. moduł KAmodCOLOR firmy KAMAMI [31]
  • Przewody połączeniowe, standard złącza IDC, np. CAB_M-F firmy Kamami, zestaw 40 szt. przewodów M-F w różnych kolorach o długości 21 cm [32]

W folderze C:home_dir komputera zostanie utworzony nowy folder work_Color. Wymagane są prawa dostępu (zapisu i modyfikacji) dla tej ścieżki dyskowej. Możliwe jest umieszczenie foldera home_dir na innym wolumenie dyskowym z prawami dostępu.

Do wykonania ćwiczenia jest potrzebny oscyloskop z sondą.

Pliki źródłowe

Do wykonania ćwiczenia potrzebny jest kod źródłowy zawarty w pliku Example_2802xECap_Capture_Pwm.c (zmodyfikowany plik standardowy) oraz zdefiniowanie pamięci w pliku 28027_RAM_Color_lnk.cmd. Zastosowana do pomiarów paleta barwna znajduje się w pliku ColorChecker_sRGB_from_Avg_primary.png. Wszystkie pliki na serwerze FTP. Na stronie Kamami dostępny jest dla modułu KAmodCOLOR przykład w języku C dla mikrokontrolerów STM32 [31].

Cel ćwiczenia

Celem ćwiczenia jest praktyczne poznanie zagadnień związanych z pomiarem i rozpoznawaniem barw. Pomiar częstotliwości sygnału ze scalonego czujnika koloru TCS3200 jest wykonywany z zastosowaniem modułu eCAP układu procesorowego serii Piccolo F2802x przy użyciu biblioteki driverlib pakietu programowego controlSUITEv3 oraz środowiska Code Composer Studio v5. Jako punk startu zastosowano przykładowy projekt Example_F2802xECap_Capture_Pwm z tego pakietu pracujący na zestawie ewaluacyjnym C2000 Piccolo LaunchPad. Ćwiczenie jest zorganizowane tak, że działania są wykonywane w kolejnych punktach i krokach uzupełnionych o opisy.

Ćwiczenie umożliwia: poznanie sposobu pomiaru składowych koloru modelu RGB i konwersji do modelu HSL oraz poznanie budowy i inicjalizowania modułu eCAP przy pracy w trybie CAPTURE.

Podłączenie i skonfigurowanie zestawu C2000 Piccolo LaunchPad

Po zainstalowaniu środowiska CCSv5 [2, 18] można dołączyć zestaw ewaluacyjny C2000 Piccolo LaunchPad [1, 16] kablem USB do wolnego portu USB komputera. System Windows automatycznie rozpoznaje układ. Zostaną zainstalowane sterowniki systemu Windows dla emulatora XDS100v2 [18]. Należy poczekać aż system potwierdzi, że sprzęt jest gotowy do pracy.

Do poprawnej pracy programu przykładowego wymagana jest podstawowa (standardowa) konfiguracja przełączników płytki drukowanej zestawu [1]:

  • Założone zwory JP1 ("3V3"), JP3 ("5V") i JP2 ("GND"). Oznacza to zasilanie układu procesorowego Piccolo F28027 z gniazdka USB.
  • Przełącznik S1 ("Boot") skonfigurowany następująco: S1.1 - do góry (ON), S1.2 - do góry, S1.3 - do góry. W praktyce oznacza to bootowanie układu procesorowego Piccolo F28027 z pamięci Flash.
  • Przełącznik S4 ("Serial") skonfigurowany w pozycji do góry (ON). Oznacza to dołączenie portu UART układu procesorowego Piccolo F28027 do układu emulatora, a tym samym do wirtualnego portu COM na komputerze PC.

Zestaw ewaluacyjny jest dostarczany z wpisanym do pamięci Flash układu procesorowego Piccolo F28027 programem przykładowym Example_F2802xLaunchPad-Demo. Program automatycznie zaczyna pracować po dołączeniu zestawu do portu USB [1].

Dołączanie modułu KAmodCOLOR do zestawu C2000 Piccolo LaunchPad

Tabela 3. Podłączenie modułu KAmodCOLOR do zestawu C2000 Piccolo LaunchPad

Dołącz moduł KAmodCOLOR do zestawu ewaluacyjnego C2000 Piccolo LaunchPad. Uwaga! Połączenia należy wykonywać bez włączonego zasilania, czyli przy odłączonym kablu USB.

Najlepiej najpierw połączyć masę obu płytek drukowanych. Zmniejszy to niebezpieczeństwo uszkodzenia układów ze względu na ładunki elektrostatyczne. Połączenia należy wykonywać przewodami z końcówkami zgodnymi ze standardem złącza IDC [32].

Należy podać masę GND, zasilanie 3.3 V, sygnały sterujące i sygnał danych (tabela 3).

Uruchamianie środowiska CCSv5

Po uruchomienia środowiska CCSv5 pokazywane jest okno edycyjne Workspace Launcher ustawiania lokalizacji foldera roboczego.

1. W oknie Workspace należy wpisać ścieżkę dla lokalizacji folderu (workspace) roboczego projektu. Można ją też wskazać przy użyciu standardowego przycisku Browse systemu Windows. Odznaczenie (wyłączenie) opcji Use this as the default and do not ask again oznacza pracę z osobnym folderem roboczym. Folder z projektem można umieścić w folderze roboczym. Ale nie odwrotnie. Przy ponownym uruchomieniu środowiska CCSv5 pokazywana jest w oknie Workspace Launcher ścieżka lokalizacji folderu roboczego używana przy ostatnim zamknięciu CCSv5.

W oknie Workspace wpisz ścieżkę i nazwę foldera roboczego. Powinna być ona krótka i musi być zlokalizowana na dysku w miejscu, dla którego są uprawnienia dostępu (zapisu). Dla indywidualnej pracy proponowana jest ścieżka <C:/home_dir>. Dla tego ćwiczenia proponowana jest nazwa foldera /work_Color. Można umieścić folder home_dir na innym wolumenie dyskowym z prawami dostępu.

Po kliknięciu na przycisk OK okna Workspace Launcher otwierane jest okno startowe środowiska CCSv5 (i ładowane są poszczególne elementy środowiska). Można to obserwować na pasku postępu w prawym dolnym rogu okna.

Projekty przykładowe pakietu controlSUITE

W oknie TI Resource Explorer perspektywy CCS Edit pokazywana jest strona Welcome (w html). Zawiera ona graficznie menu główne. Istotne informacje są zgrupowane na stronie Home. Można ją otworzyć po kliknięciu w oknie TI Resource Explorer na ikonkę Home .

Po kliknięciu na odnośnik Examples pokazywane jest po lewej stronie okna drzewo dokumentacji i dostępnych projektów przykładowych.

Jeśli pokazywana jest tylko jedna linia controlSUITE z gałęzią English to udostępnia ona tylko dokumentację pakietu.

Aby dodać dostęp do przykładowych projektów należy na dole strony Home kliknąć na odnośnik Configure Resource Explorer.

Jeśli w białym polu wyboru okna dialogowego Package Configuration jest pokazywana nazwa controlSUITE to należy na nią kliknąć a następnie należy kliknąć przycisk Remove oraz przycisk OK. Okno jest zamykane i środowisko CCS usuwa niepoprawnie zbudowaną bazę informacji o projektach przykładowych. Następnie na dole strony Home należy ponownie kliknąć na odnośnik Configure Resource Explorer.

Jeśli w białym polu wyboru okna dialogowego Package Configuration jest pusto to trzeba kliknąć na Add. Następnie trzeba wskazać folder C:ticontrolSUITE i kliknąć OK. Nazwa controlSUITE pojawi się w oknie wyboru. Należy kliknąć OK. Po dłuższej chwili pojawi się w drzewie okna TI Resource Explorer druga linia controlSUITE zawierająca pozycje: development kits, device_support oraz libs.

Zastosowanie projektu Example_F2802xECap_Capture_Pwm

2. Dla pracy z rodziną układów procesorowych Piccolo F2802x rozwiń w oknie TI Resource Explorer drugą pozycję controlSUITE. Następnie rozwiń w tym oknie drzewo controlSUITE → device_support → f2802x → v210 → f2802x_examples. Potem kliknij na nazwę wybranego projektu Example_F2802xECap_Capture_Pwm.

W prawym oknie zostanie wyświetlona instrukcja jak krok po kroku zbudować i uruchomić projekt.

Krok1: Importowanie projektu Example_F2802xECap_Capture_ Pwm do CCSv5

Krok1 umożliwia zaimportowanie wybranego projektu do CCSv5.

3. W oknie TI Resource Explorer kliknij na odnośnik kroku 1.

Po poprawnym wykonaniu importowania w oknie Project Explorer pojawia się drzewo projektu i w oknie TI Resource Explorer pokazywany jest zielony znaczek  na prawo od linii nazwy kroku.

Projekt Example_F2802xECap_Capture_Pwm został zaimportowany z kopiowaniem projektu i pliku Example_2802xECap_Capture_Pwm.c do foldera roboczego projektu.

4. Skopiuj (pobrany z serwera FTP) plik 28027_RAM_ Color_lnk.cmd oraz plik Example_2802xECap_Capture_Pwm.c (podmiana) do foldera roboczego projektu C: home_dirwork_RGBExample_F2802xECap_Capture_Pwm.

5. W oknie Project Explorer rozwiń drzewo projektu, kliknij prawym klawiszem myszy na jego nazwę i wybierz opcję Properties.

6. Rozwiń listę C2000 Linker i kliknij na File Search Path.

7. W oknie Include library file... usuń linię dostępu do pliku "cmd". Kliknij OK i ponownie OK.

Krok2: Budowanie projektu Example_F2802xECap_Capture_Pwm

Krok2 umożliwia wykonanie budowania wybranego projektu.

8. W oknie TI Resource Explorer kliknij na odnośnik kroku 2.

W oknie Console pokazywane są bieżące informacje o postępie budowania. W oknie Problems pokazywane są opisy błędów, ostrzeżeń i informacji. Po poprawnym wykonaniu budowania pokazywany jest w oknie TI Resource Explorer zielony znaczek  na prawo od linii nazwy kroku.

Kliknięcie na odnośnik kroku 2 powoduje automatyczne budowanie projektu - podobnie jak po przyciśnięciu przycisku Build .

9. W oknie Project Explorer rozwiń drzewo projektu i kliknij na jego nazwę. Został zbudowany projekt w konfiguracji budowania o nazwie RAM.

Budowanie projektu Example_F2802xECap_Capture_Pwm zostało zakończone poprawnie. Został utworzony wynikowy plik binarny Example_2802xECap_Capture_Pwm.out (zobacz okno Console). Zostały jednak zgłoszone ostrzeżenia (zobacz okno Problems). Na razie są one nieistotne.

Krok3: Definiowanie konfiguracji sprzętowego systemu docelowego

Tabela 4. Wartości pól palety dla różnych modeli barw [34]

Krok3 umożliwia zdefiniowanie konfiguracji sprzętowej systemu docelowego dla projektu. Na początku pole Connection pokazuje typ "none".

10. W oknie TI Resource Explorer kliknij na odnośnik kroku 3.

W oknie dialogowym Debugger Configuration rozwiń listę wyboru.

11. Wybierz pozycję Texas Instruments XDS100v2 USB Emulator. Kliknij OK.

W oknie TI Resource Explorer pole Connection pokazuje teraz typ Texas Instruments XDS100v2 USB Emulator. Zielony znaczek  pokazywany jest na prawo od linii nazwy kroku.

Utworzony plik konfiguracji sprzętowej TMS320F28027.ccxml jest teraz pokazany w gałęzi targetConfigs drzewa projektu w oknie Project Explorer. Jest on ustawiony jako Active/Default (aktywny i domyślny).

Krok4: Uruchamianie sesji debugowej dla projektu Example_F2802xECap_Capture_Pwm

Krok4 umożliwia uruchomienie sesji debugowej dla projektu. Dotychczas praca środowiska CCSv5 nie wymagała fizycznej obecności sprzętu docelowego. Wykonanie kroku 4 wymaga wcześniejszego dołączenia zestawu ewaluacyjnego C2000 Piccolo LaunchPad do komputera z zainstalowanym środowiskiem CCSv5 [1].

12. W oknie TI Resource Explorer kliknij na odnośnik kroku 4.

Kliknięcie na odnośnik kroku 4 powoduje automatyczne rozpoczęcie sesji debugowej - podobnie jak po przyciśnięciu przycisku Debug .

Postęp działania środowiska CCSv5 można obserwować na pasku stanu w prawym dolnym rogu okna. Może to trwać dosyć długo i należy koniecznie poczekać przed rozpoczęciem dalszej pracy na zakończenie ładowania kodu i pokazania się okna perspektywy CCS Debug.

Wgląd w projekt Example_F2802xECap_Capture_Pwm

Tabela 5. Pomiary pól palety czujnikiem TCS32000

13. W perspektywie CCS Debug zauważ w oknie edytora, że praca programu została zatrzymana na pierwszej linii kodu funkcji main().

Wyprowadzenia cyfrowe I/O (GPIO) dla modułu eCAP1 oraz skonfigurowanie modułu eCAP1 do pracy w trybie CAPTURE jest wykonane tak samo jak w artykule [11]. Należy zauważyć, że zegar taktowania wewnętrznego modułu eCAP1 to SYSCLKOUT.

Pomiar czasu pomiędzy dwoma zboczami sygnału daje czas całego okresu sygnału. Dla tego sposobu nie można z góry określić czasu pomiaru. Zmienia się on dynamicznie wraz ze zmianą poziomu oświetlenia czujnika. Szczególnie się wydłuża przy spadku poziomu oświetlenia.

Procedura obsługi przerwania modułu eCAP1

Przerwanie ECAP1_INT zgłaszane jest przez moduł eCAP1 po wpisaniu nowych wartości do wszystkich rejestrów CAP1-4. W procedurze ecap1_isr obsługi przerwania ECAP1_INT wykonywany jest odczyt zawartości rejestrów CAP2-4 i obliczana jest ich wartość średnia. Wartość w rejestrze CAP1 jest niepoprawna i jest pomijana. Obliczenia wykonywane są w wywoływanej funkcji Save_RGB_Capture_read_value W tej funkcji wykonywana jest zmiana wybranego kanału koloru układu TCS3200 na następny w sekwencji RBCG.

Następnie zerowany jest znacznik zgłoszenia żądania obsługi przerwania CEVT4 modułu eCAP1. Włączane jest zezwolenie zgłaszania przerwań przez moduł eCAP1. Ostatnią operacją wykonywaną z modułem eCAP1 jest ponowne "uzbrojenie" (rearm) modułu: zerowany jest wskaźnik Mod4 rejestrów CAP1-4, aktywowana jest praca wskaźnika Mod4 włączana jest praca modułu. Na koniec procedury włączane (przywracane) jest dla grupy 4 w PIE zezwolenie na zgłaszanie przerwania do CPU.

Pomiar barw

Rysunek 9. Wynik pomiaru wydrukowanego koloru Yellow

Odczyty dla każdego koloru są wstawiane do czteropozycyjnej tabeli i ponownie uśredniane. Dla tak uzyskanych danych liczone są wartości koloru sRGB proporcjonalnie do kanału C.

Model RGB nie jest wygodny przy konieczności bezpośredniego określania barwy, np. przy rozpoznawaniu. Istnieje prosty algorytm konwersji modelu RGB do modelu HSL [33]. W funkcji ToHSL wykonywane są obliczenia składowych modelu HSL. Składowa H jest określona w stopniach a składowe S i L w procentach.

Do eksperymentów została użyta paleta barwna zgodna z sekcją barw podstawowych palety ColorChecker [34]. Zdefiniowanie poszczególnych pól palety jest pokazane w tabeli 4. Można pobrać plik z uśrednionymi kolorami poszczególnych pól [34]. Z tablicy widać, że barwa zastosowana na poszczególnych polach nie jest barwą podstawową o odpowiedniej nazwie. Można się też z niej zorientować jakich odczytów można oczekiwać podczas własnych eksperymentów.

Paleta kolorów zgodna z tab. 4 jest umieszczona obok tabeli. Podobny wydruk został zastosowany do badań. Pomiary przeprowadzono dwukrotnie:

  • Pomiar światła palety wyświetlonej na ekranie monitora komputera.
  • Pomiar światła białych diod LED modułu KAmodCOLOR odbitego od wydrukowanej palety.

Wyniki pomiarów umieszczono w tabeli 5. Uzyskane rezultaty są dobre, stabilne i powtarzalne, a wartości zbliżone do zamieszczonych w tab. 4. Pomiary wykonywane były przy znikomym poziomie oświetlenia zewnętrznego. Został zastosowana największy zakresu częstotliwości czujnika S0=S1=1 (pomiar bez podziału). Pomimo to mierzone częstotliwości sygnału są niskie, wynoszą kilkaset Hz dla pomiaru z druku i kilkadziesiąt Hz dla pomiaru z monitora. Sugeruje to dosyć niską czułość czujnika.

Na końcu funkcji Save_RGB_Capture_read_value wykonywane jest proste rozpoznawanie sześciu barw palety. Wyniki uzyskane dla palety wyświetlanej przez monitor są poprawne a zmierzone wartości zgodne z danymi z tab. 4. W przypadku pomiaru wydruku występuje jednak zawyżenie wartości H dla koloru blue i cyan. Uniemożliwia to ich rozróżnienie. Jest to typowy problem związany z niedokładnościami druku barwnego.

Badania ujawniły też dodatkowy problem. W module KAmodCOLOR białe diody LED mają kształt prostopadłościanów i świecą we wszystkich kierunkach. Powoduje to bezpośrednie oświetlenie czujnika TCS3200 i katastrofalne zafałszowanie pomiarów. Udało się prowizorycznie poprawić działanie poprzez zamaskowanie przezroczystej obudowy czujnika czarną taśmą izolacyjną. Tak zmodyfikowany moduł został zastosowany w powyższych badaniach.

Działanie programu Example_2802xECap_Capture_Pwm

Rysunek 10. Wynik pomiaru wyświetlanego koloru Magenta

14. Dodaj (przeciągnij) do okna Expressions zmienne pokazane na rys. 9.

15. Wykonaj polecenie Resume .

16. W oknie Expressions przyciśnij przycisk Continuous Refresh .

17. Przykryj czujnik jednym polem wydrukowanej palety. Sprawdź uzyskany rezultat pomiaru. Tablica znakowa Read_COLOR zawiera nazwę rozpoznanej barwy z palety.

18. Sprawdź działanie dla pozostałych pól palety.

19. Zmień wartość zmiennej LED_on na zero. Zmienna LED_on steruje włączaniem świecenia białych diod. W oknie Expressions kliknij na pole Value dla tej zmiennej i wpisz zero. Kliknij klawisz Enter. Zgasną białe diody LED.

20. Wyświetl na górze ekranu paletę z pliku ColorChecker_ sRGB_from_Avg_primary.png (pobranego z serwera FTP). Zmniejsz okno CCSv5 tak, aby mieściło się na ekranie poniżej (rys. 10).

21. Skieruj czujnik na jedno pole wyświetlanej palety. Sprawdź uzyskany rezultat pomiaru.

22. Sprawdź działanie dla pozostałych pól palety.

Przedstawione w artykule zagadnienia zostały właściwie tylko zasygnalizowane. Nie został np. zbadany wpływ oświetlenia zewnętrznego na pomiar barwy. Jednak uzyskane rezultaty mogą zachęcić do rozpoczęcia własnych eksperymentów w tej dziedzinie.

Henryk A. Kowalski
kowalski@ii.pw.edu.pl
Zdjęcia, wideo: Piotr T. Kowalski

Autor artykułu dziękuje panu Januszowi Rzeszutowi za fachowe konsultacje przy pracy nad przygotowywaniem tekstu.

Dotychczas w EP na temat zestawu ewaluacyjnego C2000 Piccolo LaunchPad:
[1] "Zestaw ewaluacyjny C2000 Piccolo LaunchPad", EP 01/2013
[2] "C2000 Piccolo LanuchPad (1) - Pierwszy program w środowisku programowym CCS v5", EP 02/2013
[3] "C2000 Piccolo LanuchPad (2) - Łatwe programowanie z pakietem controlSUITE", EP 03/2013
[4] "C2000 Piccolo LanuchPad (3) - Łatwe programowanie do pamięci Flash", EP 04/2013
[5] "C2000 Piccolo LanuchPad (4) - Łatwa obsługa szyny SPI", EP 05/2013
[6] "C2000 Piccolo LanuchPad (5) - Łatwa obsługa szyny I²C", EP 07/2013
[7] C2000 Piccolo LanuchPad (6) - Łatwa inicjalizacja systemowa procesora serii Piccolo F2802x", EP 09/2013
[8] "C2000 Piccolo LanuchPad (7) - Łatwa obsługa wyświetlacza LCD", EP 11/2013
[9] "C2000 Piccolo LanuchPad (8) - Budowanie biblioteki drivelib dla procesorów serii Piccolo F2802x", EP 12/2013
[10] "C2000 Piccolo LanuchPad (9) - Łatwa obsługa modułu PWM procesora serii Piccolo F2802x", EP 1/2014
[11] "C2000 Piccolo LanuchPad (10) - Łatwa obsługa modułu eCAP procesora serii Piccolo F2802x", EP 2/2014
[12] "C2000 Piccolo LanuchPad (10) - Łatwe sterowanie diodami LED-RGB mocy", EP 3/2014

  • Wideo "Pomiar_kolorów RGB"
  • Pliki: ColorChecker_sRGB_from_Avg_primary.png

Example_2802xECap_Capture_Pwm.c
28027_RAM_Color_lnk.cmd

Opisy:
[13] TMS320F28027, TMS320F28026, TMS320F28023, TMS320F28022, TMS320-F28021, TMS320F280200, Piccolo Microcontrollers, Data Sheet, SPRS523I, 31 Jul 2012, Dane techniczne i parametry elektryczne układu procesorowego serii Piccolo F2802x
[14] TMS320x2802x, 2803x Piccolo Enhanced Capture Module (eCAP) Reference Guide [SPRUFZ8.pdf], 03 May 2009, Opis modułu eCAP układu procesorowego serii Piccolo F2802x
[15] TMS320x2802x Piccolo System Control and Interrupts, SPRUFN3D, 13 Feb 20013, Opis konfigurowania wyprowadzeń GPIO oraz obsługi przerwań
[16] LAUNCHXL-F28027 C2000 Piccolo LaunchPad Experimenter Kit, User’s Guide, SPRUHH2, 25 Jul 2012, Opis zestawu ewaluacyjnego C2000 Piccolo LaunchPad
[17] Henryk A. Kowalski, Procesory DSP dla praktyków, BTC, Warszawa, 2011 http://ii.pw.edu.pl/kowalski/dsp/book/, Dokładne omówienie budowy układu procesorowego serii Piccolo F2802x/3x
[18] Henryk A. Kowalski, Procesory DSP w przykładach, BTC, Warszawa, 2012 http://ii.pw.edu.pl/kowalski/dsp/book/, Dokładne omówienie pracy z modułem eCAP układu procesorowego serii Piccolo F2802x/3x
[19] TMS320F28027, TMS320F28026, TMS320F28023, TMS320F28022, TMS320-F28021, TMS320F280200, Piccolo MCU, Silicon Errata, SPRZ292J, 31 Jan 2012, Istotne informacje na temat błędnego działania układu procesorowego serii Piccolo F2802x Dokładne omówienie zestawu ewaluacyjnego C2000 Piccolo LaunchPad jest zamieszczone w artykule [1] a modułu eCAP w artykule [11]. Dokładne omówienie środowiska CCSv5 oraz pakietu controlSUITEv3 jest zamieszczone w artykule [3]. Opis instalowania najnowszej wersji środowiska CCS i pakietu controlSUITE jest zamieszczony w artykule [9].

Bibliografia:
[20] Janusz Rzeszut, Barwa w grafice komputerowej, w: Jan Zabrodzki (ed) Grafika Komputerowa, Warszawa, WNT, 1994.
[21] Barwa, http://goo.gl/krYIKJ
[22] Color Classification with the TCS230, AMS, http://goo.gl/LmRq8y
[23] HSL and HSV, http://goo.gl/7ZQHgu
[24] Hamamatsu, RGB color sensors, http://goo.gl/r2RjIV
[25] Color Sensor, AMS, http://goo.gl/jlbsOA
[26] MAX44005 RGB Color, Temperature, and Infrared Proximity Sensor, Maxim, http://goo.gl/OMHgeS
[27] ISL29125 Digital Red, Green and Blue Color Light Sensor with IR Blocking Filter, Intersil, http://goo.gl/WjglcR
[28] RGB Color Sensor KPS-5130PD7C, Kingbright, http://goo.gl/xd7LBP
[29] TCS3200 Programmable Color Light-To-Frequency Converter, AMS, http://goo.gl/ENC0LL
[30] Color Sensor & Proximity Detection, AMS, http://goo.gl/iWV7h9
[31] KAmodCOLOR Czujnik koloru z układem TCS3200D firmy TAOS, KAMAMI, http://goo.gl/h0y0M4
[32] CAB_M-F(40-21-Rainbow), zestaw 40 szt. przewodów M-F w różnych kolorach o długości 21 cm, KAMAMI, http://goo.gl/uWKsDY
[33] Sensing color with the TAOS TCS230, AMS, http://goo.gl/kO94de
[34] ColorChecker, http://goo.gl/ibOV22

Artykuł ukazał się w
Elektronika Praktyczna
kwiecień 2014
DO POBRANIA
Pobierz PDF Download icon

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik marzec 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna marzec 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów