Saltar al contenido
Blog Arduino, LabVIEW y Electrónica

Módulo de Alcoholímetro

Sensor de alcoholímetro

¿Qué es un módulo de Alcoholímetro?

El Módulo de Alcoholímetro es un sensor de gas de alcohol de alta precisión, sirve para detectar la concentración del gas en el aire (también detecta humo, gas propano, además de cualquier tipo de alcohol).

Este módulo está montado en un circuito electrónico que cuenta con un amplificador operacional Dual CMOS, esto con la finalidad de obtener lecturas en valores analógicos y digitales, cada uno con su respectivo pin. Sólo se obtiene una salida digital cuando se supera cierto umbral regulado a través del potenciómetro que se encuentra ubicado en la placa.

Es necesario calibrar constantemente el sensor antes de obtener una medida, ya que factores como la temperatura ambiental y la contaminación del aire, son factores que vuelven imprecisa la medición.

Módulo de alcoholimetro

¿Cómo Funciona?

El sensor MQ3 está compuesto por un sensor electroquímico, el cual va a variar su resistencia eléctrica al estar expuesto con el gas que vamos a analizar, ya que podemos tener lecturas de alcohol, humo, gas propano, etcétera. Cabe aclarar que esta clase de dispositivos tienen una muy alta inercia, significa que la respuesta requiere un largo tiempo para estabilizarse después de haber estado expuesto a una concentración de gases. Esto se debe al tiempo que le toma al gas para abandonar al sensor completamente.

El sensor MQ-3 cuenta con un calentador (incluido en el dispositivo) el cual se alimenta dentro del mismo pin de voltaje (5V), es muy importante que antes de comenzar el uso de este sensor, lo mantengas en alimentación por al menos 5 minutos para que el calentador pueda aumentar la temperatura del sensor y el material tenga sensibilidad para lectura.

El consumo de este sensor es bastante elevado, por el calor necesario para funcionar, este puede llegar hasta 800 mW. Esto es superior a la potencia que suministra el regulador de Arduino, por lo que es necesario contar con una alimentación externa si se va a utilizar el sensor por un largo periodo.

¿Cómo se lee la concentración química en el sensor?

A continuación, podemos ver la curva de concentración del sensor MQ3, que es la misma que el sensor de la misma familia, el MQ2:

Gráfica de módulo mq3

Las gráficas están establecidas en escala logarítmica, en ambos ejes, dónde sólo bajo esta escala podemos percibir que son cercanamente rectas, entonces la concentración nos resultará de esta forma matemática:

fórmula de concentracion

Para determinar la concentración finalmente, necesitamos la recta que más se acerca, por ello vamos a escoger dos puntos de forma indiferente de las gráficas P0 = {X0, Y0} y P1 = {X1, Y1}, entonces la recta nos resultaría de la siguiente forma.

Formula de concentración por vectores

Dónde se calculan de la siguiente forma las variables:

Formula de concentracion por vectores

Formula de concentracion por vectores

Información Técnica

Principales características del sensor de Alcoholímetro MQ – 3:

  • Operación 5V
  • Gran facilidad de manejo
  • Cuenta con un LED para la salida y potencia
  • Sensibilidad de salida ajustable
  • Salida analógica 0V a 5V
  • Salida digital 0V o 5V
  • Bajo costo
  • Respuesta rápida
  • Alta duración y estabilidad
  • Buena sensibilidad al gas de alcohol
  • Salidas digitales y analógicas
  • Indicador LED encontrado en la placa
  • Rango de concentración: 0.05 mg / L ~ 10 mg / L Alcohol
  • Voltaje de funcionamiento: 5V
  • Consumo de corriente: 150 mA
  • Rango de temperatura de funcionamiento: -10 ° C ~ 70 ° C

¿Dónde se puede conseguir?

Es un módulo bastante común, y el precio va desde los $1.20 USD hasta los $2.5 USD. Se puede conseguir en Mercado Libre.

Diagrama de Pines del Módulo y Equematico de Circuito

*Este circuito ya viene integrado dentro el módulo.

DIAGRAMA DE PINES DEL MÓDULO Y ESQUEMÁTICO DEL CIRCUITO

¿Cómo se realiza la prueba del Sensor?
  1. Vamos a necesitar un Arduino UNOun módulo de sensor MQ3, un LED con su respectiva resistencia (no es obligatorio ya que el Arduino UNO ya cuenta con su propio LED en el pin 13, si deseas usar un LED externo, simplemente puedes optar por cambiar el pin de salida), y en caso de utilizar por más de 20 minutos el sensor, vamos a necesitar de una fuente externa de 5V a 1.2 A mínimo, ya que el Arduino no puede proveer la potencia que requiere el sensor.
  2. Este sensor requiere estar encendido al menos 5 minutos antes de comenzar la prueba ya que tiene el módulo tiene un calentador y requiere aumentar la temperatura del circuito para su funcionamiento.
  3. Añadir el programa que te mostramos a continuación.

*Nota: No es necesario el consumo de alcohol para esta prueba, ya que al acercar el sensor alguna botella de alcohol podremos tener una respuesta eficiente, para probar los distintos niveles de este podemos crear distintas muestras diluidas en agua. En caso de optar por querer probar su eficiencia en aliento, cualquier enjuague bucal con base alcohólica es buena opción.

 

const int AOUTpin=A0;//El pin de AOUT del módulo debe ir hacia el pin análogo del Arduino
const int ledPin=13;//El pin 13 está declarado para usar el LED

int i,alco_high,alco_low,mapped,data[200];

void setup() {
Serial.begin(115200);
pinMode(AOUTpin, INPUT);
for(i=2;i<=5;i++)
{
  pinMode(i,OUTPUT);//declaramos el pin del Arduino como salida 
}
}

void loop()
{
  alco_high=0; // initially alcohol level is zero
  alco_low = 1023; // low threshold is 1023

        for(i=200; i>0; i--){
        data[i] = data[i-1]; // decrement of data
        
      if(data[i]>alco_high)
      alco_high=data[i];
      if(data[i]<alco_low)
      alco_low=data[i];
      }
data[0]= analogRead(AOUTpin);//reads the analaog value from the alcohol sensor's AOUT pin
mapped=map(data[0],0,1023,0,600);
Serial.print("Alcohol value: ");
Serial.println(mapped);//prints the alcohol value
delay(100);

 if((alco_high-alco_low)>150){
  if(data[0] > (alco_high-.95*(alco_high-alco_low)))//this is true if the read is greater than 95% of the span
  digitalWrite(2, HIGH);
  else
  digitalWrite(2,LOW); 
  
  if(data[0] > (alco_high-.9*(alco_high-alco_low)))
  digitalWrite(3, HIGH);
  else
  digitalWrite(3,LOW); 
 
    if(data[0] > (alco_high-.8*(alco_high-alco_low)))
  digitalWrite(4, HIGH);
  else
  digitalWrite(4,LOW); 
    if(data[0] > (alco_high-.7*(alco_high-alco_low)))
  digitalWrite(5, HIGH);
  else
  digitalWrite(5,LOW); 
 }
 else 
 {
 for(i=2;i<=5;i++)
 digitalWrite(i,0);
}}