599.cz - Homepage 599.cz - Homepage Memorial OK1WC Optimalizováno pro web... Myši umírají v pastích, protože nechápou, proč je ten sýr zdarma.
     Dnes: 02. 12. 2024    spaceweather.com Bouřky v Česku v novém okně Bouřky v Evropě v novém okně Ionogram Průhonice v novém okně Contest calendar WA7BNM v novém okně RSS summary of the last 7 articles    
O   Hlavní menu

 [-] Hlavní stránka

 [-] Zajímavé odkazy

 [-] Download

 [-] Zasílání novinek


O   Seznam rubrik


time.is in new window


O   VOACAP KV Online

O   VOACAP pro CB
Šíření na CB

O   Počasí v Holicích
JO70XC


PHPRS fórum

Z důvodu zneužívání ke spamování, byla zpětná vazba zrušena

<a1>technika, bastleni</a1>

Zpět Stupnice - čítač s OLED grafickým displejem

Vydáno dne 18. 07. 2020 (4780 přečtení)

Scale-frequency-counter-Oled

Switch to an English version   version in Czech language

Poté, co jsem si postavil novou stupnici (čítač kmitočtu) ke starému QRP transceiveru, napadlo mne zkusit udělat ještě jednu verzi, tentokrát s grafickým OLED displejem. Výhoda grafického displeje je v tom, že nejsme omezeni na jeden, výrobcem daný font (jako u aflanumerického displeje). Navíc tyto displeje mají mnohem vyšší kontrast a tedy lepší čitelnost při stejné nebo i nižší spotřebě.


Měl jsem tu modul grafického OLED displeje 128x64 pixelů, velikosti 1.3 palce, s ovládáním po I2C (TWI). I2C je čistě sériová komunikace, v podstatě jenom po jednom vodiči SDA. Ten druhý, SCL je vlastně jen pro hodinový hmitočet pro synchronizaci. I2C je mnohem pomalejší oproti komunikaci pomocí řadiče HD44780, který se používá v alfanumerických LCD displejích. Proto jsem byl docela zvědavý, jak to bude stíhat.

Schéma čítače-stupnice je velmi podobné tomu předchozímu. Liší se v podstatě právě jen připojením displeje. Z předchozích konstrukcí (stereo rádio, FM-TRX) mám zkušenost, že OLED displeje docela hodně ruší po napájecím přívodu. Jednotlivé skupiny pixelů (řádky) jsou rozsvěcovány postupně (multiplex). Ačkoliv průměrný napájecí proud není nijak vysoký, jednotlivé proudové impulzy jsou asi docela velké. Proto jsem pro napájení vlastního displeje použil samostatný stabilizátor a filtraci napájení, aby byl displej od ostatních obvodů dostatečně oddělený.

Ještě jedna poznámka:
Díky multiplexovanému rozsvěcení jednotlivých řádků je také docela problém udělat slušně vypadající fotografii, nebo dokonce video svítícího displeje. Při krátké expoziční době mohou na fotografii svítit třeba jen některé body, při delší expozici jsou zase některé přesvícené. Na videích zase dochází k silnému stroboskopickému efektu. Ačkoliv tyto displeje ukazují v reálu velice pěkně a kontrastně, na fotografiích nebo videích to tak nevypadá.




     
Scale_frequency_counter_schema
Scale_frequency-counter_pcb-a
Scale_frequency-counter_pcb-b
Schéma stupnice-čítače
Ve vyšším rozlišení
Návrh DPS - přední strana Návrh DPS - zadní strana
     

Seznam součástek (v novém okně)


Ze statistik webu vím, že čtenáři nemají moc rádi odkazy na jiné články. Proto jsem, až na malé změny, v podstatě zkopíroval popis funkce čítače z minulého článku.

    Funkce stupnice - čítače:
  • Možnost uživatelského nastavení MF kmitočtu. Krok nastavení 10Hz.
  • Uložení až 4 různých MF kmitočtů pro různé druhy modulace. (kmitočet BFO pro CW, LSB, USB se může lišit)
  • Možnost přepínání modulace:
    • tlačítkem na panelu (informace na displeji a na výstupním konektoru JP4)
    • pomocí logických úrovní na vstupním konektoru JP4 (informace na displeji)
  • Měření napájecího napětí.
  • Změřený kmitočet a nastavená modulace jsou posílány sériovou linkou do PC deníku.
  • Čítač obsahuje děličku dvěma a čtyřmi, čímž se zvýšil rozsah měření.

Stupnice - čítač kmitočtu - princip funkce:

Jako vstupní zesilovač jsem použil původní, staré zapojení, které se mi osvědčilo. Nějak jsem nemohl sehnat vysokofrekvenční J-FET s N kanálem v SMD provedení. Proto jsem použil tranzistory v klasických pouzdrech TO92. Na vstupu je tedy BF245(B). V následujícím stupni je obyčejné "kácéčko"(fT=300MHz) protože tam pro tento účel naprosto stačí. Na vstupu do děličky 74HC74 jsem použil "fintu" s odporovým trimrem R11, kterým nastavíme napětí na vstupu na rozhodovací úroveň. Asi by bylo lepší, použít nějaký IO se Schmittovým obvodem na vstupu, ale žádný vhodný jsem neobjevil. A dávat tam další pouzdro třeba s šesti invertory, jenom kvůli Schmittovu vstupu se mi nechtělo. Existují sice SMD obvody, třeba s jedním invertorem (například 74HC1G14 pouzdro s 5 vývody), ale ty nejsou úplně běžně dostupné (většinou jen na objednávku ve větším množství).

Pomocí jumperu si můžeme zvolit vstup do čítače MCU buď přímo, vydělený dvěma, nebo vydělený čtyřmi. Podle toho potom ale musíme použít správnou verzi firmware. Nejvíce se mi líbí verze s děličkou dvěma. Funguje asi do 18MHz a jedno čítání trvá 200ms. Proběhne tedy přibližně 5x za sekundu. Trimr R11 musíme nastavit nepatrně rozdílně pro přímý vstup do MCU nebo do 74HC74 (74HCT74). Při testování jsem zjistil, že přímý vstup 1:1 (nepoužijeme-li děličku) má o něco nižší citlivost.

V sekci DOWNLOAD jsou uloženy 3 verze firmware. Každá je určena pro jiné nastavení dělení vstupního kmitočtu (1:1, 1:2, 1:4)

Čítání v jednočipu jsem, až na drobné změny, udělal stejné, jako v původní verzi. Použil jsem 16ti bitový čítač, který při každém přetečení (OVF) zvýší pomocnou proměnnou typu byte. Tím získáme čítač 24 bitů, tedy do 224 = 16 777 216. Čítá se po dobu 100ms, 200ms nebo 400ms, podle toho zda, a jaké dělení kmitočtu na vstupu jsme zvolili. Po této době se z okamžitého stavu 16bit čítače a pomocné proměnné vypočítá kmitočet. Ten se ještě před zobrazením zkombinuje s nastavenou hodnotou mezifrekvence (Sečtou se, nebo odečtou, podle kmitočtového plánu rádia.) Z výše uvedeného plyne, že čítač čítá na desítky Hz. To se mi zdá jako dobrý kompromis mezi rychlostí zobrazování a přesností. Na jednotky Hz by čítání trvalo příliš dlouho a při plynulém ladění bychom museli čekat, až se údaj zobrazí. Naproti tomu stovky Hz je již pro CW nebo SSB rádio moc hrubé.

Pro lepší orientaci jsem udělal zobrazení kmitočtu se dvěma desetinnými tečkami. Jedna je mezi MHz a stovkami kHz a druhá mezi kHz a stovkami Hz. Při devíti znacích na řádek (včetně obou teček) může být tedy zobrazen kmitočet jako 99.999.99 (kHz) (ale samozřejmě, tak vysoko to neměří).

Jednočip Atmega328PB běží na kmitočtu 20MHz z externího krystalu. U krystalu není žádný trimr na doladění přesného kmitočtu. Jednak se dneska špatně shánějí, byl by drahý a možná i moc veliký. Nepřesnost měření jednoduše dotáhneme při nastavení MF kmitočtu. Prostě si na střed MF filtru naladíme signál o známém kmitočtu (třeba z druhého rádia) a v režimu nastavení mezifrekvence nastavíme takové číslo, aby stupnice ukazovala po jeho přičtení, nebo odečtení přesně kmitočet tohoto přijímaného signálu. Není to sice úplně korektní, ale při přeladění jednopásmového KV rádia maximálně stovky kHz docela akceptovatelné.

Více jsem se o tom kdysi rozepsal v tomto článku (poznámka psaná kurzívou).

K měření napájecího napětí je využit jeden vstup AD převodníku. Napětí se měří v kroku 0,02 Voltu, ale zobrazuje se pouze na 0,1V, aby se ten údaj na displeji moc nemrskal. Pokud při zapnutí napájení podržíme pravé tlačítko, a napájecí napětí snížíme pod 10V, zobrazí se i ty setiny a trimrem R8 to můžeme přesně nastavit.

Stupnice - čítač kmitočtu - CAT komunikace s PC:

Protože je v dnešní době propojení TRXu s počítačovým deníkem naprosto běžné (spíše nutné) vyvedl jsem na konektor také UART z jednočipu. Je to na TTL úrovni, takže můžeme přímo připojit nějaký převodník TTL UART na USB. Pro první pokusy jsem použil modul s připájeným obvodem CP210x (viz obrázek o dost níže). Komunikace funguje bez problémů, ale galvanické spojení s PC přes USB zanáší do příjmu rušení. Dost záleží na tom, jaký počítač použijeme. S mým notebookem je to sotva znatelné, s mým velkým PC je to nepoužitelné. Proto jsem později použil obvod s galvanickým oddělením na samostatné destičce, který popisuji v tomto článku.

     
setting CAT in TR4W
TR4W with SW20+
TR4W poll rate
Nastavení CAT
komunikace TR4W
TR4W komunikuje
s TRXem SW20+
Je dobré snížit poll rate.
(nikoliv nutné)
     

Pro komunikaci jsem použil hodně zjednodušený protokol pro Kenwood, nebo Elecraft:

Jelikož v tomto protokolu všechny dotazy končí středníkem ";", tak jednočip v čítači jenom hlídá jeho příchod a když přijde, odpoví odesláním změřeného kmitočtu a nastavené modulace. Všechny ostatní informace jsou zbytečné. Mám to spolehlivě vyzkoušeno se závodním deníkem TR4W a běžným deníkem ACLog od N3FJP, který používám asi od roku 2006. Nejstarší verze ACLogu 2.8 a 2.9 mají s komunikací trošku problémy, o něco novější 3.2 funguje bez problémů. Žádnou novější nemám.

Nastavení komunikační rychlosti jsem zadal natvrdo:
38400 bps, 8 data-bitů, 2 stop-bity, bez parity.

Na konektoru je kromě signálů Rx, Tx a GND vyvedeno také napájení 5V pro galvanický oddělovač. Napájení druhé strany je z USB portu.

Omezení

Při testování této komunikace jsem narazil na omezení. Jak jsem napsal na začátku článku, komunikace s displejem po I2C je poněkud pomalejší. Pokud tedy mám zapnuté měření napájecího napětí, dochází občas ke zdržení odeslání dat do PC po sériové lince. (Jednočip musí změřit kmitočet, poslat na displej, změřit napětí, poslat na displej a pak teprve odpoví na dotaz na kmitočet). Zde také dost záleží na PC deníku, který používáme. Například s deníkem ACLog_3.2 není problém, protože pokud na dotaz na kmitočet nedostane odpověď, prostě dále používá hodnotu z minulého dotazu. Naproti tomu třeba TR4W pokud nedostane odpověď, nezobrazí nic. Může se tedy stát, že pokud se s uložením QSO strefíme do okamžiku, kdy nezobrazuje kmitočet, uloží se toto QSO bez kmitočtu. Jednoduchým řešením je, prostě při používání deníku TR4W nemít zobrazené měření napájecího napětí na displeji.

Konektor JP4 má celkem 3 různé funkce:

  • Nastavení MF kmitočtu:
    Podržíme-li levé tlačítko při zapnutí napájení, dostaneme se do režimu nastavení MF kmitočtu. Nastavuje se MF (kmitočet BFO) pro ten druh modulace, který byl nastaven před vypnutím. Zkratováním příslušných dvojic pinů na JP4 nastavujeme v kroku +/- 1kHz, nebo +/- 10Hz. Pravým tlačítkem hodnotu uložíme (můžeme i průběžně) a levým tlačítkem vyskočíme do normálního měření. Pokud nastavujeme zápornou hodnotu MF, znak "-" (minus) se tam již nevejde. Proto je pro záporné hodnoty MF kmitočet zobrazen inverzně (v negativu).

  • Vstup pro nastavení druhu modulace:
    Dvojice pinů označená "M" (Mode-out) na dalším, 6ti pinovém konektoru JP3 musí být rozpojená. V normálním provozu (měření kmitočtu), pokud propojíme příslušnou dvojici pinů na JP4, přepneme tím na odpovídající druh modulace. (odshora - CW, LSB, USB, DIG). To se jednak zobrazí na displeji a pro výpočet kmitočtu se použije příslušný nastavený MF (BFO) kmitočet. Pokud necháme všechny piny JP4 rozpojené, můžeme druh modulace přepínat delším podržením pravého tlačítka.

  • Výstup pro nastavení druhu modulace:
    Pokud na 6ti pinovém konektoru JP3 propojíme vstup "M" (Mode-out) se zemí a čítač zrestartujeme (vypneme/zapneme napájení) bude konektor JP4 fungovat jako výstupní, a při přepínání druhu modulace tlačítkem se na příslušném pinu objeví napětí 5V. (odshora - CW, LSB, USB, DIG). Tím lze přepínat nějaké další obvody v našem rádiu. Aby nemohlo dojít k poškození jednočipu při omylem zkratovaném některém výstupu, přidal jsem na výstupy odpory R12-R15.

    Konektor JP3

    Další dva výstupy (vstupy) AUX a S-meter na konektoru JP3 jsou nevyužité. Zbylo mi tam místo, tak jsem je vyvedl do rezervy, kdybych je třeba v budoucnu na něco potřeboval. Uvažoval jsem například, přivést napětí z AVC a zobrazovat něco jako S-metr. Ale pro praktické použití mi to přijde jako zbytečný nesmysl, tak jsem od toho upustil.

    Stupnice kmitočtu - nastavení MF kmitočtů (BFO) pomocí sériové linky:

  •        
    USB to UART CP210x
    hyperterminal
    Termite_serial-terminal_setup
    Termite_serial_terminal
    USB-UART převodník
    CP210x
    Komunikace pomocí
    Hyperterminálu
    Termite3.4
    nastavení com parametrů
    Komunikace pomocí
    Termite 3.4
           

    Když už jsem měl na destičce konektor pro připojení PC deníku, napadlo mne, že by se to dalo použít i na nastavení MF kmitočtů. Jsme-li v režimu nastavení MF (podržet levé tlačítko při zapnutí), můžeme se připojit nějakým běžným terminálovým programen, který umí sériovou komunikaci. Vyzkoušel jsem například Hyperterminál, Termite_3.4, nebo PuTTy.
    Nastavení je stejné, jako pro komunikaci s deníkem:
    38400 bps, 8 data-bitů, 2 stop-bity, bez parity.
    Po připojení a odentrování prázdného řádku přijde na terminál text s popisem, co dělat. Oba způsoby nastavení MF fungují zároveň, takže je lze i kombinovat. Třeba z terminálu zadáme kmitočet (je to rychlejší) a pravým tlačítkem ho uložíme. Kmitočet MF (BFO) zadáváme v Hz. Je to proto aby to bylo přehledné, i když poslední číslice (jednotky Hz) je při uložení a následném výpočtu kmitočtu ignorována.

    Pro sériovou komunikaci jsem použil maličký modul převodníku USB-UART(TTL). Jde o čip CP210x připájený včetně konektorů a pár dalších součástek na DPS velikosti 15x20mm. Koupil jsem ho na ebay.com. Pokud bychom ho chtěli použít pouze pro nastavení MF, není v tom žádný problém. Ale pokud bychom ho chtěli mít připojený trvale, na propojení s PC deníkem, zanáší přímé připojení přes USB rušení do příjmu a je potřeba použít galvanické oddělení, viz tento článek.

         
    USB-UART-Icoupler-ADUM1301_PCBa
    USB-UART-Icoupler-ADUM1301_THT_foto
    USB-UART-Icoupler-ADUM1301_THT_foto
    Modul pro
    galvanické oddělení
    sériové linky
    Fotografie osazené DPS
    strana A
    Fotografie osazené DPS
    odpor na spodní straně
         





    Poznámky k mechanickému provedení, použité součástky:

         
    Assembled front side
    Assembled back side
    Assembled, top view
    Osazená přední strana Osazená zadní strana Osazeno, pohled shora
         

    • Myslím, že nejlépe je to vidět z fotografií. Všechny součástky stupnice, včetně displeje a tlačítek jsou na jednom dvoustranném plošném spoji.
    • Většina SMD součástek je z přední strany. Musíme je připájet ještě před připájením displeje.
    • Na plošném spoji je nakreslen obrys modulu OLED displeje o velikosti 0,96 palce. Použil jsem však displej o něco větší, 1,3 palce. (Proto jsem musel tlačítka posunout více do stran, aby se tam displej vešel.)
    • Displej musí mít pořadí vývodů (zleva do prava) GND, VCC, SCL, SDA.
    • Některé displeje mají při pomalém náběhu napájecího napětí problém se při zapnutí zresetovat. Bohužel, při nákupu displejů například na ebay.com (ale i v jiných globálních e-shopech), prodejci často uvádějí špatné informace, například o vestavěných driverech a podobně. Na fotografii níže je ukázka vhodných a nevhodných displejů, koupených na ebay.com, které jsem vyzkoušel.
         
    TRX_SW20+ with frequency counter
    suitable and unsuitable displays
    Scale_frequency-counter_assembled
    Ukázka použití
    v TRXu SW20+
    Vhodný a nevhodný displej Připájeno zezadu
    k přednímu panelu
         
    • Použitý jednočip je Atmega328PB v pouzdře TQFP32 (NELZE použít Atmega328P bez B na konci). Jak pájet tyto SMD součástky jsem popsal v tomto článku (včetně videa).
    • Jako děličku lze použít 74HC74D nebo 74HCT74D v pouzdře SO14.
    • Krystal 20MHz je běžný, v pouzdře HC49 nízký, nebo vysoký.
    • Všechny smd odpory a kondenzátory jsou velikost 1206.
    • Odporové trimry jsou PIHER CA6H nastojato.
    • V dolní části DPS jsou dvě tlačítka (miniaturní mžikové spínače), na které jsem přilepil kulaté hmatníky koupené na ebay.com (u nás jsem žádné podobné nesehnal). Oproti verzi s alfanumerickým displejem jsem musel tlačítka umístit více do stran, protože tam překáží spodek displeje. Také jsem se snažil trochu lépe rozmístit různé konektory aby byly lépe přístupné pro připojování a nastavování.

    Nahrání FW do paměti jednočipu

    V sekci DOWNLOAD jsou uloženy 3 verze firmware. Každá je určena pro jiné nastavení dělení vstupního kmitočtu (1:1, 1:2, 1:4)

    Program můžeme do jednočipu nahrát přes konektor ISP, například pomocí USB-ASP, jak je popsáno v tomto článku. Při programování nesmíme zapomenout nastavit konfigurační bity (fuses). Tedy vypnout dělení kmitočtu oscilátoru osmi, změnit zdroj hodinového kmitočtu na externí krystal a zapnout Brown-out na 2,7 Voltu (nastane reset processoru pokud napětí klesne pod tuto hodnotu).

         
    Fuses in Bascom-AVR
    Nastavení konfiguračních bitů
    v Bascom-AVR
         

    Nastavení konfiguračních bitů sumárně (třeba pro AVR-DUDE):

    • Lockbits:FF
    • Fusebits: FF
    • Fusebits High: D9
    • Fusebits Extended: FD

    Je potřeba vybrat si správnou verzi firmware, podle toho, jak jsme zapojili dělení vstupního kmitočtu (1:1, 1:2, 1:4).
    Počítám, že tak do dvou týdnů tu zveřejním i zdrojový kód. Nejdřív to ale musím upravit do čitelné podoby a komentáře tak, aby jim rozuměl i někdo jiný, než jen já (i já občas s problémy;-))

    Stupnice - čítač, ovládání tlačítky a nastavení

    • Po nahrání FW do jednočipu funguje jako obyčejný čítač kmitočtu.
    • Levé tačítko:
      • Krátký stisk - mění vysoký x nízký kontrast (jas)
      • Delší stisk - vypne zobrazení, displej zhasne (kterýmkoliv tlačítkem se zase zapne).
      • Podržet při zapnutí napájení - skočí do režimu nastavení kmitočtu MF (BFO). (dalším stiskem se vrátí k měření kmitočtu.)

    • Pravé tlačítko:
      • Krátký stisk - zobrazení napájecího napětí (dalším stiskem zrušit).
      • Delší stisk - přepne druh modulace (pokud je nastaveno - viz konektory JP3 a JP4).
      • Podržet při zapnutí napájení - nastavení měření napětí (trimrem). (Pod 10V ukáže i setiny voltu.)
      • Během nastavování kmitočtu MF (BFO) - uložení hodnoty do Eeprom.







    Ukázka stupnice-čítače použité v CW QRP transceiveru SW20+.




    Zbyly mi tu čtyři dva kusy DPS 40x60mm pro tento čítač-stupnici. Pokud by měl někdo zájem, stačí sdělit adresu, a pošlu mu je za poštovné.

    Jarda, ok1hdu


       | Celý článek |      tisk clánku
     

    Zpět (klikni)

    O   R B N

    O   kalendář
    <<  Prosinec  >>
    PoÚtStČtSoNe
           1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30 31      

    O   Radary ČHMU

    O   Zaparkováno na:

    O   TSL certifikát:

    PHP Scripting Language MariaDB Apache Web Server

    Tento web site byl vytvořen prostřednictvím phpRS - redakčního systému napsaného v PHP jazyce.
    Na této stránce použité názvy programových produktů, firem apod. mohou být ochrannými známkami
    nebo registrovanými ochrannými známkami příslušných vlastníků.