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

Αναλογικός μετρητής VU με δυνατότητα Bluetooth: 6 βήματα
Αναλογικός μετρητής VU με δυνατότητα Bluetooth: 6 βήματα

Βίντεο: Αναλογικός μετρητής VU με δυνατότητα Bluetooth: 6 βήματα

Βίντεο: Αναλογικός μετρητής VU με δυνατότητα Bluetooth: 6 βήματα
Βίντεο: #15 HC 05 Bluetooth Modbus Android HMI | Outseal Arduino PLC 2024, Νοέμβριος
Anonim
Αναλογικός μετρητής VU με δυνατότητα Bluetooth
Αναλογικός μετρητής VU με δυνατότητα Bluetooth

Αυτό ήταν το πρότζεκτ μου για ένα από τα πανεπιστημιακά μου μαθήματα που ονομάζεται SMP. Καθώς χρησιμοποιούσαμε τον πίνακα ανάπτυξης STM32F103RB, έθεσα το έργο μου σε αυτό, ξεκινώντας από έναν απλό μετρητή VU. Στη συνέχεια πρόσθεσα μερικές επιπλέον δυνατότητες, όπως υποστήριξη Bluetooth, για να μεταδώσετε τιμές από το ADC σε μια εφαρμογή Android για να δημιουργήσετε ένα απλό γράφημα dB.

Βήμα 1: Εξαρτήματα που χρησιμοποιούνται

  • Πίνακας ανάπτυξης STM32F103RB
  • Μονάδα bluetooth HC-05 zs040
  • Αναλογικός πίνακας μετρητή VU (σύνδεσμος)
  • Ηλεκτρικό μικρόφωνο
  • Τετραπλός ενισχυτής LM324N
  • 2 τρανζίστορ TIP120
  • 3 διόδους 1N4148
  • Διάφοροι πυκνωτές και αντιστάσεις

Αν και μπορείτε να απομακρύνετε αυτό το κύκλωμα από τη ράγα 5V του σκάφους, χρησιμοποίησα επίσης μια εξωτερική τροφοδοσία 5V.

Βήμα 2: Παρακολούθηση φακέλου

Φάκελος οπαδός
Φάκελος οπαδός
Φάκελος οπαδός
Φάκελος οπαδός

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

Το ακατέργαστο σήμα από το μικρόφωνο περνάει πρώτα από έναν ενισχυτή με κέρδος 150.

Το σήμα στη συνέχεια περνάει μέσα από τον πραγματικό ακόλουθο φακέλου, ο οποίος πρέπει να εξάγει μόνο τα θετικά μέρη σήματος.

Το τελευταίο μέρος αφαιρεί την τάση μετατόπισης 1,65V από την έξοδο του φακέλου που παρέχει σήμα 0 V χωρίς ήχο, 1,65 V για μεσαίο ήχο και 3,3 V για δυνατό ήχο που θα πρέπει να είναι συμβατό με το ενσωματωμένο ADC του πίνακα.

Αυτός ο ακόλουθος φακέλου υλοποιείται από αυτήν τη μεγάλη απάντηση StackExchange.

Βήμα 3: PWM για τον Αναλογικό μετρητή

Για να ξεκινήσει η βελόνα του μετρητή, έχω ρυθμίσει το χρονόμετρο TIM4 της πλακέτας μικροελεγκτή με συχνότητα περίπου 500 Hz.

Δοκιμάζοντας διαδοχικά διαφορετικούς κύκλους καθηκόντων, τακτοποιήθηκα με μερικές τιμές που ήταν αρκετές για να φτάσει η βελόνα από το 0 στο 100.

Θα αναλύσω λεπτομερώς τη διαδικασία εμφάνισης μιας ακριβούς τιμής στο επόμενο βήμα εφαρμόζοντας κάποια μαθηματικά.

Βήμα 4: Βαθμονόμηση μικροφώνου

Βαθμονόμηση μικροφώνου
Βαθμονόμηση μικροφώνου
Βαθμονόμηση μικροφώνου
Βαθμονόμηση μικροφώνου

Έχοντας κάνει τον ακόλουθο φακέλου, έγραψα στη συνέχεια έναν απλό κώδικα για να χρησιμοποιήσω το ADC και εξακρίβωσα ότι η τιμή ανάγνωσης αλλάζει πράγματι ανάλογα με την ένταση στο δωμάτιο.

Για να "μεταφράσω" αυτήν την τιμή σε πραγματική ανάγνωση dB, χρησιμοποίησα μια ηλεκτρονική γεννήτρια τόνων με συχνότητα 550 Hz και το Android μου για να παράσχω μια ένδειξη αναφοράς.

Έχω σχεδιάσει αυτές τις τιμές και χρησιμοποίησα το Εργαλείο καμπύλης προσαρμογής του MatLAB για να αποκτήσω μια λειτουργία που αντιστοιχίζει τις αναγνώσεις ADC στις πραγματικές προσεγγίσεις των επιπέδων dB (ή τουλάχιστον αρκετά κοντά στις αναγνώσεις του τηλεφώνου μου).

Μπορούμε να δούμε ότι αυτό ακολουθεί τη λογαριθμική κλίμακα του μικροφώνου.

Έκανα επίσης το ίδιο πράγμα για να αντιστοιχίσω τη θέση της βελόνας στις τιμές PWM. Συγκέντρωσα αυτές τις τιμές αυξάνοντας την τιμή PWM κατά 10 διαδοχικά έως ότου η ανάγκη χτύπησε την ανάγνωση στην κλίμακα του.

Συνδυάζοντας αυτές τις δύο λειτουργίες, είχα έναν εύκολο τρόπο να εμφανίσω την ένδειξη από το ADC σε μια πραγματική τιμή στην ένδειξη μετρητή.

Βήμα 5: Εφαρμογή Android

Η εφαρμογή χρησιμοποιεί αυτήν τη δροσερή βιβλιοθήκη για να επικοινωνεί μέσω σειριακού Bluetooth για να ανταλλάσσει πληροφορίες byte.

Η κύρια προειδοποίηση αυτού του συστήματος είναι ότι το μέγιστο μήκος λέξης που αποστέλλεται μέσω Bluetooth είναι 8 bit και η τιμή ADC αντιπροσωπεύεται ως 12 bits. Για να ξεπεράσω αυτό το ζήτημα, χώρισα μία τιμή ADC σε 2 ξεχωριστές τιμές 6 bit (MSB και LSB) με τα υπόλοιπα 2 bits να χρησιμοποιούνται για τον προσδιορισμό του τύπου μηνύματος (MSB, LSB, CHK).

Επομένως, για μια μόνο τιμή ADC που θέλουμε να μεταδώσουμε, χωρίζουμε την πραγματική τιμή σε 2 μηνύματα. Για να ελέγξω την ακεραιότητα αυτών των μηνυμάτων, έστειλα ένα τρίτο μήνυμα με το XOR των 2 πρώτων μηνυμάτων.

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

Βήμα 6: Περίληψη

Ενώ εγώ το τμήμα μικρο-ελεγκτή αυτού του έργου λειτουργεί αρκετά καλά εμφανίζοντας την ένταση μέσα σε ένα δωμάτιο, αντιμετώπισα ορισμένα προβλήματα κατά την αποστολή δεδομένων μέσω Bluetooth λόγω απώλειας πακέτων.

Ο πηγαίος κώδικας για αυτό το έργο μπορεί να βρεθεί εδώ:

  • Συντροφική εφαρμογή Android - repo
  • Κωδικός μικροελεγκτή - repo

Μη διστάσετε να συνεισφέρετε εάν το θεωρείτε χρήσιμο με οποιονδήποτε τρόπο.

Συνιστάται: