תוכן עניינים:

סטטוסקופ ספקטרלי מהיר של Hartley Transform: 22 שלבים
סטטוסקופ ספקטרלי מהיר של Hartley Transform: 22 שלבים

וִידֵאוֹ: סטטוסקופ ספקטרלי מהיר של Hartley Transform: 22 שלבים

וִידֵאוֹ: סטטוסקופ ספקטרלי מהיר של Hartley Transform: 22 שלבים
וִידֵאוֹ: אופטיקה - הרצאה 32 2024, יולי
Anonim
סטטוסקופ ספקטרלי מהיר של הרטלי טרנספורמציה
סטטוסקופ ספקטרלי מהיר של הרטלי טרנספורמציה

במדריך זה תלמד כיצד ליצור סטטוסקופ ספקטרלי באמצעות הטרנספורמציה המהירה של הארטלי. זה יכול לשמש להדמיית קולות לב וריאה.

שלב 1: חומרים

מסך LCD בגודל 1.8 אינץ '($ 7.50 באמזון)

Arduino Uno או שווה ערך ($ 7.00 ב- Gearbest)

מגבר אלקטרט ($ 6.95 ב- Adafruit)

קבל 100 µF ($ 0.79)

חוט ומגשרים ($ 4.00)

שקע סטריאו 3.5 מ מ ($ 1.50)

פוטנציומטר 10 קאוהם ($ 2.00)

מתג רגעי ($ 1.50)

שלב 2: כלים

מלחם

אקדח דבק חם

מדפסת תלת מימד … או חבר עם מדפסת תלת מימד (אפשר לייצר גם עם קרטון)

קאטר

לוח לחם

שלב 3: הדפסה תלת מימדית

הראשון הוא להדפיס תלת -ממד את קבצי ה-.stl המצורפים לשלב זה. הדפסתי את שני הקבצים באמצעות החומר/ההגדרות הבאים:

חומר: PLA

גובה השכבה: 0.1 מ מ

עובי קיר/עליון/תחתון: 0.8 מ מ

טמפרטורת הדפסה: 200 ⁰

טמפרטורת המיטה: 60 ⁰

תמיכה מופעלת @ 10%

שלב 4: בנה מעגל

בנה את המעגל בעזרת הרכיבים בחלק החומרים. אני תמיד מרכיב את המעגל על לוח לחם קודם כל כדי לוודא שהוא פועל כראוי לפני שנוגע במגהץ.

שלב 5: חיווט LCD

חיווט LCD
חיווט LCD

באמצעות הדמות המצורפת לשלב זה, חוטי הלחמה לשבעה מתוך שמונה הפינים במסך ה- LCD. אורך חוטים אלה יהיה כ- 3 מטרים, למעט הקרקע וסיכות 5V (אלה צריכות להיות באורך של 2-3 אינץ 'בלבד)

שלב 6: חיווט מיקרופון/מגבר

חיווט מיקרופון/מגבר
חיווט מיקרופון/מגבר

באמצעות הדמות המצורפת להלחמה בשלב זה שלושה חוטים לסיכות +5V, הארקה ויציאה במיקרופון/מגבר Adafruit. אורך אלה צריך להיות באורך של כ 2-3 סנטימטרים בלבד.

שלב 7: חיווט מתג רגעי

חברו חוט אחד בגובה 2-3 אינץ 'לכל אחד משני הזיזים במתג הרגעי.

שלב 8: חיווט פוטנציומטר

בעזרת האיור בשלב 6, הלחמו שלושה חוטים באורך של כ- 2-3 סנטימטרים לשלושת הזיזים של הפוטנציומטר.

שלב 9: חיווט שקע לאוזניות

הלחם שלושה חוטים אל הטבעת, קצה ושרוולי השרוולים של שקע האוזניות. השתמשתי בשקע מתוך מטרונום שכבר היה קווי. אם אינך יודע מה הטבעת, קצה ושרוולי שרוולים, פשוט חפש בגוגל יש הרבה תמונות טובות על חיבורי חיבורי סטריאו.

שלב 10: יציאת מיקרופון/מגבר

לאחר הלחמת החוטים במיקרופון/מגבר, פוטנציומטר ושקע לאוזניות, הלחם חוט אחד באורך של כשלושה רגל לחוט "החוצה" של מגבר המיקרופון. חוט זה יתחבר מאוחר יותר לסיכה A0 של הארדואינו.

שלב 11: המשך יציאת המיקרופון/מגבר

הלחם חוט שני לחוט "החוצה" של המיקרופון/מגבר. חוט זה צריך להיות מולחם לקבל 100 microFarad. אם אתה משתמש בקבל אלקטרוליטי, ודא שהצד החיובי מחובר לחוט זה.

שלב 12: רכיבים במארז

רכיבים במארז
רכיבים במארז
רכיבים במארז
רכיבים במארז

לאחר שכל החוטים מולחמים על הרכיבים, הנח את הרכיבים במקומות המתאימים בהתאם לדמויות המצורפות לשלב זה. השתמשתי בדבק חם כדי לאבטח את מיקרופון ושקע האוזניות במקומן.

שלב 13: הלחמה בתוך המארז

לאחר שכל הרכיבים מאובטחים במארז, הלחם את כל חוטי הקרקע יחד. צריך להיות אחד מה- LCD, אחד מהמיקרופון/מגבר ואחד מהשרוול של שקע האוזניות. כמו כן, הלחם את חוטי ה -5 V יחד וחוט אחד מהמתג הרגעי. שוב צריך להיות אחד מה- LCD, אחד מהמיקרופון/מגבר, ואחד על המתג הרגעי.

שלב 14: +5V, חוטי GND מורחבים

כעת חותכים שתי חתיכות חוט באורך של כ -3 מטרים. הלחם אחד לאשכול חוטי הקרקע והלחם את השני לחוט הפתוח במתג הרגעי.

שלב 15: החלק החוטים הארוכים דרך חור המארז

החליק חוטים ארוכים דרך חור המארז
החליק חוטים ארוכים דרך חור המארז

כעת, אמורים להיות לך שמונה חוטים באורך של כ -3 מטרים. הנח אותם דרך החור הלא מילוי במארז. עיין באיור המצורף לשלב זה

שלב 16: התכווץ בחום

לאחר השלמת ההלחמה, ודא שהחוטים החשופים מכוסים. השתמשתי בצינורות כיווץ חום, אך גם סרט חשמלי עובד מצוין.

שלב 17: מעטפת חותם

מעטפת חותם
מעטפת חותם
מעטפת חותם
מעטפת חותם

קח את מחצית המארז המכיל את מסך ה- LCD והחלק אותו מעל החצי השני של המארז המכיל את שאר הרכיבים. תוך כדי דחיפת שני החלקים זה לזה, הדבק אותם חם כדי לאבטח את המארז יחד.

שלב 18: התחבר ל- Arduino

שמונה החוטים הארוכים שנותרו מחוברים ישירות לסיכות הארדואינו המתוארות שלהם בתרשימי המעגלים. וודא שבכל פעם שאתה מלחם את אחד החוטים הארוכים בגודל 3 רגל למעגל, הנחת חתיכת סרט בקצה השני המציין לאיזה סיכת ארדואינו היא הולכת!

שלב 19: Arduino IDE/ספריות

יהיה עליך להוריד את Arduino IDE. למערכון זה השתמשתי בשלוש ספריות שונות: FHT.h, SPI.h ו- TFT.h. אם אינך יודע כיצד להוריד ספריות ארדואינו, בקר בכתובת https://www.arduino.cc/en/Guide/Libraries. ספריית FHT.h הורדה מאתר openmusiclabs.com. השניים האחרים הורדו ב- GitHub.

שלב 20: סקיצה של ארדואינו

הקוד משתמש ב- Fast Hartley Transform (FHT) כדי לשנות את תחום הזמן לתחום תדרים. ניתן לעשות זאת גם באמצעות Transform Fast Fourier (FFT), אך ה- FHT מהיר הרבה יותר. ה- FFT וה- FHT הם רעיונות מאוד בסיסיים בעיבוד אותות ומאוד כיף ללמוד עליהם. אני מציע לקרוא קצת בעצמך, אם אתה מעוניין תראה. קוד הדוגמה של FHT שהעתקתי מאתר Open Music Labs הוציא בתחילה את המשרעת של כל סל תדרים כפלט לוגריתמי או דציבל. שיניתי את זה כדי להוציא את פחי התדרים בקנה מידה לינארי. הסיבה לכך היא שהסולם הליניארי הוא ייצוג חזותי טוב יותר של האופן שבו בני האדם שומעים צליל. הלולאה for () בסוף מיועדת לציור המשרעת של כל סל תדר במסך ה- LCD. ספקטרום ה- FHT המלא יכלול את כל פחי התדרים מ- i = 0 ל- i <128. תבחין כי לולאת ה- for () שלי היא מ- i = 5 ל- i <40, הסיבה לכך היא שהתדרים החשובים לאבחון מצבי ריאה הם בדרך כלל בין 150Hz ל- 3.5khz, החלטתי לעלות עד כ -4 kHz. ניתן להתאים זאת אם ברצונך להציג את ספקטרום התדרים המלא.

[קוד]

// קוד סטטוסקופ דיגיטלי

// הספרייה המהירה של 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 לפין arduino 10

#define dc 9 // הגדר סיכת lcd dc לפין arduino 9

#define rst 8 // הגדר סיכת איפוס lcd לפין arduino 8

TFT myScreen = TFT (cs, dc, rst); // מצהירים על שם מסך TFT

הגדרת בטל () {

//Serial.begin(9600);// להגדיר קצב דגימה

myScreen.begin (); // לאתחל מסך TFT

myScreen.background (0, 0, 0); // הגדר את הרקע לשחור

ADCSRA = 0xe5; // הגדר את adc למצב ריצה חופשי

ADMUX = 0x40; // השתמש ב- adc0

}

לולאת חלל () {

בעוד (1) {// מפחית cli jitter (); // UDRE interrupt מאט בדרך זו ב- arduino1.0

עבור (int i = 0; i <FHT_N; i ++) {// שמור 256 דוגמאות

בעוד (! (ADCSRA & 0x10)); // המתן עד ש- adc יהיה מוכן

ADCSRA = 0xf5; // הפעל מחדש את adc byte

m = ADCL; // אחזר בתים של נתוני ADC

j = ADCH; int k = (j << 8) | M; // צור לתוך int

k -= 0x0200; // טופס לכניסה חתומה

k << = 6; // טופס ל- int. חתום 16b

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 = map (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: עבודה עתידית

** הערה: אני כימאי, לא מהנדס או מדען מחשבים **. סביר להניח שיהיו טעויות ושיפורים בעיצוב ובקוד. עם זאת, אני חושב שזו התחלה טובה למשהו שיכול להיות מאוד שימושי וזול. הכדורים הבאים הם שיפורים עתידיים שהייתי רוצה לעשות ואני מקווה שחלקכם גם ינסו לשפר אותו!

· הפוך את המכשיר לנייד. אין לי ניסיון רב עם מעבדים או מיקרו -בקרים אחרים, אך יהיה צורך שיהיה לו מספיק זיכרון בכדי לאחסן את כל ספריית ה- FHT, או אולי בלוטות '.

· הכנס כמה חישובי ניתוח סטטיסטי לקוד. לדוגמה, בדרך כלל לצפצופים יש תדר יסודי שווה או גדול מ- 400 הרץ ונמשך לפחות 250 אלפיות השנייה. רונצ'י מופיעים בתדר בסיסי של כ 200 הרץ או פחות ונמשך לפחות 250 מילישניות. צלילי ריאה רבים אחרים מוגדרים ומעידים על מצבים בריאותיים (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). אני חושב שזה משהו שניתן לבדוק בקוד על ידי השוואת האות של פחי התדרים לאחר מספר מחזורים מסוים באמצעות ה- FHT ולאחר מכן הפעלת הפונקציה millis () כדי לראות כמה זמן הוא היה קיים ולאחר מכן השווה אותו לרצפת הרעש של חישוב ה- FHT. אני בטוח שאפשר לעשות את הדברים האלה!

אני מקווה שכולכם נהנתם מהפרויקט הזה ואם יש לכם שאלות אנא הגיבו ואני אענה בהקדם האפשרי! אני מצפה לראות תגובות.

מוּמלָץ: