Conecte el sensor de voltaje a Arduino

Como muchos microcontroladores, el Arduino Uno tiene un convertidor analógico a digital (ADC) integrado que puede convertir un voltaje analógico en un pin en un número digital. Sin embargo, el voltaje máximo en el pin de entrada analógica está limitado a 5V. Este límite puede resultar inconveniente para usted si su proyecto requiere medir voltajes superiores a 5 V. En tales casos, podría crear un divisor de voltaje con resistencias discretas.

Sin embargo, existe una manera más sencilla de medir voltajes, especialmente si están por debajo de 25 V: use un Sensor de voltaje. Es un circuito divisor de voltaje preconstruido que utiliza resistencias de precisión para proporcionar lecturas precisas.

En este tutorial, aprenderá cómo usar un sensor de voltaje con su Arduino para hacer que sus tareas de medición de voltaje sean más fáciles y eficientes. ¡Vamos a empezar!

Descripción general del hardware

El sensor de voltaje es esencialmente un circuito divisor de voltaje simple compuesto por dos resistencias, nada sofisticado.

Conecte el sensor de voltaje a Arduino

El esquema del sensor de voltaje se muestra en la siguiente imagen.

Conecte el sensor de voltaje a Arduino

Hay dos resistencias en este circuito. La resistencia (R1) más cercana a la tensión de entrada tiene un valor de 30 KΩ y la resistencia (R2) más cercana a tierra tiene un valor de 7,5 KΩ. La caída de voltaje en R2 es nuestro voltaje dividido. Esta señal se envía a un pin de cabecera marcado con S.

Este circuito simple divide el voltaje de entrada por un factor de 5. Por lo tanto, este sensor de voltaje puede ayudarlo a medir voltajes inferiores a 25 voltios usando un Arduino.

Lectura del sensor de voltaje

Leer el sensor de voltaje o cualquier divisor de voltaje es muy fácil. Podemos usar la ecuación del divisor de voltaje.

Conecte el sensor de voltaje a Arduino

La ecuación del divisor de voltaje supone que conoces tres valores del circuito anterior: el voltaje de entrada (Vin) y ambos valores de resistencia (R1 y R2). Dados estos valores, podemos usar esta ecuación para encontrar el voltaje de salida (Vout):

Conecte el sensor de voltaje a Arduino

Sin embargo, en nuestro caso, medimos el voltaje de salida (Vout) del circuito divisor de voltaje usando el ADC de Arduino. Por tanto, el valor que no conocemos es Vin.

Reorganicemos la ecuación anterior para resolver el voltaje de entrada (Vin).

Conecte el sensor de voltaje a Arduino

Esta ecuación nos dice que el voltaje de entrada (Vin) es el voltaje de salida (Vout) dividido por la fracción de la resistencia de la segunda resistencia (R2) a la resistencia total (R1 + R2) en el circuito.

Asignación de pines del sensor de tensión

Ahora veamos el pinout.

Conecte el sensor de voltaje a Arduino

terminal de entrada

VCC está conectado al terminal positivo de la fuente de voltaje que desea medir. El rango de voltaje recomendado para este pin es de 0 a 25V.

Tierra está conectado al polo negativo de la fuente de voltaje de entrada.

encabezado de salida

S es el pin de salida de señal del módulo del sensor de voltaje. Proporciona un voltaje analógico que es proporcional al nivel de voltaje de entrada. Normalmente está conectado a uno de los pines de entrada analógica del Arduino.

+ no está conectado a nada.

es el pin de tierra común.

Conexión de hardware

Conectar un sensor de voltaje a un Arduino es muy sencillo.

Primero, conecte la fuente de voltaje que desea medir al terminal de tornillo de entrada. Luego conecte el pin «S» del sensor de voltaje al pin analógico «A0» del Arduino y el pin «-» a tierra.

La siguiente imagen muestra cómo está todo conectado.

Conecte el sensor de voltaje a Arduino

código de ejemplo de arduino

Aquí hay un esquema simple que lee el voltaje analógico en el pin analógico A0, calcula el voltaje de entrada usando la ecuación del divisor de voltaje y envía los resultados al monitor en serie.

// Define analog input
#define ANALOG_IN_PIN A0
 
// Floats for ADC voltage & Input voltage
float adc_voltage = 0.0;
float in_voltage = 0.0;
 
// Floats for resistor values in divider (in ohms)
float R1 = 30000.0;
float R2 = 7500.0; 
 
// Float for Reference Voltage
float ref_voltage = 5.0;
 
// Integer for ADC value
int adc_value = 0;
 
void setup(){
  // Setup Serial Monitor
  Serial.begin(9600);
}
 
void loop(){
  // Read the Analog Input
  adc_value = analogRead(ANALOG_IN_PIN);
  
  // Determine voltage at ADC input
  adc_voltage  = (adc_value * ref_voltage) / 1024.0;
  
  // Calculate voltage at divider input
  in_voltage = adc_voltage*(R1+R2)/R2;
  
  // Print results to Serial Monitor to 2 decimal places
  Serial.print("Input Voltage = ");
  Serial.println(in_voltage, 2);
  
  // Short delay
  delay(500);
}

Sube el boceto a tu Arduino y observa los resultados.

Para verificar la precisión, mida el voltaje real con su multímetro digital. El valor mostrado en el multímetro debe coincidir con el valor mostrado en el monitor serie.

Al aplicar 5 V al sensor de voltaje se obtiene el siguiente resultado:

Conecte el sensor de voltaje a Arduino

Y si hay 12V presentes:

Conecte el sensor de voltaje a Arduino

Explicación del código:

Este es un boceto bastante simple, por lo que no deberías tener ningún problema para seguirlo. El boceto comienza definiendo algunas variables globales que se utilizarán a lo largo del programa.

La primera línea define el pin de entrada analógica en el Arduino que usamos para leer el voltaje del circuito divisor de voltaje. En este caso utilizamos el pin A0.

#define ANALOG_IN_PIN A0

Los siguientes dos nadadores, adc_voltage Y in_voltagese definen de tal manera que almacenan los valores medidos de voltaje en el ADC o en la entrada del divisor de voltaje.

float adc_voltage = 0.0;
float in_voltage = 0.0;

El R1 Y R2 Las variables almacenan los valores de resistencia del divisor de voltaje. Si utiliza un conjunto diferente de resistencias para crear su propio divisor de voltaje, deberá cambiarlas.

float R1 = 30000.0;
float R2 = 7500.0;

ref_voltage es el voltaje de referencia para el ADC, típicamente 5 V para un Arduino Uno.

float ref_voltage = 5.0;

La última variable adc_value se utiliza para almacenar el valor digital bruto leído por el ADC.

int adc_value = 0;

En setup() configuramos la comunicación en serie con una velocidad de baudios de 9600.

void setup(){
  Serial.begin(9600);
}

En el bucle() el analogRead() La función se utiliza para leer el voltaje en el pin A0. El valor devuelto se almacena en la variable. adc_value.

adc_value = analogRead(ANALOG_IN_PIN);

Este valor luego se convierte en un voltaje (adc_voltage) multiplicando por el voltaje de referencia y dividiendo por 1024 (dado que el Arduino tiene un ADC de 10 bits, entonces 2^10 = 1024 valores diferentes).

adc_voltage  = (adc_value * ref_voltage) / 1024.0;

Luego, el voltaje de entrada del divisor de voltaje se calcula usando la fórmula para un divisor de voltaje:

Conecte el sensor de voltaje a Arduino
in_voltage = adc_voltage*(R1+R2)/R2;

Finalmente, el voltaje de entrada calculado se imprime en el monitor serial y se muestra con hasta 2 decimales. Luego, el Arduino espera 500 milisegundos antes de repetir el ciclo.

Serial.print("Input Voltage = ");
Serial.println(in_voltage, 2);

delay(500);
Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Deja un comentario