Πίνακας περιεχομένων:

MSP430 Αναλυτής φάσματος ήχου Breadboard: 6 βήματα
MSP430 Αναλυτής φάσματος ήχου Breadboard: 6 βήματα

Βίντεο: MSP430 Αναλυτής φάσματος ήχου Breadboard: 6 βήματα

Βίντεο: MSP430 Αναλυτής φάσματος ήχου Breadboard: 6 βήματα
Βίντεο: Αναλυτής φάσματος ήχου Music Audio (AK2515 -V2VFD) 2024, Νοέμβριος
Anonim
Image
Image
MSP430 Αναλυτής φάσματος ήχου Breadboard
MSP430 Αναλυτής φάσματος ήχου Breadboard

Αυτό το έργο βασίζεται σε μικρόφωνο και απαιτεί ελάχιστα εξωτερικά εξαρτήματα. Χρησιμοποιούνται 2 κελιά νομισμάτων LR44, ώστε να μπορώ να έχω όλη τη δομή να λειτουργεί στα όρια ενός μίνι ψωμιού 170 δεσμών. Χρησιμοποιούνται και αποδεικνύονται ADC10, TimerA διακοπή αφύπνισης LPM, TimerA PWM όπως έξοδος, χρήση κουμπιού, αριθμητικός ακέραιος αριθμός.

Χαρακτηριστικά

  • Δείγματα ακέραιων 8 bit FFT 16 σε διαχωρισμό 500Hz
  • εμφανίζει 8 πλάτη 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K μη γραμμικά
  • μερικός χάρτης λογαρίθμου για εμφάνιση πλάτους, περιορισμένος καθώς η ανάλυση έχει μειωθεί για FFT 8 bit
  • TLC272 ενισχυτές μικροφώνου ενός σταδίου σε κέρδος 100x φορές 100x (μπορείτε να δοκιμάσετε με 2 στάδια)
  • επιλέξιμο μενού προαιρετικό παράθυρο Hamming
  • μενού ρυθμίστε τη φωτεινότητα 4 επιπέδων
  • ρυθμίστε το μενού ρυθμού δείγματος 8 επιπέδων / χρόνου απόκρισης
  • 2 x κελί νομίσματος LR44 που τροφοδοτείται "επί του σκάφους"

Βήμα 1: Αποκτήστε ανταλλακτικά

Τα παρακάτω είναι αυτά που χρειάζονται για αυτό το έργο

  • MSP430G2452 (το επιπλέον τσιπ από το TI Launchpad G2 ή οποιοδήποτε MCU σειράς 4K 20 ακίδων MSP430G)
  • ένα μίνι πάγκο 170 τεμαχίων ή σανίδα perf για κατασκευές προενισχυτή
  • TLC272 Διπλός ενισχυτής
  • μίνι ηλεκτρικό μικρόφωνο
  • 47k (pull-up), 100k, 2 x 10k, 1k αντιστάσεις
  • 1 x 0.1uF
  • καλώδια βραχυκυκλωτήρων
  • ανδρική κεφαλίδα διπλής σειράς που χρησιμοποιείται για τη θήκη μπαταρίας
  • 2 x μπαταρία νομισμάτων LR44

Βήμα 2: Σχεδιάστε διάταξη στοιχείων

Το έργο θα χτιστεί πάνω σε μίνι σανίδα ψωμιού 170 δεσμών. Η διάταξη των εξαρτημάτων είναι όπως φαίνεται παρακάτω. Αξιοσημείωτο είναι ότι η μήτρα LED 8x8 θα τοποθετηθεί πάνω από το MSP430 MCU. Εκτός από τα εξαρτήματα, υπάρχουν επίσης συνδετικά καλώδια άλματος που απεικονίζονται με χαρακτήρες "+------+".

G V + Gnd (διάταξη 1 σταδίου) ΧΡΗΣΙΜΟΠΟΙΟΥΜΕ ΑΥΤΗ ΤΗ ΔΙΑΔΙΚΑΣΙΑ + =================================== =================+ c0 ………… c7 | MIC Το Το Το Το Το Το + -----++-+. Το Το Το | r0 o o o o o o o | o || o + ----- [100k] --------------- +. Το Το Το Το | r1 X o o o o o o | Το +--------------+-+. C7 C6 R1 C0 R3 C5 C3 R0 | Το o o o o o o o | Το Το Το Το Το Το | Το Το | b6 a7 | | Τα c0 και r1 μοιράζονται την ίδια καρφίτσα και δεν εμφανίζονται | + +-+-+-+| +-+-+-+-+-+-+-+-+-+-+| *πιθανή εφαρμογή να έχει c6 + c0 + r1 | | | V+ | | | G b6 b7 T R a7 a6 b5 b4 b3 | | Αυτό θα ελευθερώσει το b6 για ρολόι xtal 32khz | | | TLC272 | | | | | | | έξω - + G | | |+ a0 a1 a2 a3 a4 a5 b0 b1 b2 | | | + +-+-+-+| +-+-+-+-+-+-+-+-+-+-+| | o || o o o. +-+. Το R4 R6 C1 C2 R7 C4 R5 R2 | | Το Το Το Το o- [10k]-o. Το Το Το Το Το Το Το Το | | Το o- [1k] o o o. Το Το Το Το Το Το Το Το._. | | o ---- [10k] ----------- o. Το Το Το Το Το Το o o | +================================================= ====+.1uF 100k 10k ADC Button+ -----------------+

χρησιμοποιούμε μόνο ένα στάδιο του TLC272 μόνο

Βήμα 3: Συναρμολόγηση

Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση

Μπορείτε να αρχίσετε να τοποθετείτε εξαρτήματα με βάση τη διάταξη του breadboard. Καθώς είναι τέχνη ASCII, μπορεί να μην είναι πολύ σαφές. Μπορείτε να αντιστοιχίσετε τις φωτογραφίες σε αυτό το βήμα για να προσδιορίσετε όλες τις συνδέσεις.

Πρέπει να ληφθεί μέριμνα για τη θέση των τσιπ IC. Συνήθως υπάρχει μια κουκκίδα σε μία από τις γωνίες που υποδεικνύει την ακίδα 1 μιας συσκευής.

Είχα χρησιμοποιήσει καλώδια CAT5 ethernet καλωδίων και είναι πολύ εύκολο να δουλέψουμε σε έργα breadboard. Αν έχετε παλιά καλώδια CAT5, μπορείτε να το ανοίξετε και θα βρείτε 6 στριμμένα καλώδια στο εσωτερικό του. Είναι ιδανικά για σανίδες ψωμιού.

Βήμα 4: Μεταγλώττιση και φόρτωση υλικολογισμικού

Ο πηγαίος κώδικας βρίσκεται συνήθως στα αποθετήρια github μου.

Για το συγκεκριμένο έργο, το μοναδικό αρχείο προέλευσης C nfft.c περιλαμβάνεται στο αποθετήριο συλλογών μου. Απλώς χρειάζεστε το nfft.c

Χρησιμοποιώ το mps430-gcc για να μεταγλωττίσω το υλικολογισμικό, αλλά θα πρέπει να ταιριάζει με το TI CCS. Μπορείτε να αποφύγετε όλα τα προβλήματα εγκατάστασης IDE ή μεταγλωττιστών πηγαίνοντας στο TI CCS cloud, το οποίο είναι ένα IDE που βασίζεται στον ιστό. Θα κατεβάσει ακόμη και το υλικολογισμικό στη συσκευή -στόχο σας.

Αυτό είναι ένα παράδειγμα μεταγλώττισης εντολής με διακόπτες

msp430 -gcc -Os -Wall -ffunction -section -fdata -section -fno -inline -small -functions -Wl, -Map = nfft.map, -cref -Wl, --relax -Wl, --gc- ενότητες -I/energia -0101E0016/hardware/msp430/cores/msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c

Χρησιμοποιώ ένα TI Launchpad G2 ως προγραμματιστή για να προγραμματίσω το MCU.

Βήμα 5: Κατανοήστε το κύκλωμα

Κατανοήστε το Κύκλωμα
Κατανοήστε το Κύκλωμα
Κατανοήστε το Κύκλωμα
Κατανοήστε το Κύκλωμα

Το σχηματικό κύκλωμα παρουσιάζεται παρακάτω

MSP430G2452 ή παρόμοιο, χρειάζονται 4K Flash TLC272 Dual Op-Amp, GBW @1.7Mhz, @x100 κέρδος, εύρος ζώνης έως 17Khz

* χρησιμοποιούμε μόνο ένα στάδιο του TLC272 μόνο

._.

| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1-+ | | | |. | Vcc | | | | pull-up (47k) Vcc Vcc | --------------- | | | | _ | | | +-1 | ----. Vcc | 8-+ | | | |. |. |. | ^.--- | 7 | | 16-+ | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100k | _ | | / _+\ / / | | /| --- (βλέπε διάταξη σανίδων) |.1u | | | | | /_+\ | | / | ------_+-|| --- |-[1k]-+-2 | ---+| | | | | 15 GPIO | | | | +---------- 3 | ----- + +-|-| 6 | Ρ1.1-Ρ1.7 | | 8x8 | | | +-4 | Gnd +-| 5 | P2.0-P2.7 | | LED | |+ | | --------------- | | | μήτρα | ((Ο)) |. | | / | | _ | | MIC | | 10k | +-20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ _ _ _ /// /// /// ///

Οδήγηση LED

Η μήτρα LED είναι 8 x 8 στοιχείων. Οδηγούνται από 15 ακίδες GPIO. Είναι πολυπλεγμένοι με 8 σειρές και σχήμα 8 στηλών. Δεδομένου ότι υπάρχουν μόνο 15 ακίδες αφού χρησιμοποιήσουμε 1 ακίδα για είσοδο ADC, η πολυπλεξία έχει τη σειρά 1 και τη στήλη 0 που μοιράζονται έναν μόνο πείρο. Αυτό σημαίνει ότι το συγκεκριμένο LED στη σειρά 1 και στη στήλη 0 δεν μπορεί να ανάψει. Αυτός είναι ένας συμβιβασμός καθώς δεν υπάρχουν αρκετές καρφίτσες GPIO για να οδηγήσουν όλα τα στοιχεία LED.

Λήψη ήχου

Ο ήχος καταγράφεται μέσω του μικροφώνου συμπυκνωτή επί του σκάφους στο Educational BoosterPack. Καθώς τα σήματα του μικροφώνου είναι μικρά, πρέπει να το ενισχύσουμε σε ένα επίπεδο που το msp430 ADC10 να μπορεί να χρησιμοποιήσει με λογική ανάλυση. Είχα χρησιμοποιήσει έναν ενισχυτή op-amp δύο σταδίων για το σκοπό αυτό.

Ο ενισχυτής op-amp αποτελείται από δύο στάδια, το καθένα w/ a περίπου 100x κέρδος. Είχα υιοθετήσει το TLC272 καθώς είναι επίσης ένα πολύ κοινό μέρος και λειτουργεί w/ 3V. Το εύρος ζώνης κέρδους είναι περίπου 1.7Mhz σημαίνει ότι για το κέρδος μας των 100x, μπορούμε μόνο να εγγυηθούμε ότι θα λειτουργούσε όμορφα (δηλ. Να διατηρήσει το κέρδος που θέλουμε) κάτω από 17Khz. (1,7Mhz / 100).

Αρχικά σκοπεύω να κάνω αυτόν τον αναλυτή φάσματος μέτρησης έως 16-20Khz, αλλά τελικά διαπίστωσα ότι περίπου 8Khz είναι αρκετά καλός για να δείξει μουσική. Αυτό μπορεί να αλλάξει αντικαθιστώντας το LM358 w/ κάτι με ήχο και αλλάζοντας το ρυθμό δειγματοληψίας. Απλώς αναζητήστε το εύρος ζώνης κέρδους των ενισχυτών που επιλέγετε.

Δειγματοληψία και FFT

Η συνάρτηση FFT που χρησιμοποιείται είναι ο κώδικας "fix_fft.c" που είχαν υιοθετήσει πολλά έργα, και κυκλοφορεί στο διαδίκτυο εδώ και μερικά χρόνια. Είχα δοκιμάσει μια έκδοση 16 bit και μια έκδοση 8 bit. Τελικά συμφώνησα με την έκδοση 8 bit καθώς για τον σκοπό μου, δεν είδα σημαντική πρόοδο στην έκδοση των 16 bit.

Δεν έχω καλή κατανόηση του μηχανισμού FFT εκτός από το ότι πρόκειται για μετατροπή πεδίου χρόνου σε τομέα συχνότητας. Αυτό σημαίνει ότι ο ρυθμός (χρόνος) των δειγμάτων ήχου, μετά την τροφοδοσία με τη λειτουργία υπολογισμού FFT, θα επηρεάσει τη συχνότητα του πλάτους που λαμβάνω ως αποτέλεσμα. Έτσι, προσαρμόζοντας την ταχύτητα στο δείγμα ήχου, μπορώ να καθορίσω τη ζώνη συχνοτήτων ως αποτέλεσμα.

TimerA 0 CCR0 χρησιμοποιείται για τη διατήρηση του χρόνου δειγματοληψίας. Αρχικά καθορίζουμε τους αριθμούς που χρειαζόμαστε για να επιτύχουμε τη συχνότητα ζώνης (αντιστοιχεί στον ρυθμό ρολογιού DCO των 16Mhz). δηλ. TA0CCR0 ρυθμισμένο σε (8000/((BAND_FREQ_KHZ*2)))-1; όπου το BAND_FREQ_KHZ είναι 8 για μένα. Μπορεί να αλλάξει αν έχετε καλύτερο op-amp και / ή θέλετε να είναι διαφορετικό.

Ζώνες συχνοτήτων και κλιμάκωση εύρους

Το υλικολογισμικό επεξεργάζεται 16 ζώνες σε μία σάρωση και ο χρόνος λήψης παράγει διαχωρισμό 500Hz μεταξύ αυτών των τραπεζών. Ο πίνακας LED είναι 8 στηλών και θα εμφανίζει μόνο 8 ζώνες / πλάτη. Αντί να εμφανίζεται μία κάθε δύο ζώνες, χρησιμοποιείται μια μη γραμμική λίστα ζωνών συχνοτήτων για την εμφάνιση των πιο δυναμικών ζωνών συχνοτήτων (όσον αφορά τη μουσική). Η λίστα περιλαμβάνει κενά 500Hz στο χαμηλό άκρο, κενά 1KHz στις μεσαίες ζώνες και ζώνες 1.5Khz στις υψηλές.

Το πλάτος των μεμονωμένων ζωνών μειώνεται σε 8 επίπεδα, τα οποία αντιπροσωπεύονται από τον αριθμό των οριζόντιων «κουκίδων» στην οθόνη μήτρας LED. Τα επίπεδα πλάτους μειώνονται μέσω ενός μη γραμμικού χάρτη που μεταφράζει τα αποτελέσματα FFT σε ένα από τα 8 αποσιωπητικά. Χρησιμοποιείται ένα είδος λογαριθμικής κλιμάκωσης, καθώς αντιπροσωπεύει καλύτερα την αντίληψή μας για τα επίπεδα ήχου.

Υπάρχει ενσωματωμένη λογική AGC και ο αναλυτής φάσματος θα προσπαθήσει να μειώσει τα επίπεδα πλάτους όταν εντοπιστούν πολλαπλά επίπεδα αιχμής στους προηγούμενους κύκλους. Αυτό γίνεται με έναν συρόμενο πίνακα σύγκρισης χάρακα.

Βήμα 6: Λειτουργία της συσκευής

  • Σύντομο πάτημα του πλήκτρου στη λειτουργία εμφάνισης περνάει από την οθόνη χωρίς κουκκίδες, μία κουκκίδα, 2 κουκκίδες και 3 κουκκίδες.
  • Το παρατεταμένο πάτημα εισέρχεται στη λειτουργία ρύθμισης, το επόμενο παρατεταμένο πάτημα περιστρέφεται μέσω του μενού.
  • Κύκλοι στοιχείων μενού μέσω "Hamming Window Option", "Dimmer", "Sampling / Refresh Rate".
  • Στη λειτουργία ρύθμισης 'Hamming Window', οι σύντομες πιέσεις κυκλώνουν χωρίς σφυρί, σφυρί 1, σφυρί 2, σφυρί 3, το μακρύ πάτημα επιβεβαιώνει τη ρύθμιση.
  • Στη λειτουργία ρύθμισης «Dimmer», πιέζει σύντομα τους κύκλους μέσω των διαθέσιμων επιπέδων φωτεινότητας από 0 έως 3, το μακρύ πάτημα επιβεβαιώνει τη ρύθμιση.
  • Στη λειτουργία ρύθμισης "Ρυθμός δειγματοληψίας / ανανέωσης", το σύντομο πάτημα κάνει κύκλους στους διαθέσιμους ρυθμούς ανανέωσης από 0 έως 7, 0 σημαίνει καθυστέρηση, το παρατεταμένο πάτημα επιβεβαιώνει τη ρύθμιση.
  • Η πολυπλεξία τμημάτων led περιλαμβάνει καθυστερήσεις χρόνου για αντιστάθμιση των διαφορών φωτεινότητας για μεμονωμένες σειρές.

Συνιστάται: