- IC PT2258
- So funktioniert der PT2258 IC
- Das Schema
- Erforderliche Komponenten
- Arduino Code
- Testen der digitalen Audio-Lautstärkeregelung
- Weitere Verbesserung
Ein Potentiometer ist ein mechanisches Gerät, mit dem man den Widerstand auf den gewünschten Wert einstellen und so den durch ihn fließenden Strom ändern kann. Es gibt viele Anwendungen für ein Potentiometer, aber meistens wird ein Potentiometer als Lautstärkeregler für Audioverstärker verwendet.
Ein Potentiometer regelt nicht die Verstärkung des Signals, sondern bildet einen Spannungsteiler, weshalb das Eingangssignal gedämpft wird. In diesem Projekt werde ich Ihnen zeigen, wie Sie Ihren digitalen Lautstärkeregler mit dem IC PT2258 bauen und ihn mit einem Arduino verbinden, um die Lautstärke einer Verstärkerschaltung zu steuern. Sie können hier auch verschiedene Audio-bezogene Schaltkreise überprüfen, einschließlich VU-Meter, Tonsteuerungsschaltkreis usw.
IC PT2258
Wie bereits erwähnt, ist der PT2258 ein IC, der als elektronischer 6 -Kanal- Lautstärkeregler verwendet wird. Dieser IC verwendet die CMOS-Technologie, die speziell für Mehrkanal-Audio-Video-Anwendungen entwickelt wurde.
Dieser IC bietet eine I2C-Steuerschnittstelle mit einem Dämpfungsbereich von 0 bis -79 dB bei 1 dB / Schritt und wird in einem 20-poligen DIP- oder SOP-Gehäuse geliefert.
Einige der grundlegenden Funktionen umfassen:
- 6-Eingangs- und Ausgangskanäle (für 5.1 Home Audio-Systeme)
- Wählbare I2C-Adresse (für Daisy-Chain-Anwendungen)
- Hohe Kanaltrennung (für rauscharme Anwendung)
- S / N-Verhältnis von> 100 dB
- Die Betriebsspannung beträgt 5 bis 9V
So funktioniert der PT2258 IC
Dieser IC sendet und empfängt Daten vom Mikrocontroller über SCL- und SDA-Leitungen. SDA und SCL bilden die Busschnittstelle. Diese Leitungen müssen von zwei 4,7K-Widerständen hochgezogen werden, um einen stabilen Betrieb zu gewährleisten.
Bevor wir zum eigentlichen Hardware-Betrieb übergehen, finden Sie hier die detaillierte Funktionsbeschreibung des IC. Wenn Sie dies alles nicht wissen möchten, können Sie diesen Teil überspringen, da der gesamte Funktionsteil von der Arduino-Bibliothek verwaltet wird.
Datenvalidierung
- Die Daten auf der SDA-Leitung gelten als stabil, wenn das SCL-Signal HIGH ist.
- Die Zustände HIGH und LOW der SDA-Leitung ändern sich nur, wenn die SCL LOW ist.
Start- und Stoppbedingung
Eine Startbedingung wird aktiviert, wenn
- Die SCL ist auf HIGH und eingestellt
- SDA wechselt von HIGH in LOW State.
Die Stoppbedingung wird aktiviert, wenn
- SCL ist auf HIGH und eingestellt
- SDA wechselt von LOW in HIGH State
Hinweis! Diese Informationen sind sehr nützlich zum Debuggen der Signale.
Datei Format
Jedes an die SDA-Leitung übertragene Byte besteht aus 8 Bits, die ein Byte bilden. Auf jedes Byte muss ein Bestätigungsbit folgen.
Wissen
Die Bestätigung gewährleistet einen stabilen und ordnungsgemäßen Betrieb. Während des Acknowledge Clock Pulse zieht der Mikrocontroller den SDA-Pin genau in dem Moment auf HIGH, in dem das Peripheriegerät (Audioprozessor) die SDA-Leitung herunterzieht (LOW).
Das Peripheriegerät (PT2258) ist jetzt adressiert und muss nach dem Empfang eines Bytes eine Bestätigung generieren. Andernfalls bleibt die SDA-Leitung während des neunten (9.) Taktimpulses auf hohem Pegel. In diesem Fall generiert der Master-Sender STOP-Informationen, um die Übertragung abzubrechen.
Damit ist keine gültige Datenübertragung mehr erforderlich.
Adressauswahl
Die I2C-Adresse dieses IC hängt vom Status von CODE1 (Pin Nr. 17) und CODE2 (Pin Nr. 4) ab.
CODE1 (PIN Nr. 17) |
CODE2 (PIN Nr. 4) |
HEX-ADRESSE |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Logik hoch = 1
Logik niedrig = 0
Schnittstellenprotokoll
Das Schnittstellenprotokoll besteht aus folgenden Elementen:
- Ein Startbit
- Ein Chip-Adressbyte
- ACK = Bestätigungsbit
- Ein Datenbyte
- Ein Stop-Bit
Ein bisschen Housekeeping
Nach dem Einschalten des IC muss mindestens 200 ms gewartet werden, bevor das erste Datenbit übertragen wird. Andernfalls kann die Datenübertragung fehlschlagen.
Nach der Verzögerung müssen Sie zunächst das Register löschen, indem Sie „0XC0“ über die I2C-Leitung senden. Dies stellt den ordnungsgemäßen Betrieb sicher.
Der obige Schritt löscht das gesamte Register. Jetzt müssen wir einen Wert für das Register festlegen. Andernfalls speichert das Register den Müllwert und wir erhalten eine sommersprossige Ausgabe.
Um eine ordnungsgemäße Lautstärkeregelung sicherzustellen, muss ein Vielfaches von 10 dB gefolgt von einem 1-dB-Code nacheinander an das Dämpfungsglied gesendet werden. Andernfalls kann sich der IC abnormal verhalten. Das folgende Diagramm verdeutlicht dies weiter.
Beide oben genannten Methoden funktionieren ordnungsgemäß.
Stellen Sie zur Gewährleistung eines ordnungsgemäßen Betriebs sicher, dass die I2C-Datenübertragungsgeschwindigkeit niemals 100 kHz überschreitet.
So können Sie ein Byte an den IC senden und das Eingangssignal dämpfen. Im obigen Abschnitt erfahren Sie, wie der IC funktioniert. Wie ich bereits sagte, werden wir eine Arduino-Bibliothek verwenden, um mit dem IC zu kommunizieren, der den gesamten Hardcode verwaltet, und wir müssen nur einige Funktionsaufrufe ausführen.
Alle oben genannten Informationen stammen aus dem Datenblatt. Weitere Informationen finden Sie darin.
Das Schema
Das obige Bild zeigt das Testschema der PT2258-basierten Lautstärkeregelungsschaltung. Es wird aus dem Datenblatt entnommen und je nach Bedarf geändert.
Zur Demonstration wird die Schaltung mit Hilfe des oben gezeigten Schaltplans auf einem lötfreien Steckbrett aufgebaut.
Hinweis! Alle Komponenten sind so eng wie möglich angeordnet, um die Induktivität und den Widerstand der parasitären Kapazität zu verringern.
Erforderliche Komponenten
- PT2258 IC - 1
- Arduino Nano Controller - 1
- Generisches Steckbrett - 1
- Schraubklemme 5 mm x 3 - 1
- Druckknopf - 1
- 4,7 K Widerstand, 5% - 2
- 150K Widerstand, 5% - 4
- 10k Widerstand, 5% - 2
- 10uF Kondensator - 6
- 0,1 uF Kondensator - 1
- Überbrückungsdrähte - 10
Arduino Code
Der Einfachheit halber werde ich eine PT2258-Bibliothek von GitHub verwenden, die von sunrutcon erstellt wurde.
Dies ist eine sehr gut geschriebene Bibliothek, deshalb habe ich beschlossen, sie zu verwenden, aber da sie sehr alt ist, ist sie ein wenig fehlerhaft und wir müssen sie reparieren, bevor wir sie verwenden können.
Laden Sie zunächst die Bibliothek herunter und extrahieren Sie sie aus dem GitHub-Repository.
Sie erhalten die beiden oben genannten Dateien nach dem Extrahieren.
#include #include
Öffnen Sie als Nächstes die Datei PT2258.cpp mit Ihrem bevorzugten Texteditor. Ich verwende Notepad ++.
Sie können sehen, dass das "w" der Drahtbibliothek in kleinen Buchstaben steht, was mit den neuesten Arduino-Versionen nicht kompatibel ist, und Sie müssen es durch eine Kappe "W" ersetzen, das war's.
Den vollständigen Code für den PT2258-Lautstärkeregler finden Sie am Ende dieses Abschnitts. Hier werden wichtige Teile des Programms erklärt.
Wir beginnen den Code, indem wir alle erforderlichen Bibliotheksdateien einschließen. Die Drahtbibliothek wird zur Kommunikation zwischen dem Arduino und dem PT2258 verwendet. Die PT2258-Bibliothek enthält alle kritischen I2C-Zeitinformationen und Bestätigungen. Die ezButton- Bibliothek wird als Schnittstelle zu den Drucktasten verwendet.
Anstatt die folgenden Codebilder zu verwenden, kopieren Sie alle Codeinstanzen aus der Codedatei und formatieren Sie sie wie in anderen Projekten
#einschließen
Erstellen Sie als Nächstes die Objekte für die beiden Schaltflächen und die PT2258-Bibliothek selbst.
PT2258 pt2258; ezButton button_1 (2); ezButton button_2 (4);
Definieren Sie als Nächstes die Lautstärke. Dies ist die Standardlautstärke, mit der dieser IC startet.
Int Volumen = 40;
Starten Sie als Nächstes den UART und stellen Sie die Taktfrequenz für den I2C-Bus ein.
Serial.begin (9600); Wire.setClock (100000);
Es ist sehr wichtig, den I2C-Takt einzustellen, da sonst der IC nicht funktioniert, da die von diesem IC unterstützte maximale Taktfrequenz 100 kHz beträgt.
Als nächstes führen wir eine kleine Reinigung mit einer if else- Anweisung durch, um sicherzustellen, dass der IC ordnungsgemäß mit dem I2C-Bus kommuniziert.
If (! Pt2258.init ()) Serial.printIn ("PT2258 erfolgreich initiiert"); Andernfalls Serial.printIn ("PT2258 konnte nicht initiiert werden");
Als nächstes stellen wir die Entprellungsverzögerung für die Drucktasten ein.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Starten Sie abschließend den PT2258-IC, indem Sie ihn mit der Standardkanallautstärke und der Pin-Nummer einrichten.
/ * PT mit Standardlautstärke und Pin anregen * / Pt2258.setChannelVolume (Lautstärke, 4); Pt2258.setChannelVolume (Volumen, 5);
Dies markiert das Ende des Abschnitts Void Setup () .
Im Abschnitt " Schleife " müssen wir die Schleifenfunktion aus der Schaltflächenklasse aufrufen. Es ist eine Bibliotheksnorm.
Button_1.loop (); // Bibliotheksnormen Button_2.loop (); // Bibliotheksnormen
Der folgende if- Abschnitt soll die Lautstärke verringern.
/ * wenn Taste 1 gedrückt wird, wenn die Bedingung erfüllt ist * / If (button_1.ispressed ()) {Volume ++; // Inkrementieren des Lautstärkezählers. // Diese if-Anweisung stellt sicher, dass das Volume nicht über 79 hinausgeht. If (volume> = 79) {Volume = 79; } Serial.print ("volume:"); // Drucken der Lautstärke Serial.printIn (Lautstärke); / * Lautstärke für Kanal 4 einstellen, der sich in PIN 9 des PT2558 IC befindet * / Pt2558.setChannelVolume (Lautstärke, 4); / * Lautstärke für Kanal 5 einstellen. Dies ist die PIN 10 des PT2558-IC. * / Pt2558.setChannelVolume (Lautstärke, 5); }}
Der folgende if- Abschnitt soll die Lautstärke erhöhen.
// Gleiches gilt für die Schaltfläche 2 If (button_2.isPressed ()) {Volume--; // Diese if-Anweisung stellt sicher, dass der Lautstärkepegel nicht unter Null fällt. Wenn (Volumen <= 0) Volumen = 0; Serial.print („Volume:“); Serial.printIn (Volume); Pt2258.setChannelVolume (Volume, 4); Pt2558.setChannelVolume (Volumen, 5); }}
Testen der digitalen Audio-Lautstärkeregelung
Zum Testen der Schaltung wurde die folgende Vorrichtung verwendet
- Ein Transformator mit einem 13-0-13 Tap
- 2 4Ω 20W Lautsprecher als Last.
- Audioquelle (Telefon)
In einem früheren Artikel habe ich Ihnen gezeigt, wie man einen einfachen 2x32-Watt-Audioverstärker mit TDA2050-IC herstellt. Ich werde das auch für diese Demonstration verwenden.
Ich habe das mechanische Potentiometer gestört und zwei Kabel mit zwei kleinen Überbrückungskabeln kurzgeschlossen.
Jetzt kann mit Hilfe von zwei Drucktasten die Lautstärke des Verstärkers gesteuert werden.
Weitere Verbesserung
Die Schaltung kann weiter modifiziert werden, um ihre Leistung zu verbessern. Verbesserungen wie die Schaltung können an einer Leiterplatte vorgenommen werden, um das durch den digitalen Abschnitt des IC erzeugte Rauschen weiter zu beseitigen. Wir können auch einen zusätzlichen Filter hinzufügen, um hochfrequente Geräusche zu unterdrücken. Schauen Sie sich auch andere Audioverstärkerschaltungen und andere Audio-Projekte an.
Ich hoffe, Ihnen hat dieser Artikel gefallen und Sie haben etwas Neues daraus gelernt. Wenn Sie Zweifel haben, können Sie in den Kommentaren unten nachfragen oder unsere Foren für detaillierte Diskussionen nutzen.