- IC PT2258
- Ako funguje PT2258 IC
- Schéma
- Súčasti sú povinné
- Arduino kód
- Testovanie obvodu riadenia hlasitosti digitálneho zvuku
- Ďalšie vylepšenie
Potenciometer je mechanické zariadenie, pomocou ktorého je možné nastaviť odpor podľa požadovanej hodnoty, a tým meniť prúd, ktorý ním prechádza. Existuje mnoho aplikácií pre potenciometer, ale väčšinou sa potenciometer používa ako regulátor hlasitosti pre zvukové zosilňovače.
Potenciometer nekontroluje zisk signálu, ale vytvára delič napätia, a preto sa vstupný signál zoslabuje. Takže v tomto projekte vám ukážem, ako zostaviť váš digitálny regulátor hlasitosti s IC PT2258 a prepojiť ho s Arduinom na reguláciu hlasitosti obvodu zosilňovača. Môžete tu tiež skontrolovať rôzne obvody súvisiace so zvukom, vrátane merača VU, obvodu ovládania tónov atď.
IC PT2258
Ako som už spomenul, PT2258 je integrovaný obvod vyrobený ako 6 -kanálový elektronický regulátor hlasitosti. Tento integrovaný obvod využíva technológiu CMOS špeciálne navrhnutú pre viackanálové audio-video aplikácie.
Tento IC poskytuje ovládacie rozhranie I2C s rozsahom útlmu 0 až -79 dB pri 1 dB / krok a dodáva sa v 20-pólovom balení DIP alebo SOP.
Medzi základné funkcie patrí,
- 6-vstupné a výstupné kanály (pre domáce zvukové systémy 5.1)
- Voliteľná adresa I2C (pre aplikáciu Daisy-chain)
- Vysoká separácia kanálov (pre aplikácie s nízkou hlučnosťou)
- S / N pomer> 100 dB
- Prevádzkové napätie je 5 až 9V
Ako funguje PT2258 IC
Tento IC vysiela a prijíma údaje z mikrokontroléra cez linky SCL a SDA. SDA a SCL tvoria rozhranie zbernice. Tieto vedenia musia byť vysoko zaistené dvoma 4,7 000 rezistormi, aby sa zabezpečila stabilná prevádzka.
Predtým, ako prejdeme k skutočnej prevádzke hardvéru, je tu podrobný funkčný popis integrovaného obvodu. ak toto všetko nechcete vedieť, môžete túto časť preskočiť, pretože všetku funkčnú časť spravuje knižnica Arduino.
Overovanie dát
- Dáta na linke SDA sa považujú za stabilné, keď je signál SCL VYSOKÝ.
- Stavy HIGH a LOW na linke SDA sa menia, až keď je SCL LOW.
Podmienka Štart a Stop
Podmienka spustenia sa aktivuje, keď
- SCL je nastavený na HIGH a
- SDA sa posúva z HIGH do stavu LOW.
Stav zastavenia sa aktivuje, keď
- SCL je nastavený na HIGH a
- SDA sa posúva z LOW do HIGH State
Poznámka! Táto informácia je veľmi užitočná na ladenie signálov.
Formát údajov
Každý bajt prenášaný na linku SDA pozostáva z 8 bitov, ktoré tvoria bajt. Za každým bajtom musí nasledovať potvrdzovací bit.
Poďakovanie
Potvrdenie zaručuje stabilnú a správnu činnosť. Počas potvrdzovacieho hodinového impulzu mikrokontrolér vytiahne kolík SDA VYSOKÝ presne v tomto okamihu, keď periférne zariadenie (zvukový procesor) strhne (NÍZKO) linku SDA.
Periférne zariadenie (PT2258) je teraz adresované a musí po prijatí bajtu vygenerovať potvrdenie, inak zostane linka SDA na vysokej úrovni počas deviateho (9.) hodinového impulzu. Ak sa to stane, hlavný vysielač vygeneruje informácie STOP, aby prerušil prenos.
To objasňuje, že nie je potrebné zaviesť platný prenos údajov.
Výber adresy
Adresa I2C tohto integrovaného obvodu závisí od stavu CODE1 (pin č. 17) a CODE2 (pin č. 4).
KÓD 1 (PIN č. 17) |
CODE2 (PIN č. 4) |
ŠESTICA ADRESA |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Logická výška = 1
Logická nízka = 0
Protokol rozhrania
Protokol rozhrania pozostáva z nasledujúcich prvkov:
- Štartovací bit
- Bajt adresy čipu
- ACK = Potvrdzovací bit
- A Dátový bajt
- Stop bit
Trochu upratovania
Po zapnutí IC je potrebné počkať najmenej 200 ms pred prenosom prvého dátového bitu, inak môže dôjsť k zlyhaniu dátového prenosu.
Po oneskorení je najskôr potrebné vyčistiť register odoslaním riadku „0XC0“ vi na linku I2C, čím sa zabezpečí správna činnosť.
Vyššie uvedený krok vymaže celý register, teraz musíme do registra nastaviť hodnotu, inak register uloží smetnú hodnotu a dostaneme pehavý výstup.
Pre zaistenie správneho nastavenia hlasitosti je potrebné do zoslabovača postupne zaslať násobok 10dB nasledovaný kódom 1dB, inak sa IC môže správať nenormálne. Nižšie uvedený diagram to viac objasňuje.
Obidve vyššie uvedené metódy budú fungovať správne.
Aby ste zaistili správnu funkciu, uistite sa, že rýchlosť prenosu dát I2C nikdy nepresiahne 100 kHz.
Takto môžete preniesť bajt na IC a zoslabiť vstupný signál. Vyššie uvedená časť sa dozviete, ako IC funguje, ale ako som už povedal, na komunikáciu s IC, ktorá spravuje všetok pevný kód, použijeme knižnicu Arduino a musíme iba volať niektoré funkcie.
Všetky vyššie uvedené informácie sú prevzaté z údajového listu, ďalšie informácie nájdete v ňom.
Schéma
Vyššie uvedený obrázok zobrazuje testovaciu schému obvodu ovládania hlasitosti založeného na PT2258. Je prevzatý z údajového listu a upravený podľa potreby.
Pre demonštráciu je obvod skonštruovaný na nepájivom nepájivom poli pomocou schémy zobrazenej vyššie.
Poznámka! Všetky komponenty sú umiestnené čo najtesnejšie, aby sa znížila parazitná kapacitná indukčnosť a odpor.
Súčasti sú povinné
- PT2258 IC - 1
- Arduino Nano radič - 1
- Všeobecná nepájivá doska - 1
- Skrutkovacia svorka 5 mm x 3 - 1
- Tlačidlo - 1
- 4,7 000 rezistor, 5% - 2
- 150K rezistor, 5% - 4
- 10k rezistor, 5% - 2
- Kondenzátor 10uF - 6
- Kondenzátor 0,1 uF - 1
- Prepojovacie vodiče - 10
Arduino kód
Pre jednoduchosť použijem knižnicu PT2258 od GitHub, ktorú vyrába sunrutcon.
Toto je veľmi dobre napísaná knižnica, preto som sa rozhodol ju použiť, ale keďže je veľmi stará, je trochu chybná a predtým, ako ju budeme môcť používať, musíme ju opraviť.
Najskôr si stiahnite a extrahujte knižnicu z úložiska GitHub.
Vyššie uvedené dva súbory získate po extrakcii.
#include #include
Ďalej otvorte súbor PT2258.cpp vo svojom obľúbenom textovom editore, používam program Poznámkový blok ++.
Vidíte, že „w“ knižnice drôtov je malými písmenami, čo je nekompatibilné s najnovšími verziami Arduina, a musíte ho nahradiť čiapkami „W“, to je ono.
Kompletný kód ovládača hlasitosti PT2258 nájdete na konci tejto časti. Tu sú vysvetlené dôležité časti programu.
Kód začneme zahrnutím všetkých požadovaných súborov knižníc. Knižnica Wire sa používa na komunikáciu medzi Arduino a PT2258. Knižnica PT2258 obsahuje všetky dôležité informácie a potvrdenia o časovaní I2C. EzButton knižnica sa používa pre komunikáciu s tlačidlami.
Namiesto použitia obrázkov kódu nižšie skopírujte všetky inštancie kódu zo súboru kódu a urobte ich formátované tak, ako sme to robili v iných projektoch.
#include
Ďalej urobte objekty pre dve tlačidlá a samotnú knižnicu PT2258.
PT2258 pt2258; tlačidlo ezButton_1 (2); tlačidlo ezButton_2 (4);
Ďalej definujte úroveň hlasitosti. Toto je predvolená úroveň hlasitosti, s ktorou tento IC začne.
Int objem = 40;
Ďalej inicializujte UART a nastavte frekvenciu hodín pre zbernicu I2C.
Serial.begin (9600); Wire.setClock (100000);
Je veľmi dôležité nastaviť hodiny I2C, inak nebude IC fungovať, pretože maximálna frekvencia hodín podporovaná týmto IC je 100 kHz.
Ďalej urobíme malú údržbu s príkazom if else, aby sme zaistili, že IC správne komunikuje so zbernicou I2C.
If (! Pt2258.init ()) Serial.printIn („PT2258 úspešne zahájené“); Else Serial.printIn („Nepodarilo sa spustiť PT2258“);
Ďalej nastavíme oneskorenie odskoku pre tlačidlá.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Nakoniec spustite IC PT2258 nastavením na predvolenú hlasitosť kanála a číslo PIN.
/ * Iniciaci PT s predvoleným objemom a Pin * / Pt2258.setChannelVolume (objem, 4); Pt2258.setChannelVolume (objem, 5);
Týmto sa označuje koniec časti Void Setup () .
V časti Loop musíme zavolať funkciu loop z triedy tlačidiel; je to knižničná norma.
Button_1.loop (); // Normy knižnice Button_2.loop (); // Knižničné normy
Nasledujúca časť, ak má znížiť hlasitosť.
/ * ak je stlačené tlačidlo 1, ak je splnená podmienka * / If (button_1.ispressed ()) {Volume ++; // Zvýšenie počítadla hlasitosti. // Príkaz if zaručuje, že objem neprekročí 79 If (objem> = 79) {Zväzok = 79; } Serial.print („zväzok:“); // tlač úrovne hlasitosti Serial.printIn (volume); / * nastavte hlasitosť pre kanál 4, ktorý je v PIN 9 PT2558 IC * / Pt2558.setChannelVolume (hlasitosť, 4); / * nastavte hlasitosť pre kanál 5, čo je PIN 10 z PT2558 IC * / Pt2558.setChannelVolume (hlasitosť, 5); }
Nasledujúca časť, ak má zvýšiť hlasitosť.
// To isté sa deje s tlačidlom 2 If (button_2.isPressed ()) {Volume--; // príkaz if zabezpečí, že úroveň hlasitosti neprekročí nulu. If (objem <= 0) Volume = 0; Serial.print („zväzok:“); Serial.printIn (zväzok); Pt2258.setChannelVolume (objem, 4); Pt2558.setChannelVolume (objem, 5); }
Testovanie obvodu riadenia hlasitosti digitálneho zvuku
Na testovanie obvodu sa použil nasledujúci prístroj
- Transformátor, ktorý má odbočku 13-0-13
- 2 4Ω 20W reproduktor ako záťaž.
- Zdroj zvuku (telefón)
V predchádzajúcom článku som vám ukázal, ako vyrobiť jednoduchý zosilňovač zvuku 2x32 Watt s TDA2050 IC, ktorý použijem aj pre túto ukážku.
Neusporiadal som mechanický potenciometer a skratoval dva vodiče s dvoma malými štartovacími káblami.
Teraz je možné pomocou dvoch tlačidiel ovládať hlasitosť zosilňovača.
Ďalšie vylepšenie
Obvod je možné ďalej upravovať, aby sa zlepšil jeho výkon. Vylepšenia ako je obvod je možné vykonať na doske plošných spojov, aby sa ďalej eliminoval šum generovaný digitálnou časťou integrovaného obvodu. Môžeme tiež pridať ďalší filter, aby sme vylúčili vysokofrekvenčné zvuky. Skontrolujte tiež ďalšie obvody zosilňovača zvuku a ďalšie projekty týkajúce sa zvuku.
Dúfam, že sa vám tento článok páčil a dozvedeli ste sa z neho niečo nové. Ak máte pochybnosti, môžete sa opýtať v komentároch nižšie alebo môžete využiť naše fóra na podrobnú diskusiu.