Celownik OSD do systemów bezlunetowych MAX7456



Kilka słów wprowadzenia w związku z tytułem, który zapewne niewiele mówi niewtajemniczonym.Wśród strzelców wiatrówkowych lubiących strzelać w nocy lub w złych warunkach oświetleniowym dominują dwa obozy, lunetowi oraz bezlunetowi (scopeless).Aby osiągnąć możliwość strzelania w ciemności, miłośnicy systemu lunetowego, dokładają do swojej lunety adapter do kamery, kamerę, jakiś wyświetlacz i oświetlacz IR. Rozwiązanie to ma dwie podstawowe wady: konieczność posiadania lunety oraz bardzo duży rozmiar instalacji.Zwolennicy systemu scopeless postanowili wyeliminować je pozbywając się lunety. Do powiększania obrazu stosowana jest soczewka do kamer przemysłowych, która jest o wiele mniejsza i tańsza.Pojawia się natomiast problem z generowaniem krzyża celowniczego. Zwykle rozwiązywano go dobierając kamerę ccd 1/3" z funkcją ustawiania stref prywatności. Strefy ustawiano tak, żeby miały szerokość jednego pixela i tworzyły krzyż. Jest to rozwiązanie mało eleganckie, a do tego mocno ogranicza wybór kamery.Tutaj dochodzimy do mojego generatora krzyża. Po prostu wpinamy go między kamerę, a wyświetlacz i cieszymy się regulowanym krzyżem.

Założenia projektu:

  • łatwo dostępne elementy
  • możliwie tanie elementy
  • możliwie prosta budowa niewymagająca wyszukanych narzędzi
  • monitorowanie poziomu baterii
  • zmiana pozycji krzyża z dokładnością do 1 pixela z zapisem do eeprom


Udało się spełnić wszystkie, więc chyba postawiłem sobie mało ambitne cele 


Celownik OSD na MAX7456 do systemów bezlunetowych w wiatrówkach
Celownik OSD na MAX7456 do systemów bezlunetowych w wiatrówkach

Do menu wchodzimy klikając środkowy przycisk krzyżaka.
"Pozycja" służy do ustawienia pozycji w dwóch etapach. Wartości współrzędnych wyświetlane są w rogu ekranu, gdyby ktoś chciał sobie je spisać na wszelki wypadek. Najpierw ustawiamy pozycję zgrubną - krzyż przesuwa się o odległość 1 znaku.
Po potwierdzeniu pozycji środkowym przyciskiem przechodzimy do ustawień dokładnych - cały ekran przesuwa się o odległość 1 pixela.
Potwierdzając środkowym klawiszem wracamy do menu. Przesuwania co do pixela nie da się zrealizować w inny sposób niż zmieniając offset całego ekranu.

"Czarny" służy do zmiany koloru wyświetlania z białego na czarny. 0 - biały, 1- czarny. Wartość zmieniana jest środkowym przyciskiem.

"Ilość cel" służy do ustawienia ilości szeregowo połączonych cel akumulatora. Możemy wybrać 1-4 cel w szeregu za pomocą klawiszy kierunkowych -lewo, prawo. Na podstawie tej wartości działa alarm niskiego stanu baterii. Założyłem użycie akumulatorów li-ion. Jako puste traktuję je przy 3V na ogniwo. Alarm włącza się przy 3,15V na ogniwo i polega na tym, że wartość napięcia miga.
Do monitorowania napięcia baterii służy wejście BAT1. Jeśli używamy baterii 1S lub 2S z przetwornicą step-up, do wejścia BAT1 oczywiście należy podłączyć przewód wyprowadzony z wejścia przetwornicy.

"Stan baterii" pozwala nam wybrać wyświetlanie napięcia w formacie xx,xxV lub xx%

"Wyjście" zapisuje wartości zmiennych do pamięci eeprom jeśli różnią się od zapisanych wcześniej i wychodzi z menu.


Na początku myślałem nad zaprojektowaniem własnej płytki, jednak podczas poszukiwań układów mogących generować OSD trafiłem na używaną przez droniarzy płytkę minimOSD opartą na układzie MAX7456 sterowanym przez Atmegę328. Był to strzał w dziesiątkę.
Płytka istnieje w dwóch wersjach, większej-mini i mniejszej-micro. Koszt 4-7$ u Chińczyków. Większa wersja ma wbudowaną przetwornicę napięcia, dzięki czemu można ją zasilić z 12V tak jak kamerę i wyświetlacz.

Celownik OSD na MAX7456 do systemów bezlunetowych w wiatrówkach
Celownik OSD na MAX7456 do systemów bezlunetowych w wiatrówkach

Jedyna fizyczna modyfikacja jaką trzeba wykonać to usunięcie dzielnika napięcia z wejścia BAT2 służącego pierwotnie do monitorowania stanu baterii na porcie PC0 mikrokontrolera. Wejście to posłuży do obsługi przełącznika kierunkowego. Wybrałem akurat to wejście z uwagi na położenie dzielnika. Z tego miejsca łatwiej je usunąć i idę o zakład, że dałoby się to zrobić lutownicą transformatorową.
Na zdjęciu widać płytkę po modyfikacji. W miejscu zwory był rezystor 15k, a w miejscu pustym 1k.




Celownik OSD na MAX7456 do systemów bezlunetowych w wiatrówkach

Do interakcji z układem służy 4 kierunkowy joystick, który jest złożony z 5 mikroprzycisków w jednej obudowie. Przyciski (na razie pojedyncze) połączyłem za pomocą drabinki rezystorowej dzięki czemu używam tylko jednego wejścia atmegi.
Rezystory dobrałem tak, aby uzyskać zakres jak najbliższy pełnemu, przy zastosowaniu wewnętrznego napięcia odniesienia 1,1V.
Wyszło 120k od zasilania + drabinka złożona z 7 oporników 4,7k.

Celownik OSD na MAX7456 do systemów bezlunetowych w wiatrówkach

Układ MAX7456 potrafi wyświetlać jedynie tekst. Dlatego aby wyświetlić krzyż celowniczy musiałem przygotować zestaw znaków.
Użyłem do tego celu edytora dostarczonego przez producenta scalaka.
Zaskakującym problemem okazało się wgranie tablicy symboli do pamięci MAXa. Nie działały szkice dostarczone z biblioteką, nie działały również wersje polecane na różnych forach. Przez soft do konfiguracji osd pod drony, wgrywanie fontów działało losowo.
W końcu znalazłem niezawodny sposób.
Należy ściągnąć i wypakować archiwum ze strony mwosd.com ,następnie wejść do folderu MW_OSD i usunąć plik fontB.h
Teraz na jego miejsce wkleić własny zestaw znaków i zmienić jego nazwę na fontB.h
Otwieramy w arduinoIDE plik MW_OSD.ino, przechodzimy do zakładki config, wybieramy odpowiednią płytkę i w końcu odkomentowujemy linię
Kompilujemy, wgrywamy i czekamy. Jeśli płytka jest podłączona do jakiegoś wyświetlacza to wyświetlą nam się wszystkie dostępne symbole.

Bibliotekę konieczną do obsługi MAX7456 znalazłem tu https://www.tinyosshop.com/arduino-osd-shield
W końcu można wypalić szkic z celownikiem.


W czasie tego projektu uczyłem się programować, do tej pory nie potrafiłem wyjść poza mruganie ledem. Dlatego kod jest chaotyczny i mało czytelny.
Układ został przetestowany na sucho, podłączony do starej kamery na kasety i telewizora. Nie mam ani żadnego małego ekranu, ani kamerki żeby przetestować wszystko na żywym organizmie. Dlatego na razie projekt uważam za zakończony. W przyszłości mooooże dodam kilka slotów pamięci do wyboru do przechowywania ustawień krzyża przystrzelonego na różne odległości, kilka siatek do wyboru oraz dodatkową belkę horyzontalną ustawianą indywidualnie.

Wsad i reszta plików
https://github.com/inzKrzys/max7456-crosshair

Komentarze