- IC PT2258
- Πώς λειτουργεί το PT2258 IC
- Το Σχηματικό
- Απαιτούμενα στοιχεία
- Κωδικός Arduino
- Δοκιμή του κυκλώματος ελέγχου έντασης ήχου ψηφιακού ήχου
- Περαιτέρω βελτίωση
Ένα ποτενσιόμετρο είναι μια μηχανική συσκευή που χρησιμοποιεί την οποία μπορεί να ρυθμίσει την αντίσταση σύμφωνα με την επιθυμητή τιμή, αλλάζοντας έτσι το ρεύμα που διέρχεται από αυτό. Υπάρχουν πολλές εφαρμογές για ένα ποτενσιόμετρο, αλλά ως επί το πλείστον ένα ποτενσιόμετρο χρησιμοποιείται ως ελεγκτής έντασης ήχου για ενισχυτές ήχου.
Ένα ποτενσιόμετρο δεν ελέγχει το κέρδος του σήματος, αλλά σχηματίζει ένα διαχωριστικό τάσης και γι 'αυτό το σήμα εισόδου εξασθενεί. Έτσι, σε αυτό το έργο, θα σας δείξω πώς να φτιάξετε τον ψηφιακό σας ελεγκτή έντασης με το IC PT2258 και να το συνδέσετε με ένα Arduino για τον έλεγχο της έντασης του κυκλώματος ενισχυτή. Μπορείτε επίσης να ελέγξετε διάφορα κυκλώματα που σχετίζονται με τον ήχο εδώ, όπως μετρητή VU, κύκλωμα ελέγχου τόνων κ.λπ.
IC PT2258
Όπως ανέφερα νωρίτερα, το PT2258 είναι ένα IC κατασκευασμένο για χρήση ως ηλεκτρονικός ελεγκτής έντασης 6 καναλιών , αυτό το IC χρησιμοποιεί τεχνολογία CMOS ειδικά σχεδιασμένη για εφαρμογές πολλαπλών καναλιών ήχου-βίντεο.
Αυτό το IC παρέχει διασύνδεση ελέγχου I2C με εύρος εξασθένησης 0 έως -79dB σε 1dB / βήμα και έρχεται σε πακέτο DIP ή SOP 20 ακίδων.
Μερικά από τα βασικά χαρακτηριστικά περιλαμβάνουν,
- 6-κανάλια εισόδου και εξόδου (για 5.1 οικιακά συστήματα ήχου)
- Επιλέξιμη διεύθυνση I2C (Για εφαρμογή Daisy-chain)
- Διαχωρισμός υψηλού καναλιού (για εφαρμογή χαμηλού θορύβου)
- Αναλογία S / N> 100dB
- Η τάση λειτουργίας είναι 5 έως 9V
Πώς λειτουργεί το PT2258 IC
Αυτό το IC μεταδίδει και λαμβάνει δεδομένα από τον μικροελεγκτή μέσω γραμμών SCL και SDA. Τα SDA και SCL αποτελούν τη διεπαφή διαύλου. Αυτές οι γραμμές πρέπει να τραβηχτούν ψηλά από δύο αντιστάσεις 4.7K για να διασφαλιστεί η σταθερή λειτουργία.
Πριν πάμε στην πραγματική λειτουργία υλικού, ακολουθεί η αναλυτική λειτουργική περιγραφή του IC. αν δεν θέλετε να μάθετε όλα αυτά, μπορείτε να παραλείψετε αυτό το μέρος, διότι όλο το λειτουργικό μέρος διαχειρίζεται η βιβλιοθήκη Arduino.
Επικύρωση δεδομένων
- Τα δεδομένα στη γραμμή SDA θεωρούνται σταθερά όταν το σήμα SCL είναι ΥΨΗΛΟ.
- Οι καταστάσεις HIGH και LOW της γραμμής SDA αλλάζουν μόνο όταν το SCL είναι LOW.
Κατάσταση έναρξης και διακοπής
Μια κατάσταση έναρξης ενεργοποιείται όταν
- το SCL έχει ρυθμιστεί σε HIGH και
- Το SDA αλλάζει από ΥΨΗΛΗ σε χαμηλή κατάσταση.
Η κατάσταση διακοπής ενεργοποιείται όταν
- Το SCL έχει οριστεί σε HIGH και
- Το SDA αλλάζει από χαμηλή σε υψηλή κατάσταση
Σημείωση! Αυτές οι πληροφορίες είναι πολύ χρήσιμες για τον εντοπισμό σφαλμάτων στα σήματα.
Μορφή δεδομένων
Κάθε byte που μεταδίδεται στη γραμμή SDA αποτελείται από 8 bit, τα οποία σχηματίζουν ένα byte. Κάθε byte πρέπει να ακολουθείται από ένα bit αναγνώρισης.
Αναγνώριση
Η αναγνώριση εξασφαλίζει σταθερή και σωστή λειτουργία. Κατά τη διάρκεια του παλμού αναγνώρισης, ο μικροελεγκτής τραβά την καρφίτσα SDA ΥΨΗΛΗ τη συγκεκριμένη στιγμή που η περιφερειακή συσκευή (επεξεργαστής ήχου) τραβά προς τα κάτω (ΧΑΜΗΛΗ) τη γραμμή SDA.
Η περιφερειακή συσκευή (PT2258) απευθύνεται τώρα και πρέπει να δημιουργήσει μια αναγνώριση μετά τη λήψη ενός byte, διαφορετικά, η γραμμή SDA θα παραμείνει σε υψηλό επίπεδο κατά τη διάρκεια του ένατου (9ου) ρολογιού παλμού. Εάν συμβεί αυτό, ο κύριος πομπός θα δημιουργήσει πληροφορίες STOP για να ακυρώσει τη μεταφορά.
Αυτό ξεκαθαρίζει το ότι δεν υπάρχει ανάγκη για έγκυρη μεταφορά δεδομένων.
Επιλογή διεύθυνσης
Η διεύθυνση I2C αυτού του IC εξαρτάται από την κατάσταση των CODE1 (Pin No. 17) και CODE2 (Pin No.4).
ΚΩΔΙΚΟΣ 1 (PIN No. 17) |
ΚΩΔΙΚΟΣ 2 (PIN No. 4) |
ΕΞΕΤΑΣΗ ΔΙΕΥΘΥΝΣΗΣ |
0 |
0 |
0Χ80 |
0 |
1 |
0Χ84 |
1 |
0 |
0Χ88 |
1 |
1 |
0Χ8C |
Λογική Υψηλή = 1
Λογική χαμηλή = 0
Πρωτόκολλο διεπαφής
Το πρωτόκολλο διασύνδεσης αποτελείται από τα ακόλουθα:
- Ένα bit έναρξης
- Ένα Chip Διεύθυνση Byte
- ACK = Αναγνωρίστε λίγο
- Ένα byte δεδομένων
- Ένα κομμάτι
Λίγη καθαριότητα
Αφού ενεργοποιηθεί το IC, πρέπει να περιμένει τουλάχιστον 200ms πριν μεταδώσει το πρώτο bit δεδομένων, διαφορετικά, η μεταφορά δεδομένων ενδέχεται να αποτύχει.
Μετά την καθυστέρηση, το πρώτο πράγμα που πρέπει να κάνετε είναι να εκκαθαρίσετε το μητρώο στέλνοντας "0XC0" στη γραμμή I2C, αυτό διασφαλίζει τη σωστή λειτουργία.
Το παραπάνω βήμα διαγράφει ολόκληρο το μητρώο, τώρα πρέπει να ορίσουμε μια τιμή στο μητρώο, διαφορετικά, το μητρώο αποθηκεύει την τιμή απορριμμάτων και έχουμε μια έξοδο φακιδών.
Για να διασφαλιστούν οι σωστές ρυθμίσεις έντασης, είναι απαραίτητο να στείλετε ένα πολλαπλάσιο των 10dB ακολουθούμενο από έναν κωδικό 1dB στον εξασθενητή στη σειρά, διαφορετικά, το IC μπορεί να συμπεριφερθεί ασυνήθιστα. Το παρακάτω διάγραμμα το διευκρινίζει περισσότερο.
Και οι δύο παραπάνω μέθοδοι θα λειτουργήσουν σωστά.
Για να διασφαλίσετε τη σωστή λειτουργία, βεβαιωθείτε ότι η ταχύτητα μεταφοράς δεδομένων I2C δεν υπερβαίνει ποτέ τα 100KHz.
Έτσι μπορείτε να μεταδώσετε ένα byte στο IC και να μειώσετε το σήμα εισόδου. Η παραπάνω ενότητα είναι να μάθουμε πώς λειτουργεί το IC, αλλά όπως έχω πει νωρίτερα, πρόκειται να χρησιμοποιήσουμε μια βιβλιοθήκη Arduino για να επικοινωνήσουμε με το IC που διαχειρίζεται όλο τον σκληρό κώδικα και απλώς πρέπει να κάνουμε κάποιες λειτουργίες.
Όλες οι παραπάνω πληροφορίες προέρχονται από το φύλλο δεδομένων, ανατρέξτε σε αυτό για περισσότερες πληροφορίες.
Το Σχηματικό
Η παραπάνω εικόνα δείχνει το σχηματικό σχήμα του κυκλώματος ελέγχου έντασης με βάση το PT2258. Έχει ληφθεί από το φύλλο δεδομένων και τροποποιείται ανάλογα με τις ανάγκες.
Για την επίδειξη, το κύκλωμα είναι κατασκευασμένο πάνω σε ένα ψωμί χωρίς κόλλα με τη βοήθεια του σχήματος που φαίνεται παραπάνω.
Σημείωση! Όλα τα εξαρτήματα τοποθετούνται όσο το δυνατόν πιο κοντά για να μειώσουν την επαγωγή και την αντίσταση της παρασιτικής χωρητικότητας.
Απαιτούμενα στοιχεία
- PT2258 IC - 1
- Arduino Nano Controller - 1
- Γενικό Breadboard - 1
- Ακροδέκτης βίδας 5mm x 3 - 1
- Κουμπί Push - 1
- 4.7K Αντίσταση, 5% - 2
- Αντίσταση 150K, 5% - 4
- 10k Αντίσταση, 5% - 2
- Πυκνωτής 10uF - 6
- Πυκνωτής 0.1uF - 1
- Καλώδια βραχυκυκλωτήρα - 10
Κωδικός Arduino
Για απλότητα, πρόκειται να χρησιμοποιήσω μια βιβλιοθήκη PT2258 από το GitHub, η οποία κατασκευάζεται από το sunrutcon.
Αυτή είναι μια πολύ καλογραμμένη βιβλιοθήκη γι 'αυτό αποφάσισα να τη χρησιμοποιήσω, αλλά επειδή είναι πολύ παλιά, είναι λίγο λάθη και πρέπει να την διορθώσουμε πριν μπορέσουμε να τη χρησιμοποιήσουμε.
Πρώτα, κατεβάστε και εξαγάγετε τη βιβλιοθήκη από το αποθετήριο GitHub.
Θα λάβετε τα παραπάνω δύο αρχεία μετά την εξαγωγή.
# συμπερίληψη # συμπερίληψη
Στη συνέχεια, ανοίξτε το αρχείο PT2258.cpp με τον αγαπημένο σας επεξεργαστή κειμένου, χρησιμοποιώ το Σημειωματάριο ++.
Μπορείτε να δείτε ότι το "w" της ενσύρματης βιβλιοθήκης είναι με μικρά γράμματα, κάτι που δεν είναι συμβατό με τις πιο πρόσφατες εκδόσεις Arduino, και πρέπει να το αντικαταστήσετε με ένα καπάκι "W", αυτό είναι.
Πλήρης κωδικός για το PT2258 Volume Controller βρίσκεται στο τέλος αυτής της ενότητας. Εδώ εξηγούνται σημαντικά μέρη του προγράμματος.
Ξεκινάμε τον κώδικα συμπεριλαμβάνοντας όλα τα απαιτούμενα αρχεία βιβλιοθηκών. Η βιβλιοθήκη Wire χρησιμοποιείται για την επικοινωνία μεταξύ του Arduino και του PT2258. Η βιβλιοθήκη PT2258 περιέχει όλες τις κρίσιμες πληροφορίες και ευχαριστίες χρονισμού I2C. Η βιβλιοθήκη ezButton χρησιμοποιείται για διασύνδεση με τα κουμπιά.
Αντί να χρησιμοποιείτε τις παρακάτω εικόνες κώδικα, αντιγράψτε όλες τις παρουσίες κώδικα από το αρχείο κώδικα και κάντε τις μορφοποιημένες όπως κάποτε κάναμε σε άλλα έργα
#περιλαμβάνω
Στη συνέχεια, δημιουργήστε τα αντικείμενα για τα δύο κουμπιά και την ίδια τη βιβλιοθήκη PT2258.
PT2258 pt2258; κουμπί ezButton_1 (2); κουμπί ezButton_2 (4);
Στη συνέχεια, ορίστε το επίπεδο έντασης. Αυτό είναι το προεπιλεγμένο επίπεδο έντασης με το οποίο θα ξεκινήσει αυτό το IC.
Int όγκος = 40;
Στη συνέχεια, ξεκινήστε το UART και ορίστε τη συχνότητα ρολογιού για το δίαυλο I2C.
Serial.begin (9600); Wire.setClock (100000);
Είναι πολύ σημαντικό να ρυθμίσετε το ρολόι I2C, διαφορετικά, το IC δεν θα λειτουργήσει επειδή η μέγιστη συχνότητα ρολογιού που υποστηρίζεται από αυτό το IC είναι 100KHz.
Στη συνέχεια, κάνουμε μια μικρή καθαριότητα με μια δήλωση αν αλλιώς προκειμένου να διασφαλίσουμε ότι το IC επικοινωνεί σωστά με το δίαυλο I2C.
Εάν (! Pt2258.init ()) Serial.printIn ("PT2258 ξεκίνησε επιτυχώς"); Else Serial.printIn ("Αποτυχία έναρξης PT2258");
Στη συνέχεια, ορίζουμε την καθυστέρηση απόρριψης για τα κουμπιά.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Τέλος, ξεκινήστε το PT2258 IC ρυθμίζοντας το με την προεπιλεγμένη ένταση καναλιού και τον αριθμό Pin.
/ * Ενεργοποίηση PT με προεπιλεγμένο τόμο και Pin * / Pt2258.setChannelVolume (τόμος, 4); Pt2258.setChannelVolume (τόμος, 5);
Αυτό σηματοδοτεί το τέλος της ενότητας Void Setup () .
Στην ενότητα Loop , πρέπει να καλέσουμε τη συνάρτηση loop από την κατηγορία των κουμπιών. είναι ένας κανόνας βιβλιοθήκης.
Button_1.loop (); // Πρότυπα βιβλιοθήκης Button_2.loop (); // Πρότυπα βιβλιοθήκης
Η παρακάτω ενότητα αν πρόκειται να μειώσει την ένταση.
/ * εάν πατηθεί το κουμπί 1 εάν η συνθήκη είναι αληθής * / Εάν (button_1.ispressed ()) {Volume ++; // Αύξηση του μετρητή έντασης. // Αυτό εάν η δήλωση διασφαλίζει ότι ο τόμος δεν υπερβαίνει το 79 If (τόμος> = 79) {Volume = 79; } Serial.print ("τόμος:"); // εκτύπωση του επιπέδου έντασης Serial.printIn (τόμος); / * ορίστε την ένταση για το κανάλι 4 Που βρίσκεται στο PIN 9 του PT2558 IC * / Pt2558.setChannelVolume (τόμος, 4); / * ορίστε την ένταση για το κανάλι 5 Ποιο είναι το PIN 10 του PT2558 IC * / Pt2558.setChannelVolume (τόμος, 5); }
Η παρακάτω ενότητα αν πρόκειται να αυξήσει την ένταση.
// Το ίδιο συμβαίνει και για το κουμπί 2 If (button_2.isPressed ()) {Volume--; // αυτό εάν η δήλωση διασφαλίζει ότι το επίπεδο έντασης δεν υπερβαίνει το μηδέν Εάν (τόμος <= 0) Όγκος = 0; Serial.print ("τόμος:"); Serial.printIn (τόμος); Pt2258.setChannelVolume (τόμος, 4); Pt2558.setChannelVolume (τόμος, 5); }
Δοκιμή του κυκλώματος ελέγχου έντασης ήχου ψηφιακού ήχου
Για τον έλεγχο του κυκλώματος, χρησιμοποιήθηκε η ακόλουθη συσκευή
- Ένας μετασχηματιστής που έχει 13-0-13 Πατήστε
- 2 ηχείο 4Ω 20W ως φορτίο.
- Πηγή ήχου (Τηλέφωνο)
Σε ένα προηγούμενο άρθρο, σας έχω δείξει πώς να φτιάξετε έναν απλό ενισχυτή ήχου 2x32 Watt με TDA2050 IC, θα το χρησιμοποιήσω και για αυτήν την επίδειξη.
Έχω διαταράξει το μηχανικό ποτενσιόμετρο και έκοψα δύο καλώδια με δύο μικρά καλώδια αλτών.
Τώρα, με τη βοήθεια δύο μπουτόν, μπορεί να ελεγχθεί η ένταση του ενισχυτή.
Περαιτέρω βελτίωση
Το κύκλωμα μπορεί να τροποποιηθεί περαιτέρω προκειμένου να βελτιωθεί η απόδοσή του. Βελτιώσεις όπως το κύκλωμα μπορούν να γίνουν σε ένα PCB για την περαιτέρω εξάλειψη του θορύβου που παράγεται από την ψηφιακή ενότητα του IC. Μπορούμε επίσης να προσθέσουμε ένα επιπλέον φίλτρο για να απορρίψουμε τους θορύβους υψηλής συχνότητας. Επίσης, ελέγξτε άλλα κυκλώματα ενισχυτή ήχου και άλλα έργα που σχετίζονται με τον ήχο.
Ελπίζω να σας άρεσε αυτό το άρθρο και να μάθετε κάτι νέο από αυτό. Εάν έχετε οποιαδήποτε αμφιβολία, μπορείτε να ρωτήσετε στα παρακάτω σχόλια ή να χρησιμοποιήσετε τα φόρουμ μας για λεπτομερή συζήτηση.