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: 11. 10. 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 Krystalka jednadvacátého století

Vydáno dne 30. 09. 2019 (8905 přečtení)

Stereo radio with RDA5807m

switch to an english version     verze v angličtině

Hledal jsem na ebay.com prodejce TDA7052A (NF zesilovač v DIL pouzdře) a mezi výsledky se mi objevila i nabídka maličkého modulu stereofonního FM rádia s integrovaným obvodem RDA5807M. Jedná se o kompletní DSP přijímač taktovaný hodinkovým krystalem 32 kHz a ovládaný přes IIC (I2C, TWI) interface. Tak jsem ho koupil.


Vlastní DSP přijímač je smd integrovaný obvod RDA5807M velikosti necelé 3x3mm s deseti vývody (pouzdro MSOP10). Předpokládám, že jeho hlavní využití je jako FM rádio v mobilních telefonech. Stačí k němu připojit stejnosměrné napájení 1,8-3,3 V, krystal 32,768 kHz, anténu a sluchátka. Kmitočtový rozsah je 50-115 MHz v pěti rozsazích. Pro nás je užitečný rozsah 87-108 MHz. Krok ladění je defaultně 100 kHz, ale dá se nastavit 25 kHz, 50 kHz, 100 kHz a 200 kHz. Hlasitost se dá nastavit v 16 krocích (4 bity, tedy 0-15) s logaritmickým průběhem, má možnost nuceného přepnutí na MONO, zapnutí BASS-Boost (zdůraznění basů) a několik dalších nastavení, viz pdf datasheet. Přímo umí budit stereofonní nízkoohmová sluchátka 32 Ω. Veškeré nastavení se provádí pomocí I2C (TWI) (dvouvodičový interface/protokol). V doporučeném zapojení jsou ještě dvě cívky a paralelní LC rezonanční obvod na vysokofrekvenční oddělení stínění sluchátkového kabelu, který slouží zároveň jako anténa.

     
RDA5807m schematic from pdf datasheet
RDA5807m module dimensions
RDA5807m module pinout
RDA5807
doporučené zapojení
Modul - rozměry Zapojení vývodů
modulu
     

Já jsem koupil modul, kde je integrovaný obvod již připájený na plošném spoji asi 10x10mm, na kterém je již i krystal, filtrační kondenzátor na napájecím přívodu a vazební kondenzátor na anténním vstupu. Při domácím bastlení je s ním mnohem snazší manipulace, než by byla s holým integrovaným obvodem. (pro informaci: cena za 5 kusů byla v přepočtu asi 56,-Kč včetně poštovného).

Když mi modul přišel, ověřil jsem si že opravdu funguje pomocí Arduina a nějakého jednoduchého prográmku, který jsem stáhnul z internetu. Pak jsem si navrhl plošný spoj pro vlastní verzi přijímače s tímto modulem, jednočipem Atmega328PB (smd provedení), oled grafickým displejem (128x64 pixelů, 0,96 palce), mechanickým rotačním enkodérem a třemi tlačítky.

     
schema receiver RDA5807M
PCB_a_receiver_RDA5807M
PCB_b_receiver_RDA5807M
Schéma
Ve vyšším rozlišení
Návrh DPS
strana A
Návrh DPS
strana B
     

Link na Seznam součástek. (Otevře se v novém okně.)

    Tlačítka mají funkce:

  • rotační enkodér:
    • v režimu ladění: nastavujeme kmitočet, nebo hlasitost.
    • v režimu předvoleb: přepíná uložené stanice
  • tlačítko BT1:
    • krátký stisk: přepínání ladění/hlasitost
    • delší stisk: skenování kmitočtu směrem dolů
    • podržení při zapnutí: nastavení hodnoty indikace "BAT LOW"
  • tlačítko BT2:
    • krátký stisk: Mono/Stereo
    • delší stisk: On/Off Bass-Boost
    • potvrzení hodnoty indikace "BAT LOW"
  • tlačítko BT3:
    • krátký stisk: On/Off displej
    • delší stisk: skenování kmitočtu směrem nahoru
    • podržení při zapnutí: smazání všech předvoleb
  • tlačítko v ose enkodéru:
    • krátký stisk: přepnutí na předvolby
    • delší stisk: uložení stanice do předvoleb

Pár poznámek k ovládání

Více je ve videu odkazovaném na konci článku.

Celkem je k dispozici 20 pamětí pro předvolby (více se mi zdá zbytečné). Při podržení tlačítka v ose enkodéru se na následující volnou pozici uloží aktuálně naladěný kmitočet a aktuálně zobrazený text RDS. Smazat se předvolby dají pouze hromadně - podržením tlačítka BT3 při zapnutí (zobrazí se oznámení "ERASED").

Aktuálně nastavené hodnoty - Kmitočet, Hlasitost, Mono/Stereo a Bass-Boost se ukládají do trvalé paměti jednočipu (Eeprom), takže po zapnutí rádio hraje tak jako před vypnutím. Nevyužívám nastavení hlasitosti přímo v RDA5807M ale pomocí napětí na ovládacích vstupech NF zesilovačů TDA7052A.

Docela problém jsem měl se zobrazením RDS textů. Hlavně asi proto, že tomu moc nerozumím. Zkoumal jsem RDS normu a snažil se zjistit, jak je to aplikováno v případě tohoto obvodu (RDA5807M). Něco jsem našel v nějakých diskuzích na internetu, něco jsem zjistil sám metodou pokus-omyl. Nakonec to "tak nějak" funguje, ale k dokonalosti to má určitě daleko. Nicméně názvy stanic, pokud jsou vysílány standartním způsobem to zobrazí, a to mi celkem stačí.

Jako poslední funkci jsem udělal měření napájecího napětí a indikaci vybité baterie. Po nahrání programu do jednočipu je nastaven limit přibližně 4,0V (záleží na odporech R8 a R9, doporučuji alespoň 1% hodnoty), což je také na spodní hranici indikace. Stabilizované napájecí napětí jednočipu 3,3V je zároveň referenční napětí pro AD převodník. A pod 4V napájecího napětí již ta stabilizace není moc dokonalá (asi 0,7V "sežere" ochranná dioda na vstupu) a tak měření není extra přesné. Jiná hodnota indikace se dá nastavit, pokud při zapnutí podržíme tlačítko BT1. Na regulovatelném napájecím zdroji nastavíme požadované napětí a tlačítkem BT2 potvrdíme a uložíme.




Napájení

Napájecí napětí 3,3V pro RDA5807m, jednočip a displej je stabilizováno "low_drop" stabilizátorem LE33A (výrobce ST). Tím pádem není problém napájet celé rádio například i z ploché baterie 4,5V. Výkonové NF zesilovače jsou napájeny přímo. Výrobce zaručuje jejich funkčnost od 4,5 voltů ale vyzkoušel jsem, že bez problémů fungují již od 4,0V i když již klesá hlasitost. Nepatrně by pomohlo nahrazení ochranné diody D1 nějakým Schotky typem, nebo její úplné vypuštění (nahrazení kouskem drátu).

Napájení všech obvodů 3,3V je přes jumpery JP3.3V. Tím je možné odpojit potřebné obvody třeba při programování.
IO RDA5807M nesnese napájení 5V a pokud máme programátor jen na 5V, mohl by "odejít" (sám jsem takto 2 kusy zničil).

Displej

V předchozí verzi jsem měl problém s rušením od multiplexu oled displeje. To jsem vyřešil přidáním diody D2 a kondenzátoru C19 (220µF) do napájení displeje. Samotný filtrační kondenzátor byl neúčinný. Tím se ale zpomalil náběh napětí na displeji při zapnutí a některé displeje nejsou schopny se zresetovat při zapnutí. Na to je potřeba pamatovat při nákupu displeje. Tyto, 0,96palce s jedním zlutým řádkem a zbytkem modrým mi fungují spolehlivě. Naopak, mnohé 1,3 palce, celé modré, bez možnosti změnit adresu jsou docela problematické. Také je potřeba dát si pozor na pořadí pinů. Některé displeje (1.3 palce) mají prohozené vývody napájení (+a -).

Jelikož jsem v původní verzi nevěděl, jak se zbavit rušení od multiplexu displeje, přidal jsem možnost displej vypínat. Tuto funkci jsem zachoval i v této verzi. Ušetří se tím pár mA, pokud je to potřeba.

Nízkofrekvenční zesilovač

Na výstup jsem dal dva nízkofrekvenční zesilovače TDA7052A v DIL pouzdře. Ty mohou dát až 1W do 8 Ohmů i při nízkém napájecím napětí. Navíc umožňují regulaci hlasitosti pomocí stejnosměrného napětí. Beze změny schématu lze použít též TDA7052B i když mají nepatrně jiné hodnoty některých parametrů. Ovládací napětí se získává z PWM převodníku na jednom výstupním pinu jednočipu. Napájeny jsou přímo ze vstupního konektoru, pouze přes ochrannou diodu. Podle katalogu snesou maximálně 18V. Výstup zesilovačů je symetrický (BTL princip = Bridge-tied-load = Do můstku zapojená zátěž) a výstup se zablokuje, pokud je rozdíl výstupních proudů jednotlivých zesilovačů větší než 100_mA. To ale umožňuje připojit přes oddělovací kondenzátory například stereofonní sluchátka třemi vodiči (L+P+Stínění) nesymetricky na + výstupy. Pro sluchátka je výkon i při 100_mA dostatečný.

Laděný obvod na vstupu

Rezonanční obvod L1/C16 na anténním vstupu je naladěn přibližně na střed pásma. Dal jsem ho tam spíše pro dobrý pocit. Subjektivně nepozoruji žádné zlepšení (ale ani zhoršení) citlivosti přijímače, po jeho přidání. Na objektivní změření nemám vybavení. (V doporučeném zapojení z datasheetu výrobce je nutný pro oddělení stínění sluchátkového kabelu, který slouží zároveň jako anténa).
Cívka L1 mi vyšla: 6 závitů drátem 0,8mm na vrták o průměru 5mm.
Na plošném spoji jsou i plošky pro případné připájení SMD verze této cívky.




     
RDA5807m assembled PCB side a
rda5807M assembled PCB side b
Radio with RDA5807M
Osazeno
přední strana
Osazeno
zadní strana
V provozu
     

Mechanické provedení

Celý přijímač je na jednom plošném spoji o rozměrech 100x45mm. Plošný spoj funguje jako subpanel. Z přední strany jsou ovládací prvky (tlačítka, rotační enkodér) a displej. Na zadní straně jsou téměř všechny ostatní součástky. Pouze pod displejem jsou z přední strany 3 blokovací kondenzátory 0,1µF v smd provedení.
Všechny vývodové keramické kondenzátory jsou na rozteč 5mm. Rovněž všechny odpory jsou na rozteč 5mm (odpory velikosti 204). Pokud bychom použili větší odpory (207) je potřeba je zapájet nastojato.

Rotační enkodér je možné zapájet z přední strany (vývody přímo do plošného spoje), nebo ho dát zezadu a upevnit k DPS centrální maticí. Vývody je pak nutné s DPS propojit kousky drátu. Výhoda téhle druhé možnosti je, že enkodér nevyčnívá příliš dopředu oproti ostatním součástkám.

Jumper JP3 umožňuje prohodit spínače A a B rotačního enkodéru, pokud by reagoval opačně.

     
Stereo radio with RDA5807m
Přední panel - DPS
     

Přední panel jsem nakreslil jako plošný spoj a nechal vyrobit v Číně.

Firmware

Firmware jsem napsal v editoru/kompilátoru MCS Bascom-AVR. Pro běh firmware je využit vnitřní RC oscilátor 8 MHz v Atmega. Proto je potřeba při programování jednočipu vypnout dělení kmitočtu osmi v nastavení konfiguraních bitů. Hex a .bin soubory pro Atmega328PB jsem uložil do sekce DOWNLOAD. Pro zobrazení kmitočtu jsem si vytvořil vlastní font - jakési pseudo sedmisegmentové číslice.

Pokud by měl někdo zájem si program upravit podle svých nápadů, mohu mu zdrojový kód poslat e-mailem. Upozorňuji, že je to v MCS Bascom-AVR. Občas někdo nechápe, že to NENÍ Arduino (soubor.INO).

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

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

Plošný spoj jsem ale navrhl i pro alternativní možnost taktování z externího krystalu 16 MHz. To umožňuje napsat si kompletně program v Arduinu (nebo v C++ nebo v čemkoli jiném), exportovat hex soubor a přes ISP konektor nahrát. Jak jsem viděl, existují v Arduinu pro trento obvod velice komplexní a jistě naprosto funkční knihovny (i třeba pokud jde o RDS).

Video s návodem k ovládání

Na youtube jsem dal video, jak rádio funguje. Obraz jsem nahrával telefonem a zvuk přímo ze sluchátkového výstupu rádia do vstupu zvukové karty PC. To proto, abych měl video se stereo zvukem.




Doplněno 20.10.2019

Změna ukládání stanic do paměti předvoleb

Původní způsob ukládání stanic do předvoleb fungoval tak, že při delším stisku tlačítka v ose rotačního enkodéru se právě nastavený kmitočet a právě zobrazený text RDS uložil na následující neobsazenou pozici v paměti předvoleb. Byly s tím trochu problémy, pokud se zrovna v okamžiku ukládání nezobrazil název stanice korektně.

Nový způsob funguje následovně:
Podržením tlačítka v ose enkodéru se na displeji zobrazí číslo následující volné pozice v paměti předvoleb a inverzně (v negativu) RDS text připravený k uložení. V tuto chvíli máme tři možnosti:

  1. Buď dalším krátkým stiskem tohoto tlačítka se to, co je zobrazeno uloží.
  2. Nebo můžeme rotačním enkodérem nastavit číslo některé nižší (již obsazené) pozice a tuto pozici přepsat novou stanicí.
  3. Nebo stiskem tlačítka BT3 (Displej/SCN+) ukládání zrušíme. Nic se neuloží.

Vymazání stanic z paměti je stále možné pouze hromadně, podržením tlačítka BT3 při zapnutí napájení. Zatím se mi do toho moc nechce, ale možná během dlouhých zimních večerů udělám kompletně nějaké komfortní ukládání a mazání, včetně zadání vlastního textu k uložené stanici.




Zbyly mi tu 2   1   0 destičky DPS. Pokud by měl někdo zájem, pošlu mu je za poštovné.
(Pro nečekaný zájem jsem objednal další DPS. Budu je mít odhadem tak za 2 až 3 týdny.)

Jarda, ok1hdu


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

Zpět (klikni)

O   R B N

O   kalendář
<<  Říjen  >>
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ů.