Tabla de contenido:

Estetoscopio espectral de transformación rápida de Hartley: 22 pasos
Estetoscopio espectral de transformación rápida de Hartley: 22 pasos

Video: Estetoscopio espectral de transformación rápida de Hartley: 22 pasos

Video: Estetoscopio espectral de transformación rápida de Hartley: 22 pasos
Video: Uso del Osciloscopio #21: FFT Transformada Rapida de Fourier 2024, Noviembre
Anonim
Estetoscopio espectral de transformación rápida de Hartley
Estetoscopio espectral de transformación rápida de Hartley

En este instructivo, aprenderá cómo hacer un estetoscopio espectral usando la transformación rápida de Hartley. Esto se puede utilizar para visualizar los sonidos cardíacos y pulmonares.

Paso 1: Materiales

Pantalla LCD de 1.8 ($ 7.50 en Amazon)

Arduino Uno o equivalente ($ 7.00 en Gearbest)

Amplificador Electret ($ 6.95 en Adafruit)

Condensador de 100 µF ($ 0,79)

Alambres y puentes ($ 4.00)

Conector estéreo de 3,5 mm ($ 1,50)

Potenciómetro de 10kOhmios ($ 2.00)

Interruptor momentáneo ($ 1,50)

Paso 2: herramientas

Soldador

Pistola de silicona

Impresora 3D … o un amigo con una impresora 3D (también se puede hacer con cartón)

Cortador de cables

Tablero de circuitos

Paso 3: Impresión 3D

La primera es imprimir en 3D los archivos.stl adjuntos a este paso. Imprimí ambos archivos usando el siguiente material / configuraciones:

Material: PLA

Altura de la capa: 0,1 mm

Espesor de la pared / superior / inferior: 0,8 mm

Temperatura de impresión: 200 ° C

Temperatura de la cama: 60 ° C

Soporte habilitado @ 10%

Paso 4: Construya el circuito

Usando los componentes en la sección de materiales, construya el circuito. Siempre coloco el circuito en una placa de pruebas primero para asegurarme de que funciona correctamente antes de tocar el soldador.

Paso 5: cableado de la pantalla LCD

Cableado LCD
Cableado LCD

Utilizando la figura adjunta a este paso, suelde los cables a siete de los ocho pines de la pantalla LCD. Estos cables deberán tener aproximadamente 3 pies de largo, a excepción de los pines de tierra y + 5V (estos solo deben tener 2-3 pulgadas)

Paso 6: Cableado de micrófono / amplificador

Cableado de micrófono / amplificador
Cableado de micrófono / amplificador

Usando la figura adjunta a este paso, suelde tres cables a los pines + 5V, Tierra y Salida en el micrófono / amplificador Adafruit. Estos solo necesitan tener aproximadamente 2-3 pulgadas de largo.

Paso 7: cableado del interruptor momentáneo

Conecte un cable de 2-3 pulgadas a cada uno de los dos terminales del interruptor momentáneo.

Paso 8: cableado del potenciómetro

Usando la figura del paso 6, suelde tres cables de aproximadamente 2-3 pulgadas de largo a las tres lengüetas del potenciómetro.

Paso 9: Cableado de la toma de auriculares

Suelde tres cables al anillo, la punta y las lengüetas de la manga de la toma de auriculares. Usé un conector de un metrónomo que ya estaba cableado. Si no sabe qué son las orejetas del anillo, la punta y la manga, simplemente busque en Google. Hay muchas imágenes buenas sobre el cableado de las tomas estéreo.

Paso 10: Salida de micrófono / amplificador

Después de soldar los cables del micrófono / amplificador, el potenciómetro y el conector para auriculares, suelde un cable de aproximadamente tres pies de largo al cable "de salida" del amplificador del micrófono. Este cable se conectará más tarde al pin A0 del arduino.

Paso 11: Continuación de la salida de micrófono / amplificador

Suelde un segundo cable al cable de "salida" del micrófono / amplificador. Este cable debe soldarse a un capacitor de 100 microFaradios. Si está utilizando un condensador electrolítico, asegúrese de que el lado positivo esté conectado a este cable.

Paso 12: Componentes en el gabinete

Componentes en caja
Componentes en caja
Componentes en caja
Componentes en caja

Después de que todos los cables estén soldados en los componentes, coloque los componentes en sus respectivos lugares siguiendo las figuras adjuntas a este paso. Usé pegamento termofusible para asegurar el micrófono y la toma de auriculares en su lugar.

Paso 13: Soldadura en caja

Después de que todos los componentes estén asegurados en el gabinete, suelde todos los cables de tierra juntos. Debe haber uno de la pantalla LCD, uno del micrófono / amplificador y uno de la funda de la toma de auriculares. También suelde los cables de + 5V juntos y un cable del interruptor momentáneo. Una vez más, debería haber uno en la pantalla LCD, uno en el micrófono / amplificador y uno en el interruptor momentáneo.

Paso 14: + 5V, cables extendidos GND

Ahora corte dos trozos de alambre de aproximadamente 3 pies de largo. Suelde uno al grupo de cables de tierra y suelde el otro al cable abierto en el interruptor momentáneo.

Paso 15: Deslice los cables largos a través del orificio del gabinete

Deslice los cables largos a través del orificio del gabinete
Deslice los cables largos a través del orificio del gabinete

Ahora, debe tener un total de ocho cables de aproximadamente 3 pies de largo. Colóquelos a través del orificio sin rellenar del gabinete. Vea la figura adjunta a este paso.

Paso 16: encogimiento del calor

Una vez completada toda la soldadura, asegúrese de que los cables expuestos estén cubiertos. Usé tubos termorretráctiles, pero la cinta aislante también funciona bien.

Paso 17: Selle el recinto

Recinto del sello
Recinto del sello
Recinto del sello
Recinto del sello

Tome la mitad del gabinete que contiene la pantalla LCD y deslícela sobre la otra mitad del gabinete que contiene los otros componentes. Mientras empuja las dos piezas juntas, péguelas en caliente para asegurar el gabinete.

Paso 18: Conéctese a Arduino

Los ocho cables largos restantes están conectados directamente a sus respectivos pines Arduino descritos en los esquemas del circuito. ¡Asegúrese de que cada vez que suelde uno de esos cables largos de 3 pies en el circuito, coloque un trozo de cinta en el otro extremo que indique a qué pin de Arduino va!

Paso 19: Arduino IDE / Bibliotecas

Deberá descargar el IDE de Arduino. Para este boceto, utilicé tres bibliotecas diferentes: FHT.h, SPI.h y TFT.h. Si no sabe cómo descargar las bibliotecas de Arduino, consulte https://www.arduino.cc/en/Guide/Libraries. La biblioteca FHT.h se descargó de openmusiclabs.com. Los otros dos se descargaron en GitHub.

Paso 20: Boceto de Arduino

El código utiliza la Transformada Rápida de Hartley (FHT) para cambiar el dominio del tiempo a un dominio de frecuencia. Esto también se puede hacer usando la Transformada Rápida de Fourier (FFT), pero la FHT es mucho más rápida. FFT y FHT son ideas muy fundamentales en el procesamiento de señales y es muy divertido aprender sobre ellas. Le sugiero que lea un poco usted mismo, si está interesado, consulte. El código de ejemplo de FHT que copié del sitio web de Open Music Labs inicialmente mostraba la amplitud de cada intervalo de frecuencia como una salida logarítmica o en decibelios. Cambié esto para generar los contenedores de frecuencia en una escala lineal. Esto se debe a que la escala lineal es una mejor representación visual de cómo los humanos escuchan el sonido. El bucle for () al final es para dibujar la amplitud de cada intervalo de frecuencia en la pantalla LCD. El espectro completo de FHT abarcaría todos los intervalos de frecuencia desde i = 0 hasta i <128. Notará que mi bucle for () es de i = 5 a i <40, esto se debe a que las frecuencias importantes para diagnosticar afecciones pulmonares suelen estar entre 150Hz y 3.5khz, decidí subir a aproximadamente 4kHz. Eso se puede ajustar si desea mostrar el espectro de frecuencia completo.

[código]

// Código de estetoscopio digital

// Biblioteca Fast Hartley Transform descargada de openmusiclabs

#define LIN_OUT 1 // establece FHT para producir una salida lineal

#define LOG_OUT 0 // desactiva la salida logarítmica FHT

#define FHT_N 256 // Número de muestra FHT

#include // incluye la biblioteca FHT

#include // incluye la biblioteca TFT

#include // incluye biblioteca SPI

#define cs 10 // establece el pin lcd cs en el pin 10 de arduino

#define dc 9 // establece el pin lcd dc en el pin 9 de arduino

#define rst 8 // establece el pin de reinicio del lcd en el pin 8 de arduino

TFT myScreen = TFT (cs, dc, rst); // declarar el nombre de la pantalla TFT

configuración vacía () {

//Serial.begin(9600);//set frecuencia de muestreo

myScreen.begin (); // inicializar la pantalla TFT

myScreen.background (0, 0, 0); // establece el fondo en negro

ADCSRA = 0xe5; // establece adc en modo de ejecución libre

ADMUX = 0x40; // usa adc0

}

bucle vacío () {

while (1) {// reduce el jitter cli (); // La interrupción UDRE se ralentiza de esta manera en arduino1.0

for (int i = 0; i <FHT_N; i ++) {// guardar 256 muestras

mientras (! (ADCSRA & 0x10)); // espera a que adc esté listo

ADCSRA = 0xf5; // reiniciar el byte adc

m = ADCL; // recupera el byte de datos adc

j = ADCH; int k = (j << 8) | metro; // formar en un int

k - = 0x0200; // forma un int firmado

k << = 6; // forma en un int firmado 16b

fht_input = k; // poner datos reales en contenedores

}

fht_window (); // ventana de los datos para una mejor respuesta de frecuencia

fht_reorder (); // reordenar los datos antes de hacer el fht

fht_run (); // procesar los datos en el fht

fht_mag_lin (); // tomar la salida del fht

sei ();

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

}

}

[/código]

Paso 21: ¡Pruébelo

¡Pruébelo!
¡Pruébelo!

Usé un generador de tonos en línea (https://www.szynalski.com/tone-generator/) para confirmar que el código funcionaba correctamente. Después de confirmar que funciona, presione la campana del estetoscopio contra su pecho, respire profundamente y vea qué frecuencias están presentes.

Paso 22: Trabajo futuro

** Nota: soy químico, no ingeniero o informático **. Es probable que haya errores y mejoras en el diseño y el código. Dicho esto, creo que es un buen comienzo para algo que puede resultar muy útil y económico. Las siguientes viñetas son mejoras futuras que me gustaría hacer y espero que algunos de ustedes también intenten mejorarlas.

· Hacer que el dispositivo sea móvil. No tengo una amplia experiencia con CPU u otros microcontroladores, pero necesitaría tener suficiente memoria para almacenar toda la biblioteca FHT en, o posiblemente Bluetooth.

· Introducir algunos cálculos de análisis estadístico en el código. Por ejemplo, normalmente una sibilancia tiene una frecuencia fundamental igual o superior a 400 Hz y dura al menos 250 ms. Rhonchi se produce a una frecuencia fundamental de aproximadamente 200 Hz o menos y dura al menos 250 ms. Muchos otros sonidos pulmonares están definidos e indican condiciones de salud (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Creo que es algo que se puede verificar en el código comparando la señal de los contenedores de frecuencia después de un cierto número de ciclos a través del FHT y luego ejecutando la función millis () para ver cuánto tiempo estuvo presente, luego comparándolo al piso de ruido del cálculo FHT. ¡Estoy seguro de que se pueden hacer estas cosas!

Espero que se hayan divertido con este proyecto y si tienen alguna pregunta, por favor comenten y les responderé lo antes posible. Espero ver comentarios.

Recomendado: