Indholdsfortegnelse:
- Trin 1: Materialer
- Trin 2: Værktøjer
- Trin 3: 3D -udskrivning
- Trin 4: Konstruer kredsløb
- Trin 5: LCD -ledninger
- Trin 6: Mikrofon-/forstærkerledninger
- Trin 7: Midlertidig kontaktledning
- Trin 8: Potentiometerledninger
- Trin 9: Ledningsføring til hovedtelefoner
- Trin 10: Mikrofon/forstærkerudgang
- Trin 11: Mikrofon/forstærkerudgang fortsat
- Trin 12: Komponenter i kabinet
- Trin 13: In-Enclosure-Lodning
- Trin 14: +5V, GND Extended Wires
- Trin 15: Skub lange tråde gennem kabinethullet
- Trin 16: Varm krympning
- Trin 17: Forseglingsdæksel
- Trin 18: Opret forbindelse til Arduino
- Trin 19: Arduino IDE/biblioteker
- Trin 20: Arduino Sketch
- Trin 21: Test det
- Trin 22: Fremtidigt arbejde
Video: Hurtigt Hartley Transform Spectral Stethoscope: 22 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
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
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
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
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
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
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
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:
Tap Tap Rainbow - et 2 -spiller hurtigt reaktionsspil: 4 trin (med billeder)
Tap Tap Rainbow - et 2 -spiller hurtigt reaktionsspil: For 2 uger siden havde min datter en genial idé til at lave et hurtigt reaktionsspil med regnbuefarver (hun er en regnbueekspert: D). Jeg elskede øjeblikkeligt ideen, og vi begyndte at tænke på, hvordan vi kunne gøre det til et rigtigt spil. Ideen var. Du har en regnbue i
Aruduino LED -spil Hurtigt klik på to -spiller -spil: 8 trin
Aruduino LED -spil Hurtigt klikende spil for to spillere: Dette projekt er inspireret af @HassonAlkeim. Hvis du er villig til at kigge dybt, er her et link, du kan tjekke https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Dette spil er en forbedret version af Alkeims. Det er en
Sådan hurtigt realiseres det mosaiske design i AD / Protel: 3 trin
Sådan hurtigt realiseres det mosaiske design i AD / Protel: I PCB -design bruger vi ofte samling, hvordan man opnår hurtig samling? Følgende metoder introduceres; Klik her for at lave dit eget printkort: http://www.starivergroup.com/Måden at samle på i Altium/Protel Den såkaldte samling er faktisk
Sådan blokeres på Facebook, hurtigt !: 5 trin
Sådan blokeres på Facebook, hurtigt !: Lad os se det i øjnene: Facebook er fuld af trolde. Og værre. Så du blokerer nogen, og Facebook sender dig til din liste over blokerede trolde som en typisk passiv-aggressiv straf. Det er irriterende. Hvorfor vil jeg gerne se på disse navne? Jeg har blokeret dem
Indstilling af DS3231 RTC (realtidsur) Nøjagtigt, hurtigt og automatiseret ved hjælp af Java (+-1s): 3 trin
Indstilling af DS3231 RTC (Real Time Clock) Nøjagtigt, hurtigt og automatiseret ved hjælp af Java (+-1s): Denne instruktør viser dig, hvordan du indstiller tiden på et DS3231 Real Time Clock ved hjælp af en Arduino og et lille Java-program, der bruger den serielle forbindelse af Arduino.Dette programs grundlæggende logik: 1. Arduino sender en seriel anmodning