Innholdsfortegnelse:
- Trinn 1: Materialer
- Trinn 2: Verktøy
- Trinn 3: 3D -utskrift
- Trinn 4: Konstruer krets
- Trinn 5: LCD -ledninger
- Trinn 6: Mikrofon-/forsterkerledninger
- Trinn 7: Momentary Switch Wiring
- Trinn 8: Potensiometerledninger
- Trinn 9: Kabling av hodetelefonkontakt
- Trinn 10: Mikrofon/forsterkerutgang
- Trinn 11: Mikrofon/forsterkerutgang fortsetter
- Trinn 12: Komponenter i vedlegg
- Trinn 13: In-Enclosure-Lodding
- Trinn 14: +5V, GND Extended Wires
- Trinn 15: Slipp lange ledninger gjennom hullet
- Trinn 16: Varmekrymping
- Trinn 17: Tetningslager
- Trinn 18: Koble til Arduino
- Trinn 19: Arduino IDE/biblioteker
- Trinn 20: Arduino Sketch
- Trinn 21: Test det ut
- Trinn 22: Fremtidig arbeid
Video: Fast Hartley Transform Spectral Stethoscope: 22 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
I denne instruktøren lærer du hvordan du lager et spektralstetoskop ved hjelp av den raske hartley -transformasjonen. Dette kan brukes til å visualisere hjerte- og lungelyder.
Trinn 1: Materialer
1,8”LCD -skjerm (7,50 dollar på Amazon)
Arduino Uno eller tilsvarende ($ 7,00 på Gearbest)
Electret Forsterker ($ 6,95 på Adafruit)
100 µF kondensator ($ 0,79)
Wire and Jumpers ($ 4,00)
3,5 mm stereokontakt ($ 1,50)
10kOhm potensiometer ($ 2,00)
Momentary Switch ($ 1,50)
Trinn 2: Verktøy
Loddejern
Varm limpistol
3D -skriver … eller en venn med en 3D -skriver (mulig å lage med papp også)
Wire Cutter
Brødbrett
Trinn 3: 3D -utskrift
Den første er å 3D -skrive ut.stl -filene som er vedlagt dette trinnet. Jeg skrev ut begge filene med følgende materiale/innstillinger:
Materiale: PLA
Laghøyde: 0,1 mm
Vegg/topp/bunntykkelse: 0,8 mm
Utskriftstemperatur: 200⁰C
Sengetemperatur: 60⁰C
Støtte aktivert @ 10%
Trinn 4: Konstruer krets
Bygg kretsen ved å bruke komponentene i materialdelen. Jeg setter alltid kretsen sammen på et brødbrett først for å sikre at den fungerer som den skal før jeg berører loddejernet.
Trinn 5: LCD -ledninger
Ved hjelp av figuren som er vedlagt dette trinnet, loddes loddetrådene til syv av de åtte pinnene på LCD -skjermen. Disse ledningene må være omtrent 3 fot lange, bortsett fra bakken og +5V pinner (disse trenger bare å være 2-3 tommer)
Trinn 6: Mikrofon-/forsterkerledninger
Ved å bruke figuren som er festet til dette trinnet, loddes tre ledninger til +5V, Ground og Out pins på Adafruit mikrofon/forsterker. Disse trenger bare å være omtrent 2-3 tommer lange.
Trinn 7: Momentary Switch Wiring
Koble en 2-3 tommer ledning til hver av de to tappene på den midlertidige bryteren.
Trinn 8: Potensiometerledninger
Ved å bruke figuren i trinn 6, loddes tre ledninger på omtrent 2-3 tommer i lengden til de tre tappene på potensiometeret.
Trinn 9: Kabling av hodetelefonkontakt
Lodd tre ledninger til ringen, spissen og hylsen på hodetelefonkontakten. Jeg brukte en jack ut av en metronom som allerede var kablet. Hvis du ikke vet hva ringen, spissen og hylsene er, bare google det, det er mange gode bilder om kabling av stereokontakter.
Trinn 10: Mikrofon/forsterkerutgang
Etter lodding av ledningene på mikrofonen/forsterkeren, potensiometeret og hodetelefonkontakten, loddes en ledning omtrent tre fot lang til "ut" -ledningen til mikrofonforsterkeren. Denne ledningen vil senere bli koblet til A0 -pinnen på arduinoen.
Trinn 11: Mikrofon/forsterkerutgang fortsetter
Lod en annen ledning til "ut" ledningen til mikrofonen/forsterkeren. Denne ledningen må loddes til en 100 microFarad kondensator. Hvis du bruker en elektrolytisk kondensator, må du kontrollere at den positive siden er koblet til denne ledningen.
Trinn 12: Komponenter i vedlegg
Etter at alle ledningene er loddet på komponentene, plasserer du komponentene på de respektive stedene etter figurene som er vedlagt dette trinnet. Jeg brukte varmt lim for å feste mikrofonen og hodetelefonkontakten på plass.
Trinn 13: In-Enclosure-Lodding
Etter at alle komponentene er festet i kabinettet, loddes alle jordledningene sammen. Det skal være en fra LCD -skjermen, en fra mikrofonen/forsterkeren, og en fra ermet på hodetelefonkontakten. Lodd også +5V -ledningene sammen og en ledning fra den øyeblikkelige bryteren. Igjen bør det være en fra LCD -en, en fra mikrofonen/forsterkeren, og en på den øyeblikkelige bryteren.
Trinn 14: +5V, GND Extended Wires
Klipp nå to stykker wire omtrent 3 fot i lengden. Lodd den ene til klyngen av jordledninger og lodd den andre til den åpne ledningen på momentbryteren.
Trinn 15: Slipp lange ledninger gjennom hullet
Nå bør du ha totalt åtte ledninger på omtrent 3 fot i lengde. Plasser disse gjennom det ufylte hullet i skapet. Se figuren vedlagt dette trinnet
Trinn 16: Varmekrymping
Etter at all lodding er fullført, må du sørge for at de synlige ledningene er dekket til. Jeg brukte varmekrympeslanger, men elektrisk tape fungerer også fint.
Trinn 17: Tetningslager
Ta halvparten av kabinettet som inneholder LCD -skjermen, og før den over den andre halvdelen av kabinettet som inneholder de andre komponentene. Mens du skyver de to delene sammen, limer du dem varmt for å feste kabinettet.
Trinn 18: Koble til Arduino
De åtte lange ledningene som er igjen, er koblet direkte til sine respektive Arduino -pinner som er skissert i kretsskjemaene. Sørg for at du hver gang du lodder en av de lange 3ft ledningene inn i kretsen, legger et stykke tape i den andre enden som angir hvilken Arduino -pinne den går til!
Trinn 19: Arduino IDE/biblioteker
Du må laste ned Arduino IDE. For denne skissen brukte jeg tre forskjellige biblioteker: FHT.h, SPI.h og TFT.h. Hvis du ikke vet hvordan du laster ned Arduino -biblioteker, kan du se https://www.arduino.cc/en/Guide/Libraries. FHT.h -biblioteket ble lastet ned fra openmusiclabs.com. De to andre ble lastet ned på GitHub.
Trinn 20: Arduino Sketch
Koden bruker Fast Hartley Transform (FHT) til å endre tidsdomenet til et frekvensdomene. Dette kan også gjøres ved hjelp av Fast Fourier Transform (FFT), men FHT er mye raskere. FFT og FHT er veldig grunnleggende ideer innen signalbehandling og veldig morsomme å lære om. Jeg foreslår at du leser litt selv, hvis du er interessert. FHT -eksempelkoden jeg kopierte fra Open Music Labs -nettstedet, sendte opprinnelig amplituden til hver frekvensbeholder som en logaritmisk eller desibel utgang. Jeg endret dette for å sende ut frekvensbeholderne på en lineær skala. Dette er fordi den lineære skalaen er en bedre visuell fremstilling av hvordan mennesker hører lyd. For () -sløyfen på slutten er for å tegne amplituden til hver frekvensbeholder på LCD -skjermen. Hele FHT -spekteret vil omfatte alle frekvensbeholdere fra i = 0 til i <128. Du vil legge merke til at min for () loop er fra i = 5 til i <40, dette er fordi frekvensene som er viktige for å diagnostisere lungesykdommer vanligvis er mellom 150Hz og 3,5khz, jeg bestemte meg for å gå opp til ca 4kHz. Det kan justeres hvis du vil vise hele frekvensspekteret.
[kode]
// Digital stetoskopkode
// Fast Hartley Transform -bibliotek lastet ned fra openmusiclabs
#define LIN_OUT 1 // sett FHT for å produsere lineær utgang
#define LOG_OUT 0 // slå av FHT logaritmisk utgang
#define FHT_N 256 // FHT eksempelnummer
#include // inkluderer FHT -bibliotek
#include // inkluderer TFT -bibliotek
#include // inkluderer SPI -bibliotek
#define cs 10 // sett lcd cs pin til arduino pin 10
#define dc 9 // sett lcd dc pin til arduino pin 9
#define rst 8 // sett lcd reset -pin til arduino pin 8
TFT myScreen = TFT (cs, dc, rst); // erklær navnet på TFT -skjermen
ugyldig oppsett () {
//Serial.begin(9600);//satt samplingsfrekvens
myScreen.begin (); // initialisere TFT -skjerm
myScreen.background (0, 0, 0); // sett bakgrunnen til svart
ADCSRA = 0xe5; // sett adc til gratis løpemodus
ADMUX = 0x40; // bruk adc0
}
void loop () {
mens (1) {// reduserer jitter cli (); // UDRE interrupt bremser denne veien ned på arduino1.0
for (int i = 0; i <FHT_N; i ++) {// lagre 256 prøver
mens (! (ADCSRA & 0x10)); // vent på at adc er klar
ADCSRA = 0xf5; // start adc byte på nytt
m = ADCL; // hente adc data byte
j = ADCH; int k = (j << 8) | m; // form til en int
k -= 0x0200; // form til en signert int
k << = 6; // form til en 16b signert int
fht_input = k; // legg ekte data i binger
}
fht_window (); // vindu dataene for bedre frekvensrespons
fht_reorder (); // endre rekkefølgen på dataene før du gjør fht
fht_run (); // behandle dataene i fht
fht_mag_lin (); // ta utdataene 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.background (0, 0, 0);
}
}
[/kode]
Trinn 21: Test det ut
Jeg brukte en online tonegenerator (https://www.szynalski.com/tone-generator/) for å bekrefte at koden fungerte som den skulle. Etter å ha bekreftet at det fungerer, trykk stetoskopets bjelle opp til brystet, pust dypt og se hvilke frekvenser som er tilstede !!
Trinn 22: Fremtidig arbeid
** Merk: Jeg er en kjemiker, ikke en ingeniør eller datavitenskapsmann **. Det vil sannsynligvis være feil og forbedringer av design og kode. Når det er sagt, tror jeg det er en god start på noe som kan ende opp med å bli veldig nyttig og billig. Følgende kuler er fremtidige forbedringer jeg vil gjøre, og jeg håper noen av dere også prøver å forbedre det!
· Gjør enheten mobil. Jeg har ikke lang erfaring med CPUer eller andre mikrokontrollere, men det må ha nok minne til å lagre hele FHT -biblioteket på, eller muligens Bluetooth.
· Innfør noen statistiske analyseberegninger i koden. For eksempel har en hvesenhet vanligvis en grunnfrekvens som er lik eller større enn 400 Hz og varer i minst 250 ms. Rhonchi forekommer med en grunnfrekvens på omtrent 200 Hz eller mindre og varer i minst 250 ms. Mange andre lungelyder er definert og indikerer helsemessige forhold (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Jeg tror det er noe som kan kontrolleres for i koden ved å sammenligne signalet til frekvensbeholderne etter et visst antall sykluser gjennom FHT og deretter kjøre millis () -funksjonen for å se hvor lenge den var tilstede, og deretter sammenligne den til støygulvet i FHT -beregningen. Jeg er overbevist om at disse tingene kan gjøres!
Jeg håper dere alle hadde det gøy med dette prosjektet, og hvis du har spørsmål, vennligst kommenter, så svarer jeg så snart jeg kan! Jeg gleder meg til å se kommentarer.
Anbefalt:
EasyFFT: Fast Fourier Transform (FFT) for Arduino: 6 trinn
EasyFFT: Fast Fourier Transform (FFT) for Arduino: Måling av frekvens fra det fangede signalet kan være en vanskelig oppgave, spesielt på Arduino ettersom den har lavere beregningseffekt. Det er metoder tilgjengelig for å fange nullkryssing hvor frekvensen blir fanget ved å sjekke hvor mange ganger
Arduino: Frequency Transform (DFT): 6 trinn
Arduino: Frequency Transform (DFT): dette programmet er å beregne frekvens transform på arduino med batter kontroll over parametere. Det løses ved hjelp av desecrate fouriior transform. dette er ikke FFT. FFT er algoritme som brukes til å løse DFT med mindre tid. Koden for FFT finner du her
Transform-a-Car: Fjernstyrt til selvstyrt: 4 trinn
Transform-a-Car: Remote Controlled to Self Controlled: Dette er et hack på en RC-bil med en ødelagt fjernkontroll. Du kan finne mye på garasjesalg
[DIY] Transform mobiltelefon batterilader: 6 trinn
[DIY] Transform mobiltelefon batterilader: Mobiltelefonens batterilader er en forkortelse for seteladeren, noe som betyr at batterikortet er plassert på toppen for lading, noe som er veldig praktisk å bruke. Laderen er først og fremst en lader designet for en eller en type mobil
Transform et bilde til en dyvelstangskulptur: 7 trinn (med bilder)
Forvandle et bilde til en dyvelstangskulptur: I dette prosjektet konverterte jeg et bilde av en varmluftsballong til en dyvelstangskulptur. Den endelige strukturen er en transformasjon av digital informasjon lagret på et foto til et fysisk 3D -objekt. Jeg konstruerte skulpturen for å visualisere hvordan forestille seg