logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Generator OSD VGA i synchronizacji, od pomysłu do urządzenia

ArturAVS 17 Kwi 2023 09:22 4404 48
  • Generator OSD VGA i synchronizacji, od pomysłu do urządzenia
    Witam. Dziś przedstawię historię pewnego urządzenia oraz drogę "od pomysłu do przemysłu". W komentarzach do tekstu o RP Pico pojawiły się pytania o generowanie obrazu VGA, @TechEkspert zasugerował głównemu zainteresowanemu czyli @AlekZ zadać pytanie o możliwość wygenerowania OSD (ang. On Screen Display czyli informacje wyświetlane na tle głównego obrazu). @AlekZ konstruuje urządzenie zbliżone swym działaniem do mikroskopu elektronowego i stosował technikę analogową do generowania sygnałów synchronizacji oraz siatki celowniczej a do obrazowania stary monitor CRT (fotografia obok). O ile samo wygenerowanie sygnałów w standardzie VGA to praktycznie niewielki problem, to już "wszczepienie" OSD do sygnału wyjściowego nie jest takie proste jak się wydaje. Lata temu zajmowałem się trochę montażem analogowego wideo oraz naprawami konsol monterskich więc obowiązujące zasady z grubsza znam. W celu zminimalizowania kosztów zaproponowałem użycie typowych scalonych generatorów OSD z odbiorników TV lub monitorów CRT, @AlekZ stwierdził jednak że to rozwiązania raczej archaiczne i nie dają możliwości żadnej rozbudowy bez znaczącej modyfikacji strony sprzętowej. Oczywiście RP Pico oraz podobne a nawet stara poczciwa ATMega328 da radę wygenerować odpowiedni sygnał VGA jednak jako dość marny programista byłem sceptyczny co do tego. Tu z pomysłem wyszedł Mariusz @khoam ;
    khoam napisał:
    @arturavs Jak masz płytkę z ESP32, to możesz spróbować uruchomić przykłady generowania sygnału VGA: Link
    Biblioteka jest prosta w obsłudze i "arduinowa"


    ArduinoIDE nie jest co prawda dla mnie nowością i też wielu rzeczy muszę się jeszcze nauczyć ale mając w "przydasiach" kilka wersji ESP32 postanowiłem pobawić się zaproponowaną biblioteką oraz modułem Heltec. Zbudowałem na płytce prototypowej układ testowy i okazało się że biblioteka jest łatwa w życiu i dobrze działa;
    Testowe połączenie

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Generowany obraz oraz parametry po prawej, lewy to mój pulpit

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Powyższy widok to zdjęcie mojego monitora Nec V422 który ze względu na funkcję PIP wręcz idealnie nadaje się do takich zabaw :D. Próby z ESP32 wypadły na tyle zachęcająco że postanowiłem nieodpłatnie zbudować dla @AlekZ kompletny prototyp urządzenia.

    Sygnały VGA już mamy, ale jak dodać je do analogowego sygnału z urządzenia Alka?
    TechEkspert napisał:
    Przydałby się schemat blokowy określający gdzie Rapsberry PI Pico miałoby wstrzykiwać sygnał, do którego sygnału się synchronizować,
    a być może można by przejąć część bloków analogowych, zająć się generowaniem sygnału i wkomponować w generowany przez Pico sygnał wartości luminancji z podglądu elektronowego.


    O ile nie ma potrzeby jakichś płynnych przejść etc. to trzeba to zrobić przy użyciu szybkiego multipleksera który we właściwym momencie przełączy sam sygnał wizyjny bez wpływu na impulsy synchronizacji. Poniżej przykład stosowany w kamerach analogowych;

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Oraz OSD w monitorze komputerowym;

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Do przełączania potrzebny jest sygnał Key czyli kluczowania, mamy do wyboru dwie możliwości (najczęściej). ChromaKey i LumaKey, pierwszy to kluczowanie kolorem a drugi jasnością. ChromaKey to często stosowana metoda wmontowywania np. prezentera na tło innego obrazu czyli tzw. Blue Box lub Green Box.

    Cytat:

    Blue box (inaczej: bluescreen, greenscreen, chroma key) – technika obróbki obrazu, polegająca na zamianie tła o w miarę jednolitym kolorze (pierwotnie niebieskim, stąd nazwa) na dowolny obraz. Szeroko stosowana w telewizji (najczęściej podczas prezentacji prognozy pogody i w programach informacyjnych) oraz w filmie (do umieszczania aktorów w komputerowo generowanym środowisku). Kolor tła to zazwyczaj niebieski lub zielony, ponieważ są one uważane za najmniej podobne do koloru skóry i najrzadziej pojawiają się w kostiumach i rekwizytach.


    Ponieważ Alek nie przedstawił jakichś szczególnych wymagań co do ilości kolorów, postanowiłem że użyję trzy bitowego sterowania (co dla składowych RGB mogących przyjąć jeden ze stanów 0 lub 1 daje 8 dostępnych kolorów) a kolorem kluczującym będzie czarny czyli Black Box :D.
    Sygnał wejściowy jest monochromatyczny (czarno-biały) więc nałożenie informacji w siedmiu jaskrawych kolorach powinno być wystarczające.
    Po drobnych przemyśleniach postanowiłem w roli testowego multipleksera użyć 4053;


    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia



    Powyższy układ oczywiście nie działał, w natłoku myśli umknęło mi że każdy monitor ma wejściową impedancję 75Ω dla każdej składowej RGB, to w połączeniu z rezystancją wewnętrzną włączonego klucza 4053 sprawiało że sygnał na wejściu monitora to było jedynie kilkadziesiąt mV. Należało dodać jakiś bufor/driver o odpowiedniej wydajności prądowej. Przeszukawszy zasoby internetu znalazłem kilka interesujących układów jednak były niedostępne na krajowym rynku, myśląc czy nie zaprojektować od zera drivera w oparciu u elementy dyskretne, mój wzrok padł na dekoder NBOX. No chwila... Przecież ma gniazdo SCART mogące pracować w trybie RGB więc jakiś driver musi być. Przejrzałem schematy i faktycznie, jest driver od razu z multiplekserem i dwoma wejściami RGB!

    FMS6403

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    W międzyczasie zacząłem projektować płytkę dla całego urządzenia, ponieważ pomysł z 4053 nie wypalił a FMS6403 to maleństwo w obudowie TSSOP20 to musiałem również zrobić osobną niewielką płytkę do testów drivera;

    Wstępny zarys płytki głównej

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia



    Płytka do testów FMS6403


    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Zamontowanie gniazda szpilkowego z długimi wyprowadzeniami miało na celu wetknięcie PCB do płytki stykowej aby ułatwić sobie zabawę;

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Pierwsze podłączenie do ESP32 i działa;





    Widoczne na obrazie zakłócenia to efekt "wiszących" w powietrzu wejść FMS'a, układ okazał się bardzo czuły. Ponieważ może pracować jako bufor/driver zarówno dla sygnałów RGB oraz component a także posiada wbudowane programowalne filtry to chwilę mi zajęło dobranie optymalnej pod względem jakości obrazu konfiguracji. Wymaga również synchronizacji, tu też jest opcja wyboru zewnętrznego sygnału co też zrobiłem. Wypadało podać na drugie wejście jakiś sygnał testowy, tu pomyślałem że wykorzystam starą kamerę CCTV w tej roli. Obraz z kamery będzie oczywiście niezsynchronizowany z OSD lecz w docelowym zastosowaniu urządzenie Alka będzie się synchronizować do sygnałów z ESP32. No dobrze, a co z kluczowaniem? Nie mając na podorędziu żadnej bramki OR w THT postanowiłem zbudować takową z szybkich diod.
    Powstał taki schemat;

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Połączyłem wszystko na płytce stykowej;

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    I uzyskałem poniższy efekt;





    To tylko obraz testowy, lecz do wybadania efektów współpracy FMS z ESP32 wystarczy. Teraz należało zająć się końcowym projektem płytki oraz oprogramowaniem spełniającym wymagania Alka. Ponieważ znalazłem w "przydasiach" niewielką aluminiową obudowę pochodzącą z trackera GPS to uznałem że wręcz idealnie nada się na "ubranko" dla generatora. Obudowa zdeterminowała wielkość płytki do 100x100mm, aby zachować możliwość ewentualnej rozbudowy wyprowadziłem większość niewykorzystanych GPIO ESP32 na dodatkowe złącza szpilkowe dla ewentualnego wykorzystania w przyszłości. Samo docelowe oprogramowanie postanowiłem napisać już po zmontowaniu płytki prototypu co wydawało mi się słusznym założeniem. Ponieważ miałem luźne ESP32-WROOM-32UE wlutowane na płytkę adaptera, to taką wersję zdecydowałem się użyć;

    ESP32 na płytce adaptera

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Oczywiście zacząłem od rozplanowania układu gniazd oraz przycisków sterujących aby całość zmieściła się do poniższej obudowy;

    Obudowa od trackera GPS zdemontowanego z ciężarówki (płytka obok).


    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Większość elementów miałem w zapasach a brakowało głównie gniazd BNC i D-Sub VGA oraz nietypowej drobnicy, zamówiłem brakujące elementy w TME wraz z formatką laminatu światłoczułego Rademacher. Do robienia płytek od lat stosuję laminaty Bungard, pokryte fabrycznie emulsją światłoczułą. Płytka do testów FMS6304 którą zrobiłem testowo na laminacie Rademacher wyszła bardzo dobrze i postanowiłem że w ramach testu samego laminatu, płytkę główną również zrobię na nim. Podczas oczekiwania na dostawę brakujących elementów dokończyłem projekt płytki;

    Płytka główna

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Płytka rozszerzeń


    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Gdy tylko dotarły zamówione podzespoły zabrałem się do pracy...

    Zamówione "zabawki"

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Niestety, w wyniku mojego niedopatrzenia zbyt mocno zagrzałem wywoływacz do emulsji światłoczułych i znaczna część ścieżek od strony TOP została podmyta;


    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Podejrzewając już że bez druciarstwa się nie obędzie, zrobiłem kolejną płytkę na laminacie Bungard przy okazji poszerzając ścieżki gdzie tylko się dało. Tu już było ok. :D.

    Po lewej poprawiona Bungard z przymiarką do obudowy a po prawej podtrawiona Rademacher

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Widać znaczne podtrawienia i miejscami całkowite wytrawienie oraz przeźroczyste pola masy, praktycznie nie nadawałaby się do montażu. Po kilku godzinach "zmęczyłem" wiercenie i wstawiłem przelotki oraz gniazdo mini USB. Jako przelotek użyłem drucików miedzianych, mam co prawda dedykowane do tego celu nity miedziane, ale poprawny ich montaż bez dedykowanej prasy jest bardzo czasochłonny.

    Częściowo obsadzona elementami

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Płytkę zamierzałem docelowo w całości pocynować mechanicznie, a moje technika lutowania jedną ręką wymaga dużych ilości topnika. Oczywiście po skończeniu montażu trzeba będzie wszystko zmyć. Poniżej kolejne etapy składania "prototypa";

    CH340 - programator, konwerter USB/UART

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Brakuje jeszcze bufora/inwertera sygnałów synchronizacji 74HC86 (4 bramki EXOR) oraz sekcji wideo (FMS6403)

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    I już gotowe;

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Całą płytkę pocynowałem mechanicznie. Tu jednak niezauważona przeze mnie zwora na linii zasilania 3,3V sprawiła mnóstwo problemów, podłączyłem do portu USB i nim zdążyłem zareagować ukazał się "magiczny dym" i komputer się wyłączył :-(. Usmażył się stabilizator LDO na płytce generatora oraz płyta główna komputera. Bardzo opóźniło to dalsze prace. Uruchomienie nowego komputera już z systemem Linux również do łatwych nie należało, po kilku tygodniach w miarę doprowadziłem całość do porządku i przystąpiłem do wstępnego uruchamiania.
    Tu pojawił się problem z programowaniem ESP;

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Po walce ze znalezieniem i dograniem odpowiednich pakietów generator zaczął być widoczny dla ArduinoIDE;

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Jednak nie był to koniec problemów... Użyłem GPIO 02 ESP jako wejście jednego z przycisków i to był błąd, podciągnięcie tego pinu do 3,3V blokowało dostęp do pamięci flash ESP. Musiałem przeciąć ścieżkę i podłączyć się pod wolne GPIO;

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Jednak dopiero po zmniejszeniu prędkości transmisji do 115kbps udało się rozwiązać kłopoty z komunikacją;

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Wreszcie mogłem przystąpić do uruchamiania generatora od strony sprzętowej zostawiając oprogramowanie na deser :D. Ponieważ kod testowy już miałem, to posłużył on do uruchamiania. Tu jednak już na starcie pokazał się problem wynikający z zaniku wąskich pionowych linii celowniczych.
    Brak pionowych linii


    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Winne okazały się zastosowane przeze mnie diody BAV70 w bramce OR które miały zbyt duży spadek napięcia dla pewnego wysterowania FMS6403. On pracuje z logiką 5V a ESP32 3,3V. Spadek napięcia na diodach w połączeniu z dzielnikiem do wyłączania OSD powodował że przy krótkich impulsach multiplekser nie nadążał się przełączać. Zamówiłem diody shottky'ego o identycznych rozkładzie wyprowadzeń czyli BAT54C-G;

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia



    Po wymianie linie powróciły :D

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Pojawił się też niepożądany efekt, takie jakby podbarwianie wyświetlanego obrazu które ustępowało w chwili dotknięcia kondensatorów separujących wejścia FMS. Tu pomyślałem że albo przegrzałem układ podczas kilkukrotnego demontażu i montażu HOT'em albo pod układ dostały się resztki agresywnego (i przewodzącego) topnika. Zdemontowałem układ, dokładnie wymyłem i wysuszyłem płytkę. Z kolejnego NBOX'a wylutowałem FMS i wstawiłem. Wszystko się uspokoiło i pozostało jeszcze troszkę dopasować poziomy sygnałów RGB. Tu też wyszedł na jaw błąd w użytych kondensatorach separujących składową stałą na wejściach multipleksera/bufora. W założeniu (zgodnie z DS) miały być 100nF, i takie też zamontowałem. Podczas dobierania dzielników zmierzyłem wszystkie i okazało się że mają 2,2µF! Okazało się że fragment taśmy z kondensatorami był źle oznakowany (takiej drobnicy kupuję po 100 szt.), i tak zmuszony zostałem do mierzenia wszystkich kondensatorów na płytce :-(. Koniec końców skończyło się na 100nF+220Ω szeregowo, dało to najlepsze efekty wizualne.

    Oprogramowanie. Tu doszedłem do wniosku iż podwójne buforowanie nie jest potrzebne gdyż generowany obraz jest w zasadzie statyczny i same odwołania do funkcji rysujących powinny być wywoływane tylko wtedy jeśli wystąpi jakaś zmiana parametrów (np. współrzędne celownika) co pozwala oszczędzić RAM ESP32. Przyciski sterujące przesuwem linii celowniczych oraz wł/wył OSD są odczytywane w pętli głównej programu.
    Po włączeniu zasilania odczytywane są zdefiniowane współrzędne startowe (środek ekranu), naciskają przyciski sterujące zmieniamy zmienne a następnie linie na poprzednich danych są zamazywane (kolor czarny=przeźroczysty) i nowe linie są rysowane na nowych współrzędnych. Następnie dane są przepisywane do starych współrzędnych. Wyłącznie/włączenie OSD następuje poprzez wysterowanie pomocniczego tranzystora NPN który zwiera do masy wejście sterujące multipleksera a ten przepuszcza jedynie sygnał wideo z urządzenia Alka bez wpływu na synchronizację.

    Ponieważ oprócz samego celownika urządzenie miało pozwalać również na wyświetlanie aktualnych parametrów badanej próbki, dodałem ramkę.
    Dane miały być odbierane poprzez UART poprzez ten sam konwerter USB/UART który służy do programowania (CH340). Aby linie celownika nie zasłaniały parametrów, dopisałem ograniczniki;

    Próby z ogranicznikami





    Przy odbieraniu danych do wyświetlenia pokazały się problemy, użyta biblioteka za nic nie chciała wyświetlać poprawnie odebranego ciągu znaków. Po dłuższym czasie i różnych dziwnych kombinacjach, okazało się iż to przesyłane razem z tekstem kody sterujące ASCII przeszkadzają.
    Po prostu biblioteka ich nie obsługuje :-(. Nie mając pojęcia co z tym zrobić (a programista ze mnie marny) postanowiłem wyłuszczyć problem forumowej SI (moderatorzy uzyskali wcześniej dostęp do testów);

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Po dostosowaniu zaproponowanego kodu do swojego programu, uzyskałem to o co chodziło i mogłem już spać spokojnie :D.




    Pozostało wyczyścić kod programu z różnych testowych śmieci i zająć się zrobieniem front paneli obudowy, dodałem do programu instrukcję obsługi w formie "ekranu startowego";
    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Front panele niestety musiałem zrobić ręcznie i bez opisów, początkowo zamierzałem je wykonać w formie wytrawionej na laminacie jednak nie udało mi się zmusić mojej drukarki do filmów PCB do współpracy z systemem Linux -(. Panele wyciąłem ze zbędnych fragmentów laminatu i po pomalowaniu przykręciłem do obudowy;

    Obróbka paneli

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia

    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Na panelu przednim dodałem zieloną diodę LED sygnalizującą włączenie zasilania, nie pomyślałem o niej podczas projektowania płytki i jest podłączona przewodami do linii 3,3V. Przy okazji narysowałem też gotowy schemat z naniesionymi podczas uruchamiania poprawkami;
    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Na schemacie dwie wolne bramki 74HC86 mogą pełnić rolę dodatkowego opóźnienia sygnałów synchronizacji dla monitora, sygnały pochodzą bezpośrednio z ESP32 zaś sygnały RGB przechodzą przez FMS6403 który wprowadza około 27ns opóźnienia. Na moim monitorze jest to widoczne jako trzy-pikselowe przesunięcie obrazu. Dla Alka nie powinno to przeszkadzać. Poniżej film z działania od włączenia (reset);




    Szczegółów programu chwilowo nie będę udostępniał, w tej chwili Alek dostosowuje swe urządzenie do nowych wymogów i testuje generator a to może wymagać pewnych zmian w kodzie/schemacie. Po pomyślnych testach dodam do tekstu. Z adaptacji obudowy nie jestem dumny, z perspektywy czasu kilka rzeczy zrobiłbym inaczej, np. zamiast przycisków użyłbym joysticka;
    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Uprościłoby to konstrukcję obudowy. Zamiast złącz BNC mogłem też użyć SMA, pozwoliłoby to na zmniejszenie całości. Dużą pomocą okazały się podpowiedzi Mariusza @khoam odnośnie ESP32 a także @TechEkspert oraz @acctr . Jak widać przy współpracy może powstać ciekawe urządzenie. Tu link do dyskusji; https://www.elektroda.pl/rtvforum/topic3947972.html Jeszcze słowo o płytce rozszerzeń, ma ona na celu ewentualną rozbudowę generatora o interfejsy kontrolno/sterujące. Jak dotychczas Alek zasila swe urządzenie za pomocą kilku zasilaczy regulowanych ręcznie, być może zbuduje zasilacze sterowane cyfrowo a wtedy dzięki płytce rozszerzeń będzie możliwe automatyczne odczytywanie parametrów oraz sterowanie. Ponieważ jest wymagana optoizolacja to dodatkowa płytka pozwoli takową zmieścić w obudowie.


    Dla mnie było to ciekawe doświadczenie z ESP32 i gdyby nie awaria warsztatowego komputera to bardzo bym się cieszył. Nie mniej już mi chodzi po głowie kilka ciekawych pomysłów dotyczących rozbudowy układu oraz zastosowania ESP32 jako generatora VGA :D.

    Link do biblioteki bitluni; https://github.com/bitluni/ESP32Lib

    Fajne? Ranking DIY
    O autorze
    ArturAVS
    Moderator
    Offline 
    Z wykształcenia technik RTV, z zamiłowania elektronik/elektrotechnik konstruktor.
    Specjalizuje się w: kf, audio, elektronika truck, nietypowe urządzenia
    ArturAVS napisał 26299 postów o ocenie 7796, pomógł 2299 razy. Mieszka w mieście Grajewo. Jest z nami od 2005 roku.
  • #2 20543710
    TechEkspert
    Redaktor
    Posty: 7214
    Pomógł: 16
    Ocena: 5583
    Bardzo ciekawy opis procesu tworzenia urządzenia od pomysłu do działającego prototypu.

    Ten fragment materiału:

    ArturAVS napisał:
    Powyższy układ oczywiście nie działał...


    warto sobie zapamiętać jeżeli stawiamy pierwsze kroki w projektowaniu urządzeń,
    zwykle coś nie działa i jest to etap, który trzeba pokonać i przy okazji coś się nauczyć.

    Być może zobaczymy działanie w układu w urządzeniu docelowym w odcinku prosto z labu https://www.youtube.com/@TechnoblogCW/videos lub jako materiał na elektroda.pl?

    Autor biblioteki prowadzi kanał YT https://www.youtube.com/@bitlunislab/videos
    mnie zaciekawił materiał o sonarze/radarze wykorzystującym formowanie wiązki ultradźwięków w nieruchomej matrycy przetworników (beamforming).
  • #3 20543739
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    Podjąłem się budowy powyższego generatora bardziej z ciekawości niż z racji praktycznego wykorzystania (dla Alka mógł pasować).
    TechEkspert napisał:
    Autor biblioteki prowadzi kanał YT

    Przeglądam czasami, i widzę potencjał. Ja jestem "sprzętowcem" i choć samo programowanie ułatwia wiele rzeczy, to nie zastąpi w pełni sprzętu.
  • #5 20544138
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    speedy9 napisał:
    Mini USB w 2023 roku? Dlaczego?

    Nie lubię marnować sprawnych elementów, a że akurat takie jedno nowe znalazłem w zapasach... Samo urządzenie to bardziej jednostkowa produkcja i prototyp więc zawsze można zmodyfikować projekt płytki pod inny rodzaj gniazda.
  • #6 20545502
    Konto nie istnieje
    Poziom 1  
  • #7 20545509
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    khoam napisał:
    A kod źródłowy swojego programu utajniłeś?

    Wspomniałem że na razie nie będę go publikował bo cały generator już jest u Alka który go testuje, mogą być wymagane poprawki zarówno programu jak i sprzętu. Na razie Alek zgłosił dwie poprawki; zamieniłem opisy współrzędnych X i Y oraz chciałby aby po wyłączeniu zasilania była zapamiętywana pozycja celownika. Z tym zapamiętywaniem muszę rozkminić temat bo EEPROMu nie ma.
  • #8 20545517
    Konto nie istnieje
    Poziom 1  
  • #9 20545520
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    Dziękuję. Tymczasowo czekam na dalsze uwagi Alka bo i tak do prób będę musiał złożyć ESP wraz z przyciskami na "pająka". Kod ze wszelkimi zmianami zostanie wysłany do Aleksandra i mam nadzieję że poradzi sobie z wgraniem :D . Ostatnie próby były z tym urządzeniem; https://www.youtube.com/watch?v=Oig0H_YftmU
  • #10 20546170
    mosiondz
    Poziom 16  
    Posty: 110
    Pomógł: 13
    Ocena: 33
    Takie projekty powinny być inspiracją, bo są bardzo potrzebne. Wszelkiej maści urządzenia "home asistant" itp., do tego CCTV, wszystko generuje piękne OSD ale jak chcesz wyświetlić dane dodatkowe, to się okazuje, że trzeba rzeźbić. A tę rzeźbę wystawiłbym jako przykład.
  • #11 20546591
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    mosiondz napisał:
    A tę rzeźbę wystawiłbym jako przykład.

    Rzeźbiarzem nie jestem :D Konstruuję czasami dziwne i nietypowe urządzenia na zlecenie, prezentowany generator budowałem raczej dla przyjemności. Komercyjnego zastosowania raczej nie widzę.
    mosiondz napisał:
    Wszelkiej maści urządzenia "home asistant" itp., do tego CCTV, wszystko generuje piękne OSD ale jak chcesz wyświetlić dane dodatkowe, to się okazuje, że trzeba rzeźbić.

    To trochę bardziej skomplikowane, do "wmontowania" w już istniejący sygnał wideo wymagana jest synchronizacja z tymże. W przypadku urządzeń typu "Home Asistant" można wykorzystać WiFi i po prostu generować strony poprzez WebServer w ESP32. Nigdy szczególnie mnie to nie interesowało, choć daje duże możliwości
  • #12 20546700
    mosiondz
    Poziom 16  
    Posty: 110
    Pomógł: 13
    Ocena: 33
    ArturAVS - twój projekt oraz to jak go przedstawiłeś to doskonała makieta tego aby nauczyć młodych jak radzić sobie z takimi wyzwaniami i dlatego mówiłem o wystawieniu rzeźby. Pamiętam jak wszystkie sale w technikach były zastawione pracami dyplomowymi, które miały być pomocami naukowymi nauczycieli. Oczywiście tylko 1 na 100 była tak wykorzystywana.
    Rzeźbienie to dodanie np. OSD do sygnału, który nie jest opanowany przez urządzenia występujące na rynku, a nie widziałem żadnego który działa na VGA, za to jest bardzo dużo takich, które działają na PAL lub NTSC.
  • #14 20639662
    AlekZ
    Specjalista - lampy próżniowe
    Posty: 2312
    Pomógł: 85
    Ocena: 2891
    Pamiętałem, że był gdzieś wątek założony przez Artura i teraz ten wątek odnalazłem. Dzięki temu mogę uzupełnić już o działający praktycznie układ. Od marca nie miałem czasu, by się za to zabrać i dopiero teraz było to możliwe.

    Na razie układ elektronowy pracuje z niewielkim powiększeniem, rzędu 10 -20 razy. Wymiary testu na płytce sygnałowej monoskopu to około 2x3 cm.

    Zależało mi aby uzyskać w miarę dobry obraz, bo teraz dopiero można będzie walczyć o lepszą optykę elektronową. Spodziewam się, że zrobienie prostego mikroskopu elektronowego (jako swego rodzaju "odprysk" od tej konstrukcji będzie już teraz dość proste. Optykę elektronową będę komplikował krok po kroku.

    Mając możliwość generowania znaków na ekranie, można się będzie pokusić o rozszerzenie możliwości o wyświetlenie np. napięcia przyspieszającego, napięcia elektrody Wehnelta czy prądu cewki skupiającej.
    Załączniki:
    • Generator OSD VGA i synchronizacji, od pomysłu do urządzenia IMG_7617.JPG (1.44 MB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Generator OSD VGA i synchronizacji, od pomysłu do urządzenia IMG_7616.JPG (1.3 MB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Generator OSD VGA i synchronizacji, od pomysłu do urządzenia IMG_7615.JPG (1.27 MB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #15 20639754
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    Wygląda bardzo dobrze :D Szykować się do poprawek oprogramowania? Tu jednak będę miał trochę kłopotu, kolejny raz zmieniałem komputer i niechcący sformatowałem dysk z projektem (nie tylko tym) :-( Muszę poszukać kopii zapasowej (robiłem). Swoją drogą, dodaj zdjęcie próbki z np. linijką dla oddania skali.
  • #16 20640046
    AlekZ
    Specjalista - lampy próżniowe
    Posty: 2312
    Pomógł: 85
    Ocena: 2891
    Byłbym rad, gdybyśmy mogli kontynuować ten projekt, a co za tym idzie wprowadzić poprawki. Co się tyczy zdjęcia samego obrazka, jest on ukryty wewnątrz lampy i nie widać go. Tarcza jest bowiem osłonięta warstwą akwadagu.
    Tym niemniej obok lampy (a w zasadzie koło miejsca tarczy monoskopu) położyłem pudełko zapałek. Wprawne oko zauważy jeszcze, że napięcie przyspieszające ustawiłem na 700V, zaś prąd wiązki wynosi około 350 nanoamperów.
    Załączniki:
    • Generator OSD VGA i synchronizacji, od pomysłu do urządzenia obraz.jpg (614.21 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #17 20640436
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    AlekZ napisał:
    Byłbym rad, gdybyśmy mogli kontynuować ten projekt, a co za tym idzie wprowadzić poprawki.

    Oczywiście, jestem za a nawet przeciw :D Pliki projektowe płytki znalazłem, muszę jeszcze poszukać finalnego kodu źródłowego. I w sumie chyba zrobię sobie specjalną płytkę do testów oprogramowania oraz rozszerzeń. Ciekawi mnie czy da się w sposób czysto elektroniczny ustawiać powiększenie elektronowe, no i skoro już zaczyna się to przekształcać w;
    AlekZ napisał:
    zrobienie prostego mikroskopu elektronowego (jako swego rodzaju "odprysk" od tej konstrukcji będzie już teraz dość proste. Optykę elektronową będę komplikował krok po kroku.


    To trzeba pomyśleć o sterowanym cyfrowo zasilaczu z optoizolacją.
  • #18 20640803
    AlekZ
    Specjalista - lampy próżniowe
    Posty: 2312
    Pomógł: 85
    Ocena: 2891
    Powiększenie elektronowe, regulowane przez zmianę amplitudy odchylania powinno się dość prosto dać zrobić. Może pomogłyby tu potencjometry cyfrowe.
  • #19 20641406
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    AlekZ napisał:
    Może pomogłyby tu potencjometry cyfrowe.

    Może... Prawdę mówiąc Twój układ "napędzania" cewek odchylania nie bardzo mi się podoba od strony technicznej. Jest po prostu duży i praktycznie nie ma możliwości rozbudowy. Sam układ akwizycji elektronów odbitych jest ok., poszedłbym jednak nieco dalej i same sygnały dla cewek generował cyfrowo. Już na etapie konstruowania generatora OSD przyszedł mi do głowy pewien pomysł, najlepiej zobrazuje to rysunek;


    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia


    Licznik binarny taktowany z właściwym sygnałem PixelClock zwiększa licznik o jeden za każdym cyklem zegara, "pojemość" licznika oczywiście skrócona do wymaganej rozdzielczości. Sygnał synchronizacji kasuje licznik. Sygnały wyjściowe są podane na wejścia przetwornika D/A w wyniku czego uzyskujemy przebieg piłokształtny. Ten przebieg wzmacniamy w liniowym wzmacniaczu mocy i doprowadzamy do cewek odchylania. W takim układzie nie ma problemu z cyfrowym sterowaniem wzmocnieniem (a za razem amplitudą oraz powiększeniem analizowanego obrazu). Oczywiście potrzeba dwóch takich układów (H i V). Mam kilka różnych przetworników DAC i wypróbuję ten pomysł w praktyce. Dla dobrania odpowiedniej częstotliwości zegara można użyć np. Si5351A. To tylko pomysł jak na razie.
  • #20 20641845
    AlekZ
    Specjalista - lampy próżniowe
    Posty: 2312
    Pomógł: 85
    Ocena: 2891
    Płytka mojego obecnego układu odchylania mogłaby być znacznie odchudzona. Wiele elementów stało się tam zbytecznych po podłączeniu do Twojego układu.
    Wbrew pozorom przy układzie akwizycji elektronów wtórnych można jeszcze wiele ugrać. Przykładowo, można zastosować więcej niż jeden kolektor i w ten sposób likwidować cienie, jeśli to konieczne (miksujemy wtedy odpowiednio sygnały np. z 2 kolektorów).

    Nie wyklucza to oczywiście możliwości zastosowania Twojego pomysłu, odnośnie odchylania. Rozdzielczość przetworników musiałaby być dostatecznie duża, tak aby zmniejszenie amplitudy nie powodowało widocznego "ząbkowania" przebiegu.

    Jeśli mówimy o mikroskopie elektronowym, to obraz raczej powinien być zebrany jeden raz. To oznacza możliwość zastosowania dość powolnej analizy (powolne przebiegi odchylania). Czemu tylko jeden raz? Dlatego, że bombardowaniu elektronowemu może np. towarzyszyć nagrzewanie się próbki.
  • #21 20645372
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    AlekZ napisał:
    Rozdzielczość przetworników musiałaby być dostatecznie duża, tak aby zmniejszenie amplitudy nie powodowało widocznego "ząbkowania" przebiegu.

    Ząbkowanie powinno dać się wyeliminować odpowiednim filtrem RC (LC?) na wyjściu przetwornika, dopiero taki sygnał trafiałby na liniowy wzmacniacz napędzający cewki odchylające. Tu też kolejny pomysł, podmagnesowanie prądem stałym stałym umożliwi na regulację w pewnym stopniu skanowanego obszaru (przesuwanie XY punktu centralnego optyki elektronowej). Regulacja amplitudy oraz pozycji już we wzmacniaczach wyjściowych cyfrowo, nie wpłynie to na sygnał z DAC. Jako wzmacniaczy wyjściowych można by użyć np. OPA548, uprościłoby to konstrukcję stopni mocy.
  • #22 20646113
    AlekZ
    Specjalista - lampy próżniowe
    Posty: 2312
    Pomógł: 85
    Ocena: 2891
    Takie podmagnesowanie prądem stałym jest już nawet teraz. To jest bardzo skuteczne.
  • #23 20649790
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    Znalazłem kod źródłowy finalnej wersji, jak uporządkuję jeden z komputerów to biorę się do pracy :D. Zakładam że zaczynamy od sterowanego cyfrowo odchylania na początek?
  • #24 20649819
    AlekZ
    Specjalista - lampy próżniowe
    Posty: 2312
    Pomógł: 85
    Ocena: 2891
    W pierwszym rzędzie proponuję wprowadzić poprawki do istniejącej wersji, tj. kwestię dokładnego ustawiania krzyża i ew. zapamiętania tej pozycji po zaniku zasilania. Oto bowiem ten istniejący już układ miałby pewien zakres stosowalności. Swego czasu była też dyskusja o możliwości zrobienia zrzutu ekranu, ale nie wiem czy jest to możliwe.
  • #25 20649862
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    AlekZ napisał:
    W pierwszym rzędzie proponuję wprowadzić poprawki do istniejącej wersji

    Ok. Jak uruchomię drukarkę to do końca tygodnia zrobię układ testowy dla poprawek (niestety pod Linuxem nie udało mi się jej uruchomić :-(). Co do zrzutu ekranu, tu pewnie trzeba by dodać zewnętrzny układ z szybkim przetwornikiem A/D oraz np. kartą SD na której zapisywane byłyby zrzuty. Postaram się rozpoznać temat i jakiś wstępny szkic narysować. Zrzuty ekranu robi moduł ESP-CAM, ale tylko z z wbudowanej kamery gdzie dostaje już cyfrowe sygnały obrazu. Może poprzez dodanie zewnętrznego szybkiego przetwornika dałoby się to zaadoptować. Tu mój tekst o ESP32-CAM; https://www.elektroda.pl/rtvforum/topic3825524.html
  • #26 20662062
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    khoam napisał:
    W razie czego służę pomocą.

    Mariusz, znalazłem takie coś; https://elportal.pl/projekty/komunikacja-rf/3...-pamieci-flash-esp32-do-przechowywania-danych Wydaje mi się że się nadaje wręcz idealnie do zapamiętywania pozycji celownika. Jak myślisz?
  • #27 20666933
    AlekZ
    Specjalista - lampy próżniowe
    Posty: 2312
    Pomógł: 85
    Ocena: 2891
    Tymczasem przebudowałem układ pod próby z mikroskopią elektronową. Rozbieralne źródło elektronów będzie wymagać poprawek, tym zajmę się wkrótce.


    Generator OSD VGA i synchronizacji, od pomysłu do urządzenia
  • #28 20667001
    tos18
    Poziom 42  
    Posty: 7087
    Pomógł: 1100
    Ocena: 1847
    ArturAVS napisał:
    Z tym zapamiętywaniem muszę rozkminić temat bo EEPROMu nie ma

    Jest emulacja biblioteka eeprom.h
    Podajesz Waść rozmiar eepromu jaki chcesz mieć a potem to już klasyka
    eeprom.read(),eeprom.write() i jedna różnica - eeprom.commit() której trzeba użyć by to co zostało wrzucone w eeprom.write() trafiło do pamięci nieulotnej.

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    szczegóły w przykładach w arduino
  • #29 20668189
    aadeer
    Poziom 17  
    Posty: 268
    Pomógł: 11
    Ocena: 165
    Projekt ciekawy, a ESP32 ciągle mnie czymś zaskakuje, mimo, że kilka projektów popełniłem na nim.
    Te 3 wyjścia dla składowych RGB generują sygnał PWM? Impulsy powinny tam być rzędu (poniżej) 1us?

    Co do zapisu w pamięci nieulotnej, jeżeli program jest w "czystym C", to w ESP służy do tego NVS (Non Volataile Storage):
    Przykład: https://github.com/espressif/esp-idf/blob/9a1cc59338aa151bc6333f85c8169d36a478fe2a/examples/storage/nvs_rw_value/main/nvs_value_example_main.c
    Dokumentacja: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/storage/nvs_flash.html
    A jeżeli Arduino dozwolone to tak jeden z kolegów polecał najwygodniejsza jest biblioteka Preferences.
  • #30 20668256
    ArturAVS
    Moderator
    Posty: 26299
    Pomógł: 2299
    Ocena: 7796
    aadeer napisał:
    Te 3 wyjścia dla składowych RGB generują sygnał PWM?

    Nie. Ich stan odzwierciedla trzy bity (zależy od wybranego trybu koloru) pamięci wideo której rolę pełni RAM ESP. Szczegóły są opisane w dokumentacji biblioteki.

Podsumowanie tematu

✨ Dyskusja dotyczy procesu tworzenia generatora OSD (On Screen Display) dla sygnału VGA, który jest wykorzystywany w urządzeniach podobnych do mikroskopów elektronowych. Uczestnicy wymieniają się doświadczeniami związanymi z synchronizacją sygnałów, programowaniem oraz konstrukcją sprzętu. Wskazują na wyzwania związane z integracją OSD w sygnale VGA oraz na potrzebę modyfikacji projektów w celu poprawy funkcjonalności. Poruszają również kwestie dotyczące pamięci EEPROM oraz możliwości zapamiętywania pozycji celownika. Wspomniane są różne techniki, takie jak wykorzystanie ESP32 do generowania sygnałów oraz zastosowanie filtrów RC do eliminacji ząbkowania sygnału. Uczestnicy podkreślają znaczenie takich projektów dla edukacji i rozwoju technologii.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA