BME BAC de 3300 metros (7 / 8 paso)

Paso 7: Software

Hemos pegado el código de ejemplo más abajo. Este código supone que el divisor de tensión está conectado al pin A0, el LED verde está conectado a la entrada-salida Digital Pin 2 y el LED rojo está conectado a la entrada-salida Digital del Pin 3.

Claire y Kyle

Código de Arduino para Proyecto Final

incluir el código de biblioteca:

#include

inicializar la biblioteca con los números de los pines de interfaz

LiquidCrystal lcd(8,9,4,5,6,7);

sistema de entrada de pin a pin A0

const int analogInPin = A0; Clavija de entrada analógica que el potenciómetro está conectado a

int sensorValue = 0; valor leído desde el circuito

int loadResistor = 1465; valor de la resistencia de carga que nos hemos decidido a utilizar (BAC de 0,08 corresponde a R del valor de la resistencia cerca de 1440 por lo que utiliza para maximizar la sensibilidad en este punto)

int greenLEDPin = 2; pin digital IO donde está conectado el LED verde

int redLEDPin = 3; pin digital IO donde está conectado el LED rojo

inicializar todas las variables para el cálculo de BAC

Float actualVoltage;

Float transducerResistance;

Float gasConcentration;

Float bloodConcentration;

flotador BAC;

Float BACvalues [50];

Float finalBAC;

suma de flotador;

void setup() {}

fijar número la pantalla del LCD de filas y columnas:

LCD.Begin (16, 2);

inicializar comunicaciones serie a 9600 bps:

Serial.Begin(9600);

configurar los pines donde LEDs están conectados a la salida

pinMode(greenLEDPin,OUTPUT);

pinMode(redLEDPin,OUTPUT);

}

void loop() {}

Cuando la alcoholemia es conectado por primera vez (intro)

imprimir nuestros nombres y el nombre de clase

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("Claire & Kyle");

lcd.setCursor(0,1);

LCD.Print ("BME 3300L");

Asegúrese de que el comienzo de LEDs apagados y la suma empieza en 0

digitalWrite(greenLEDPin,LOW);

digitalWrite(redLEDPin,LOW);

suma = 0;

Lectura analógica de valor:

sensorValue = analogRead(analogInPin);

convertir el valor del sensor en el voltaje de entrada actual

actualVoltage = float (sensorValue) * 5/1024;

Aquí decir si boton, ir a pantalla de inicio de alcoholemia (pre prueba)

Si (actualVoltage > = 0 & & actualVoltage < = 2.00) {}

Imprima las instrucciones para la prueba

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("soplo (3 segundos)");

lcd.setCursor(0,1);

LCD.Print ("pulse iniciar");

Delay(1000);

Lectura analógica de valor:

sensorValue = analogRead(analogInPin);

convertir el valor del sensor en el voltaje de entrada actual

actualVoltage = float (sensorValue) * 5/1024;

mientras no se pulse el botón, seguir mostrando las instrucciones de la prueba

mientras que (actualVoltage > = 2.00 || actualVoltage < = 0) {}

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("soplo (3 segundos)");

lcd.setCursor(0,1);

LCD.Print ("pulse iniciar");

Delay(1000);

Lectura analógica de valor:

sensorValue = analogRead(analogInPin);

convertir el valor del sensor en el voltaje de entrada actual

actualVoltage = float (sensorValue) * 5/1024;

}

Esto es cuando se pulsa el botón (b y c ya no está en el tiempo bucle)

empezar a correr la prueba de

Dile que sople, imprimir el BAC en cada punto de

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("golpe ahora");

lcd.setCursor(0,1);

LCD.Print ("BAC =");

Delay(1000);

bucle y registrarlas BAC durante el tiempo de prueba

para (int ii = 0; ii < 50; ii ++) {}

Este es el código para calcular realmente BAC del circuito

Lectura analógica de valor:

sensorValue = analogRead(analogInPin);

convertir el valor del sensor en el voltaje de entrada actual

actualVoltage = float (sensorValue) * 5/1024;

calcular la resistencia del transductor

transducerResistance = 5 * loadResistor/actualVoltage - loadResistor;

utilizar la resistencia del transductor y la sensibilidad del transductor para determinar la concentración de gas

ya que puede sólo sentido > 50ppm, basado en calibración establecer BAC 0 cuando la resistencia es mayor a 1900

Si (transducerResistance < 1900) {}

gasConcentration = - 0.257 * transducerResistance + 538.55;

}

Else {}

gasConcentration = 0;

}

utilizar la concentración de gas para calcular la concentración en sangre

bloodConcentration = gasConcentration/0.21;

utilizar la concentración de la sangre a la salida del BAC

BAC = bloodConcentration/10000;

imprimir los resultados en el monitor serial:

Esto es útil durante la fase de prueba para rastrear lo que está sucediendo

Serial.Print ("sensor =");

Serial.Print(sensorValue);

Serial.Print ("\t voltaje =");

Serial.Print(actualVoltage);

Serial.Print ("\t resistencia =");

Serial.Print(transducerResistance);

Serial.Print ("\t concentración =");

Serial.Print(gasConcentration);

Serial.Print ("\t concentración en la sangre =");

Serial.Print(bloodConcentration);

Serial.Print ("\t BAC =");

Serial.println(BAC);

imprimir los resultados en la pantalla LCD:

durante la prueba, imprima cada punto de datos diciendo a soplar

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("golpe ahora");

lcd.setCursor(0,1);

LCD.Print ("BAC =");

LCD.Print(BAC);

BACvalues [ii] = BAC;

}

calcular el BAC final quieras promediando los valores de los puntos de tiempo medio

excluidos los extremos porque no puede ser soplado al principio o al final

no encuentra la necesidad de filtrar porque los resultados eran muy estables

para (int kk = 15; kk < 35; kk ++) {}

suma = suma + BACvalues [kk];

}

obtener el final BAC para mostrar promediando sobre los plazos pertinentes

finalBAC = sum/20;

código para encender los LEDs

Si el BAC está por debajo del límite legal, enciende el LED verde

if(BAC<0.08) {}

digitalWrite(greenLEDPin,HIGH);

digitalWrite(redLEDPin,LOW);

}

Si el BAC no esté por debajo del límite legal, enciende el LED rojo

Else {}

digitalWrite(greenLEDPin,LOW);

digitalWrite(redLEDPin,HIGH);

}

LCD.Clear();

lcd.setCursor(0,0);

LCD.Print ("prueba completada");

lcd.setCursor(0,1);

LCD.Print ("BAC =");

LCD.Print(finalBAC);

Delay(10000);

Serial.Print ("BAC final =");

Serial.println(finalBAC);

}

Delay(1000);

}

Artículos Relacionados

Estación de metro con el fotón del panel

Estación de metro con el fotón del panel

Para mí, hablar del tiempo es más que charla ociosa. Así que cuando me interesé en la electrónica de acceso a Internet (Internet de las cosas), supe inmediatamente que mi primer proyecto de IoT estaría relacionado con lo primero que hago cuando me co
SENTIDO: Inteligente dispositivo de análisis de aliento (un alcoholímetro inteligente)

SENTIDO: Inteligente dispositivo de análisis de aliento (un alcoholímetro inteligente)

Hola a todos,Soy Geeve George 15 años fabricante/electrónica Hobbyist.I amor visión por computador, desarrollo Android y algoritmo de Design.I actualmente estoy en 11 grado estudiante de informática en la escuela del indio de Little Rock. :)Encontrar
Realmente Simple Baca (para coches sin canales de la lluvia).

Realmente Simple Baca (para coches sin canales de la lluvia).

quería una baca para llevar barcos y madera y todo eso.  Estaba a punto de comprar el NRS rápido y fácil para techo-parrilla-Potagia, pero ninguno de nuestros coches tiene los canales de la lluvia. Entonces, ¿qué hacer?Este estante evolucionó desde u
DIY Rack Cruz Baca

DIY Rack Cruz Baca

mi SUV Buick no vienen con ninguna barras transversales. Vi una serie en Ebay por unos $120,00 pero aún, tendría que averiguar cómo montarlo en el rack de techo compré. Un viaje a la ferretería y $10.00 más tarde, se me ocurrió con esta configuración
Calculadora de Arduino Bac

Calculadora de Arduino Bac

Este es un instructivo sobre cómo crear un circuito simple utilizando un sensor de alcohol MQ-3 para medir nivel de BAC. Vamos a usar código de arduino y un arduino protector lcd para mostrar el nivel calculado de la BAC.Paso 1: Piezas + herramientas
Dispositivo Detector de simple BAC

Dispositivo Detector de simple BAC

Objetivos generales:Para construir un analizador de concentración de Alcohol en sangre utilizando un sensor de gas Pt electrodos que mide el alcohol en el aliento al 10% de precisión de trabajo. El circuito también utilizará un Arduino Uno, una panta
Cómo usar (y elegir) un multímetro!

Cómo usar (y elegir) un multímetro!

Comprobar la duración de la batería de coche, circuitos de depuración y encontrar ese corto molesto son todas funciones super útiles que se pueden hacer con una herramienta impresionante: el multímetro!En primer lugar, ¿qué diablos es un multímetro??
HIH4000 humedad, tutorial de sensor higrómetro

HIH4000 humedad, tutorial de sensor higrómetro

Los sensores de humedad HIH-4000 serie están diseñados específicamente para alta humedad eficiente detección de honeywell. Tiene una salida de voltaje lineal buena que puede ser conectada a un microcontrolador. Con un típico de corriente de 200 μA, H
Velocímetro de bicicleta "Analógico"

Velocímetro de bicicleta "Analógico"

En este instructable voy a mostrar cómo hacer un velocímetro "análogo" fácil utilizando un arduino nano, un servo motor y algunos componentes extras más.Es la parte analógica del proyecto sólo en la pantalla de la velocidad, todas las de detecci
Termómetro en interruptor de pared

Termómetro en interruptor de pared

Proyecto simpleEs realmente sencillo proyecto sin cualquier microprocesador.Necesitaba indicar y controlar la humedad, la temperatura en algunas habitaciones de la casa de la familia. Para encontrar el lugar adecuado para instalar termómetro/higrómet
DIY pulsera podómetro por Edison Intel y... Papel

DIY pulsera podómetro por Edison Intel y... Papel

En este proyecto, te voy a mostrar cómo a DIY un podómetro con el papel, usted puede encontrar todos los módulos eléctricos en la Xadow Kit usable para Intel Eidson.Tal vez la experiencia de este DIY podómetro es peor que el fitbit, pero el viaje de
Configuración de un anemómetro de A100LK en un Arduino

Configuración de un anemómetro de A100LK en un Arduino

Nadie pensando en instalar un generador de viento, o incluso un rebaño entero de aerogeneradores, haría bien para supervisar el sitio propuesto por al menos un año entero antes de gastar un duro más en hardware. Esto es lo que el A100LK está diseñado
Un fotómetro y un colorímetro barato

Un fotómetro y un colorímetro barato

Versión 08 de mayo de 2016¿Qué es este instructable sobre?El objetivo de este proyecto era construir un dispositivo sencillo y económico que permite la medición de la composición de color de una solución, es decir, un colorímetro, o su densidad óptic
Acelerómetro analógico Control de un Servo

Acelerómetro analógico Control de un Servo

Se trata de un método de usar la salida de pulso cuadrado de un acelerómetro de dos ejes de Memsic para controlar un servo. Sin embargo, a diferencia de otros métodos que utilizan un dispositivo microcontrolador, te voy a mostrar cómo directamente to