- IC PT2258
- Jak funguje PT2258 IC
- Schéma
- Požadované komponenty
- Arduino kód
- Testování obvodu ovládání hlasitosti digitálního zvuku
- Další vylepšení
Potenciometr je mechanické zařízení, pomocí kterého lze nastavit odpor podle požadované hodnoty, a tím změnit proud, který jím prochází. Existuje mnoho aplikací pro potenciometr, ale většinou se potenciometr používá jako regulátor hlasitosti pro audio zesilovače.
Potenciometr nekontroluje zisk signálu, ale tvoří dělič napětí, a proto je vstupní signál zeslaben. V tomto projektu vám tedy ukážu, jak sestavit digitální ovladač hlasitosti s IC PT2258 a propojit jej s Arduinem pro ovládání hlasitosti obvodu zesilovače. Zde můžete také zkontrolovat různé obvody související se zvukem, včetně měřiče VU, obvodu ovládání tónu atd.
IC PT2258
Jak jsem již zmínil dříve, PT2258 je integrovaný obvod vyrobený jako 6 -kanálový elektronický regulátor hlasitosti, tento integrovaný obvod využívá technologii CMOS speciálně navrženou pro vícekanálové audio-video aplikace.
Tento IC poskytuje ovládací rozhraní I2C s rozsahem útlumu 0 až -79 dB při 1 dB / krok a je dodáván v 20kolíkovém DIP nebo SOP balíčku.
Mezi základní funkce patří,
- 6 vstupních a výstupních kanálů (pro domácí audio systémy 5.1)
- Volitelná adresa I2C (pro aplikaci Daisy-chain)
- Vysoká kanálová separace (pro aplikace s nízkou hlučností)
- Poměr S / N> 100 dB
- Provozní napětí je 5 až 9V
Jak funguje PT2258 IC
Tento IC vysílá a přijímá data z mikrokontroléru prostřednictvím linek SCL a SDA. SDA a SCL tvoří rozhraní sběrnice. Aby bylo zajištěno stabilní fungování, musí být tyto linky taženy vysoko dvěma rezistory 4,7 kB.
Než půjdeme ke skutečnému fungování hardwaru, je zde podrobný funkční popis IC. pokud toto všechno nechcete vědět, můžete tuto část přeskočit, protože veškerá funkční část je spravována knihovnou Arduino.
Ověření dat
- Data na lince SDA jsou považována za stabilní, pokud je signál SCL VYSOKÝ.
- Stavy HIGH a LOW řádku SDA se mění, pouze když je SCL LOW.
Podmínka spuštění a zastavení
Startovací podmínka se aktivuje, když
- SCL je nastaven na HIGH a
- SDA přechází ze stavu HIGH do stavu LOW.
Stav zastavení se aktivuje, když
- SCL je nastaven na HIGH a
- SDA přechází ze stavu LOW do stavu HIGH
Poznámka! Tato informace je velmi užitečná pro ladění signálů.
Datový formát
Každý bajt přenášený na linku SDA sestává z 8 bitů, které tvoří bajt. Za každým bajtem musí následovat potvrzovací bit.
Potvrzení
Potvrzení zajišťuje stabilní a řádný provoz. Během potvrzovacího hodinového impulsu mikrokontrolér vytáhne pin SDA HIGH v tomto přesném okamžiku, kdy periferní zařízení (zvukový procesor) strhne (LOW) linku SDA.
Periferní zařízení (PT2258) je nyní adresováno a musí po přijetí bajtu vygenerovat potvrzení, jinak zůstane linka SDA na vysoké úrovni během devátého (9.) hodinového impulzu. Pokud k tomu dojde, hlavní vysílač vygeneruje informace STOP, aby přenos přerušil.
Tím se vyjasňuje, že pro platný přenos dat není třeba existovat.
Výběr adresy
Adresa I2C tohoto IC závisí na stavu CODE1 (pin č. 17) a CODE2 (pin č. 4).
CODE1 (PIN č. 17) |
CODE2 (PIN č. 4) |
ŠESTICHÁ ADRESA |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Logická vysoká = 1
Logická nízká = 0
Protokol rozhraní
Protokol rozhraní se skládá z následujících:
- Počáteční bit
- Bajt adresy čipu
- ACK = Potvrzovací bit
- Datový bajt
- Stop bit
Trochu úklid
Po zapnutí IC je třeba počkat alespoň 200 ms před přenosem prvního datového bitu, jinak může dojít k selhání přenosu dat.
Po prodlevě je nejprve třeba vymazat registr odesláním „0XC0“ vi na linku I2C, což zajišťuje správnou funkci.
Výše uvedený krok vymaže celý registr, nyní musíme nastavit hodnotu registru, jinak registr uloží nesmyslnou hodnotu a dostaneme pihový výstup.
Aby bylo zajištěno správné nastavení hlasitosti, je nutné poslat násobek 10dB následovaný 1dB kódem do atenuátoru postupně, jinak se IC může chovat abnormálně. Níže uvedený diagram to více objasňuje.
Obě výše uvedené metody budou fungovat správně.
Abyste zajistili správnou funkci, ujistěte se, že rychlost přenosu dat I2C nikdy nepřesáhne 100 kHz.
Tak můžete přenášet bajt na IC a zeslabovat vstupní signál. Výše uvedená část se dozvíte, jak IC funguje, ale jak jsem již řekl, budeme ke komunikaci s IC používat knihovnu Arduino, která spravuje veškerý pevný kód, a my jen potřebujeme provést několik volání funkcí.
Všechny výše uvedené informace jsou převzaty z datového listu, další informace najdete v tomto listu.
Schéma
Výše uvedený obrázek ukazuje testovací schéma obvodu ovládání hlasitosti na bázi PT2258. Je převzato z datasheetu a upraveno podle potřeby.
Pro demonstraci je obvod konstruován na nepájeném nepájivém poli pomocí schématu zobrazeného výše.
Poznámka! Všechny komponenty jsou umístěny co nejblíže ke snížení parazitní kapacitní indukčnosti a odporu.
Požadované komponenty
- PT2258 IC - 1
- Arduino Nano Controller - 1
- Obecná prkénka - 1
- Šroubová svorka 5 mm x 3 - 1
- Tlačítko - 1
- 4,7K rezistor, 5% - 2
- 150K rezistor, 5% - 4
- 10k rezistor, 5% - 2
- Kondenzátor 10uF - 6
- Kondenzátor 0,1 uF - 1
- Propojovací dráty - 10
Arduino kód
Pro zjednodušení použiji knihovnu PT2258 od GitHub, kterou vytvořil sunrutcon.
Jedná se o velmi dobře napsanou knihovnu, proto jsem se rozhodl ji použít, ale protože je velmi stará, je trochu buggy a musíme ji opravit, než ji budeme moci použít.
Nejprve si stáhněte a extrahujte knihovnu z úložiště GitHub.
Po extrakci získáte výše uvedené dva soubory.
# zahrnout # zahrnout
Dále otevřete soubor PT2258.cpp pomocí svého oblíbeného textového editoru, používám Poznámkový blok ++.
Vidíte, že písmeno „w“ knihovny vodičů je napsáno malými písmeny, což je nekompatibilní s nejnovějšími verzemi Arduina, a musíte jej nahradit písmeny „W“, to je ono.
Kompletní kód ovladače hlasitosti PT2258 najdete na konci této části. Zde jsou vysvětleny důležité části programu.
Spustíme kód zahrnutím všech požadovaných souborů knihoven. Knihovna Wire se používá ke komunikaci mezi Arduino a PT2258. Knihovna PT2258 obsahuje všechny důležité informace a potvrzení o časování I2C. EzButton knihovna se používá pro komunikaci s tlačítky.
Místo použití níže uvedených obrázků kódu zkopírujte všechny instance kódu ze souboru kódu a proveďte jejich formátování, jako jsme to dělali v jiných projektech
#zahrnout
Dále vytvořte objekty pro dvě tlačítka a samotnou knihovnu PT2258.
PT2258 pt2258; tlačítko ezButton_1 (2); tlačítko ezButton_2 (4);
Dále definujte úroveň hlasitosti. Toto je výchozí úroveň hlasitosti, se kterou tento IC začne.
Int objem = 40;
Dále spusťte UART a nastavte taktovací frekvenci pro sběrnici I2C.
Serial.begin (9600); Wire.setClock (100000);
Je velmi důležité nastavit hodiny I2C, jinak IC nebude fungovat, protože maximální frekvence hodin podporovaná tímto IC je 100KHz.
Dále provedeme malý úklid s příkazem if else , abychom zajistili, že IC správně komunikuje se sběrnicí I2C.
If (! Pt2258.init ()) Serial.printIn („PT2258 úspěšně zahájeno“); Else Serial.printIn („Nepodařilo se zahájit PT2258“);
Dále nastavíme zpoždění odskoku pro tlačítka.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Nakonec spusťte PT2258 IC nastavením na výchozí hlasitost kanálu a číslo PIN.
/ * Zahájení PT s výchozím objemem a Pin * / Pt2258.setChannelVolume (objem, 4); Pt2258.setChannelVolume (objem, 5);
Tím je označen konec části Void Setup () .
V části Loop musíme zavolat funkci smyčky z třídy tlačítka; je to norma knihovny.
Button_1.loop (); // Normy knihovny Button_2.loop (); // Normy knihovny
Níže pokud část je pro snížení hlasitosti.
/ * pokud je stisknuto tlačítko 1, pokud je podmínka splněna * / If (button_1.ispressed ()) {Volume ++; // Zvýšení počitadla objemu. // Příkaz if zajišťuje, že objem nepřesáhne 79 If (volume> = 79) {Volume = 79; } Serial.print („svazek:“); // tisk úrovně hlasitosti Serial.printIn (volume); / * nastavit hlasitost pro kanál 4, který je v PIN 9 PT2558 IC * / Pt2558.setChannelVolume (hlasitost, 4); / * nastavit hlasitost pro kanál 5, což je PIN 10 na PT2558 IC * / Pt2558.setChannelVolume (hlasitost, 5); }
Níže pokud část je pro zvýšení hlasitosti.
// Totéž se stane s tlačítkem 2 If (button_2.isPressed ()) {Volume--; // příkaz if zajišťuje, že úroveň hlasitosti neklesne pod nulu. If (volume <= 0) Volume = 0; Serial.print („svazek:“); Serial.printIn (svazek); Pt2258.setChannelVolume (objem, 4); Pt2558.setChannelVolume (objem, 5); }
Testování obvodu ovládání hlasitosti digitálního zvuku
K testování obvodu byl použit následující přístroj
- Transformátor, který má 13-0-13 Tap
- 2 4Ω 20W reproduktor jako zátěž.
- Zdroj zvuku (telefon)
V předchozím článku jsem vám ukázal, jak vyrobit jednoduchý zesilovač zvuku 2x32 Watt s TDA2050 IC, který také použiji pro tuto demonstraci.
Narušil jsem mechanický potenciometr a zkratoval dva vodiče dvěma malými propojovacími kabely.
Nyní lze pomocí dvou tlačítek ovládat hlasitost zesilovače.
Další vylepšení
Obvod lze dále upravit, aby se zlepšil jeho výkon. Vylepšení, jako je obvod, lze provést na PCB, aby se dále eliminoval šum generovaný digitální částí IC. Můžeme také přidat další filtr, abychom odmítli vysokofrekvenční zvuky. Podívejte se také na další obvody audio zesilovače a další projekty související se zvukem.
Doufám, že se vám tento článek líbil a dozvěděli jste se z něj něco nového. Máte-li jakékoli pochybnosti, můžete se zeptat v komentářích níže nebo můžete použít naši fóra pro podrobnou diskusi.