Digitální ovládání hlasitosti

Protože jsem asi před dvěma lety postavil elektronkový předzesilovač, bylo nutné nějak řídit hlasitost. Použil jsem dvojitý plastový potenciometr z GMe za cenu kolem 60 Korun českých, avšak neměl dobrý souběh kanálů. Poté jsem ho vyměnil za dvojitý přepínač složený z rezistorů, ten měl souběh skvělý, ale měl zas málo kroků, tuším, že pouze 25. A pro noční poslech byla už první poloha docela nahlas. Nechtělo se mi tyto rezistory měnit, a tak jsem koupil potenciometr značky Vishay (typ Sfernice, made in Czech Rep.). Očekával jsem, že za přibližně dvě stovky dostanu kvalitní potenciometr s dobrým souběhem. I tímto potenciometrem jsem byl zklamán, neukázal se být řešením. A protože už po těchto a jiným zkušenostech nemám s dvojitými potenciometry dobrou zkušenost (chce to prostě padnout na dobrý kus), rozhodl jsem se použít potenciometr digitální, který má téměř absolutní souběh. Při prohlížení stránek Analog Devices Inc. jsem narazil na zajímavý obvod AD5222. Jedná se o stereo digitální potenciometr, který má 128 kroků, což už je dostatečně jemný krok. Funguje na principu přepínání „běžce“ v síti rezistorů. Pro jeho řízení stačí pouze přepínač (inkrementace, dekrementace) a tlačítko, které přidává či ubírá kroky (podle polohy přepínače), to je vše. Žádný procesor. Také je možnost řídit každý kanál zvlášť - to jsem nevyužil. Potenciometr se vyrábí v několika hodnotách, 10k, 50k, 100k a 1M. Více o tomto obvodu najdete v datasheetu na stránkách výrobce. Avšak mít na elektronkovém zesilovači tlačítka pro řízení hlasitosti bych asi nesnesl, zvolil jsem tedy rotační enkodér. Ale než vymýšlet nějakou logiku pro dekódování krok/směr, přecijen jsem použil malý procesor a napsal jsem si jednoduchý prográmek pro dekódování rotačního enkodéru.
Součástky a poznámky ke stavbě: Pro zaryté odpůrce procesorů jsem do schématu přidal i tlačítko a přepínač, procesor se tedy použít nemusí. Pro ty ostatní není nutné tlačítka používat. Použitý procesor je PIC16F676-I-S/L. Může to být i jiný typ, já ho bral z jednoduchého důvodu - byl skladem v GMe. Navrhl jsem si malý plošňák - jeho motiv zde ani z důvodu jednoduchosti nebudu uvádět. Celou konstrukci jsem pojal v SMT.
Hodnoty součástek jsou uvedené ve schématu a není potřeba je striktně dodržovat, jen u rotačního enkodéru nedoporučuji zvolit kapacitu více než 33nF - nelze pak dosahovat více než cca 10kroků za vteřinu, záleží na typu enkodéru a napsané funkci pro jeho dekódování. Hodnoty rezistorů R3 a R4 jsem zvolil 4k12. Takovou hodnotu proto, že jednoduše byly po ruce. Vyhoví ale jakákoliv hodnota od 4k do 10k. Hodnota rezistorů před LEDkami je ve schématu 600R, na plošném spoji na fotografii je však 470R, LEDky úplně chybí. Měl jsem je pouze na odzkoušení procesoru a signalizaci směru otáčení. Nakonec jsem zas odpájel (použil jsem klasické vývodové). Procesor jsem programoval přes ICSP přímo na plošém spoji, drátky jsem napájel přímo na nožičky procesoru, po odzkoušení a odladění programu jsem je zas odpájel :P Pro ty, kterým stačí přepínač a tlačítko, nemusí použít procesor a s ním připojení součástky vůbec. Avšak rezistory R3 a R4 se použít musí v každém případě.
Na závěr bych ještě doplnil, že krajní „dráty“ potenciometru jsou na pinech A1 a B1 (A2 a B2 pro druhý kanál), běžce jsou pak na vývodech W1 a W2, v datasheetu je to pěkně vidět. Ještě bych doplnil, že obvod má takovou vlasnost, že po připojení napájení je běžec potenciometru přibližně ve středu odporové sítě (na obou kanálech). To je mimojiné další důvod, proč jsem použil procesor - po zapnutí naposílám dostatečný počet impulzů, abych potenciometr „vynuloval“. Napájecí napětí je stejnosměrné, 5V (maximálně 7V), doporučuji použít stabilizátor.
Kdo by měl zájem o návrh plošného spoje případně o program do procesoru, nebojte se mi ozvat.
Zde je schéma a fotografie finálního výrobku: