Frekvenční čítač do ca 10MHz

Zdravím. Už jsem to zas já, kdo tu s něčím prudí :confused:
Rád bych si ke své budoucí (napodobenině) KV příjmače pro 80m postavil nějaký jednoduchý čítač frekvence, abych lépe viděl, kde zrovna příjmám.
Lámu si hlavu, jak ten čítač udělat. Tohle mám nyní jasné:
4 mítný LED displej do multiplexu. Zatím to vypadá tak, že použiju odkudsi nakuchané displejíky, které mají společnou katodu. Tady pronlém nemám.
Problém mám, jaký algoritmus měření frekvence udělat. Již jsem vymyslel dvě věcičky.
Jedna blbá (podle mého názoru) varianta je ta, že si pustím časovač, a pomocí capture budu měřit délku periody signálu. To mi přijde jako zhovadilost, už jen z toho důvodu, že pak budu muset dělat převrácenou hodnotu, což zavání nejen desetinnou matematikou. Neledě na to, že při každé capture události, by se musel čítač vynulovat.
Druhá varianta je ta, která si myslím že se i snad běžně používá, a používaly jí veškeré čítače konstruované z jednotlivých TTL obvodů, a to pomocí “hradlování” nebo jak se otmu říká.
Jeden časovač bych vyhradil jako prostí čítač impulzů. Pomocí druhého časovače (časová základna) bych potom každou přesně definovou dobu četl stav čítače, přičemž bych ho hned potom taky vynuloval.
Tohle mi přijde jako dobrá metoda, aleopravte mě, pokud se mýlím.
Na příkladu je krásně vidět, jak jednoduše by to mohlo fungovat:
Máme-li frekvenci na vstupu 1MHz, a čž = 100Hz, budeme v čítači vždy nacházet číslo 10000. (1 000 000 / 100 = 10 000). Displej je čtyřmístný, takže zobrazíme první 4 cifry a za 1. cifru doplníme tečku: 1.000MHz. A měl by být pěkný čítač s přesností dá se říct 1kHz. Což by mohlo stačit.
Otázkou tedy je, jestli to takto opravdu je možné realizovat? (kdyžtak promyňte mou lehkomyslnost, že jsem něco zas nedomyslel pořádně).
Dík, H.

Pro vysoký frekvence použij určitě to druhý řešení. Měřením délky periody na vyšších frekvencích vzniká velká chyba.
Nezapomeň provést to čtení a nulování čítače ihned po sobě. Ve skutečnosti by měla být perioda té čz delší o těch pár taktů, které uplynou od čtení do mazání.
Pak už se můžeš jen modlit, aby byla reakce na přerušení pokud možno vždy stejná.
Přesnějsí by bylo použít externí AND a vstup do počítacího časovače povolovat output compare výstupem čz. Potom by ti odpadly problémy s reakcí na přerušení a nemusel bys řešit prodloužení periody čz o dobu mazání čítače.

Paráda, takže to půjde.
Já od toho nepožaduju žádnou super-přesnost. Říkám, že 1kHz přesnost my nyní bohatě stačí. A myslím si, že chyba několika instrukcí (což není více jak cca 0.5us mi moc velkou odchylku nenadělá. Ale uvidíme, až to zejtra budu programovat.
To s tím ANDem je zajímavý nápad. Ale podle mě do této aplikace takový příliš zbytečný. Především ani netuším, jak moc stabilní bude měřená hodnota, ale což to. Momentálně ani netuším, jak vyrobím převodník vysokoimpedančního vstupu s velkým ziskem na TTL úrovně :angry:
To bude asi ten největší oříšek. Možná bude stačit jednostupňový tranzistorový předzesilovač, možná bude potřeba těch stupňů asi víc.
Zítra se uvidí :smiling_imp:
díkes, H.

Na nižších frekvencích těch pár taktů a rozdílnou dobu reakce na přerušení nepoznáš. Když se ale přiblížíš maximu čítače, mohla by ti tam lítat možná i desítka.

Dal bych na vstup komparátor. Když bude napájenej jako mcu, můžeš výstup přímo připojit k mcu.

Byl bych v tom opatrnější. Krátkovlmé přijímače a vůbec celé AM, je velmi citlivé na rušení, zjeména od multiplexu LED displejů. Z přízpěvků jsem pochopil, že stavíš nějaký lab. zdroj, který má 3 + 3 displeje v multiplexu. Zkus ho přiložit co nejblíže k AM rádiu, a uvidíš jak moc bude rušit. Taky by se mohlo stát, že vyzařováním frekvení od MCU se ti budou zrcadlit stanice na AM, objeví se hvizdy ale určitě chytneš MCU i v tom pásmu KV a né jednou.
Jestli jde jen o změření kmitočtu naladěné stanice, podívej se na šváby pro rádia. Existují již hotové i s odečtením MF kmitočtu a budičem displejů, nejčastěji LCD. GME v katalogu bude něco mít možná od Toshiby nebo Philipse.

Zajímavý nápad to je, ale řešení to není úpně košér. AND způsobí náhodný zápočet 1 hrany navíc podle toho, jestli je na vstupu log. 0 nebo 1 v okamžiku uzavírání gate.(obecný pojem z čítačů). U čítačů se gate otvírá na 0,1s nebo na 1s nebo na 10s, to je celkem jedno, ale hlavně při jeho otvírání či uzavírání nesmí vytvořit hranu, kterou by čítač započetl jako falešný impuls. Načítaný údaj by Ti poskakoval o 1 ale vzhledem k tomu, že zahazuješ nejnižší řády, tak je to jedno. Jinak gate se u čítačů řeší pomocí klopných obvodů D nebo JK nikoli jen AND.

Kmitočet můsíš brát z oscilátoru, ne ze vstupního laděného obvodu nebo ze směšovače. Tedy pokud jde o superhet. Ono asi nic jiného nepřichází v úvahu na KV. Jedním tranzistorem udělej impedanční oddělovač v zapojení se společnám kolektorem, pak teprve můžeš signál zesilovat třeba invertory 74HC04. Šestice by na to mohla stačit. Ale stejně budeš muset od tohoto kmitočtu odečíst (přičíst) MF kmitočet, což je konstatnta.

Stav pocitadla impulzov predsa nemusis nulovat. Staci odpocitat od predchadzajucej odpamatanej hodnoty.
Rozdiel je pocet impulzov za cas. Novu hodnotu citaca si samozrejme znovu odpamatas, aby si mal co najblizsie odpocitavat.
Ak by si chcel silou mocou nieco nulovat, citac zastvis tak, ze mu zmenis mod. To sa da pod prerusenim s neurcitostou 1/2 takty procesora, teda ak nepouzijes iny zdoj prerusenia. Ak pouzijes Xtal 10MHz, potom sa jedna o neurcitost max 200ns. Dobre si pozri Fmax CNT v zavislosti od Fosc.
Aj ATmega ma komparator.
Inak na meranie prijimanej frekvencie plne doporucujem vsetko co uz spomenul Technik. Nemozes merat prijimanu frekvenciu, ale frekvenciu oscilatora (pre superhet) so vsetkymi konzekveciami z toho vyplyvajucimi. Najlepsie je pouzit nejaky specializovany IO.

Ak si chces spravit obycajny citac/merac frekvencie, pre vyssie frekvencie je dobre pouzit napr. 74xxx390 (az 1:100) a 74xxx151 pre vyber vhodneho deliaceho pomeru - samozrejme, ze 151 by prepinal mcu.

Nerad bych Vás tu zastavoval v celkem hezké debatě okolo mého příjmače, ale tohle tu řešit myslím nemáme. :slight_smile: Ale dík za různé užitečné rady navíc.
Mám se bát LED multiplexu? No to se na to podívám Zítra zkusím, jak to ruší. Protože jsem si myslel, že tohle fakt rušit nemůže.
Že se má odečítat mezifrekvence (kterou tam nikde nemám) mi vysvětlovat nemusíš.
Fmax CNT v zavislosti od Fosc - četl jsem datasheet. Fcnt : fosc = 1 : 2.5 a snad jsem to pochopil dobře.
Už jsem počítal s tím, že před ATmegu zařadím asi MH7493.
Prosím nevysvětlujte mi pořád kde mám co v tom příjmači měřit, vím to dobře. Měřit budu přímo oscilátor, pomocí dalšího vazebního vinutí asi.
Technik: zesilování 7406 - nechce se mi to zbytečně komplikovat, ale asi to tam dám.
74360 ani 74151 neznám, zítra kouknu do datalistů.

Děkuji, vím že existuje spousta (předražených) IO pro tyhle účely, ale berte prosím na vědomí moje finance, a to že nechci ze všeho dělat přesložitělé super vynálezy. Já budu rád když mi to bude nějak fungovat. :slight_smile:

Abychom se furt nebavili “o ničem”, tak trochu zkonkretizuju:
qsl.net/o/om3cug//rx80m/rx80m.htm
S mírnými úpravami tohle.
Pokračování zítra, dobrou noc :slight_smile:

Pokud Ti jed o co nejjednoduší řešení, napadlo mě následující, ale za atmela si budeš muset něco připlatit, protože s mega8 to nepůjde, leda že by ses spokojil s přesností RC oscilátoru jako reference.
V datasheetu se píše cosi o timer2, který je v asynchroním režimu určen pro RTC, jako by na něj musel být připojen 32kHz krystal. Nikde se nepíše, jakou maximální frekvenci může zpracovávat. Pravda je taková, že může zpracovávat frekvence až do max. frekvence CPU. Ověřeno na řadě ATmega 164P/324P/644P, kde timer2 pracuje spolehlivě až do 20MHz a není důvod, proč by tomu tak nemělo být i u ostatních MCU, když na této frekveni může běžet v synchroním módu.
Vstup timeru2 je přes TOSC1, jež obsahuje zesilovač pro krystalový oscilátor dokonce low power, takže je tu velká šance, že by jeho citlivost mohla stačit na oscilátor z KV přijímače. Timer2 má k dispozici 10b prescaler a sám může dělit ještě 512. Celkový dělící poměr může dosahovat více než 500 000. Takto vydělenou frekvenci změříš přes ICP.
U mega164 je dokonce ICP a OC2B na témže pinu, takže není co propojovat. Není tak snadno k sehnání a je drahý, takže to zkus s ATmega16. Zbylé porty můžeš použít pro statické buzení LED. Na 4místný LED displej to stačí nebo i na 5místný, uvážím-li že na 1. bude vždy 3.

promiňte mi včera večer tu nevrlost…
To s tím atmega164 a tcnt2 je velmi zajímavý návrh. Možná někdy bokem to zkusím. Ale nyní jak fakticky říkám. atmega8. Během týdne, bych měl začít programovat, o víkendu bych ž měl snad mít i kus toho příjmače funkční. Aspoň ten oscilátor, aby bylo co zkoušet měřit.
Každopádně dík za spoustu rad, určitě se některé budou hodit.

Pokud netrváš na AVRu, tak tohle je vyřešeno na qsl.net/dl4yhf/freq_counter/ … unter.html ,program pro LED displ. jak CA, tak CC, 4 (5) míst v multiplexu, možnost + - nastavené MF i s možností + - vlastní dodatečně zadané frekvence

Nevim jestli to už píšu podruhé, ale na AVR mega8 trvám!

Mrkni na tohle :

ulrichradig.de/home/index.ph … enzcounter

a ked sa stym budes este hrat tak tam dorob pll

inspiracia TU halicky.sk/om3cph/om3cph.html

to íš, tak mě to napadlo… Ale zkus mi sehnat nějaký PLL integráč s cenou pod 300. navíc PLL obvod by byl složitější než zbytek celého příjmače. A cenou by ten PLL IO vyšel odhadnu 3 - 5x dráž než celý příjmač. Pač do něj budu kupovat jen BNC na anténu, a pár čudlíku na předek. Zbytek mám doma :slight_smile:

Tak tady ho máš
gme.cz/_dokumentace/dokument … -046.1.pdf
a v GM za 58Kč a to jsem na něj narazil úplnou náhodou. Nechci Ti brát iluze, ale to ladění potenciometrem přes varicap podepřený zenerkou moc stabilní nebude.

nechci zase vám brát názory, ale je relativní pojem “stabilní”. Mě je momentálně fuk, ak je to stabilní, protože doposud jsem nezprovoznil jediný KV příjmač. Začal jsem tím nejjednodušším, a zkouším stále složitější obody, protože doufám, že ty už konečně budou mít nějakou citlivost a selektivitu. Jediný úspěch byl, když jsem na přímosměšováku zaslechl jakousi stanici vysílající CW. Tenkrét jsem uměl tak 3 písmenka, takže co vysílala nevím. Každopádně kamarád co mi s tím na dálku pomáhal (OK1VEN), mi pak říkal, že ta CW stanice měla takový signál, že mu obracela S-metr za roh. Bydlí odemně 11km vzdušnou čarou, a já tu stanici u sebe sotva slyšel… NA dalších příjmačích se mi povedlo ještě třeba naůladit atmosferický šum/poruchy, a tím to tak končí.
Tudíž promiňte mi velice, stabilita kmitočtu je to poslední, co mě nyní zajímá.
EDIT: dík že si našel IO. Zkusím se po něm podívat v jiném obchodě, ale mám smůlu. Posledí jeho existující kousek mají v ostravě.

Dal som ti tam link islo o to vyuzit procesor ako riadiacu jednotku pre PLL co sa aj teoreticky da… tj ziadni iny integrac netreba
Na tom predchadzjaucom odkaze si najdi toto: pre inspiraciu

PIC digitálna stupnica so stabilizáciou frekvencie

Odkaz si mi tam dal.
Pokud si myslel tohle: halicky.sk/om3cph/dds/dds_sch.html
tak tam je integráč, jakýsi DDS, který bych kdoví kde sháněl. (AD9850).

halicky.sk/om3cph/counter/lc … _flck.html

tak až tak hluboko do těch stránek jsem se nedoklikal… ten web je děsně nepřehledný. Nápad je to zajímavý, možná to taky zkusím. Už sem aspoň konečně pochopil jak funguje přibližně takové “PLL”. Nyní ale si budu hrát s tím frekvencčním čítačem… Za chvilku po obědě začnu :slight_smile: