Indholdsfortegnelse:

Hurtigt Hartley Transform Spectral Stethoscope: 22 trin
Hurtigt Hartley Transform Spectral Stethoscope: 22 trin

Video: Hurtigt Hartley Transform Spectral Stethoscope: 22 trin

Video: Hurtigt Hartley Transform Spectral Stethoscope: 22 trin
Video: Feel-Good Stretches for Splits // SATURDAY // 28-Day Summer Sculpt 2024, November
Anonim
Hurtigt Hartley Transform Spectral Stethoscope
Hurtigt Hartley Transform Spectral Stethoscope

I denne instruktive vil du lære at lave et spektralstetoskop ved hjælp af den hurtige hartley -transformation. Dette kan bruges til at visualisere hjerte- og lungelyde.

Trin 1: Materialer

1,8”LCD -skærm ($ 7,50 på Amazon)

Arduino Uno eller tilsvarende ($ 7,00 på Gearbest)

Electret forstærker ($ 6,95 på Adafruit)

100 µF kondensator ($ 0,79)

Wire og Jumpers ($ 4,00)

3,5 mm stereostik ($ 1,50)

10kOhm potentiometer ($ 2,00)

Momentary Switch ($ 1,50)

Trin 2: Værktøjer

Loddekolbe

Varm limpistol

3D -printer … eller en ven med en 3D -printer (Kan også laves med pap)

Wire Cutter

Brødbræt

Trin 3: 3D -udskrivning

Den første er at 3D -udskrive.stl -filer, der er knyttet til dette trin. Jeg udskrev begge filer ved hjælp af følgende materiale/indstillinger:

Materiale: PLA

Laghøjde: 0,1 mm

Væg/top/bund tykkelse: 0,8 mm

Udskrivningstemperatur: 200⁰C

Sengetemperatur: 60⁰C

Support aktiveret @ 10%

Trin 4: Konstruer kredsløb

Byg kredsløbet ved hjælp af komponenterne i materialeafsnittet. Jeg satte altid kredsløbet sammen på et brødbræt først for at sikre, at det fungerer korrekt, før jeg rører ved loddejernet.

Trin 5: LCD -ledninger

LCD ledninger
LCD ledninger

Ved hjælp af figuren, der er knyttet til dette trin, loddes lodtråde til syv af de otte ben på LCD -skærmen. Disse ledninger skal være omkring 3 fod lange, undtagen jorden og +5V ben (disse skal kun være 2-3 tommer)

Trin 6: Mikrofon-/forstærkerledninger

Mikrofon/forstærker ledninger
Mikrofon/forstærker ledninger

Ved hjælp af figuren, der er knyttet til dette trin, loddes tre ledninger til +5V, Ground og Out -benene på Adafruit -mikrofonen/forstærkeren. Disse behøver kun at være omkring 2-3 tommer lange.

Trin 7: Midlertidig kontaktledning

Led en 2-3 tommer ledning til hver af de to tappe på den momentane kontakt.

Trin 8: Potentiometerledninger

Ved hjælp af figuren i trin 6 loddes tre ledninger på omkring 2-3 tommer i længden til potentiometerets tre flige.

Trin 9: Ledningsføring til hovedtelefoner

Lod tre ledninger til ringen, spidsen og ærmerne på hovedtelefonstikket. Jeg brugte et stik ud af en metronom, der allerede var kablet. Hvis du ikke ved, hvad ringen, spidsen og ærmerne er, skal du bare google det, der er mange gode billeder om ledningsførende stereostik.

Trin 10: Mikrofon/forstærkerudgang

Efter lodning af ledningerne på mikrofonen/forstærkeren, potentiometeret og hovedtelefonstikket loddes en ledning på cirka tre fod i længden til mikrofonforstærkerens "ud" ledning. Denne ledning vil senere blive tilsluttet A0 -stiften på arduinoen.

Trin 11: Mikrofon/forstærkerudgang fortsat

Lod en anden ledning til mikrofonens/forstærkerens "ud" ledning. Denne ledning skal loddes til en 100 microFarad kondensator. Hvis du bruger en elektrolytisk kondensator, skal du sørge for, at den positive side er forbundet til denne ledning.

Trin 12: Komponenter i kabinet

Komponenter i kabinet
Komponenter i kabinet
Komponenter i kabinet
Komponenter i kabinet

Når alle ledninger er loddet på komponenterne, placeres komponenterne der respektive steder efter figurerne vedlagt dette trin. Jeg brugte varm lim til at fastgøre mikrofon- og hovedtelefonstikket på plads.

Trin 13: In-Enclosure-Lodning

Når alle komponenterne er fastgjort i kabinettet, loddes alle jordtrådene sammen. Der skal være en fra LCD'en, en fra mikrofonen/forstærkeren og en fra ærmet på hovedtelefonstikket. Lod også +5V -ledningerne sammen og en ledning fra den momentane kontakt. Igen skal der være en fra LCD, en fra mikrofonen/forstærkeren og en på den momentane switch.

Trin 14: +5V, GND Extended Wires

Skær nu to stykker tråd omkring 3 fod i længden. Lod den ene til klyngen af jordledninger og lod den anden til den åbne ledning på den øjeblikkelige kontakt.

Trin 15: Skub lange tråde gennem kabinethullet

Slip lange ledninger gennem kabinethul
Slip lange ledninger gennem kabinethul

Nu skal du have i alt otte ledninger på cirka 3 fod i længden. Placer disse gennem det ufyldte hul i kabinettet. Se figuren vedhæftet dette trin

Trin 16: Varm krympning

Når alt lodning er fuldført, skal du sørge for, at de udsatte ledninger er dækket til. Jeg brugte varmekrympeslange, men elektrisk tape fungerer også fint.

Trin 17: Forseglingsdæksel

Seglhylster
Seglhylster
Seglhylster
Seglhylster

Tag halvdelen af kabinettet, der indeholder LCD -skærmen, og slip den over den anden halvdel af kabinettet, der indeholder de andre komponenter. Mens du skubber de to stykker sammen, varm lim dem for at fastgøre kabinettet sammen.

Trin 18: Opret forbindelse til Arduino

De otte, lange ledninger, der er tilbage, er forbundet direkte til deres respektive Arduino -stifter, der er skitseret i kredsløbsskemaerne. Sørg for, at hver gang du lodder en af de lange 3ft ledninger ind i kredsløbet, lægger du et stykke tape i den anden ende, hvilket angiver, hvilken Arduino -pin det går til!

Trin 19: Arduino IDE/biblioteker

Du skal downloade Arduino IDE. Til denne skitse brugte jeg tre forskellige biblioteker: FHT.h, SPI.h og TFT.h. Hvis du ikke ved, hvordan du downloader Arduino -biblioteker, kan du se https://www.arduino.cc/en/Guide/Libraries. FHT.h -biblioteket blev downloadet fra openmusiclabs.com. De to andre blev downloadet på GitHub.

Trin 20: Arduino Sketch

Koden bruger Fast Hartley Transform (FHT) til at ændre tidsdomænet til et frekvensdomæne. Dette kan også gøres ved hjælp af Fast Fourier Transform (FFT), men FHT er meget hurtigere. FFT og FHT er meget grundlæggende ideer inden for signalbehandling og meget sjove at lære om. Jeg foreslår, at du læser lidt selv, hvis du er interesseret. FHT -eksempelkoden, jeg kopierede fra Open Music Labs -webstedet, sendte i første omgang amplituden for hver frekvensbakke som en logaritmisk eller decibel output. Jeg ændrede dette for at udsende frekvensbakkerne på en lineær skala. Det skyldes, at den lineære skala er en bedre visuel fremstilling af, hvordan mennesker hører lyd. For () -sløjfen for enden er til at tegne amplituden for hver frekvensbakke på LCD -skærmen. Hele FHT -spektret vil omfatte alle frekvensbeholdere fra i = 0 til i <128. Du vil bemærke, at min for () loop er fra i = 5 til i <40, det er fordi de frekvenser, der er vigtige for diagnosticering af lungeforhold, typisk er mellem 150Hz og 3,5khz, jeg besluttede at gå op til ca. 4kHz. Det kan justeres, hvis du vil vise hele frekvensspektret.

[kode]

// Digital stetoskopkode

// Hurtigt Hartley Transform -bibliotek downloadet fra openmusiclabs

#define LIN_OUT 1 // indstil FHT til at producere lineær output

#define LOG_OUT 0 // sluk for FHT logaritmisk output

#define FHT_N 256 // FHT prøve nummer

#include // inkluderer FHT -bibliotek

#include // inkluderer TFT -bibliotek

#include // inkluderer SPI -bibliotek

#define cs 10 // indstil lcd cs pin til arduino pin 10

#define dc 9 // indstil lcd dc pin til arduino pin 9

#define rst 8 // indstil lcd -nulstillingsnål til arduino pin 8

TFT myScreen = TFT (cs, dc, rst); // angiv navn på TFT -skærm

ugyldig opsætning () {

//Serial.begin(9600);// sæt samplingshastighed

myScreen.begin (); // initialiser TFT -skærm

myScreen.background (0, 0, 0); // sæt baggrund til sort

ADCSRA = 0xe5; // indstil adc til fri kørselstilstand

ADMUX = 0x40; // brug adc0

}

void loop () {

mens (1) {// reducerer jitter cli (); // UDRE interrupt bremser denne vej ned på arduino1.0

for (int i = 0; i <FHT_N; i ++) {// gem 256 prøver

mens (! (ADCSRA & 0x10)); // vent på at adc er klar

ADCSRA = 0xf5; // genstart adc byte

m = ADCL; // hent adc -databyte

j = ADCH; int k = (j << 8) | m; // form til en int

k -= 0x0200; // form til en underskrevet int

k << = 6; // form til en 16b signeret int

fht_input = k; // læg reelle data i skraldespande

}

fht_window (); // vindue dataene for bedre frekvensrespons

fht_reorder (); // omorganiser dataene, før du udfører fht

fht_run (); // behandle dataene i fht

fht_mag_lin (); // tag output fra 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.baggrund (0, 0, 0);

}

}

[/kode]

Trin 21: Test det

Prøv det!
Prøv det!

Jeg brugte en online tonegenerator (https://www.szynalski.com/tone-generator/) til at bekræfte, at koden fungerede korrekt. Når du har bekræftet, at det virker, skal du trykke på stetoskopets klokke op til brystet, trække vejret dybt og se, hvilke frekvenser der er til stede !!

Trin 22: Fremtidigt arbejde

** Bemærk: Jeg er en kemiker, ikke en ingeniør eller datalog **. Der vil sandsynligvis være fejl og forbedringer af design og kode. Når det er sagt, så synes jeg, at det er en god start på noget, der kan ende med at blive meget nyttigt og billigt. Følgende punkter er fremtidige forbedringer, jeg gerne vil lave, og jeg håber, at nogle af jer også prøver at forbedre det!

· Gør enheden mobil. Jeg har ikke stor erfaring med CPU'er eller andre mikrokontrollere, men det skal have nok hukommelse til at gemme hele FHT -biblioteket på eller muligvis Bluetooth.

· Indfør nogle statistiske analyseberegninger i koden. For eksempel har en hvæsende vejrtrækning typisk en grundfrekvens på mindst 400 Hz og varer i mindst 250 ms. Rhonchi forekommer ved en grundfrekvens på omkring 200 Hz eller mindre og varer i mindst 250 ms. Mange andre lungelyde er defineret og er vejledende for helbredstilstande (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Jeg tror, det er noget, der kan kontrolleres for i koden ved at sammenligne signalet fra frekvensbeholderne efter et bestemt antal cyklusser gennem FHT og derefter køre millis () -funktionen for at se, hvor længe det var til stede, og derefter sammenligne det til støjgulvet i FHT -beregningen. Jeg er overbevist om, at disse ting kan lade sig gøre!

Jeg håber, at I alle havde det sjovt med dette projekt, og hvis du har spørgsmål, bedes du kommentere, og jeg vil svare så hurtigt jeg kan! Jeg glæder mig til at se kommentarer.

Anbefalede: