
Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-23 14:39




Γεια σας παιδιά, Αυτό είναι το δεύτερο μέρος ενός άλλου διδακτικού μου (που ήταν πολύ δύσκολο), Βασικά, σε αυτό το έργο, χρησιμοποίησα το ADC και το TIMERS στο Arduino μου για να μετατρέψω το ηχητικό σήμα σε σήμα PWM.
Αυτό είναι πολύ πιο εύκολο από το προηγούμενο Instructable, εδώ είναι ο σύνδεσμος του πρώτου μου Instructable αν θέλετε να δείτε. Σύνδεσμος
Για να κατανοήσετε τη θεωρία του ηχητικού σήματος, του ρυθμού bit, του βάθους bit, του ρυθμού δειγματοληψίας, μπορείτε να διαβάσετε τη θεωρία στο τελευταίο μου σεμινάριο σχετικά με το Instructable. Ο σύνδεσμος βρίσκεται παραπάνω.
Βήμα 1: Πράγματα που χρειαζόμαστε για αυτό το έργο (Απαιτήσεις)
1. Arduino Board (μπορούμε να χρησιμοποιήσουμε οποιονδήποτε πίνακα (328, 2560) δηλ. Mega, Uno, Mini κ.λπ. αλλά με συγκεκριμένες διαφορετικές ακίδες)
2. Η / Υ με Arduino Studio.
3. Breadboard ή Perfboard
4. Σύνδεση καλωδίων
5. TC4420 (πρόγραμμα οδήγησης Mosfet ή κάτι τέτοιο)
6. Power Mosfet (κανάλι Ν ή Ρ, παρακαλώ σύρμα τότε αναλόγως) (έχω χρησιμοποιήσει κανάλι Ν)
7. Ηχείο ή Flyback Transformer (Ναι το διαβάσατε σωστά !!)
8. Κατάλληλο τροφοδοτικό (0-12V) (έχω χρησιμοποιήσει το δικό μου τροφοδοτικό ATX)
9. Heat Sink (έχω διασώσει από τον παλιό υπολογιστή μου).
10. Ένας ενισχυτής (κανονικός ενισχυτής μουσικής) ή κύκλωμα ενισχυτή.
Βήμα 2: Θεωρία ADC σε PWM


Έτσι, σε αυτό το έργο, χρησιμοποίησα το ενσωματωμένο ADC του Arduino για τη δειγματοληψία δεδομένων ενός ηχητικού σήματος.
Το ADC (Analog-to-Digital Converter) όπως ορίζει το όνομα, το ADC μετατρέπει το αναλογικό σήμα σε Digitalηφιακά δείγματα. Και για το Arduino με μέγιστο βάθος 10-bit. Αλλά για αυτό το έργο, θα χρησιμοποιήσουμε δειγματοληψία 8 bit.
Ενώ χρησιμοποιούμε το ADC του Arduino, πρέπει να έχουμε κατά νου την Τάση αναφοράς ADC_reference.
Το Arduino Uno προσφέρει 1.1V, 5V (Εσωτερική αναφορά, η οποία μπορεί να οριστεί ως κωδικός) ή εξωτερική αναφορά (την οποία πρέπει να εφαρμόσουμε εξωτερικά στον ακροδέκτη AREF).
Σύμφωνα με την εμπειρία μου, πρέπει να χρησιμοποιείται τουλάχιστον 2.0V ως τάση αναφοράς για να έχετε ένα καλό αποτέλεσμα από το ADC. Καθώς το 1.1V δεν πήγε καλά τουλάχιστον για μένα. (Προσωπική εμπειρία)
*ΣΗΜΑΝΤΙΚΟ**ΣΗΜΑΝΤΙΚΟ ** ΣΗΜΑΝΤΙΚΟ ** ΣΗΜΑΝΤΙΚΟ ** ΣΗΜΑΝΤΙΚΟ*
Πρέπει να χρησιμοποιήσουμε ένα ενισχυμένο ηχητικό σήμα από έναν ενισχυτή ή ένα κύκλωμα ενισχυτή με τάση αιχμής (μέγιστη τάση) 5V
Επειδή όντως έθεσα την εσωτερική αναφορά τάσης 5V, για το έργο μας. Και χρησιμοποιώ ένα ενισχυμένο σήμα χρησιμοποιώντας έναν κανονικό ενισχυτή (ενισχυτή μουσικής), ο οποίος διατίθεται κυρίως στο σπίτι μας ή μπορείτε να φτιάξετε ένα για τον εαυτό σας.
Οπότε τώρα το κύριο μέρος. Ποσοστό δειγματοληψίας, το οποίο είναι το πόσα δείγματα παίρνει το ADC μας ανά δευτερόλεπτο, τόσο περισσότερο είναι το ποσοστό μετατροπής, τόσο καλύτερο θα είναι το αποτέλεσμα εξόδου, όσο πιο παρόμοιο θα είναι το κύμα εξόδου σε σύγκριση με την είσοδο.
Έτσι, θα χρησιμοποιήσουμε ρυθμό δειγματοληψίας 33,33Khz σε αυτό το έργο, ρυθμίζοντας το ρολόι ADC στα 500Khz. Για να καταλάβετε πώς είναι έτσι, πρέπει να δούμε τη σελίδα χρονισμού ADC στο φύλλο δεδομένων του τσιπ Atmega (328p).
Μπορούμε να δούμε ότι, χρειαζόμαστε 13,5 κύκλους ρολογιού ADC για να ολοκληρώσουμε ένα δείγμα με αυτόματη δειγματοληψία. Με συχνότητα 500Khz, σημαίνει 1/500Khz = 2uS για έναν κύκλο ADC, πράγμα που σημαίνει ότι 13,5*2uS = 27uS χρειάζονται για να ολοκληρωθεί ένα δείγμα όταν χρησιμοποιείται αυτόματη δειγματοληψία. Δίνοντας 3uS περισσότερα στον Μικροελεγκτή (για ασφαλή πλευρά), Κάνοντας συνολικά 30uS συνολικά για ένα δείγμα.
Άρα 1 Δείγμα στα 30uS σημαίνει 1/30uS = 33,33 KS δείγματα/S.
Για να ορίσετε το ρυθμό δειγματοληψίας, το οποίο εξαρτάται από το TIMER0 του Arduino, επειδή η σκανδάλη αυτόματης δειγματοληψίας ADC εξαρτάται από αυτό στην περίπτωσή μας, όπως μπορείτε επίσης να δείτε στον κώδικα και στο φύλλο δεδομένων, έχουμε κάνει την τιμή του OCR0A = 60 (Γιατί έτσι ???)
Επειδή σύμφωνα με τον τύπο που δίνεται στο φύλλο δεδομένων.
συχνότητα (ή εδώ Ποσοστό δείγματος) = Συχνότητα ρολογιού Arduino/Prescaler*Τιμή OCR0A (στην περίπτωσή μας)
Συχνότητα ή δείγμα ρυθμού που θέλουμε = 33,33KHz
Συχνότητα ρολογιού = 16MHz
Προπώληση τιμή = 8 (στην περίπτωσή μας)
Τιμή OCR0A = θέλουμε να βρούμε;;
που δίνει απλώς OCR0A = 60, επίσης στον κώδικα Arduino.
Το TIMER1 χρησιμοποιείται για το κύμα φορέα ενός ηχητικού σήματος και δεν θα αναφερθώ σε τόσες πολλές λεπτομέρειες.
Αυτή ήταν λοιπόν η σύντομη θεωρία της έννοιας του ADC στο PWM με το Arduino.
Βήμα 3: Σχηματικό

Συνδέστε όλα τα εξαρτήματα όπως φαίνεται στο σχηματικό σχήμα. Έχετε λοιπόν εδώ δύο επιλογές:-
1. Συνδέστε ένα ηχείο (συνδεδεμένο με 5V)
2. Συνδέστε έναν μετασχηματιστή Flyback (Συνδέεται με 12V)
Έχω δοκιμάσει και τα δύο. Και τα δύο λειτουργούν αρκετά καλά.
*ΣΗΜΑΝΤΙΚΟ**ΣΗΜΑΝΤΙΚΟ ** ΣΗΜΑΝΤΙΚΟ ** ΣΗΜΑΝΤΙΚΟ ** ΣΗΜΑΝΤΙΚΟ*Πρέπει να χρησιμοποιήσουμε ένα ενισχυμένο ηχητικό σήμα από έναν ενισχυτή ή ένα κύκλωμα ενισχυτή με τάση αιχμής (Μέγιστη τάση) 5V
Αποποίηση ευθυνών:-
*Σας συνιστώ να χρησιμοποιείτε το Flyback Transformer με Προφύλαξη καθώς μπορεί να είναι επικίνδυνο επειδή παράγει Υψηλές Τάσεις. Και δεν θα είμαι υπεύθυνος για οποιαδήποτε ζημιά.*
Βήμα 4: Τελική δοκιμή
Ανεβάστε λοιπόν τον δεδομένο κώδικα στο Arduino σας και συνδέστε το ενισχυμένο σήμα στην ακίδα A0.
Και μην ξεχάσετε να συνδέσετε όλες τις καρφίτσες γείωσης σε έναν κοινό τόπο.
Και απλώς απολαύστε ακούγοντας μουσική.
Συνιστάται:
Παίξτε Dinosaur Game χρησιμοποιώντας Arduino και Python3: 5 βήματα

Παίξτε Dinosaur Game χρησιμοποιώντας Arduino και Python3: Περιγραφή Έργου Οι περισσότεροι από εμάς έχουμε παίξει παιχνίδι δεινοσαύρων από το google όταν το ίντερνετ μας δεν λειτουργούσε και αν δεν έχετε παίξει αυτό το παιχνίδι μην ανησυχείτε τώρα αλλά όχι με συμβατικό τρόπο πατώντας κουμπιά αλλά χρησιμοποιώντας κίνηση του χεριου σου Σε αυτό λοιπόν
Παίξτε Mario χρησιμοποιώντας νέο αισθητήρα αφής Grove: 5 βήματα

Παίξτε Mario χρησιμοποιώντας New Grove Touch Sensor: Πώς να παίξετε ένα παιχνίδι γρατσουνιών με έναν αισθητήρα αφής;
Παίξτε Bluetooth στο Sonos χρησιμοποιώντας Raspberry Pi: 25 βήματα

Παίξτε Bluetooth στο Sonos χρησιμοποιώντας Raspberry Pi: Έγραψα προηγουμένως ένα οδηγό που περιγράφει τον τρόπο προσθήκης aux ή αναλογικής γραμμής στο Sonos χρησιμοποιώντας ένα Raspberry Pi. Ένας αναγνώστης ρώτησε αν θα ήταν δυνατή η μετάδοση ήχου bluetooth από το τηλέφωνό του στη Sonos. Είναι εύκολο να το κάνετε αυτό χρησιμοποιώντας ένα dongle bluetooth
Τραγούδια 8bit χρησιμοποιώντας το θέμα λήξης Arduino / Zelda: 4 βήματα

Τραγούδια 8bit χρησιμοποιώντας το θέμα λήξης Arduino / Zelda: Θέλατε ποτέ να φτιάξετε τέτοιου είδους δωροκάρτες ή παιχνίδια που παίζουν ένα τραγούδι μόλις τα ανοίξετε ή τα πιέσετε; Με ένα τραγούδι της επιλογής σας; Evenσως ακόμη και ένα τραγούδι που φτιάξατε; Λοιπόν, είναι το πιο εύκολο πράγμα στον κόσμο και δεν θα σας κοστίσει τίποτα
Παίξτε τραγούδια χρησιμοποιώντας Stepper Motor !!: 11 βήματα (με εικόνες)

Παίξτε τραγούδια χρησιμοποιώντας Stepper Motor !!: Αυτό το έργο αφορά τον σχεδιασμό μιας απλής δυναμικής διεπαφής, η οποία θα επιτρέψει την αλληλεπίδραση με ένα βηματικό μοτέρ με δύο διαφορετικούς τρόπους. Η πρώτη διεπαφή θα ελέγχει την κατεύθυνση και την ταχύτητα του βηματικού κινητήρα μέσω της χρήσης ενός απλό GUI, το οποίο