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

Φασματικό στηθοσκόπιο Fast Hartley Transform: 22 Βήματα
Φασματικό στηθοσκόπιο Fast Hartley Transform: 22 Βήματα

Βίντεο: Φασματικό στηθοσκόπιο Fast Hartley Transform: 22 Βήματα

Βίντεο: Φασματικό στηθοσκόπιο Fast Hartley Transform: 22 Βήματα
Βίντεο: Αστρική ταξινόμηση και φασματικοί τύποι αστέρων... 2024, Ιούλιος
Anonim
Φασματικό στηθοσκόπιο Fast Hartley Transform
Φασματικό στηθοσκόπιο Fast Hartley Transform

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

Βήμα 1: Υλικά

Οθόνη LCD 1,8”(7,50 $ στο Amazon)

Arduino Uno ή Equivalent ($ 7,00 στο Gearbest)

Electret Amplifier (6,95 $ στο Adafruit)

Πυκνωτής 100 μF (0,79 $)

Σύρμα και άλτες ($ 4,00)

Στερεοφωνικό βύσμα 3,5 mm (1,50 $)

Ποτενσιόμετρο 10kOhm (2,00 $)

Momentary Switch (1,50 $)

Βήμα 2: Εργαλεία

Συγκολλητικό σίδερο

Πυροβόλο θερμό κόλλα

Τρισδιάστατος εκτυπωτής… ή φίλος με τρισδιάστατο εκτυπωτή (Δυνατότητα κατασκευής και με χαρτόνι)

Κόφτης καλωδίων

Breadboard

Βήμα 3: Τρισδιάστατη εκτύπωση

Το πρώτο είναι η τρισδιάστατη εκτύπωση των αρχείων.stl που επισυνάπτονται σε αυτό το βήμα. Εκτύπωσα και τα δύο αρχεία χρησιμοποιώντας το ακόλουθο υλικό/ρυθμίσεις:

Υλικό: PLA

Ightψος στρώματος: 0.1mm

Πάχος τοίχου/επάνω/κάτω: 0,8mm

Θερμοκρασία εκτύπωσης: 200⁰C

Θερμοκρασία κρεβατιού: 60⁰C

Η υποστήριξη είναι ενεργοποιημένη @ 10%

Βήμα 4: Κατασκευή κυκλώματος

Χρησιμοποιώντας τα εξαρτήματα στην ενότητα υλικών, δημιουργήστε το κύκλωμα. Πάντα βάζω το κύκλωμα σε μια σανίδα ψωμιού για να βεβαιωθώ ότι λειτουργεί σωστά πριν αγγίξω το συγκολλητικό σίδερο.

Βήμα 5: Καλωδίωση LCD

Καλωδίωση LCD
Καλωδίωση LCD

Χρησιμοποιώντας το σχήμα που επισυνάπτεται σε αυτό το βήμα, συγκολλήστε καλώδια σε επτά από τις οκτώ ακίδες της οθόνης LCD. Αυτά τα καλώδια θα πρέπει να έχουν μήκος περίπου 3 πόδια, εκτός από τις ακίδες γείωσης και +5V (αυτά πρέπει να είναι μόνο 2-3 ίντσες)

Βήμα 6: Καλωδίωση μικροφώνου/ενισχυτή

Μικρόφωνο/Ενισχυτής καλωδίωσης
Μικρόφωνο/Ενισχυτής καλωδίωσης

Χρησιμοποιώντας το σχήμα που συνδέεται με αυτό το βήμα, κολλήστε τρία καλώδια στις ακίδες +5V, Ground και Out στο μικρόφωνο/ενισχυτή Adafruit. Αυτά χρειάζονται μόνο 2-3 ίντσες σε μήκος.

Βήμα 7: Στιγμιαία εναλλαγή καλωδίωσης

Συνδέστε ένα καλώδιο 2-3 ιντσών σε κάθε μία από τις δύο προεξοχές του στιγμιαίου διακόπτη.

Βήμα 8: Καλωδίωση ποτενσιόμετρου

Χρησιμοποιώντας το σχήμα στο βήμα 6, κολλήστε τρία σύρματα μήκους περίπου 2-3 ίντσες στις τρεις προεξοχές του ποτενσιόμετρου.

Βήμα 9: Καλωδίωση ακουστικών

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

Βήμα 10: Έξοδος μικροφώνου/ενισχυτή

Αφού συγκολλήσετε τα καλώδια στο μικρόφωνο/ενισχυτή, το ποτενσιόμετρο και την υποδοχή ακουστικών, κολλήστε ένα καλώδιο μήκους περίπου τριών ποδιών στο "έξω" καλώδιο του ενισχυτή μικροφώνου. Αυτό το καλώδιο θα συνδεθεί αργότερα με τον ακροδέκτη A0 του arduino.

Βήμα 11: Η έξοδος μικροφώνου/ενισχυτή συνεχίζεται

Συγκολλήστε ένα δεύτερο καλώδιο στο καλώδιο "έξω" του μικροφώνου/ενισχυτή. Αυτό το σύρμα πρέπει να συγκολληθεί σε έναν πυκνωτή 100 microFarad. Εάν χρησιμοποιείτε ηλεκτρολυτικό πυκνωτή, βεβαιωθείτε ότι η θετική πλευρά είναι συνδεδεμένη με αυτό το καλώδιο.

Βήμα 12: Στοιχεία στο περίβλημα

Στοιχεία στο περίβλημα
Στοιχεία στο περίβλημα
Στοιχεία στο περίβλημα
Στοιχεία στο περίβλημα

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

Βήμα 13: Συμπίεση-περίβλημα

Αφού στερεωθούν όλα τα εξαρτήματα στο περίβλημα, κολλήστε όλα τα καλώδια γείωσης μαζί. Θα πρέπει να υπάρχει ένα από την οθόνη LCD, ένα από το μικρόφωνο/ενισχυτή και ένα από το μανίκι της υποδοχής ακουστικών. Επίσης κολλήστε τα καλώδια +5V μαζί και ένα καλώδιο από το στιγμιαίο διακόπτη. Και πάλι θα πρέπει να υπάρχει ένα από την οθόνη LCD, ένα από το μικρόφωνο/ενισχυτή και ένα στο στιγμιαίο διακόπτη.

Βήμα 14: +5V, GND Extended Wires

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

Βήμα 15: Περάστε μακριά καλώδια μέσω της τρύπας του περιβλήματος

Γλιστρήστε μακριά καλώδια μέσω της τρύπας του περιβλήματος
Γλιστρήστε μακριά καλώδια μέσω της τρύπας του περιβλήματος

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

Βήμα 16: Θερμική συρρίκνωση

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

Βήμα 17: Περίφραξη σφραγίδας

Περίφραξη σφραγίδας
Περίφραξη σφραγίδας
Περίφραξη σφραγίδας
Περίφραξη σφραγίδας

Πάρτε το μισό περίβλημα που περιέχει την οθόνη LCD και περάστε το στο άλλο μισό του περιβλήματος που περιέχει τα άλλα εξαρτήματα. Ενώ σπρώχνετε τα δύο κομμάτια μαζί, κολλήστε τα ζεστά για να στερεώσετε το περίβλημα μαζί.

Βήμα 18: Συνδεθείτε στο Arduino

Τα οκτώ, μακριά, καλώδια που απομένουν συνδέονται απευθείας με τις αντίστοιχες καρφίτσες Arduino που περιγράφονται στα σχήματα κυκλώματος. Βεβαιωθείτε ότι κάθε φορά που κολλάτε ένα από αυτά τα μακριά καλώδια 3ft στο κύκλωμα, βάζετε ένα κομμάτι ταινίας στο άλλο άκρο, υποδεικνύοντας σε ποια καρφίτσα Arduino πηγαίνει!

Βήμα 19: Arduino IDE/Βιβλιοθήκες

Θα χρειαστεί να κατεβάσετε το Arduino IDE. Για αυτό το σκίτσο, χρησιμοποίησα τρεις διαφορετικές βιβλιοθήκες: FHT.h, SPI.h και TFT.h. Εάν δεν γνωρίζετε πώς να κάνετε λήψη βιβλιοθηκών Arduino, ανατρέξτε στη διεύθυνση https://www.arduino.cc/en/Guide/Libraries. Η βιβλιοθήκη FHT.h έγινε λήψη από το openmusiclabs.com. Τα άλλα δύο κατεβάστηκαν στο GitHub.

Βήμα 20: Σκίτσο Arduino

Ο κώδικας χρησιμοποιεί το Fast Hartley Transform (FHT) για να αλλάξει τον τομέα χρόνου σε έναν τομέα συχνοτήτων. Αυτό μπορεί επίσης να γίνει χρησιμοποιώντας το Fast Fourier Transform (FFT), αλλά το FHT είναι πολύ πιο γρήγορο. Το FFT και το FHT είναι πολύ θεμελιώδεις ιδέες στην επεξεργασία σήματος και πολύ διασκεδαστικό να μάθεις. Προτείνω να διαβάσετε μόνοι σας, αν ενδιαφέρεστε δείτε. Ο παράδειγμα κώδικας FHT που αντέγραψα από τον ιστότοπο του Open Music Labs έβγαζε αρχικά το πλάτος κάθε κάδου συχνοτήτων ως λογαριθμική ή ντεσιμπέλ έξοδο. Το άλλαξα για έξοδο των κάδων συχνότητας σε γραμμική κλίμακα. Αυτό συμβαίνει επειδή η γραμμική κλίμακα είναι μια καλύτερη οπτική αναπαράσταση του τρόπου με τον οποίο οι άνθρωποι ακούν τον ήχο. Ο βρόχος for () στο τέλος είναι για να σχεδιάσετε το πλάτος κάθε κάδου συχνοτήτων στην οθόνη LCD. Το πλήρες φάσμα FHT θα περιλαμβάνει όλους τους κάδους συχνοτήτων από i = 0 έως i <128. Θα παρατηρήσετε ότι ο βρόχος μου για () είναι από i = 5 έως i <40, αυτό συμβαίνει επειδή οι συχνότητες που είναι σημαντικές για τη διάγνωση των πνευμονικών παθήσεων είναι συνήθως μεταξύ 150Hz και 3.5khz, αποφάσισα να ανέβω μέχρι περίπου 4kHz. Αυτό μπορεί να ρυθμιστεί εάν θέλετε να εμφανίσετε το πλήρες φάσμα συχνοτήτων.

[κώδικας]

// Digitalηφιακός κώδικας στηθοσκοπίου

// Βιβλιοθήκη Fast Hartley Transform κατεβάστηκε από openmusiclabs

#define LIN_OUT 1 // ρυθμίστε το FHT να παράγει γραμμική έξοδο

#define LOG_OUT 0 // απενεργοποιήστε τη λογαριθμική έξοδο FHT

#define FHT_N 256 // αριθμός δείγματος FHT

#include // περιλαμβάνει βιβλιοθήκη FHT

#include // περιλαμβάνει βιβλιοθήκη TFT

#include // περιλαμβάνει βιβλιοθήκη SPI

#define cs 10 // ορίστε lcd cs pin σε arduino pin 10

#define dc 9 // ορίστε lcd dc pin σε arduino pin 9

#define rst 8 // ορίστε lcd pin reset σε arduino pin 8

TFT myScreen = TFT (cs, dc, rst); // δηλώστε το όνομα της οθόνης TFT

void setup () {

//Serial.begin(9600);// ρυθμός δειγματοληψίας

myScreen.begin (); // προετοιμασία οθόνης TFT

myScreen.background (0, 0, 0); // ορίστε το φόντο σε μαύρο

ADCSRA = 0xe5; // ρυθμίστε το adc σε ελεύθερη λειτουργία

ADMUX = 0x40; // χρήση adc0

}

void loop () {

ενώ (1) {// μειώνει το jitter cli (); // Η διακοπή UDRE επιβραδύνεται με αυτόν τον τρόπο στο arduino1.0

για (int i = 0; i <FHT_N; i ++) {// αποθηκεύστε 256 δείγματα

ενώ (! (ADCSRA & 0x10)); // περιμένετε να είναι έτοιμο το adc

ADCSRA = 0xf5; // επανεκκίνηση adc byte

m = ADCL; // ανάκτηση byte δεδομένων adc

j = ADCH; int k = (j << 8) | Μ; // μορφή σε int

k -= 0x0200; // μορφή σε υπογεγραμμένο int

k << = 6; // διαμορφώνεται σε 16β υπογεγραμμένο int

fht_input = k; // τοποθετήστε πραγματικά δεδομένα σε κάδους

}

fht_window (); // παράθυρο των δεδομένων για καλύτερη απόκριση συχνότητας

fht_reorder (); // αναδιατάξτε τα δεδομένα πριν κάνετε το fht

fht_run (); // επεξεργασία των δεδομένων στο fht

fht_mag_lin (); // πάρτε την έξοδο του fht

sei ();

για (int i = 5; i <40; i ++) {

myScreen.stroke (255, 255, 255);

myScreen.fill (255, 255, 255);

int drawHeight = χάρτης (fht_lin_out , 10, 255, 10, myScreen.height ());

int ypos = myScreen.height ()-drawHeight-8; myScreen.rect ((4*i) +8, ypos, 3, drawHeight);

}

myScreen.background (0, 0, 0);

}

}

[/κώδικας]

Βήμα 21: Δοκιμάστε το

Δοκιμάστε το!
Δοκιμάστε το!

Χρησιμοποίησα μια ηλεκτρονική γεννήτρια τόνων (https://www.szynalski.com/tone-generator/) για να επιβεβαιώσω ότι ο κώδικας λειτουργεί σωστά. Αφού επιβεβαιώσετε ότι λειτουργεί, πατήστε το κουδούνι του στηθοσκοπίου μέχρι το στήθος σας, πάρτε μια βαθιά αναπνοή και δείτε τι συχνότητες υπάρχουν !!

Βήμα 22: Μελλοντική εργασία

** Σημείωση: Είμαι χημικός, όχι μηχανικός ή επιστήμονας υπολογιστών **. Πιθανότατα θα υπάρξουν λάθη και βελτιώσεις στον σχεδιασμό και τον κώδικα. Τούτου λεχθέντος, νομίζω ότι είναι μια καλή αρχή για κάτι που μπορεί να καταλήξει να είναι πολύ χρήσιμο και φθηνό. Οι ακόλουθες κουκκίδες είναι μελλοντικές βελτιώσεις που θα ήθελα να κάνω και ελπίζω ότι μερικοί από εσάς θα προσπαθήσετε επίσης να τις βελτιώσετε!

· Κάντε τη συσκευή κινητή. Δεν έχω μεγάλη εμπειρία με CPU ή άλλους μικροελεγκτές, αλλά θα πρέπει να έχει αρκετή μνήμη για να αποθηκεύσει ολόκληρη τη βιβλιοθήκη FHT, ή πιθανώς Bluetooth.

· Εισαγάγετε ορισμένους υπολογισμούς στατιστικής ανάλυσης στον κώδικα. Για παράδειγμα, τυπικά ένας συριγμός έχει θεμελιώδη συχνότητα ίση ή μεγαλύτερη από 400 Hz και διαρκεί τουλάχιστον 250 ms. Τα Rhonchi εμφανίζονται σε θεμελιώδη συχνότητα περίπου 200 Hz ή λιγότερο και διαρκούν τουλάχιστον 250 ms. Πολλοί άλλοι πνευμονικοί ήχοι είναι καθορισμένοι και ενδεικτικοί των καταστάσεων υγείας (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Νομίζω ότι είναι κάτι που μπορεί να ελεγχθεί στον κώδικα συγκρίνοντας το σήμα των κάδων συχνότητας μετά από έναν ορισμένο αριθμό κύκλων μέσω του FHT και στη συνέχεια εκτελώντας τη συνάρτηση millis () για να δούμε πόσο καιρό ήταν παρών και στη συνέχεια συγκρίνοντάς το στο πάτωμα θορύβου του υπολογισμού FHT. Είμαι σίγουρος ότι αυτά τα πράγματα μπορούν να γίνουν!

Ελπίζω να περάσατε όλοι καλά με αυτό το έργο και αν έχετε οποιεσδήποτε ερωτήσεις, σχολιάστε και θα απαντήσω το συντομότερο δυνατό! Ανυπομονώ να δω σχόλια.

Συνιστάται: