Inhoudsopgave:

Snelle Hartley Transform spectrale stethoscoop - Ajarnpa
Snelle Hartley Transform spectrale stethoscoop - Ajarnpa

Video: Snelle Hartley Transform spectrale stethoscoop - Ajarnpa

Video: Snelle Hartley Transform spectrale stethoscoop - Ajarnpa
Video: SpaceX Starship Brings the Fire, NASA SLS Artemis 1 Repair Attempt & Rocket Lab Mission to Venus? 2024, Juli-
Anonim
Snelle Hartley Transform Spectrale Stethoscoop
Snelle Hartley Transform Spectrale Stethoscoop

In deze instructable leer je hoe je een spectrale stethoscoop maakt met behulp van de snelle hartley-transformatie. Dit kan worden gebruikt om hart- en longgeluiden te visualiseren.

Stap 1: Materialen

1,8-inch LCD-scherm ($ 7,50 op Amazon)

Arduino Uno of gelijkwaardig ($ 7,00 op Gearbest)

Electret-versterker ($ 6,95 op Adafruit)

100 µF condensator ($ 0,79)

Draad en Jumpers ($ 4,00)

3,5 mm stereo-aansluiting ($ 1,50)

10kOhm Potentiometer ($2,00)

Tijdelijke schakelaar ($ 1,50)

Stap 2: Gereedschap

Soldeerbout

Heet lijmpistool

3D-printer…of een vriend met een 3D-printer (ook mogelijk met karton)

Draadknipper

Breadboard

Stap 3: 3D printen

De eerste is om de.stl-bestanden die bij deze stap zijn gevoegd in 3D af te drukken. Ik heb beide bestanden afgedrukt met het volgende materiaal/instellingen:

Materiaal: PLA

Laaghoogte: 0,1 mm

Dikte wand/boven/onder: 0,8 mm

Afdruktemperatuur: 200⁰C

Bedtemperatuur: 60⁰C

Ondersteuning ingeschakeld @ 10%

Stap 4: Circuit bouwen

Gebruik de componenten in het materiaalgedeelte om het circuit te bouwen. Ik zet het circuit altijd eerst op een breadboard om te controleren of het goed werkt voordat ik de soldeerbout aanraak.

Stap 5: LCD-bedrading

LCD-bedrading
LCD-bedrading

Gebruik de figuur die bij deze stap is bijgevoegd en soldeer de draden aan zeven van de acht pinnen op het LCD-scherm. Deze draden moeten ongeveer 3 voet lang zijn, behalve de grond en +5V-pinnen (deze hoeven slechts 2-3 inch te zijn)

Stap 6: Mic/Versterker Bedrading

Microfoon/versterker bedrading
Microfoon/versterker bedrading

Gebruik de figuur die bij deze stap is bevestigd en soldeer drie draden aan de +5V-, Ground- en Out-pinnen op de Adafruit-microfoon/versterker. Deze hoeven slechts ongeveer 2-3 centimeter lang te zijn.

Stap 7: Momentary Switch-bedrading

Sluit een draad van 2-3 inch aan op elk van de twee nokken op de momentschakelaar.

Stap 8: Potentiometer bedrading

Gebruik de afbeelding in stap 6 en soldeer drie draden van ongeveer 2-3 inch lang aan de drie nokken van de potentiometer.

Stap 9: Bedrading hoofdtelefoonaansluiting

Soldeer drie draden aan de ring-, punt- en mouwuitsteeksels van de hoofdtelefoonaansluiting. Ik gebruikte een jack-out van een metronoom die al bedraad was. Als je niet weet wat de ring-, tip- en sleeve-lugs zijn, google het dan even, er zijn veel goede afbeeldingen over het bedraden van stereo-jacks.

Stap 10: Uitgang microfoon/versterker

Na het solderen van de draden op de microfoon/versterker, potentiometer en hoofdtelefoonaansluiting, soldeert u een draad van ongeveer een meter lang aan de "uit"-draad van de microfoonversterker. Deze draad wordt later verbonden met de A0-pin van de arduino.

Stap 11: Uitgang microfoon/versterker vervolg

Soldeer een tweede draad aan de "uit" draad van de microfoon/versterker. Deze draad moet worden gesoldeerd aan een condensator van 100 microFarad. Als u een elektrolytische condensator gebruikt, zorg er dan voor dat de positieve kant op deze draad is aangesloten.

Stap 12: Componenten in behuizing

Componenten in behuizing
Componenten in behuizing
Componenten in behuizing
Componenten in behuizing

Nadat alle draden op de componenten zijn gesoldeerd, plaatst u de componenten op hun respectievelijke plaatsen volgens de afbeeldingen bij deze stap. Ik heb hete lijm gebruikt om de microfoon- en koptelefoonaansluiting op hun plaats te houden.

Stap 13: In-Enclosure-solderen

Nadat alle componenten in de behuizing zijn vastgezet, soldeert u alle aardingsdraden aan elkaar. Er moet een van het LCD-scherm zijn, een van de microfoon / versterker en een van de huls van de hoofdtelefoonaansluiting. Soldeer ook de +5V-draden aan elkaar en één draad van de momentschakelaar. Nogmaals, er moet een van het LCD-scherm zijn, een van de microfoon / versterker en een van de momentschakelaar.

Stap 14: +5V, GND Extended Wires

Knip nu twee stukken draad van ongeveer 3 voet lang. Soldeer een aan het cluster van aarddraden en soldeer de andere aan de open draad op de momentschakelaar.

Stap 15: Schuif lange draden door het gat in de behuizing

Schuif lange draden door het gat in de behuizing
Schuif lange draden door het gat in de behuizing

Nu zou u in totaal acht draden van ongeveer 3 voet lang moeten hebben. Plaats deze door het ongevulde gat in de behuizing. Zie de afbeelding bij deze stap

Stap 16: Krimpkous

Nadat al het solderen is voltooid, moet u ervoor zorgen dat de blootliggende draden bedekt zijn. Ik heb krimpkous gebruikt, maar elektrische tape werkt ook prima.

Stap 17: Behuizing verzegelen

Behuizing afdichten
Behuizing afdichten
Behuizing afdichten
Behuizing afdichten

Pak de helft van de behuizing met het LCD-scherm en schuif deze over de andere helft van de behuizing met de andere componenten. Terwijl u de twee stukken tegen elkaar duwt, lijmt u ze warm om de behuizing aan elkaar te bevestigen.

Stap 18: Maak verbinding met Arduino

De acht, lange, resterende draden zijn rechtstreeks verbonden met hun respectieve Arduino-pinnen die worden beschreven in het circuitschema. Zorg ervoor dat elke keer dat je een van die lange 3ft-draden in het circuit soldeert, je een stuk tape aan het andere uiteinde plakt om aan te geven naar welke Arduino-pin het gaat!

Stap 19: Arduino IDE/bibliotheken

U moet de Arduino IDE downloaden. Voor deze schets heb ik drie verschillende bibliotheken gebruikt: FHT.h, SPI.h en TFT.h. Als u niet weet hoe u Arduino-bibliotheken moet downloaden, raadpleeg dan https://www.arduino.cc/en/Guide/Libraries. De FHT.h-bibliotheek is gedownload van openmusiclabs.com. De andere twee zijn gedownload op GitHub.

Stap 20: Arduino-schets

De code gebruikt de Fast Hartley Transform (FHT) om het tijdsdomein te veranderen in een frequentiedomein. Dit kan ook met de Fast Fourier Transform (FFT), maar de FHT is veel sneller. De FFT en FHT zijn zeer fundamentele ideeën in signaalverwerking en erg leuk om over te leren. Ik stel voor om zelf wat te lezen, als je geïnteresseerd bent, zie. De FHT-voorbeeldcode die ik van de Open Music Labs-website heb gekopieerd, gaf aanvankelijk de amplitude van elke frequentiebak uit als een logaritmische of decibeluitvoer. Ik heb dit gewijzigd om de frequentiebakken op een lineaire schaal uit te voeren. Dit komt omdat de lineaire schaal een betere visuele weergave is van hoe mensen geluid horen. De for()-lus aan het einde is voor het tekenen van de amplitude van elke frequentiebak op het LCD-scherm. Het volledige FHT-spectrum zou alle frequentievakken van i=0 tot i<128 omvatten. Je zult merken dat mijn for()-lus van i=5 tot i<40 is, dit komt omdat de frequenties die belangrijk zijn voor het diagnosticeren van longaandoeningen meestal tussen 150Hz en 3,5khz liggen, ik besloot om naar ongeveer 4kHz te gaan. Dat is aan te passen als je het volledige frequentiespectrum wilt laten zien.

[code]

// Digitale stethoscoopcode

//Fast Hartley Transform-bibliotheek gedownload van openmusiclabs

#define LIN_OUT 1 //set FHT om lineaire output te produceren

#define LOG_OUT 0 // FHT logaritmische output uitschakelen

#define FHT_N 256 //FHT-monsternummer

#include //include FHT-bibliotheek

#include //include TFT-bibliotheek

#include //include SPI-bibliotheek

#define cs 10 // stel lcd cs pin in op arduino pin 10

#define dc 9 // lcd dc pin instellen op arduino pin 9

#define eerste 8 // zet lcd-resetpin op arduino-pin 8

TFT myScreen = TFT(cs, dc, rst);//declareer de naam van het TFT-scherm

ongeldige setup() {

//Serial.begin (9600);//set bemonsteringsfrequentie

myScreen.begin();//initialiseer TFT-scherm

myScreen.background(0, 0, 0);//achtergrond instellen op zwart

ADCSRA=0xe5;//zet adc in vrijloopmodus

ADMUX=0x40;//gebruik adc0

}

lege lus() {

while(1){ // reduceert jitter cli(); // UDRE-interrupt vertraagt op deze manier op arduino1.0

for (int i = 0; i <FHT_N; i++) {// save 256 samples

while(!(ADCSRA & 0x10)); // wacht tot adc klaar is

ADCSRA = 0xf5; // herstart adc byte

m = ADCL; // haal adc-gegevensbyte op

j = ADCH; int k = (j << 8) | m; // vorm in een int

k -= 0x0200; // formulier in een ondertekend int

k <<= 6; // vorm in een 16b ondertekend int

fht_input = k; // zet echte gegevens in bakken

}

fht_window(); // venster de gegevens voor een betere frequentierespons

fht_reorder(); // herschik de gegevens voordat je de fht. doet

fht_run(); // verwerk de gegevens in de fht

fht_mag_lin(); // neem de uitvoer van de fht

zie();

voor (int i=5;i<40;i++){

mijnScherm.slag(255, 255, 255);

mijnScherm.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);

}

mijnScherm.achtergrond(0, 0, 0);

}

}

[/code]

Stap 21: Test het uit

Test het uit!
Test het uit!

Ik heb een online toongenerator (https://www.szynalski.com/tone-generator/) gebruikt om te controleren of de code goed werkte. Nadat u hebt bevestigd dat het werkt, drukt u de bel van de stethoscoop tegen uw borst, haalt u diep adem en kijkt u welke frequenties aanwezig zijn!!

Stap 22: Toekomstig werk

**Opmerking: ik ben een chemicus, geen ingenieur of computerwetenschapper**. Er zullen waarschijnlijk fouten en verbeteringen in het ontwerp en de code zijn. Dat gezegd hebbende, denk ik dat het een goed begin is van iets dat uiteindelijk erg nuttig en goedkoop kan zijn. De volgende opsommingstekens zijn toekomstige verbeteringen die ik zou willen maken en ik hoop dat sommigen van jullie het ook proberen te verbeteren!

· Maak het apparaat mobiel. Ik heb geen uitgebreide ervaring met CPU's of andere microcontrollers, maar het zou voldoende geheugen moeten hebben om de hele FHT-bibliotheek op op te slaan, of mogelijk Bluetooth.

· Introduceer enkele statistische analyseberekeningen in de code. Een piepende ademhaling heeft bijvoorbeeld typisch een grondfrequentie gelijk aan of groter dan 400 Hz en duurt ten minste 250 ms. Rhonchi treden op bij een grondfrequentie van ongeveer 200 Hz of minder en duren ten minste 250 ms. Veel andere longgeluiden zijn gedefinieerd en indicatief voor gezondheidsproblemen (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Ik denk dat dat iets is dat in de code kan worden gecontroleerd door het signaal van de frequentiebakken te vergelijken na een bepaald aantal cycli door de FHT en vervolgens de millis () -functie uit te voeren om te zien hoe lang het aanwezig was, en het vervolgens te vergelijken naar de geluidsvloer van de FHT-berekening. Ik ben ervan overtuigd dat deze dingen kunnen worden gedaan!

Ik hoop dat jullie allemaal plezier hebben gehad met dit project en als je vragen hebt, reageer dan alsjeblieft en ik zal zo snel mogelijk reageren! Ik kijk uit naar reacties.

Aanbevolen: