Բովանդակություն:

Fast Hartley Transform Spectral Stethoscope: 22 Steps
Fast Hartley Transform Spectral Stethoscope: 22 Steps

Video: Fast Hartley Transform Spectral Stethoscope: 22 Steps

Video: Fast Hartley Transform Spectral Stethoscope: 22 Steps
Video: The Discrete Fourier Transform: Most Important Algorithm Ever? 2024, Հուլիսի
Anonim
Fast Hartley Transform Spectral Stethoscope
Fast Hartley Transform Spectral Stethoscope

Այս ուսանելի դասում դուք կսովորեք, թե ինչպես պատրաստել սպեկտրալ աստղադիտակ ՝ օգտագործելով արագ հարտլի կերպարանափոխությունը: Սա կարող է օգտագործվել սրտի և թոքերի հնչյունները պատկերացնելու համար:

Քայլ 1: Նյութեր

1.8 դյույմ LCD էկրան ($ 7.50 Amazon- ում)

Arduino Uno կամ համարժեք ($ 7.00 Gearbest- ում)

Electret ուժեղացուցիչ ($ 6.95 Adafruit- ում)

100 μF կոնդենսատոր ($ 0.79)

Մետաղալարեր և թռիչքներ ($ 4.00)

3.5 մմ ստերեո Jack ($ 1.50)

10kOhm պոտենցիոմետր ($ 2.00)

Momentary Switch ($ 1.50)

Քայլ 2: Գործիքներ

Sոդման երկաթ

Տաք սոսինձ ատրճանակ

3D տպիչ… կամ 3D տպիչով ընկեր (հնարավոր է պատրաստել նաև ստվարաթղթից)

Մետաղական կտրիչ

Breadboard

Քայլ 3: 3D տպագրություն

Առաջինն այս քայլին կցված.stl ֆայլերի 3D տպումն է: Երկու ֆայլերը տպել եմ ՝ օգտագործելով հետևյալ նյութը/պարամետրերը.

Նյութը ՝ PLA

Շերտի բարձրությունը `0.1 մմ

Պատի/վերևի/ներքևի հաստությունը `0.8 մմ

Տպման ջերմաստիճանը `200 ° C

Մահճակալի ջերմաստիճանը `60 ° C

Աջակցությունը միացված է @ 10%

Քայլ 4: Կառուցեք միացում

Օգտագործելով բաղադրիչները նյութերի բաժնում ՝ կառուցեք շրջանը: Ես միշտ միացումն առաջինը դնում եմ տախտակի վրա, որպեսզի համոզվեմ, որ այն ճիշտ է աշխատում, նախքան զոդի երկաթին դիպչելը:

Քայլ 5: LCD լարերի միացում

LCD լարերի միացում
LCD լարերի միացում

Օգտագործելով այս քայլին կցված նկարը, լարերը կպցրեք LCD էկրանին գտնվող ութ կապումներից յոթին: Այս լարերը պետք է ունենան մոտ 3 ոտնաչափ երկարություն, բացի գետնից և +5V կապումներից (դրանք պետք է լինեն միայն 2-3 դյույմ)

Քայլ 6. Խոսափողի/ուժեղացուցիչի լարերի միացում

Խոսափողի/ուժեղացուցիչի լարերի միացում
Խոսափողի/ուժեղացուցիչի լարերի միացում

Օգտագործելով այս քայլին ամրացված պատկերը, երեք լար ամրացրեք Adafruit խոսափողի/ուժեղացուցիչի +5V, Ground և Out կապում: Սրանք միայն պետք է լինեն մոտ 2-3 դյույմ երկարությամբ:

Քայլ 7: Անմիջական անջատիչ լարերի միացում

Մուտքագրեք մեկ 2-3 դյույմանոց մետաղալար `երկու կողպեքներից յուրաքանչյուրին վայրկենական անջատիչի վրա:

Քայլ 8: Պոտենցիոմետր էլեկտրագծերի տեղադրում

Օգտագործելով 6-րդ քայլի պատկերը, երեք լար լարեք մոտ 2-3 դյույմ երկարությամբ պոտենցիոմետրի երեք կողիկներին:

Քայլ 9: Ականջակալների Jack միացում

Threeոդեք ականջակալների օղակին, ծայրին և թևի երեք լար: Ես օգտագործեցի մետրոնոմից մի խցիկ, որն արդեն լարված էր: Եթե չգիտեք, թե ինչ են մատանին, ծայրը և թևերը, պարզապես google- ում այն շատ լավ պատկերներ կան ստերեո վարդակների միացման մասին:

Քայլ 10. Խոսափողի/ուժեղացուցիչի ելք

Խոսափողը/ուժեղացուցիչի, պոտենցիոմետրի և ականջակալների խրոցակի լարերը միացնելուց հետո մի մետաղալար կպցրեք մոտ երեք ոտնաչափ երկարությամբ խոսափողի ուժեղացուցիչի «դուրս» լարին: Այս մետաղալարը հետագայում կկապվի arduino- ի A0 կապին:

Քայլ 11. Խոսափողի/ուժեղացուցիչի ելքը շարունակվում է

Երկրորդ մետաղալարը միացրեք խոսափողի/ուժեղացուցիչի «դուրս» լարին: Այս մետաղալարը պետք է զոդել 100 microFarad կոնդենսատորի հետ: Եթե դուք օգտագործում եք էլեկտրոլիտիկ կոնդենսատոր, համոզվեք, որ դրական կողմը միացված է այս լարին:

Քայլ 12: Շրջանակի բաղադրիչները

Բաղադրիչները պարիսպում
Բաղադրիչները պարիսպում
Բաղադրիչները պարիսպում
Բաղադրիչները պարիսպում

Այն բանից հետո, երբ բոլոր լարերը կպցվեն բաղադրիչների վրա, տեղադրեք բաղադրիչները համապատասխան վայրերում ՝ հետևելով այս քայլին կցված պատկերներին: Ես օգտագործեցի տաք սոսինձ ՝ խոսափողի և ականջակալների խցիկը տեղում ամրացնելու համար:

Քայլ 13. Ներսում `զոդում

Բոլոր բաղադրիչներն ամրացված լինելուց հետո ամրացրեք բոլոր գրունտի լարերը միասին: Պետք է լինի մեկը LCD- ից, մեկը `խոսափողից/ուժեղացուցիչից, մեկը` ականջակալների խցիկի թևից: Նաև միացրեք +5V լարերը միասին և մեկ մետաղալար ՝ վայրկենական անջատիչից: Կրկին պետք է լինի մեկը LCD- ից, մեկը `խոսափողից/ուժեղացուցիչից, և մեկը` վայրկենական անջատիչից:

Քայլ 14: +5V, GND Ընդլայնված լարեր

Այժմ կտրեք երկու կտոր մետաղալար `մոտ 3 ոտնաչափ երկարությամբ: Oneոդեք մեկը հողային լարերի կլաստերին, իսկ մյուսը կպցրեք բաց մետաղալարերին պահի անջատիչի վրա:

Քայլ 15. Երկար լարերը սահեցրեք պարիսպի անցքով

Երկար լարերը սահեցրեք պարիսպի անցքով
Երկար լարերը սահեցրեք պարիսպի անցքով

Այժմ, դուք պետք է ունենաք ընդհանուր առմամբ ութ լար `մոտ 3 ոտնաչափ երկարությամբ: Տեղադրեք դրանք պարիսպի չլցված անցքի միջով: Տեսեք այս քայլին կցված պատկերը

Քայլ 16: Heերմության նվազում

Soldոդման ավարտից հետո համոզվեք, որ բացված լարերը ծածկված են: Ես օգտագործել եմ ջերմության նվազեցման խողովակներ, բայց էլեկտրական ժապավենը նույնպես լավ է աշխատում:

Քայլ 17: Կնիքի պարիսպ

Կնիքի պարիսպ
Կնիքի պարիսպ
Կնիքի պարիսպ
Կնիքի պարիսպ

Վերցրեք LCD էկրանը պարունակող պարիսպի կեսը և սահեցրեք մյուս բաղադրիչները պարունակող պարիսպի մյուս կեսի վրայով: Երկու կտորները միասին մղելիս դրանք տաք սոսնձով ամրացրեք պատյանը միասին:

Քայլ 18: Միացեք Arduino- ին

Մնացած ութ, երկար և լարերը միացված են անմիջապես իրենց համապատասխան Arduino- ի կապումներին, որոնք նշված են սխեմայի սխեմաներում: Համոզվեք, որ ամեն անգամ, երբ այդ երկար 3 ֆուտ լարերից մեկը միացնում եք շղթայի մեջ, մյուս ծայրին ժապավեն եք դնում ՝ նշելով, թե որ ուղղությամբ է գնում Arduino- ն:

Քայլ 19. Arduino IDE/Գրադարաններ

Ձեզ հարկավոր է ներբեռնել Arduino IDE- ն: Այս ուրվագծի համար ես օգտագործել եմ երեք տարբեր գրադարաններ ՝ FHT.h, SPI.h և TFT.h. Եթե չգիտեք, թե ինչպես ներբեռնել Arduino գրադարանները, խնդրում ենք այցելել https://www.arduino.cc/hy/Guide/Libraries: FHT.h գրադարանը ներբեռնվել է openmusiclabs.com կայքից: Մյուս երկուսը ներբեռնվել են GitHub- ում:

Քայլ 20: Arduino Sketch

Կոդը օգտագործում է Fast Hartley Transform (FHT) ՝ ժամանակի տիրույթը հաճախականության տիրույթ փոխելու համար: Դա կարելի է անել նաև Ֆուրիեի արագ փոխակերպման (FFT) միջոցով, սակայն FHT- ն շատ ավելի արագ է: FFT- ն և FHT- ն ազդանշանների մշակման շատ հիմնարար գաղափարներ են, որոնց մասին սովորելը շատ հաճելի է: Առաջարկում եմ ինքներդ կարդալ, եթե ձեզ հետաքրքրում է, տեսեք: FHT- ի օրինակը, որը ես պատճենել եմ Open Music Labs- ի կայքից, սկզբում թողարկում էր յուրաքանչյուր հաճախականության աղբարկղի ամպլիտուդը որպես լոգարիթմական կամ դեցիբելային ելք: Ես փոխեցի սա ՝ գծային մասշտաբով ելնելով հաճախականությունների աղբարկղերից: Դա պայմանավորված է նրանով, որ գծային սանդղակը ավելի լավ տեսողական ներկայացում է, թե ինչպես են մարդիկ լսում ձայնը: Վերջում for () օղակը նախատեսված է LCD էկրանին յուրաքանչյուր հաճախականության աղբարկղի ամպլիտուդը նկարելու համար: FHT- ի ամբողջական սպեկտրը կընդգրկի բոլոր հաճախականությունների աղբարկղերը ՝ i = 0 -ից մինչև i <128: Դուք կնկատեք, որ իմ for () հանգույցը i = 5 -ից i <40 է, դա պայմանավորված է նրանով, որ թոքերի հիվանդությունների ախտորոշման համար հաճախականությունները սովորաբար 150Hz- ից մինչև 3.5khz են, ես որոշեցի բարձրացնել մինչև 4kHz: Դա կարող է ճշգրտվել, եթե ցանկանում եք ցույց տալ հաճախականության ամբողջ սպեկտրը:

[ծածկագիր]

// Թվային աստղադիտակի ծածկագիր

// Fast Hartley Transform գրադարանը ներբեռնված է openmusiclabs- ից

#սահմանել LIN_OUT 1 // սահմանել FHT ՝ գծային ելք արտադրելու համար

#սահմանել LOG_OUT 0 // անջատել FHT լոգարիթմական ելքը

#սահմանել FHT_N 256 // FHT նմուշի համարը

#ներառել // ներառել FHT գրադարանը

#ներառել // ներառել TFT գրադարանը

#ներառել // ներառել SPI գրադարանը

#սահմանել cs 10 // սահմանել lcd cs pin- ը arduino pin 10 -ի վրա

#սահմանեք dc 9 // տեղադրեք lcd dc pin- ը arduino pin 9 -ի վրա

#define rst 8 // սահմանել lcd reset 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

}

դատարկ շրջան () {

while (1) {// նվազեցնում է jitter cli (); // UDRE ընդհատումը այս կերպ դանդաղեցնում է arduino1.0- ում

for (int i = 0; i <FHT_N; i ++) {// պահպանել 256 օրինակ

իսկ (! (ADCSRA & 0x10)); // սպասեք adc- ի պատրաստ լինելուն

ADCSRA = 0xf5; // վերագործարկեք adc բայթ

մ = ADCL; // ստանալ adc տվյալների բայթ

j = ADCH; int k = (j << 8) | մ; // ձևավորել ինտ

k -= 0x0200; // ձևավորել ստորագրված ինտ

k << = 6; // ձևավորել 16 բ ստորագրված ինտ

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. Ապագա աշխատանք

** Նշում. Ես քիմիկոս եմ, ոչ թե ինժեներ կամ համակարգչագետ **: Հավանաբար կլինեն սխալներ և բարելավումներ դիզայնի և ծածկագրի մեջ: Ասածս այն է, որ ես կարծում եմ, որ դա լավ սկիզբ է մի բանի համար, որը կարող է ավարտվել որպես շատ օգտակար և էժան: Հետևյալ փամփուշտներն ապագա բարելավումներ են, որոնք ես կցանկանայի կատարել, և հուսով եմ, որ ձեզանից ոմանք նույնպես կփորձեն բարելավել այն:

· Սարքը դարձրեք շարժական: Ես պրոցեսորների կամ այլ միկրոկոնտրոլերների հետ մեծ փորձ չունեմ, բայց այն պետք է ունենա բավականաչափ հիշողություն ՝ ամբողջ FHT գրադարանը, կամ, հնարավոր է, Bluetooth- ում պահելու համար:

· Ներկայացրեք վիճակագրական վերլուծության որոշ հաշվարկներ ծածկագրում: Օրինակ, սովորաբար սուլոցը ունի 400 Հց -ից հավասար կամ ավելի մեծ հաճախականություն և տևում է առնվազն 250 ms: Rhonchi- ն տեղի է ունենում մոտ 200 Հց կամ ավելի ցածր հաճախականությամբ և տևում է առնվազն 250 ms: Թոքերի շատ այլ հնչյուններ սահմանվում և ցույց են տալիս առողջական պայմանները (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf): Կարծում եմ, որ դա այն է, ինչը կարելի է ստուգել ծածկագրում ՝ համեմատելով հաճախականության աղբարկղերի ազդանշանը FHT- ի որոշակի շրջափուլերից հետո, այնուհետև գործարկելով millis () գործառույթը ՝ տեսնելու, թե որքան ժամանակ է այն ներկա, այնուհետև համեմատելով այն դեպի FHT հաշվարկի աղմուկի հատակ: Վստահ եմ, որ այս բաները կարելի է անել:

Հուսով եմ, որ բոլորդ զվարճացաք այս նախագծով, և եթե ունեք հարցեր, մեկնաբանեք, և ես կպատասխանեմ հնարավորինս շուտ: Ես անհամբերությամբ սպասում եմ մեկնաբանությունների:

Խորհուրդ ենք տալիս: