Turinys:

Greitas Hartley transformacijos spektrinis stetoskopas: 22 žingsniai
Greitas Hartley transformacijos spektrinis stetoskopas: 22 žingsniai

Video: Greitas Hartley transformacijos spektrinis stetoskopas: 22 žingsniai

Video: Greitas Hartley transformacijos spektrinis stetoskopas: 22 žingsniai
Video: Austria GP Qualify 0:56,94 (TAP sterring, pi 2277, setup in video) F1 mobile racing 2024, Lapkritis
Anonim
Greitas Hartley transformacijos spektrinis stetoskopas
Greitas Hartley transformacijos spektrinis stetoskopas

Šioje instrukcijoje sužinosite, kaip padaryti spektrinį stetoskopą naudojant greitą Hartley transformaciją. Tai gali būti naudojama širdies ir plaučių garsams vizualizuoti.

1 žingsnis: medžiagos

1,8 colio LCD ekranas (7,50 USD „Amazon“)

„Arduino Uno“arba lygiavertis (7,00 USD „Gearbest“)

„Electret“stiprintuvas (6,95 USD už „Adafruit“)

100 µF kondensatorius (0,79 USD)

Viela ir megztiniai (4,00 USD)

3,5 mm stereo lizdas (1,50 USD)

10 kOhm potenciometras (2,00 USD)

Momentinis jungiklis (1,50 USD)

2 žingsnis: įrankiai

Lituoklis

Karšto klijų pistoletas

3D spausdintuvas … arba draugas su 3D spausdintuvu (galima pagaminti ir iš kartono)

Vielos pjaustytuvas

Bandomoji Lenta

3 žingsnis: 3D spausdinimas

Pirmasis yra 3D spausdinimas prie šio veiksmo pridėtų.stl failų. Aš atspausdinau abu failus naudodami šią medžiagą/nustatymus:

Medžiaga: PLA

Sluoksnio aukštis: 0,1 mm

Sienos/viršaus/apačios storis: 0,8 mm

Spausdinimo temperatūra: 200⁰C

Lovos temperatūra: 60⁰C

Palaikymas įgalintas @ 10%

4 žingsnis: sukurkite grandinę

Naudodami medžiagų skyriuje esančius komponentus, sukurkite grandinę. Visada pirmiausia sudedu grandinę ant duonos lentos, kad įsitikinčiau, ar ji veikia tinkamai, prieš paliesdama lituoklį.

5 žingsnis: LCD laidai

LCD laidai
LCD laidai

Naudodami paveikslėlį, pridedamą prie šio žingsnio, lituokite laidus prie septynių iš aštuonių LCD ekrano kaiščių. Šie laidai turi būti maždaug 3 pėdų ilgio, išskyrus žemę ir +5 V kaiščius (jie turi būti tik 2–3 colių)

6 veiksmas: mikrofono/stiprintuvo prijungimas

Mikrofono/stiprintuvo laidai
Mikrofono/stiprintuvo laidai

Naudodami paveikslėlį, pridedamą prie šio žingsnio, lituokite tris laidus prie „Adafruit“mikrofono/stiprintuvo +5 V, įžeminimo ir išvesties kaiščių. Jų ilgis turi būti tik 2–3 coliai.

7 žingsnis: momentinio jungiklio prijungimas

Prijunkite vieną 2-3 colių laidą prie kiekvieno akimirkinio jungiklio kilpų.

8 žingsnis: potenciometro prijungimas

Naudodami 6 veiksmo paveikslą, lituokite tris maždaug 2-3 colių ilgio laidus prie trijų potenciometro ąselių.

9 veiksmas: ausinių lizdo prijungimas

Lituokite tris laidus prie ausinių lizdo žiedo, antgalio ir įvorių. Aš panaudojau lizdą iš metronomo, kuris jau buvo prijungtas. Jei nežinote, kas yra žiedas, antgalis ir rankovių antgaliai, tiesiog „Google“jį rasite daug gerų vaizdų apie stereo lizdų prijungimą.

10 veiksmas: mikrofono/stiprintuvo išvestis

Lituodami mikrofono/stiprintuvo, potenciometro ir ausinių lizdo laidus, lituokite vieną maždaug trijų pėdų ilgio laidą prie mikrofono stiprintuvo „išvesties“laido. Vėliau ši viela bus prijungta prie arduino A0 kaiščio.

11 veiksmas: mikrofono/stiprintuvo išvestis tęsiama

Lituokite antrą laidą prie mikrofono/stiprintuvo „išvesties“laido. Ši viela turi būti lituojama į 100 mikroFarad kondensatorių. Jei naudojate elektrolitinį kondensatorių, įsitikinkite, kad teigiama pusė yra prijungta prie šio laido.

12 žingsnis: gaubto komponentai

Korpuso komponentai
Korpuso komponentai
Korpuso komponentai
Korpuso komponentai

Po to, kai visi laidai yra prilituoti prie komponentų, sudėkite komponentus atitinkamose vietose pagal paveikslėlius, pridėtus prie šio žingsnio. Mikrofono ir ausinių lizdo tvirtinimui naudojau karštus klijus.

13 žingsnis: gaubtas-litavimas

Kai visi komponentai yra pritvirtinti korpuse, lituokite visus įžeminimo laidus. Turėtų būti vienas iš LCD, vienas iš mikrofono/stiprintuvo ir vienas iš ausinių lizdo rankovės. Taip pat lituokite +5 V laidus kartu ir vieną laidą iš momentinio jungiklio. Vėlgi, vienas turėtų būti iš LCD, vienas iš mikrofono/stiprintuvo ir vienas ant momentinio jungiklio.

14 žingsnis: +5 V, GND išplėstiniai laidai

Dabar nupjaukite du maždaug 3 pėdų ilgio vielos gabalus. Vieną lituokite prie įžeminimo laidų, o kitą - prie momentinio jungiklio atviros vielos.

15 žingsnis: ištraukite ilgus laidus per gaubto angą

Išskleiskite ilgus laidus per gaubto skylę
Išskleiskite ilgus laidus per gaubto skylę

Dabar iš viso turėtumėte turėti aštuonis maždaug 3 pėdų ilgio laidus. Įdėkite juos per neužpildytą skylę gaubte. Žiūrėkite paveikslėlį, pridėtą prie šio žingsnio

16 žingsnis: šilumos susitraukimas

Baigę litavimą įsitikinkite, kad atviri laidai yra uždengti. Aš naudojau termiškai susitraukiančius vamzdžius, tačiau elektros juosta taip pat veikia gerai.

17 žingsnis: sandarinimo gaubtas

Sandarinimo gaubtas
Sandarinimo gaubtas
Sandarinimo gaubtas
Sandarinimo gaubtas

Paimkite korpuso pusę, kurioje yra skystųjų kristalų ekranas, ir slinkite ją ant kitos korpuso pusės, kurioje yra kiti komponentai. Stumdami du gabalus kartu, karštu klijais juos pritvirtinkite prie korpuso.

18 veiksmas: prisijunkite prie „Arduino“

Likę aštuoni ilgi laidai yra tiesiogiai prijungti prie atitinkamų „Arduino“kaiščių, išdėstytų grandinės schemose. Įsitikinkite, kad kiekvieną kartą, kai lituojate vieną iš tų ilgų 3 pėdų laidų į grandinę, į kitą galą įdedate juostos gabalėlį, nurodantį, į kokį „Arduino“kaištį jis eina!

19 žingsnis: „Arduino IDE“/bibliotekos

Turite atsisiųsti „Arduino IDE“. Šiam eskizui naudojau tris skirtingas bibliotekas: FHT.h, SPI.h ir TFT.h. Jei nežinote, kaip atsisiųsti „Arduino“bibliotekas, žr. Https://www.arduino.cc/en/Guide/Libraries. FHT.h biblioteka buvo atsisiųsta iš openmusiclabs.com. Kiti du buvo atsisiųsti iš „GitHub“.

20 žingsnis: „Arduino“eskizas

Kodas naudoja greitą Hartley transformaciją (FHT), kad pakeistų laiko sritį į dažnio sritį. Tai taip pat galima padaryti naudojant greitą Furjė transformaciją (FFT), tačiau FHT yra daug greitesnis. FFT ir FHT yra labai svarbios signalų apdorojimo idėjos ir labai smagu sužinoti. Siūlau pasiskaityti patiems, jei susidomėjote. FHT pavyzdinis kodas, kurį nukopijavau iš „Open Music Labs“svetainės, iš pradžių išvedė kiekvieno dažnio dėžės amplitudę kaip logaritminę arba decibelinę išvestį. Aš tai pakeičiau, kad išvestų dažnių dėžes tiesine skale. Taip yra todėl, kad linijinė skalė geriau vaizduoja, kaip žmonės girdi garsą. Pabaigoje esanti for () kilpa skirta kiekvienos dažnių dėžės amplitudės piešimui LCD ekrane. Visas FHT spektras apimtų visas dažnių dėžes nuo i = 0 iki i <128. Pastebėsite, kad mano for () kilpa yra nuo i = 5 iki i <40, taip yra todėl, kad plaučių ligoms diagnozuoti svarbūs dažniai paprastai yra nuo 150 Hz iki 3,5 kHz, nusprendžiau padidinti iki maždaug 4 kHz. Tai galima koreguoti, jei norite parodyti visą dažnių spektrą.

[kodas]

// Skaitmeninio stetoskopo kodas

// „Fast Hartley Transform“biblioteka, atsisiųsta iš „openmusiclabs“

#define LIN_OUT 1 // nustatykite FHT, kad būtų gauta tiesinė išvestis

#define LOG_OUT 0 // išjungti FHT logaritminę išvestį

#define FHT_N 256 // FHT mėginio numeris

#include // include FHT biblioteka

#include // įtraukti TFT biblioteką

#include // include SPI biblioteka

#define cs 10 // nustatykite lcd cs pin į arduino pin 10

#define dc 9 // nustatykite lcd dc pin į arduino 9 kaištį

#define rst 8 // nustatykite LCD atstatymo kaištį į 8 arduino kaištį

TFT myScreen = TFT (cs, dc, rst); // deklaruoti TFT ekrano pavadinimą

void setup () {

//Serial.begin(9600);// rinkinio atrankos dažnis

myScreen.begin (); // inicijuoti TFT ekraną

myScreen.background (0, 0, 0); // nustatyti foną juodai

ADCSRA = 0xe5; // nustatykite adc į laisvo veikimo režimą

ADMUX = 0x40; // naudoti adc0

}

void loop () {

while (1) {// sumažina nervingumą cli (); // UDRE nutraukimas sulėtėja tokiu būdu naudojant arduino1.0

(int i = 0; i <FHT_N; i ++) {// išsaugoti 256 pavyzdžius

while (! (ADCSRA & 0x10)); // laukti, kol bus paruošta ADC

ADCSRA = 0xf5; // iš naujo paleisti adc baitą

m = ADCL; // gauti adc duomenų baitą

j = ADCH; int k = (j << 8) | m; // formuoti į int

k -= 0x0200; // formuoti į pasirašytą int

k << = 6; // formuoti į 16b pasirašytą int

fht_input = k; // sudėti tikrus duomenis į dėžes

}

fht_window (); // lango duomenys geresniam dažnio atsakui

fht_reorder (); // pertvarkykite duomenis prieš atlikdami fht

fht_run (); // apdoroti duomenis fht

fht_mag_lin (); // paimkite fht išvestį

sei ();

už (int i = 5; i <40; i ++) {

myScreen.troke (255, 255, 255);

myScreen.fill (255, 255, 255);

int drawHeight = žemėlapis (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);

}

}

[/kodas]

21 žingsnis: išbandykite

Išbandyk!
Išbandyk!

Naudodamasis internetiniu tonų generatoriumi (https://www.szynalski.com/tone-generator/) patvirtinau, kad kodas veikia tinkamai. Patvirtinę, kad veikia, paspauskite stetoskopo varpą iki krūtinės, giliai įkvėpkite ir pažiūrėkite, kokie dažniai yra !!

22 žingsnis: būsimas darbas

** Pastaba: aš esu chemikas, o ne inžinierius ar informatikas **. Tikėtina, kad bus klaidų ir dizaino bei kodo patobulinimų. Tai sakant, manau, kad tai gera pradžia tam, kas gali būti labai naudinga ir nebrangu. Šios kulkos yra būsimi patobulinimai, kuriuos norėčiau padaryti, ir tikiuosi, kad kai kurie iš jūsų taip pat bandys tai patobulinti!

· Padarykite prietaisą mobilų. Neturiu didelės patirties su procesoriais ar kitais mikrovaldikliais, tačiau ji turėtų turėti pakankamai atminties, kad būtų galima saugoti visą FHT biblioteką arba galbūt „Bluetooth“.

· Į kodą įtraukite kai kuriuos statistinės analizės skaičiavimus. Pavyzdžiui, paprastai švokštimo dažnis yra lygus 400 Hz arba didesnis ir trunka mažiausiai 250 ms. „Rhonchi“atsiranda esant maždaug 200 Hz ar mažesniam dažniui ir trunka mažiausiai 250 ms. Daugelis kitų plaučių garsų yra apibrėžti ir rodo sveikatos būklę (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Manau, kad tai galima patikrinti kodu, palyginus dažnių dėžių signalą po tam tikro ciklų skaičiaus per FHT ir paleidus funkciją „millis“(), kad pamatytumėte, kiek laiko jis buvo, ir palyginkite į FHT skaičiavimo triukšmo lygį. Aš tikiu, kad šiuos dalykus galima padaryti!

Tikiuosi, kad jums visiems patiko šis projektas, ir jei turite kokių nors klausimų, rašykite komentarus ir aš atsakysiu, kai tik galėsiu! Nekantriai laukiu komentarų.

Rekomenduojamas: