18May 2015

Video Time Inserter

Video Time Inserter (VTI) to urządzenie które pobiera informację o aktualnym czasie z zegarów atomowych systemu GPS i umieszcza ją w analogowym sygnale telewizyjny (PAL lub NTSC), znakując każdą klatkę dokładnym (+/- 1ms) czasem jej rejestracji. Zastosowań takiego urządzenia może być wiele. Ja chciałbym je użyć podczas obserwacji astronomicznych - głównie podczas zakryć gwiazd przez Księżyc i planetoidy do dokładnego wyznaczenia momentu zjawiska.

Użyte podzespoły

  • Arduino UNO R3 - jest podstawową i zarazem najpopularniejszą wersją z całej serii. Płytka zawiera mikrokontroler ATmega328, wyposażony w 14 cyfrowych wejść/wyjść z czego 6 można używać jako wyjścia PWM (np. do sterowania silnikami) i 6 jako analogowe wejścia. Układ taktowany jest sygnałem zegarowym o częstotliwości 16MHz,
  • odbiornik GPS u-blox NEO-6m, można nabyć za stosunkowo niewielkie pieniądze. Ważne aby wyprowadzony był sygnał PPS który jest wykorzystany do precyzyjnej synchronizacji czasu,
  • OSDshield.pngVideo OSD Shield - moduł który kupiłem jest oparty na układzie scalonym MAX7456 OSD.

Sposób podłączenia

Do połączenia modułu GPS z Arduino użyłem przewodów "ż-m" do płytek prototypowych. Można je kupić w większości sklepów z elektroniką. Dioda LED jest sterowana sygnałem 1PPS bezpośrednio z modułu GPS. Do jej podłączenia posłużyłem się uniwersalną płytką drukowaną, do której zostały przylutowane niezbędne elementy i złącza. Płytkę Arduino zasilam napięciem 5V z portu USB lub zasilaczem 7-15V. Odbiornik GPS został podłączony pod sprzętowy UART (piny Arduino: D0 i D1). W takiej konfiguracji nie ma możliwości wysyłania komunikatów na konsolę szeregową. Wgrywanie nowej wersji oprogramowania musi się odbywać przy wyłączonym odbiorniku GPS. Służy do tego przełącznik SW GPS off. Poniżej prezentuję schemat układu: schemat.png

Płytkę OSD nakłada się bezpośrednio na Arduino Uno. Na schemacie, kolorem różowym, pokazałem które piny są wykorzystywane do komunikacji między modułami i nie mogą być użyte do innych celów. Przełącznik SW Info służy do zmiany ekranu OSD. Zwarcie pinu D4 z masą układu powoduje przełączenie z ekranu data/czas na ekran informacyjny, pokazujący współrzędne geograficzne, wysokość oraz informacje o widoczności satelitów i dokładności. Przełącznik SW Reset służy do wykonania restartu mikrokontrolera.

Obudowa

Wykorzystałem obudowę ABS COMBIPLAST CP-Z-112/J o wymiarach 136x185x60 mm (szer. x dł. x wys.). W przednim panelu zostały wycięte otwory na gniazda: USB i zasilania. Dodatkowo nawierciłem otwory na diodę LED, przełącznik trybu pracy oraz przełączniki astabilne: reset (off-on) i wyłączenia modułu GPS (on-off). DSCF0845_web.JPG

Arduino z modułem OSD przymocowałem bezpośrednio przy przednim panelu. DSCF0850_small.JPG

Płytki drukowane zostały przykręcone do obudowy przy pomocy śrubek M3 i tulejek dystansowych. DSCF0853_small.JPG

Wyprowadzenie sygnału PPS do diody LED wykonałem na uniwersalnej płytce drukowanej. Do tej samej płytki podłączyłem moduł odbiornika GPS. DSCF0849_small.JPG Dolna i górna połowa obudowy zostały skręcone przy pomocy czterech śrub, które dodatkowo mocują do niej nóżki.

Oprogramowanie

Oprogramowanie piszę w środowisku Arduino IDE i jest ono publicznie dostępne na platformie Github. Należy pobrać najnowsze wydanie i zapisać na dysku lokalnym, najlepiej w lokalizacji którą ustawiliśmy w IDE jako domyślne miejsce przechowywania szkiców.ArduinoIDE1.png W tym samym katalogu tworzymy podkatalog libraries i do niego zapisujemy wszystkie używane przez nas dodatkowe biblioteki. Następnie plik smopiVTI.ino otwieramy w IDE, kompilujemy i wysyłamy do Arduino, pamiętając by na ten czas odłączyć od odbiornika GPS zasilanie. Efekt działania programu można śledzić na ekranie telewizora podłączonego pod gniazdo Video OUT lub na komputerze. W tym drugim przypadku musimy posiadać tzw. video grabber. Wykaz dodatkowych (niestandardowych) bibliotek wykorzystanych w programie:

W podstawowym trybie pracy na ekranie wyświetlana jest data w formacie rrrr-mm-dd oraz godzina w formacie HH:MM:SS (UTC) plus dodatkowe dwa liczniki pokazujące ilość milisekund jakie upłynęły od impulsu PPS do połowy i końca czasu rejestracji klatki. vti1.png vti2.png Jeżeli czas prawidłowo jest synchronizowany impulsami PPS to obok sekundnika wyświetlana jest litera "P". W prawym górnym rogu pokazywana jest licznik pół obrazów a na dole obok daty ilość aktualnie widocznych satelitów systemu GPS. Szczegółowy opis metody analizy czasu rejestracji obrazu znajduje się na stronie: Video exposure time analysis from recordings with video time insertion.

Wykaz wszystkich wersji oprogramowania, wraz z opisem zmian, jest dostępny na stronie: Wersje oprogramowania VTI. Najnowsza wersja dostępna jest na stronie: https://github.com/smopihub/smopiVTI/releases/tag/v2.2 lub jako archiwum tar.gz i zip.