Popis generátora:
Princíp je presne ten istý ako verzia 1, preto ho nebudem popisovať. V ďalšom sa budem venovať len ovládaniu. Schéma zapojenia je na obr.1.
Obr. 1 - Schéma zapojenia
Ako je vidieť, je pridaný presný 8MHz generátor pre taktovaciu frekvenciu procesora, čím sú vypočítané frekvencie veľmi presné. Plošný spoj som navrhol tak, aby si ho ľahko mohol vyrobiť aj amatér. Je jednostranný, so 4 prepojmi. Je na obr.2. Procesor sa nachádza pod displejom. Schéma aj plošný spoj sú navrhnuté v EAGLE editor 5.10.0.
Obr2. Plošný spoj
Generátor som zostrojil na univerzálnom plošnom spoji (viď obr.3)
Obr. 3
Ovládanie generátora:
Pri zapnutí generátora sa ozve zvukový signál a vypíše sa verzia:
"Generátor impulz"
"Fi.TZ verzia 2.0"
Po 2 sekundách sa zobrazí Fv1=1,000kHz a v druhom riadku St1=50%, viď. Obr.3 (nastavenie po zapnutí je pre frekvenciu Fv1=1.000kHz, St1=50% a Fv3=100Hz, St3=50%). Prepínanie medzi zobrazením Fv1 a Fv3 sa prevádza tlačítkom ENT (enter). Neoznačené tlačítko vľavo od nuly je desatinná bodka (pre zadávanie frekvencie menšej ako 0, min. frekvencia je 0,12Hz), vpravo od nuly je zníženie striedy a zvýšenie striedy. Tlačítkami CNL + číslo 0-9 uloží nastavenú frekvenciu do EEPROM (možno uložiť až 10 frekvencíí Fv1 a 10 frekvencíí Fv3). Vytiahnuť uloženú frekvenciu sa dá tlačítkami vľavo od nuly desatinná bodka + číslo 0-9. Tlačítko CLR (clear) ruší predchádzajúcu udalosť.
Nastavenie požadovanej frekvencie: Keď je na displeji zobrazenie Fv1 a St1, stlačením čísla 1 môžeme zadať najprv frekvenciu a po potvrdení ENT striedu. Opäť to potvrdíme tlačítkom ENT a procesor začne počítať. V hornom riadku sa zobrazí Fzad=500 (keď sme zadali 500Hz) a po vypočítaní sa v druhom riadku zobrazí vypočítaná frekvencia Fvyp=500.0. Po cca. 2s sa na displeji objaví v prvom riadku Fv1 a v druhom St1. Teraz sa môžeme tlačítkom ENT prepnúť do zobrazenia Fv3 a St3 a stlačením čísla 3 zadať požadovanú frekvenciu Fv3 a striedu St3 (viď.obr.4).
Obr. 4
Pozn1: Tú frekvenciu alebo striedu ktorú chceme meniť, musí zobrazovať displej.
Pozn2: frekvencie sa nemusia rovnať, vypočítaná frekvencia je najbližšia možná akú môže procesor spracovať. Napr. ak zadám 5265Hz, Fvyp bude 5263,1577Hz a na displeji sa po čase zobrazí Fv1=5,26kHz
Obr. 5 - Zapojenie klávesnice
Zapojenie klávesnice:
Tu je vidieť, že pri stlačení klávesy 1 program detekuje 0, pri stlačení 2 ~ 4, 3 ~ 8, CLR ~ 12 atď. (porovnaj s obr.3) . Preto je potrebná prevodná tabuľka, ktorá je uložená v EEPROM od adresy 00. V mojom prípade, pre moju klávesnicu je:
Tab. klávesnice:
$eeprom
Data 1 , 4 , 7 , 46 , 2 , 5 , 8 , 0 , 3 , 6 , 9 , 11 , 12, 13 , 14 , 15 , 16
46 je ASCI kód desatinnej bodky, CLR=12, CNL=13, ENT=14
11 zníž striedu, 15 zvýš striedu.
16 je vtedy keď nie je stlačený kláves.
Kde program „test klávesnice“ identifikuje 0, je v skutočnosti stlačený kláves 1, preto na nultej pozícií v pamäti musí byť 1, kde identifikuje 1 je kláves 4, čiže na prvej pozícií v pamäti musí byť 4, ... kde identifikuje 7 je kláves 0, čiže na siedmej pozícií v pamäti musí byť 0 atď. Každý si musí spraviť tabuľku podľa svojej klávesnice a napáliť do EEPROM procesora.
Pozn: Aby sa klávesnica dala identifikovať, program obsahuje podprogram „Nastavenie klávesnice“. Vojdeme do neho tak, že port PINC.1 podržíme v 0 a zapneme generátor. Pri stlačení klávesy sa zobrazí jej kód. Po zistení kódov všetkých kláves vytvoríme tabulku klávesnice. Po šestnástich stlačeniach program skočí do programu „Generátor“.
Záver:
Generátor som postavil na univerzálnom plošnom spoji (obr.3). Pracuje bezchybne a s externým zdrojom taktovanej frekvencie sú vygenerované frekvencie veľmi presné. Samozrejme, komu na presnosti nezáleží, stačí nastaviť konfiguračné bity CKSEL na 0100 čo procesor nastaví na interný RC generátor a zdroj taktovanej frekvencie, alebo kryštál možno vynechať. Prípadným záujemcom môzem poslať HEX súbor
Komentáře
Pekne, ale na PCB designe
Pekne, ale na PCB designe "trosku" zapracovat:)
Dotaz
Co software?
Šikovné...
Hodilo by se mi to, je to praktický, jen bych tam spíš volil ovládání nějakým enkodérem a tlačítkem, než celou klávesnicí.... líp se tak nastavujou hodnoty a úplně v pohodě by stačila attinka.
A bude k dispozici i ten samotný program?
Děkuji
preco nebol pouzity klasicky
preco nebol pouzity klasicky krystal? odporucam dopisat SW tak, aby sa zariadenie dalo pouzit ako citac
Nadpis
Vím, že jste v tomto případě nad věcí, ale udělat ve dvou článcích v nadpise hrubku, je dost na zamyšlenou ;-)
generator
spíše by se mi líbilo zadávat střídu v absolutních hodnotách než v procentech. V praxi by to vypadalo takto: Zvolím výstupní frekvenci a podle její hodnoty by se střída zadávala v hodnotách s příslušnou automaticky zobrazovanou koncovkou (ms, us ...).
Ovládání bych asi v případě možnosti volil několika tlačítky s plus a mínus změnou. Klávesnice je v některých případech dost velká a někdy se musí kompletně složit dohromady neboť jako celek nebývá stále dostupná (nehledě na vnitřní zapojení)
Navrhuji vyřešit ukládání poslední nastavené hodnoty, protože po každém zapnutí generátoru bych musel opakovaně nastavovat požadované hodnoty.
A pokud se týká konstrukce, mohu nabídnout plnou spolupráci - návrh a výroba DPS a cílové konstrukční řešení
Jinak se mi to líbí a měl bych zájem o sw...
Střída
Nepleťte pojmy... To co vy chcete je ručně nastavovat dobu zapnutí a dobu vypnutí v jednotkách času. Střída je ale poměr doby zapnutí a vypnutí a tak je bezrozměrná (1:1, 1:2, 3:5 atd). Je to jen číslo. V procentech se zadává zatěžovatel vynásobený stovkou, který je v podstatě podobný, je to poměr doby zapnutí k periodě vynásobený stovkou. Pro různý aplikace se hodí po každý něco jiného, ale v 80% si myslím, že zadávání zatěžovatelem je nejvhodnější.