Cuprins:

Stetoscop spectral rapid transformat Hartley: 22 de pași
Stetoscop spectral rapid transformat Hartley: 22 de pași

Video: Stetoscop spectral rapid transformat Hartley: 22 de pași

Video: Stetoscop spectral rapid transformat Hartley: 22 de pași
Video: The Fast Fourier Transform Algorithm 2024, Iulie
Anonim
Stetoscop spectral rapid transformat Hartley
Stetoscop spectral rapid transformat Hartley

În acest instructiv, veți învăța cum să faceți un stetoscop spectral folosind transformarea rapidă Hartley. Aceasta poate fi utilizată pentru a vizualiza sunetele inimii și ale plămânilor.

Pasul 1: Materiale

Ecran LCD de 1,8 (7,50 USD pe Amazon)

Arduino Uno sau echivalent (7,00 USD pe Gearbest)

Amplificator Electret (6,95 dolari pe Adafruit)

Condensator 100 µF (0,79 USD)

Sârmă și jumperi (4,00 USD)

Jack stereo de 3,5 mm (1,50 USD)

Potențiometru 10kOhm (2,00 USD)

Comutator momentan (1,50 USD)

Pasul 2: Instrumente

Ciocan de lipit

Hot Glue Gun

Imprimantă 3D … sau un prieten cu o imprimantă 3D (Posibil de făcut și cu carton)

Cleste de sarma

Pană de pâine

Pasul 3: Imprimare 3D

Primul este să imprimați 3D fișierele.stl atașate acestui pas. Am imprimat ambele fișiere folosind următoarele materiale / setări:

Material: PLA

Înălțimea stratului: 0,1 mm

Grosimea peretelui / superior / inferior: 0,8 mm

Temperatura de imprimare: 200⁰C

Temperatura patului: 60⁰C

Suport activat @ 10%

Pasul 4: Construiți circuitul

Utilizând componentele din secțiunea materiale, construiți circuitul. Am pus întotdeauna circuitul împreună pe o placă pentru a mă asigura că funcționează corect înainte de a atinge lipitorul.

Pasul 5: Cablare LCD

Cablare LCD
Cablare LCD

Folosind figura atașată la acest pas, lipiți firele la șapte din cei opt pini de pe ecranul LCD. Aceste fire trebuie să aibă o lungime de aproximativ 3 picioare, cu excepția solului și a pinilor de + 5V (aceștia trebuie să aibă doar 2-3 inci)

Pasul 6: Cablare microfon / amplificator

Cablare microfon / amplificator
Cablare microfon / amplificator

Folosind figura atașată la acest pas, lipiți trei fire la pinii + 5V, la masă și la ieșire de pe microfonul / amplificatorul Adafruit. Acestea trebuie doar să aibă aproximativ 2-3 inci în lungime.

Pasul 7: Cablarea comutatorului momentan

Sârmați un fir de 2-3 inci la fiecare dintre cele două urechi de pe comutatorul momentan.

Pasul 8: Cablarea potențiometrului

Folosind figura din pasul 6, lipiți trei fire de aproximativ 2-3 inci în lungime cu cele trei picioare ale potențiometrului.

Pasul 9: Cablarea mufei căștilor

Lipiți trei fire la inelul, vârful și manșoanele mufei mufei pentru căști. Am folosit un jack dintr-un metronom care era deja cablat. Dacă nu știți care sunt inelul, vârful și manșoanele, doar căutați-l pe Google, există o mulțime de imagini bune despre cablurile stereo jack.

Pasul 10: Ieșire microfon / amplificator

După lipirea firelor de pe microfonul / amplificatorul, potențiometrul și mufa pentru căști, lipiți un fir de aproximativ trei picioare în lungime cu firul „afară” al amplificatorului de microfon. Acest fir va fi ulterior conectat la pinul A0 al arduino-ului.

Pasul 11: Ieșire microfon / amplificator continuată

Lipiți un al doilea fir la firul "out" al microfonului / amplificatorului. Acest fir trebuie lipit pe un condensator de 100 microFarad. Dacă utilizați un condensator electrolitic, asigurați-vă că partea pozitivă este conectată la acest fir.

Pasul 12: Componente din incintă

Componente din incintă
Componente din incintă
Componente din incintă
Componente din incintă

După ce toate firele sunt lipite pe componente, așezați componentele în locurile respective, urmând figurile atașate la acest pas. Am folosit lipici fierbinte pentru a fixa microfonul și mufa pentru căști în poziție.

Pasul 13: lipire în incintă

După ce toate componentele sunt fixate în carcasă, lipiți împreună toate firele de la sol. Ar trebui să existe unul de pe ecranul LCD, unul de la microfon / amplificator și unul de la manșonul mufei pentru căști. De asemenea, lipiți firele + 5V împreună și un fir de la comutatorul momentan. Din nou, ar trebui să existe unul de pe ecranul LCD, unul de la microfon / amplificator și unul de pe comutatorul momentan.

Pasul 14: + 5V, fire extinse GND

Acum tăiați două bucăți de sârmă de aproximativ 3 metri lungime. Lipiți unul pe grupul de fire de masă și lipiți celălalt pe firul deschis de pe comutatorul momentan.

Pasul 15: Glisați firele lungi prin orificiul carcasei

Glisați firele lungi prin orificiul carcasei
Glisați firele lungi prin orificiul carcasei

Acum, ar trebui să aveți în total opt fire de aproximativ 3 metri lungime. Plasați-le prin orificiul neumplut din incintă. Vedeți figura atașată acestui pas

Pasul 16: Reducerea căldurii

După terminarea lipirii, asigurați-vă că firele expuse sunt acoperite. Am folosit tuburi termocontractabile, dar și banda electrică funcționează bine.

Pasul 17: Sigilați incinta

Carcasa sigiliului
Carcasa sigiliului
Carcasa sigiliului
Carcasa sigiliului

Luați jumătatea carcasei care conține ecranul LCD și glisați-o peste cealaltă jumătate a carcasei care conține celelalte componente. În timp ce împingeți cele două bucăți împreună, lipiți-le fierbinte pentru a fixa carcasa împreună.

Pasul 18: Conectați-vă la Arduino

Cele opt fire lungi rămase sunt conectate direct la pinii lor Arduino, conturați în schema circuitului. Asigurați-vă că, de fiecare dată când lipiți unul dintre acele fire lungi de 3 ft în circuit, puneți o bucată de bandă pe celălalt capăt, indicând la ce pin Arduino merge!

Pasul 19: Arduino IDE / Biblioteci

Va trebui să descărcați IDE-ul Arduino. Pentru această schiță, am folosit trei biblioteci diferite: FHT.h, SPI.h și TFT.h. Dacă nu știți cum să descărcați bibliotecile Arduino, vă rugăm să consultați https://www.arduino.cc/en/Guide/Libraries. Biblioteca FHT.h a fost descărcată de pe openmusiclabs.com. Celelalte două au fost descărcate de pe GitHub.

Pasul 20: Arduino Sketch

Codul folosește Transformarea rapidă Hartley (FHT) pentru a schimba domeniul de timp într-un domeniu de frecvență. Acest lucru se poate face și folosind Transformarea Fourier Rapidă (FFT), dar FHT este mult mai rapid. FFT și FHT sunt idei foarte fundamentale în procesarea semnalului și foarte distractiv de învățat. Vă sugerez să citiți singuri, dacă sunteți interesat, vedeți. Exemplul de cod FHT pe care l-am copiat de pe site-ul web Open Music Labs oferea inițial amplitudinea fiecărui coș de frecvență ca ieșire logaritmică sau decibel. Am schimbat acest lucru pentru a scoate coșurile de frecvență pe o scară liniară. Acest lucru se datorează faptului că scara liniară este o reprezentare vizuală mai bună a modului în care oamenii aud sunetul. Bucla for () de la sfârșit este pentru desenarea amplitudinii fiecărui coș de frecvență pe ecranul LCD. Spectrul FHT complet ar cuprinde toate liniile de frecvență de la i = 0 la i <128. Veți observa că bucla mea pentru () este de la i = 5 la i <40, deoarece frecvențele importante pentru diagnosticarea afecțiunilor pulmonare sunt de obicei cuprinse între 150Hz și 3,5khz, am decis să merg până la aproximativ 4kHz. Acest lucru poate fi ajustat dacă doriți să afișați întregul spectru de frecvențe.

[cod]

// Cod stetoscop digital

// Biblioteca rapidă Hartley Transform descărcată de pe openmusiclabs

#define LIN_OUT 1 // setați FHT pentru a produce ieșire liniară

#define LOG_OUT 0 // dezactivează ieșirea logaritmică FHT

#define FHT_N 256 // FHT număr de eșantion

#include // include biblioteca FHT

#include // include biblioteca TFT

#include // include biblioteca SPI

#define cs 10 // setează lcd cs pin la arduino pin 10

#define dc 9 // setează lcd dc pin la arduino pin 9

#define rst 8 // setează pinul reset LCD pe pinul arduino 8

TFT myScreen = TFT (cs, dc, rst); // declara numele ecranului TFT

configurare nulă () {

//Serial.begin(9600);//set rata de eșantionare

myScreen.begin (); // inițializează ecranul TFT

myScreen.background (0, 0, 0); // setați fundalul la negru

ADCSRA = 0xe5; // setați adc în modul de rulare liber

ADMUX = 0x40; // utilizați adc0

}

bucla nulă () {

while (1) {// reduce jitter cli (); // Întreruperea UDRE încetinește astfel pe arduino1.0

for (int i = 0; i <FHT_N; i ++) {// salvați 256 de mostre

while (! (ADCSRA & 0x10)); // așteptați ca adc să fie gata

ADCSRA = 0xf5; // reporniți octetul adc

m = ADCL; // preluați octetul de date adc

j = ADCH; int k = (j << 8) | m; // formează într-un int

k - = 0x0200; // formează într-un int semnat

k << = 6; // formează într-un int. 16b semnat

fht_input = k; // puneți date reale în coșuri

}

fht_window (); // fereastră datele pentru un răspuns de frecvență mai bun

fht_reorder (); // reordonați datele înainte de a efectua fht

fht_run (); // procesează datele din fht

fht_mag_lin (); // ia ieșirea fht

sei ();

for (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);

}

}

[/cod]

Pasul 21: Testează-l

Testează-l!
Testează-l!

Am folosit un generator de tonuri online (https://www.szynalski.com/tone-generator/) pentru a confirma că codul funcționează corect. După confirmarea funcționării, apăsați clopotul stetoscopului până la piept, respirați profund și vedeți ce frecvențe sunt prezente !!

Pasul 22: Munca viitoare

** Notă: sunt chimist, nu inginer sau informatic **. Probabil vor exista greșeli și îmbunătățiri ale designului și codului. Acestea fiind spuse, cred că este un bun început pentru ceva care poate ajunge să fie foarte util și ieftin. Următoarele gloanțe sunt viitoare îmbunătățiri pe care aș dori să le fac și sper că și unii dintre voi vor încerca să-l îmbunătățească!

· Faceți dispozitivul mobil. Nu am o experiență extinsă cu procesoare sau alte microcontrolere, dar ar trebui să aibă suficientă memorie pentru a stoca întreaga bibliotecă FHT sau posibil Bluetooth.

· Introduceți câteva calcule de analiză statistică în cod. De exemplu, în mod obișnuit o respirație șuierătoare are o frecvență fundamentală egală sau mai mare de 400 Hz și durează cel puțin 250 ms. Rhonchi apar la o frecvență fundamentală de aproximativ 200 Hz sau mai puțin și durează cel puțin 250 ms. Multe alte sunete pulmonare sunt definite și indicative ale condițiilor de sănătate (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Cred că este ceva ce poate fi verificat în cod prin compararea semnalului liniilor de frecvență după un anumit număr de cicluri prin FHT și apoi rularea funcției millis () pentru a vedea cât timp a fost prezent, apoi comparându-l la podeaua de zgomot a calculului FHT. Sunt încrezător că aceste lucruri se pot face!

Sper că v-ați distrat cu acest proiect și, dacă aveți întrebări, vă rugăm să comentați și vă voi răspunde cât de repede pot! Aștept cu nerăbdare să văd comentarii.

Recomandat: