Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Super Simple OSD by Kuuczoo

kuuczoo 04 Jan 2014 17:08 10050 15
  • Super Simple OSD by Kuuczoo

    Witam wszystkich

    Z racji rosnącej popularności hobby jakim jest ostatnio latanie fpv postanowiłem zaprezentować na forum projekt urządzenia jakim jest podstawowe OSD. Dla kogoś kto lata fpv jest to właściwie niezbędny gadżet. Na rynku jest parę konstrukcji, ale są one albo drogie (a nie zawsze i nie każdemu potrzebna jest ich pełna funkcjonalność), albo kiepsko dostępne (nie każdy wie jak i może kupować zza oceanu). Ponieważ sam powoli wchodzę w zabawę w fpv to postanowiłem taki gadżet złożyć samemu. Póki co dla moich potrzeb wystarczy podstawowa funkcjonalność, czyli pomiar napięcia pakietu zasilającego latadło. Dodatkowo wrzucony jest pomiar napięcia pakietu zestawu video oraz czas lotu (od włączenia zasilania).
    Projekt oparty na ATMega8A i LM1881. Wiem że jest kilka projektów bazujących jedynie na AVR, ale kosztem kilku złotych postanowiłem oszczędzić czas i zasoby procesora.

    Schemat układu

    Super Simple OSD by Kuuczoo



    Układ jak do tej pory powstał jedynie w formie prototypu na płytce uniwersalnej, więc nie będę go tu prezentował. Powstał jednak już wzór płytki, więc do finalnego stanu urządzenia już nie daleko. Płytka jest w technologii przewlekanej, bo założeniem była jak najprostsza budowa (możliwość łatwego zrobienia jej metodą "żelazkową", na upartego mazakiem też da radę...). Daje to również możliwość łatwiejszej ingerencji w układ i prostotę ewentualnych poprawek.
    Projekt jest rozwojowy, tzn. płytka przygotowana do podłączenia dodatkowych czujników lub urządzeń (złącze dla RS i I2C), mimo że obecny program ich nie obsługuje.

    Wzór płytki

    Super Simple OSD by Kuuczoo

    Program został napisany w C i jest pierwszym moim programem na AVR w tym języku (wcześniej pisałem w BASCOMie), więc jego forma nie wszystkim może przypaść do gustu. W tej chwili zajmuje niecałe 2kB.

    W załącznikach jest schemat, źródła programu (*.c), wzór płytki zarówno w pliku PCB (darmowy ExpressPCB) jak i bitmapa.
    Jeśli ktoś miałby ochotę projekt powielić lub zmodyfikować do własnych potrzeb to nie widzę przeszkód. Ameryki nim nie odkryłem więc nie ma problemu.
    Jak co to służę radą. Czekam również na ewentualne uwagi i sugestie, gdyż jak wspomniałem jest to jedynie baza i na pewno daleko jej do ideału.

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    kuuczoo
    Level 26  
    Offline 
    kuuczoo wrote 657 posts with rating 83, helped 96 times. Live in city Brzeziny. Been with us since 2006 year.
  • #2
    User removed account
    User removed account  
  • #3
    kuuczoo
    Level 26  
    Graficzny w sensie budowanie z bloczków? Nie widzę sensu... Bardziej wymagające projekty i tak będą wymagały dopisywania własnego kodu, a w dzisiejszych czasach gdzie wszelkich programow w sieci jest pełno, pisanie własnych i tak przypomina składanie bloczków przez kopiuj-wklej...
  • #4
    User removed account
    User removed account  
  • #5
    andrzejlisek
    Level 28  
    Przyjrzałem się schematowi i mam kilka pytań:
    1. Czy zasada nakładania OSD jest podobna, jak nadawanie "Telewizji Solidaność", czyli generowanie sygnału video zsynchronizowanego z istniejącym sygnałem, przy czym w TŚ wystarczyło puścić w eter obrazy przedstawiające same napisy, które w eterze mieszały się s oryginalnym sygnałem TV?
    2. Czy dobrze rozumiem, że B3 i B1 to są wyjścia i za diodą D3 i opornikiem R4 jest sygnał video zawierający obraz OSD?
    3. Czy do LM1881 wprowadzasz sygnał video z kamery zwarty z sygnałem z obrazem OSD?
  • #6
    szymon122
    Level 38  
    Sam również wykonałem coś takiego ale na samym arduino (atmega 328). Z tego co pamiętam do działania były potrzebne 3 diody, potencjometr i kondensator. Jeśli to ma być do samolotu to jest zdecydowanie za duże i smd to podstawa.
    Zainteresowanych odsyłam do:
    Link
    Układ ten działa ale trzeba dokładnie wyregulować potencjometr bo inaczej napisy latają lub są krzywe, czy u ciebie też jest taki problem?

    andrzejlisek wrote:
    2. Czy dobrze rozumiem, że B3 i B1 to są wyjścia i za diodą D3 i opornikiem R4 jest sygnał video zawierający obraz OSD?

    Z tego co mi się wydaje to do punktu Vid. podłączasz wyjdzie video kamery oraz wejście video telewizora albo nadajnika.[/quote]
    andrzejlisek wrote:
    3. Czy do LM1881 wprowadzasz sygnał video z kamery zwarty z sygnałem z obrazem OSD?

    Układ ten oddziela tylko synchronizację pionową i poziomą od sygnału.

    Czy zamiast LM1881 można użyć BA7046? Wygląda, że pełniom te samą funkcję ale ten drugi jest 6x tańszy.
  • #7
    kuuczoo
    Level 26  
    Andrzejlisek
    1. Nie mam pojęcia o czym mówisz więc nie odpowiem...
    2. Tak, PB1 i PB3 są wyjściami. PB1 "ściąga" video do czerni generując tło a PB3 generuje białe "piksele". U mnie ze względu na pewne problemy czcionki mają odwróconą kolorystykę, czyli litery przyjmują kolor tła a tło jest "zaciemnione" pikselami. Za diodą jest już video z dołączonym OSD
    3. LM1881 jest jedynie separatorem synchronizacji, czyli na podstawie oryginalnego sygnału video generuje czyste impulsy synchronizacji.

    Szymon122
    Nie znam BA7046 więc się nie wypowiem.
    Do samolotu również się nadaje w takiej wersji, w końcu fpv raczej nie lata się kombatami poniżej metra rozpiętości tylko EG 1.8m lub ES 1.4m..., a tam miejsca jest mnóstwo. Nie jest to również taki potwór - 35x62mm to nie jest tak dużo...

    Juzek555
    Podałeś przykład środowiska, które na stronie głównej kieruje się do mniej doświadczonych użytkowników nie do końca chcących zagłębiać się bezpośrednio w hardware danej platformy. Nie jestem początkujący z AVR i do projektów takich jak ten potrzebuje znać dokładnie hardware platformy, chociażby do wyliczeń czy mi czasu starczy do rysowania w jednej linii video. Taki graficzny kompilator z założenia ogranicza Ci możliwość stosowania takiej wiedzy bo procedury obsługi danego zasobu stworzone są wcześniej na sztywno zgodnie z regułami. Dlatego dalej obstawiam za tym, że jest to trochę bez sensu...
  • #8
    andrzejlisek
    Level 28  
    kuuczoo wrote:
    Andrzejlisek
    1. Nie mam pojęcia o czym mówisz więc nie odpowiem...

    Miałem na myśli to, że w Telewizji Solidarność zastosowano następujący sposób:
    Odbierany jest sygnał telewizji państwowej, z którego wyciągane są sygnały synchronizacji poziomej i pionowej. Komputer na podstawie sygnału synchronizacji pionowego wie, kiedy rozpoczyna się klatka obrazu telewizyjnego i rozpoczyna procedurę nadawania własnego obrazu. W ramach tej procedury komputer rozpoczyna nadawanie poszczególnych linii własnego obrazu w momencie, w którym odbierze sygnał synchronizacji danej linii i odczeka określony stały czas, żeby obraz z komputera był wyemitowany w czasie trwania sygnału obrazowego w danej linii.
    Ponieważ program telewizyjny i obrazy z komputera były nadawane na tej samej częstotliwości, na ekranach telewizorów w okolicach nadajnika TŚ pojawiał się program telewizji państwowej z nałożonymi obrazami z komputera. Nadajnik TŚ nie emitował pełnego sygnału telewizyjnego, tylko emitował zakłócenia dużej mocy w momentach, w których miał się pojawić zmieniony fragment linii.

    Domyślam się, że w Twoim przypadku jest podobnie, czyli Atmega odbiera obraz z kamery, jak odbierze sygnał synchronizacji pionowej, to rozpoczyna procedurę generowania obrazu OSD, potem Atmega odbiera cyklicznie sygnał synchronizacji poziomej i w ten sposób odlicza linie obrazu, w zależności, która linia się rozpoczyna, wpuszcza do sygnału video sygnał generowany przez siebie (zawierający obraz OSD) i w ten sposób otrzymuje się obraz z kamery z nałożonym OSD.

    Oczywiście w jednej i drugiej sytuacji cała procedura jest powtarzana dla każdej klatki obrazu.

    Chciałem zapytać, czy rzeczywiście tak jest, jak się domyślam.
  • #9
    kuuczoo
    Level 26  
    Dokładnie tak...
  • #10
    zynaps
    Level 12  
    Witam.

    Słowa uznania dla autora,bardzo fajny w miarę prosty i rozwojowy projekt.
    Czy można by prosić o skompilowany plik(hex,lub bin) bo jakoś nie potrafię skompilować tego w AVR Studio 6 ?
    Niestety może to wynikać z braku wiedzy,nie znam C.

    Pozdrawiam.

    OK.
    Dałem rady ale AVR Studio 5,nie wiem czemu "6" źle to kompiluje 49 errorów?
  • #11
    kuuczoo
    Level 26  
    Ja używam jeszcze 4 :)

    Dla tych, którym kompilacja z jakiegoś powodu nie wychodzi hex w załączniku w pierwszym poście...
  • #12
    markac
    Level 9  
    I w ogóle nie wzorowałeś się na mojej płytce PCB od OSD?

    Super Simple OSD by Kuuczoo

    Strona domowa:
    Hasło: Markac's OSD.
  • #13
    kuuczoo
    Level 26  
    A owszem, wzorowałem, uważam że na dobrych rozwiązaniach dobrze jest się wzorować bo są dobre :)
    Z programu też w miarę możliwości korzystałem...
  • #14
    Svavo
    Level 23  
    kuuczoo wrote:
    A owszem, wzorowałem, uważam że na dobrych rozwiązaniach dobrze jest się wzorować bo są dobre :)
    Z programu też w miarę możliwości korzystałem...


    kuuczoo wrote:
    Jeśli ktoś miałby ochotę projekt powielić lub zmodyfikować do własnych potrzeb to nie widzę przeszkód. Ameryki nim nie odkryłem więc nie ma problemu.


    Mogłeś jednakowoż o owym "wzorowaniu" wspomnieć...
  • #15
    kuuczoo
    Level 26  
    Wzorowałem się na wielu konstrukcjach, nie koniecznie wiedząc do końca czyich, przy czym "wzorowałem" to też nie najlepsze słowo. Po prostu czerpałem wiedzę z ich programów i konstrukcji potrzebną do stworzenia mojej.
    Ale prawdą jest też to że płytka moja nie jest podobna do kolegi dlatego że ją kopiowałem (co mam nadzieję widać), ale dlatego że takich elementów za bardzo inaczej po prostu rozmieścić się nie da żeby było optymalnie...
  • #16
    szymon122
    Level 38  
    Zaprojektowałem dzisiaj płytkę do podobnego układu, z tym, że u mnie do wykrywania ramki służą diody a nie lm1881. Płytka ma 25x40mm, w całości SMD. W środku siedzi Atmega328 z bootloaderem arduino, 18 wyprowadzonych pinów do których można podłączyć różne czujniki itp. Gdybym znalazł jeszcze kwarc to płytka zmniejszy się o jakiś centymetr, ponieważ musiałem użyć oscylatora zamiast kwarcu.