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: 23. 04. 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


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

O   Počasí v Holicích
JO70XC


O   VOACAP KV Online

O   VOACAP pro CB
Šíření na CB

PHPRS fórum

<a1>technika, bastleni</a1>

Zpět SW20+ Deluxe

Vydáno dne 29. 11. 2007 (16796 přečtení)

SW20+ Deluxe Před časem jsem dělal nějaké pokusy s AD převodníkem na jednočipech Atmel. Nedávno mě napadlo udělat si ke QRP transceiveru SW20+ stupnici, kterou by bylo možné přepnout na měření napájecího napětí. Může se to hodit, pokud jedeme z baterií.

Upozornění:
Upravená verze s možností nastavit MF kmitočet na desítky Hz je v tomto článku.
Model z roku 2020 je v tomto článku.
Model z roku 2020 s grafickým dispejem je v tomto článku.



Bohužel, jednočip Attiny2313, který jsem použil na původní stupnici - čítač, neobsahuje AD převodník, takže jsem musel použít některý z typů ATmega. Nejdříve jsem dělal pokusy s ATmega8, ale ten umožňuje použít krystal maximálně do 16Mhz. Poslední verzi jsem tedy udělal s ATmega48 v provedení 20PU, který podle katalogu umožňuje při napájení 5V použít krystal až do 20Mhz, prakticky však bez problémů funguje s krystalem 22,1184Mhz, který je výhodný tím, že se dobře dělí až na 100hz. Čip má vyvedeno 6 multiplexovaných vstupů 10-ti bitového AD převodníku, může tedy rozlišit 1024 úrovní napětí. (Typ v SMD pouzdře má vyvedeno 8 vstupů).

ATmega8 - 20PU
ATmega48 - 20PU
Kmitočet x Vcc
DIL pouzdro ATmega8DIL pouzdro ATmega48max. kmitočet/Vcc

ATmega48 má také oproti ATtiny2313 větší programovou paměť - 4kB, takže je možné se více "rozšoupnout", bez obav, že bychom se nevešli do paměti. Free verze programu Bascom umožňuje zkompilovat kód právě do velikosti maximálně 4k.

Kromě čítačů/časovačů Timer0 (8 bitů) a Timer1 (16 bitů), má typ ATmega48 navíc ještě Timer2 (8 bitů), který jsem použil při pokusech s měřením doby stisknutí tlačítka, viz níže.

Datasheety všech zmíněných součástek ve formátu .pdf je možné stáhnout z webu firmy Atmel, nebo zde v sekci Download.

Kód programu pro čítač jsem, až na drobné úpravy, nechal stejný jako v původní stupnici a pouze jsem doplnil část, která měří napětí. Čítač měří i zobrazuje kmitočet na desítky Hz. Poslední číslice (desítky Hz) problikává - mění se o +/-1, což je normální vlastnost čítače, daná tím, že vstupní kmitočet není (a ani nemůže být) synchronizován s hradlováním čítače. Dalo by se to odstranit tím, že bychom měřili o jeden řád přesněji a nezobrazovali ho.

Zapojení vstupního obvodu čítače je prakticky stejné jako u původní stupnice. Jenom jsem zvětšil odpor z kolektoru do báze zesilovacího tranzistoru na 1MΩ. Zvýší se tím citlivost, a čítač je pak možné připojit na oscilátor v SW20+ přes mnohem menší vazební kondenzátor (cca 2-5 pF), takže méně ovlivní kmitočet a stabilitu oscilátoru.

Vstup do AD převodníku ADC0 je přímo z napájecího napětí přes odporový dělič ze dvou pevných odporů a trimru. Výstupní odpor zdroje signálu do vstupu AD převodníku by neměl být větší než asi 10kΩ. Velikostí pevných odporů můžeme zvolit rozsah a jemnost nastavení. Rozsah vstupního napětí je od nuly do napájecího napětí AD převodníku na pinu AVCC, které by se nemělo od hlavního napájecího napětí lišit o více než 0,3V. Vstup referenčního napětí jsem spojil natvrdo s napájecím napětím 5V. Výrobce doporučuje filtrovat ho kondenzátorem na vstupu AREF, aby nebylo měření ovlivněno střídavým rušivým napětím, které by se mohlo na referenční vstup dostat. Existuje také varianta s použitím vnitřní reference s napětím 1,1V, kterou jsem zde ale nevyužil.

Dále jsem doplnil testování úrovní vstupních portů, na které připojíme jednak tlačítko na přepínání režimu měření a také tlačítko na zapnutí podsvětlení displeje. Obě tlačítka a také vstupy pro nastavení mezifrekvence se spínají na zem (mínus napájení). Vyzkoušel jsem si různé způsoby jak testovat tlačítka - pomocí externího vstupu přerušení (zapínání/vypínání podsvětlení displeje), prosté testování úrovně na vstupním portu (nastavení mezifrekvence), nebo příkazem Bascomu "Debounce", který v sobě již obsahuje ošetření zákmitu kontaktů. Také jsem si vyzkoušel naprogramovat funkci rozpoznání krátkého, nebo dlouhého stisku tlačítka (přepne na měření napětí na 4 sekundy, nebo trvale).

schéma
Plošný spoj
plošný spoj
SchémaPl.spoj...

Vzhledem k tomu, že jsem chtěl použít stejně velikou destičku plošného spoje jako v původní stupnici s ATtiny2313 (asi 3x6 cm), avšak ATmega48 je o něco větší, (28 vývodů oproti 20), vyšel mi plošný spoj poměrně hustý, a byl problém nakreslit ho lihovým fixem přímo na cuprextit. Tak jsem si alespoň vyzkoušel výrobu plošných spojů fotocestou. Na internetu najdeme spoustu návodů, nejpodrobnější je asi na webu Mlab-online. Podle mé zkušenosti je základem úspěchu kvalitní, kontrastní filmová předloha. Za poměrně přijatelnou cenu (50Kč/A4) mi ji vysvítili v hradecké firmě Ulbricht advertising. Byl jsem docela překvapen, jak kvalitní plošný spoj se z toho dá v domácích (koupelnových) podmínkách vyrobit. Plošný spoj jsem navrhl ve free verzi programu Eagle 4.11. Jsou na něm 4 drátové propojky, z nichž 2 jsou pod paticí integrovaného obvodu. Je nutné použít takzvané "precizní provedení" patice v kulatými dutinkami, která má pod sebou dostatek místa. Obrázek plošného spoje jsem převedl na .pdf pomocí free programu PDFcreator. Ten se chová jako další nainstalovaná tiskárna, takže prostě jakýkoliv dokument jednoduše "vytiskneme" - uložíme ve formátu .pdf. Formát .pdf má v sobě obsaženu informaci o fyzických rozměrech obrázku, takže po vytisknutí na papír nebo na film v měřítku 100% máme přesnou předlohu k domácí výrobě.

rozmístění součástek
výstupy a vstupy
osazeno 1
osazení destičkyvstupy a výstupy...

Aby nebylo nutné pracné pájení drátových propojek mezi destičkou čítače a displejem, udělal jsem propojení pomocí "hřebínkových konektorů". Aby nevyšly dráhy na plošném spoji příliš složité, s výhodou jsem využil možnost připojení displeje na libovolné piny libovolného portu jednočipu. Jednoduše se v editoru programu v konfiguraci displeje nadefinuje jaký signál displeje je kam připojen a kompilátor si s tím již poradí.

osazeno 2
osazeno 3
kolíčky na displeji
Kolíčky na spodní straně displeje

Stavba stupnice a naprogramování jednočipu

Rád bych případné zájemce o stavbu upozornil, že se nejedná o nějaký detailní návod na postavení stupnice, ale prostě jen o takové moje pokusy, o kterých se domnívám, že jejich zveřejnění by mohlo být pro někoho inspirací k vlastní "tvorbě". Nevylučuji, že jsou jak v zapojení, tak v programu chyby, kterých jsem si nevšiml. Program v basicu Bascom jsem dělal tak, jak mi na to moje znalosti stačí, a je evidentní, že by šel napsat elegantněji, jednodušeji,....prostě lépe. Já jsem však spokojený, že mi TO funguje.

V sekci download je možné stáhnout si schéma ve formátu .jpg, předlohu pro plošný spoj ve formátu .pdf a obrázek osazení destičky součástkami ve formátu .jpg, vše v jednom .zip souboru (pro přehlednost tam nejsou některá pojmenování ani hodnoty součástek - je nutná "konzultace" se schématem). (Pozor, drátové propojky pod integrovaným obvodem je nutné zapájet dříve než patici :-)) Dále je tam zdrojový kód programu v Bascomu .bas (doporučuji zkusit si napsat a zkompilovat nějakou vlastní verzi nebo úpravu) a zkompilovaný soubor .hex, který můžeme přímo nahrát do jednočipu, třeba pomocí tohoto přípravku. Pokud použijeme na naprogramování jednočipu program Ponyprog, je nutné použít poslední verzi, která umí novější čipy. Pro Windows je to verze alespoň 2.07aBeta.

Nastavení FUSES - konfigurační bity

Nastavení konfiguračních bitů je poměrně obšírná záležitost, popsaná v manuálu k jednočipům mnoha tabulkami, které se vzájemně prolínají a doplňují. Nás zajímají pouze ty, které se nějak týkají výběru zdroje hodinového signálu, rozsahu jeho kmitočtu, zpoždění při startu a případně restartu procesoru při poklesu napájecího napětí pod bezpečnou úroveň. Zkopíroval jsem z manuálu některé, pro nás podstatné, tabulky. Jsou to obrázky, nechtělo se mi je přepisovat do .html kódu.

Clock1
clock2
BOD level
Nastavení CKSEL3...0 (výběr zdroje hodin)CKSEL3...1 (Kmitočet krystalu)Nastavení BOD-level 2...0

clock4
clock3
FUSES v Ponyprogu
Zpoždění při HIGH PWR oscilatorZpoždění při LOW PWR oscilatorPříklad nastavení v Ponyprogu

    Z tabulek jsem udělal tento stručný výtah:
  • CKSEL3 - Určuje zda "Low power X-tal oscilátor" nebo "High power X-tal oscilátor". Ostatní - interní RC oscilátor, atd.. nás nezajímají.
  • CKSEL2 a CKSEL1 - rozsah kmitočtu X-tal oscilátoru
  • CKSEL0, SUT1, SUT2 - zpoždění při startu
  • BODLEVEL2...0 - dolní hranice napětí, při kterém dojde k restartu
  • CKDIV8 - vydělení kmitočtu oscilátoru 8-mi
  • CKOUT - zapnutí výstupu oscilátoru na pin 14 (signál CLKO)
  • EESAVE - zakáže smazání oblasti paměti Eeprom v programátoru. (ale "WRITE DEVICE" ji přepíše. Pokud již něco v Eeprom máme, je dobré použít "WRITE PROGRAM MEMORY")
Upozorňuji, že naprogramovaný bit je logická nula, a nenaprogramovaný je logická 1. V okně "Configurations and security bits" v Ponyprogu musí tedy být zatržítko tam, kde je v tabulce v manuálu k jednočipu nula. Také je dobré si uvědomit, že na zapsání je nutné kliknout na "WRITE". Kliknutí na "OK" hodnoty nezapíše. Poslední obrázek ukazuje, jak by to mohlo být nastaveno pro tento čítač s krystalem 22 Mhz. Je nastaven Low Power oscilátor, protože z něj nepotřebujeme řídit žádný další obvod, a je předpoklad, že bude i méně rušit.

Manuál na nastavení a použití

Při správném osazení destičky a naprogramování jednočipu by mělo zařízení pracovat prakticky na první zapojení. Jestliže displej nic nezobrazuje, zkuste nastavit kontrast trimrem 5k. Pokud se na displeji něco zobrazuje, ale chová se to divně, zkontrolujte naprogramování FUSES. Musíme kliknout na "READ" aby to načetlo hodnoty z jednočipu. Může se stát, že máte zapnut vnitřní RC oscilátor, a/nebo zapnuté dělení kmitočtu osmi.

Přepnutí do režimu nastavení mezifrekvenčního kmitočtu je také z hlavní smyčky programu, takže pro nastavení MF není nutné dělat restart, jako to bylo u původní verze s ATtiny2313 (vypínat a zapínat napájení). Krátkým uzemněním pinu 28 (port C.5) skočíme do režimu nastavení MF. Uzemněním pinu 27 (port C.4) zvyšujeme a pinu 26 (port C.3) snižujeme číslo, udávající MF kmitočet v jednotkách khz. V programu jsem zkrátil zpožďovací pauzy ve smyčce, takže nastavení je rychlejší, než v původní verzi. Pokud požadovanou hodnotu přejedeme, prostě se dotykem na druhý pin zase vrátíme. Krátkým uzemněním pinu 25 (port C.2) nastavenou hodnotu uložíme, a program se vrátí do režimu měření kmitočtu. Pokud je kmitočet oscilátoru nad přijímaným (vysílaným) kmitočtem (například u SW80+), nastavíme zápornou hodnotu mezifrekvenčního kmitočtu. (v případě SW80+ tedy " - 8000khz"). Nastavením MF kmitočtu lze také hrubě dotáhnout rozdíl kmitočtu daný výškou nízkofrekvenčního zázněje. Prostě naladíme na přijímači nějaký signál o známém kmitočtu tak abychom ho měli uprostřed filtru, a nastavením MF kmitočtu na čítači o +/- 1 až 2 khz se zkusíme strefit na tento kmitočet. Zbytek musíme dotáhnout kondenzátory u krystalu.

Přepnutí na měření napětí je tlačítkem na pinu 3 (port D.1). Jeho krátkým stiskem se nám zobrazí napájecí napětí na dobu 4 sekundy. Po tuto dobu se neměří kmitočet a jeho údaj na displeji "zamrzne". Změření napětí je jednorázové v okamžiku stisku tlačítka. Po 4 sekundách se program vrátí na měření kmitočtu. Při stisku tlačítka na dobu delší než asi 1 sekunda se zobrazí slovo "Baterie:" a po uvolnění tlačítka je na druhém řádku displeje změřené napětí, které se obnovuje asi pětkrát za sekundu. V tomto režimu můžeme trimrem nastavit jeho správnou hodnotu. Dalším stiskem tohoto tlačítka se vrátíme na měření kmitočtu. Nastavení doporučuji provést při napájecím napětí nižším než 10V, neboť tak vidíme hodnotu na 2 desetinná místa (setiny voltu). Nejmenší rozlišitelná hodnota (krok měření) je 0,02V a nejvyšší měřitelné napětí je tedy 20,46V (1023 x 0,02).

sestaveno
ze strany trimrů
měření napětí
sestavenoze strany trimrů ...

Bohužel se mi nedaří zobrazovat na jednom řádku kmitočet a na druhém napětí, oboje současně. Spuštění AD převodníku mi (asi kvůli přerušení, které generuje) úplně rozhodí měření kmitočtu. Třeba ale časem přijdu na tu správnou fintu, jak toho docílit.

Tlačítkem připojeným na pin 4 (Int0) zapínáme a vypínáme podsvětlení displeje. Je na to využit vstup externího přerušení INT0, takže světlo zapneme nebo vypneme vždy, ať se program nachází v kterékoliv větvi. Pokud se však stane, že se s přerušením strefíme doprostřed nějaké činnosti (třeba zápisu na displej), může se stát, že se displej asi na 1/2 sekundy "rozhodí". Samozřejmě, že LEDky můžeme zapínat mnohem jednodušeji, třeba obyčejným tlačítkem s aretací, ale když si člověk hraje, tak si to chce prostě vyzkoušet.

SW20+ Deluxe

Doporučuji každému, kdo rád něco bastlí, a zatím se jednočipům vyhýbal, aby si to s nimi zkusil. S programem Bascom to opravdu není žádná velká věda, a jednoduchá logika (třeba sekvencer na spínání obvodů v PA) se dá vymyslet doslova na počkání (tedy pokud víme, co vlastně chceme). Výhodou je, že když si vymyslíme novou funkci, většinou stačí změnit program a na hardware nemusíme s páječkou ani sáhnout. Bohužel, má to i nevýhodu, že vlastně nemáme nikdy hotovo. Stále nás napadají vylepšení, a tak se v tom stále vrtáme.

Nedávno jsem na internetu objevil tyto velice užitečné stránky, kde je do Češtiny částečně přeložen help Bascomu (většina příkazů Bascom včetně příkladů), a ukázky jednoduchých programů s podrobnými komentáři. (škoda,že je to umístěno na free webu a občas jsou problémy s nedostupností). Autorovi tohoto webu patří velký dík za práci, kterou si s tím dal, a výsledek poskytl zdarma veřejnosti.

Jarda ok1hdu


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

Zpět (klikni)

O   Novinky
07.07.2023:
Update na webu DXFC
Dneska jsem updatoval info na webu DXFC.

05.07.2019:
Update fotoalba
Do fotoalba jsem přidal pár fotografií ze:
Slovinska (červen 2019)
Fotoalbum prozatím zrušeno.

05.12.2018:
Update fotoalba
Do fotoalba jsem přidal pár fotografií ze:
Slovinska (jaro 2018)
a ze:
Suchého Vrchu (zima 2005/2006).
Fotogalerie je prozatím zrušena.

O   kalendář
<<  Duben  >>
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      

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ů.