Descripción
Mi esposa sufre un problema en sus oídos medios, que le impiden ecualizar presiones por ejemplo durante la subida y bajada de un avión, produciéndole un dolor muy intenso.
Un familiar que vive en Austria, sufría del mismo problema y su médico le recetó usar Otobar Nasenballon. Tratamos de conseguirlo allá y no fue posible. Idéntico resultado tuvimos en Argentina. La fotografía corresponde a la caja del producto alemán. Comencé a investigar en la WEB y apareció muchísima información sobre todo en You tube. Allí pude ver que en España se llama Otovent, idéntico al de la fotografía y apareció otro nombre VentytubA que trabaja sin el globo. Es la segunda fotografía. El sistema Otovent, aumenta la presión en el oído medio inflando el globo, y el VentytubA también, pero lo hace dejando salir el aire en forma restringida por un orificio pequeño. La información encontrada indica que la presión que se levanta con el globo, llega a 400 mm de columna de agua.
La idea entonces fue construir un dispositivo que midiera la presión, para que se la pudiera elegir a voluntad, sintiendo los efectos que esta presión causa en el oído.
Caja original
Boquilla Nasal
El procedimiento de uso del Otovent, lo encuentran en youtube.
El procedimiento del VentytubA está en esta página WEB: http://www.ventytuba.com/
Procedimiento de uso de mi dispositivo
El procedimiento de mi dispositivo es el siguiente:
1) presionar el pulsador para que arranque. El display deberá marcar cero (0).
2) Inspirar profundamente. Colocar el dispositivo en un orificio nasal y tapar el otro con otro dedo.
3) Espirar por el orificio del dispositivo levantando la presión. Se visualiza en el display entre 0 y 9. El valor 9 corresponde a 400 mm de columna de agua. Mi esposa usa entre 6 y 7, lo que le da buenos resultados.
Si luego de 9 se sigue soplando a mayor presión, el display no la marcará, pero la presión sigue igual aumentando.
4) Luego de transcurridos 15 segundos, el sistema, y por lo tanto el display se apaga. Se debe entonces espirar lentamente sacando el dispositivo del orificio nasal.
5) Hacer el movimiento de masticación deglución para que la presión del oído medio se normalice.
Esquema
Está basado en el Arduino Micro, de tamaño reducido. La primera experiencia la hice con un Arduino Uno. No cambia el programa ni las conexiones.
No tiene llave de corte, porque al apagarse, la batería queda desconectada. Se enciende solamente 15 segundos.
El BMP 180 Y la cápsula que lo contiene
El BMP 180, es un módulo para medición de presión atmosférica, altura y temperatura ambiente. Mide aproximadamente 1 x 1 cm.
Aquí la usamos para medir presión relativa a la atmosférica, por lo tanto, la debemos usar en una cápsula (Fabricada con Masilla epoxi, "Poxilina") aislada de la atmósfera. De esa cápsula saldrán los 4 cables que la conectan al Arduino y el tubo que la conecta a la nariz.
Esta es la imagen de la cápsula, bastante agrandada, donde se ven los 4 cables y el tubo de 4 mm de diámetro. Está superpuesta la imagen del BMP 180.
Para construirla, pegué un cartón liviano a ambas caras de la plaqueta, y lo cubrí todo, plaqueta cables y tubo con una capa de masilla epoxi. El espesor de pared quedó demasiado grueso, sin necesidad.
Tener mucho cuidado, porque el integrado metálico del BMP180, tiene un orificio muy pequeño, que no debe ser tapado.
Cuando arranca el sistema, el tubo está conectado a la atmósfera, y mide el valor cero de presión relativa. Cuando se sopla, mide la presión interior de la cápsula o sea la del oído y trompa de Falopio. Luego calcula la diferencia y muestra la presión en cm de columna de agua afectada por una escala para ver números del 0 al 9.
Programa
Está en el archivo zipeado.
Está basado en el trabajo de esta página: www.arossini.com.ar 132 - Arduino + Sensor de Presión Barometrica BMP180
#include <SFE_BMP180.h>
#include <Wire.h>
SFE_BMP180 pressure; //Se declara una instancia de la libreria
//Se declaran las variables. Es necesario tomar en cuenta una presion inicial
//esta sera la presion que se tome en cuenta en el calculo de la diferencia de presion
double PresionBase; // Medicion de la presion atmosferica al inicio del sistema
double Presion = 0; // Medicion de la presion actualizada en el recinto del sensor
double Altura = 0;
double Temperatura = 0;
char status;
#define ba 20 // Define las 7 barras en 7 pines digitales, dejando el 1 y 2 para serial
#define bb 21
#define bc 4
#define bd 5
#define be 6
#define bf 7
#define bg 8
#define Arranque 10 // Salida del pulsador de arranque
// Pines para A B C D E F G, en secuencia
const int segs[7] = { 21, 20, 4, 5, 6, 7, 8 };
// Definir que barras estan apagadas - prendidas para cada numero
const byte numbers[11] = { 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101, 0b1111101, 0b0000111, 0b1111111, 0b1101111, 0b1000000};
// 6543210 gfedcba
int digit1 = 0; // Digito
int val; // Valor de la presion relativa a la atmosfera
double Inicio; // Valor del reloj del Arduino al inicio
void setup() {
//Serial.begin(9600); // Se inicia la comunicacion serial
SensorStart(); //Se inicia el sensor y se hace una lectura inicial
pinMode(ba, OUTPUT); // Definir el estado de los puertos
pinMode(bb, OUTPUT);
pinMode(bc, OUTPUT);
pinMode(bd, OUTPUT);
pinMode(be, OUTPUT);
pinMode(bf, OUTPUT);
pinMode(bg, OUTPUT);
pinMode(Arranque, OUTPUT);
Inicio = millis(); // Leer el valor inicial del reloj
digitalWrite(Arranque, HIGH); // Poner el puerto arranque en 1, para que el relay cierre el contacto y alimente todo.
}
//*********************************************************
void loop() {
//Serial.println(Inicio ); // se abre para la puesta a punto
//Serial.println(millis() -Inicio );
if ((millis() - Inicio) > 15000) {digitalWrite(Arranque, LOW); } // Son los 15 segundos que se mantiene encendido el sistema
// Cierra el contacto
ReadSensor(); //Se hace lectura del sensor
val = Presion - PresionBase; // Calcula la presion relativa
// Prender el display
digit1= round(val)/4; // Le aplica una escala al valor leido y lo redondea.
if (digit1>9) {digit1=10;} // Si la presion es mayor a 9 muestra el guion
// Serial.println(val);
// Serial.println(digit1);
EncenderDigit1(numbers[digit1]);
} // Fin del Void loop()
// Siguen las subrutinas
// *************************************************************
void EncenderDigit1(byte numbers)
{
for (int i = 0; i < 7; i++) {
int bit = bitRead(numbers, i);
digitalWrite(segs[i], bit);
}
}
// *********************************************************************
void ReadSensor()
{
//En este método se hacen las lecturas de presión y temperatura y se calcula la altura
//Se inicia la lectura de temperatura
status = pressure.startTemperature();
if (status != 0)
{ // INI 1
delay(status);
status = pressure.getTemperature(Temperatura); //Se realiza la lectura de temperatura
if (status != 0)
{ // INI 2
status = pressure.startPressure(3); //Se inicia la lectura de presión
if (status != 0)
{ // INI 3
delay(status);
//Se lleva a cabo la lectura de presión,
//considerando la temperatura que afecta el desempeño del sensor
status = pressure.getPressure(Presion, Temperatura);
if (status != 0)
{ // INI 4
//Se hace el cálculo de la altura en base a la presión leída en el Setup
Altura = pressure.altitude(Presion, PresionBase);
} // FIN 4
} // FIN 3
} // FIN 2
} // FIN 1
} // FIN void ReadSensor()
// ********************************************************************
void SensorStart()
{
//Secuencia de inicio del sensor
if (pressure.begin())
//Se inicia la lectura de temperatura
status = pressure.startTemperature();
if (status != 0)
{
delay(status);
//Se lee una temperatura inicial
status = pressure.getTemperature(Temperatura);
if (status != 0)
{
//Se inicia la lectura de presiones
status = pressure.startPressure(3);
if (status != 0)
{
delay(status);
//Se lee la presión inicial incidente sobre el sensor en la primera ejecución
status = pressure.getPressure(PresionBase, Temperatura);
}
}
}
} // FIN void SensorStart()
Gabinete Plástico
Está fabricado como en el trabajo de esta página: www.arossini.com.ar 80 - Procedimiento para fabricar nuestros gabinetes y Dispositivo de calentamiento
Fotografías
Vista completa del Dispositivo. Mide 85 x 60 x 35 de altura
Vista interior, donde se observa la cápsula del BMP180, la batería de 9 Volt y la plaqueta del Arduino Micro con el display Led y el Relay.
Vista lateral, donde se observa el pulsador negro, para el arranque y algo de espuma plástica de relleno para proteger al conjunto de golpes.