- IC PT2258
- Kā darbojas PT2258 IC
- Shēma
- Nepieciešamās sastāvdaļas
- Arduino kods
- Digitālās audio skaļuma vadības ķēdes pārbaude
- Papildu uzlabošana
Potenciometrs ir mehāniska ierīce, ar kuras palīdzību var iestatīt pretestību atbilstoši vēlamajai vērtībai, tādējādi mainot strāvu, kas iet caur to. Potenciometram ir daudz lietojumu, taču pārsvarā potenciometru izmanto kā skaņas pastiprinātāju skaļuma regulatoru.
Potenciometrs nekontrolē signāla pastiprinājumu, bet tas veido sprieguma dalītāju, un tāpēc ieejas signāls tiek vājināts. Tāpēc šajā projektā es jums parādīšu, kā izveidot savu digitālo skaļuma regulatoru ar IC PT2258 un saskarni ar Arduino, lai kontrolētu pastiprinātāja ķēdes skaļumu. Šeit varat pārbaudīt arī dažādas ar audio saistītas shēmas, tostarp VU mērītāju, toņu vadības ķēdi utt.
IC PT2258
Kā jau minēju iepriekš, PT2258 ir mikroshēma, kas paredzēta izmantošanai kā 6 kanālu elektroniskais skaļuma regulators, šajā IC tiek izmantota CMOS tehnoloģija, kas īpaši izstrādāta daudzkanālu audio-video lietojumprogrammām.
Šis IC nodrošina I2C vadības saskarni ar vājināšanas diapazonu no 0 līdz -79dB pie 1dB / solī un nāk ar 20 kontaktu DIP vai SOP pakotni.
Dažas pamatfunkcijas ietver,
- 6 ieejas un izejas kanāli (5.1 mājas audio sistēmām)
- Atlasāma I2C adrese (Daisy-chain lietojumprogrammai)
- Augsta kanāla atdalīšana (lietošanai ar zemu trokšņa līmeni)
- S / N attiecība> 100 dB
- Darba spriegums ir no 5 līdz 9V
Kā darbojas PT2258 IC
Šis IC pārraida un saņem datus no mikrokontrollera, izmantojot SCL un SDA līnijas. SDA un SCL veido kopnes saskarni. Lai nodrošinātu stabilu darbību, šīs līnijas ir jāvelk augstu ar diviem 4,7 K rezistoriem.
Pirms mēs dodamies uz faktisko aparatūras darbību, šeit ir detalizēts IC funkcionālais apraksts. ja nevēlaties to visu zināt, varat izlaist šo daļu, jo visu funkcionālo daļu pārvalda Arduino bibliotēka.
Datu pārbaude
- Dati uz SDA līnijas tiek uzskatīti par stabiliem, ja SCL signāls ir AUGSTS.
- SDA līnijas HIGH un LOW stāvokļi mainās tikai tad, kad SCL ir LOW.
Sākuma un apturēšanas stāvoklis
Sākuma nosacījums tiek aktivizēts, kad
- SCL ir iestatīts uz HIGH un
- SDA pāriet no HIGH uz LOW State.
Stop nosacījums tiek aktivizēts, kad
- SCL ir iestatīts uz HIGH un
- SDA pāriet no LOW uz HIGH stāvokli
Piezīme! Šī informācija ir ļoti noderīga signālu atkļūdošanai.
Datu formāts
Katrs baits, kas pārsūtīts uz SDA līniju, sastāv no 8 bitiem, kas veido baitu. Katram baitam jāpievieno atzīšanas bits.
Pateicība
Apstiprinājums nodrošina stabilu un pareizu darbību. Pulksteņa apstiprināšanas impulsa laikā mikrokontrolieris velk SDA tapu HIGH tieši tajā brīdī, kad perifērijas ierīce (audio procesors) velk SDA līniju (LOW).
Tagad perifērijas ierīce (PT2258) ir adresēta, un tai pēc baita saņemšanas ir jāizveido apstiprinājums, pretējā gadījumā SDA līnija paliks Augsta līmenī devītā (9.) pulksteņa impulsa laikā. Ja tas notiks, galvenais raidītājs ģenerēs STOP informāciju, lai pārtrauktu pārsūtīšanu.
Tas novērš nepieciešamību pēc derīgas datu pārsūtīšanas.
Adreses atlase
Šīs IC I2C adrese ir atkarīga no stāvokļa CODE1 (tapas Nr.17) un CODE2 (tapas Nr.4).
KODS1 (PIN Nr. 17) |
KODS2 (PIN Nr. 4) |
HEKSA ADRESE |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Loģika Augsta = 1
Loģika zema = 0
Saskarnes protokols
Saskarnes protokols sastāv no sekojošā:
- Sākuma bits
- Mikroshēmas adreses baits
- ACK = Apstiprināšanas bits
- Datu baits
- Stop bits
Nedaudz Mājturība
Pēc tam, kad IC ir ieslēgts, pirms pirmā datu bita pārsūtīšanas jāgaida vismaz 200 ms, pretējā gadījumā datu pārsūtīšana var neizdoties.
Pēc kavēšanās vispirms ir jādzēš reģistrs, nosūtot “0XC0” vi I2C līniju, tas nodrošina pareizu darbību.
Iepriekš minētais solis notīra visu reģistru, tagad mums ir jāiestata reģistra vērtība, pretējā gadījumā reģistrs saglabā atkritumu vērtību un mēs iegūstam vasaras raibumu.
Lai nodrošinātu pareizu skaļuma pielāgošanu, ir nepieciešams secībā nosūtīt vājinātājam 10 dB, kam seko 1 dB kods, pretējā gadījumā IC var rīkoties nenormāli. Zemāk redzamā diagramma to vairāk paskaidro.
Abas iepriekš minētās metodes darbosies pareizi.
Lai nodrošinātu pareizu darbību, pārliecinieties, ka I2C datu pārraides ātrums nekad nepārsniedz 100KHz.
Tā jūs varat pārsūtīt baitu uz IC un vājināt ieejas signālu. Iepriekšējā sadaļa ir paredzēta, lai uzzinātu, kā darbojas IC, taču, kā jau teicu iepriekš, mēs izmantosim Arduino bibliotēku, lai sazinātos ar IC, kas pārvalda visu cieto kodu, un mums vienkārši jāveic daži funkciju izsaukumi.
Visa iepriekš minētā informācija ir ņemta no datu lapas, lai iegūtu papildinformāciju, lūdzu, skatiet to.
Shēma
Iepriekš redzamajā attēlā parādīta PT2258 bāzes skaļuma kontroles ķēdes testa shēma. Tas tiek ņemts no datu lapas un mainīts atbilstoši vajadzībām.
Demonstrācijai shēma tiek konstruēta uz bez lodēšanas maizes dēļa, izmantojot iepriekš parādīto shēmu.
Piezīme! Visas sastāvdaļas ir izvietotas pēc iespējas tuvāk, lai samazinātu parazitārās kapacitātes induktivitāti un pretestību.
Nepieciešamās sastāvdaļas
- PT2258 IC - 1
- Arduino Nano kontrolieris - 1
- Vispārējs maizes dēlis - 1
- Skrūves spaile 5mm x 3 - 1
- Spiedpoga - 1
- 4.7K rezistors, 5% - 2
- 150K rezistors, 5% - 4
- 10 k rezistors, 5% - 2
- 10uF kondensators - 6
- 0.1uF kondensators - 1
- Džemperu vadi - 10
Arduino kods
Vienkāršības labad es izmantošu PT2258 bibliotēku no GitHub, kuru izgatavo sunrutcon.
Šī ir ļoti labi uzrakstīta bibliotēka, tāpēc es esmu nolēmis to izmantot, taču, tā kā tā ir ļoti veca, tā ir nedaudz buggy, un mums tā jālabo, pirms mēs to varam izmantot.
Vispirms lejupielādējiet un izvelciet bibliotēku no GitHub krātuves.
Pēc ekstrakcijas jūs saņemsiet iepriekš minētos divus failus.
# iekļaut # iekļaut
Pēc tam atveriet failu PT2258.cpp ar iecienītāko teksta redaktoru, es izmantoju Notepad ++.
Var redzēt, ka vadu bibliotēkas “w” ir maziem burtiem, kas nav saderīgs ar jaunākajām Arduino versijām, un tas ir jāaizstāj ar vāciņiem “W”, tas arī viss.
Pilns PT2258 skaļuma kontrollera kods ir atrodams šīs sadaļas beigās. Šeit ir izskaidrotas svarīgas programmas daļas.
Mēs sākam kodu, iekļaujot visus nepieciešamos bibliotēku failus. Wire bibliotēka tiek izmantota saziņai starp Arduino un PT2258. PT2258 bibliotēka satur visu kritisko I2C laika informāciju un apstiprinājumus. EzButton bibliotēka tiek izmantota, lai saskarne ar spiedpogām.
Tā vietā, lai izmantotu zem koda attēlus, nokopējiet visus koda gadījumus no koda faila un izveidojiet tos formatētus, kā mēs to darījām citos projektos
# iekļaut
Pēc tam izveidojiet objektus abām pogām un pašu PT2258 bibliotēku.
PT2258 pt2258; poga ezButton_1 (2); poga ezButton_2 (4);
Pēc tam definējiet skaļuma līmeni. Tas ir noklusējuma skaļuma līmenis, ar kuru sāksies šī IC.
Int tilpums = 40;
Pēc tam sāciet UART un iestatiet I2C kopnes pulksteņa frekvenci.
Sērijas sākums (9600); Wire.setClock (100000);
Ir ļoti svarīgi iestatīt I2C pulksteni, pretējā gadījumā IC nedarbosies, jo šī IC atbalstītā maksimālā pulksteņa frekvence ir 100KHz.
Pēc tam mēs veicam nelielu mājturību ar paziņojumu if else , lai nodrošinātu, ka IC pareizi sazinās ar I2C kopni.
If (! Pt2258.init ()) Serial.printIn (“PT2258 veiksmīgi uzsākta”); Else Serial.printIn (“Neizdevās uzsākt PT2258”);
Tālāk mēs iestatām spiedpogu atcelšanas aizkavi.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Visbeidzot, ieslēdziet PT2258 IC, iestatot to ar noklusējuma kanāla skaļumu un PIN numuru.
/ * Inicē PT ar noklusējuma skaļumu un Pin * / Pt2258.setChannelVolume (apjoms, 4); Pt2258.setChannelVolume (apjoms, 5);
Tas iezīmē sadaļas Void Setup () beigas.
Sadaļā Loop mums jāizsauc cilpa funkcija no pogas klases; tā ir bibliotēkas norma.
Button_1.loop (); // Bibliotēkas normas Button_2.loop (); // Bibliotēkas normas
Ja sadaļā ir paredzēts samazināt skaļumu, zemāk ir norādīts.
/ * ja tiek nospiesta poga 1, ja nosacījums ir patiess * / Ja (poga_1.izspieda ()) {Sējums ++; // Skaļuma skaitītāja palielināšana. // Šis, ja paziņojums nodrošina, ka apjoms nepārsniedz 79 Ja (tilpums> = 79) {Sējums = 79; } Serial.print (“apjoms:“); // izdrukāt skaļuma līmeni Serial.printIn (apjoms); / * iestatiet skaļumu 4. kanālam, kas atrodas PT2558 IC * / Pt2558.setChannelVolume (apjoms, 4) 9. PIN; / * iestatiet skaļumu 5. kanālam, kas ir PT2558 IC * / Pt2558.setChannelVolume (apjoms, 5) PIN 10; }
Tālāk, ja sadaļai ir paredzēts palielināt skaļumu.
// Tas pats notiek ar pogu 2 If (button_2.isPressed ()) {Volume--; // tas, ja paziņojums nodrošina, ka skaļuma līmenis nepārsniedz nulli. Ja (tilpums <= 0) Skaļums = 0; Serial.print (“apjoms:“); Serial.printIn (apjoms); Pt2258.setChannelVolume (apjoms, 4); Pt2558.setChannelVolume (apjoms, 5); }
Digitālās audio skaļuma vadības ķēdes pārbaude
Lai pārbaudītu ķēdi, tika izmantots šāds aparāts
- Transformators ar 13-0-13 pieskārienu
- 2 4Ω 20W skaļrunis kā slodze.
- Audio avots (tālrunis)
Iepriekšējā rakstā es jums parādīju, kā izveidot vienkāršu 2x32 vatu audio pastiprinātāju ar TDA2050 IC, es to izmantošu arī šai demonstrācijai.
Esmu traucējis mehānisko potenciometru un saīsinājis divus vadus ar diviem maziem džempera kabeļiem.
Tagad ar divu spiedpogu palīdzību var kontrolēt pastiprinātāja skaļumu.
Papildu uzlabošana
Kontūru var turpināt modificēt, lai uzlabotu tā darbību. PCB var veikt tādus uzlabojumus kā shēma, lai vēl vairāk novērstu troksni, ko rada IC digitālā daļa. Mēs varam pievienot arī papildu filtru, lai noraidītu augstas frekvences trokšņus. Pārbaudiet arī citas audio pastiprinātāju shēmas un citus ar audio saistītus projektus.
Es ceru, ka jums patika šis raksts un uzzinājāt no tā kaut ko jaunu. Ja jums ir kādas šaubas, varat jautāt zemāk esošajos komentāros vai arī izmantot mūsu forumus detalizētai diskusijai.