Medir voltajes de hasta 25V con Arduino y FZ0430


arduino-tension-25v-fz0430

¿Qué es el FZ0430?

El FZ0430 es un módulo comercial que nos permite medir tensiones de hasta 25V de forma sencilla con un procesador como Arduino.

Como muchos imaginaréis, en realidad el FZ0430 es un simple divisor de tensión con resistencias de 30kOhm y 7.5kOhm, lo que supone que la tensión percibida tras el módulo sea de divida por un factor de 5 (7.5/(30+7.5))

Por tanto, la tensión máxima que podemos medir será 25V para un procesador de tensión de alimentación Vcc 5V, y 16.5V para un procesador de Vcc 3.3V. Superar esta tensión en el input del FZ0430 dañará el pin analógico de Arduino.

Por supuesto, esta ampliación del rango de medición tiene una consecuencia negativa en la precisión de la medición. En los modelos de Arduino que incorporan un ADC de 10 bits alimentados a 5V, la resolución normal es de 4.88mV. Tras el FZ0430 la resolución de la medición es de 24.41mV.

Anuncio:

En caso de emplear una carga de 25V, la corriente que atraviesa el divisor es de 0.7mA, y las pérdidas del divisor 16.67mW.

Por supuesto, podemos construir nosotros mismos un divisor de tensión por un muy precio muy inferior, y donde ajustemos los valores de las resistencias empleadas a nuestro proyecto para minimizar la pérdida de precisión.

Sin embargo, este módulo incorpora clemas de conexión y terminales para conectar de forma sencilla y rápida a Arduino, por lo que podría ser interesante tener algún módulo para realizar una medición rápida y de baja precisión.

Por ejemplo, puede ser útil para medir el estado de una batería, o comprobar la alimentación de un dispositivo de 12V o 24V, como una tira LED, un electroimán, un ventilador, o una placa Peltier.

También puede ser interesante en combinación con un ADS 16 bits, que dispone de medición diferencial para realizar mediciones analógicas en corriente alterna. Con 15 bits dedicados + 1 para el signo, tenemos una precisión de 0.15mV, que tras el FZ0430 queda una precisión final de 0.76mV.

Podemos, por ejemplo, combinarlo con un transformador de 220V/12V para realizar mediciones de tensión alterna a 220V de forma sencilla, para hacer un monitor de energía.

Precio

El módulo de medición de 25V FZ0430 es un dispositivo barato. Podemos encontrarlo por 0.75€ en vendedores internacionales de eBay o AliExpress.

Como hemos dicho, resulta más barato montar un divisor de tensión. La principal ventaja que nos aporta es la comodidad de uso. Si tenemos en cuenta el coste de la clema de conexión, la placa, los terminales Dupont y el montaje, seguramente al final es más barato comprarlo que hacerlo.

No obstante, en un montaje definitivo normalmente sustituiremos este módulo por un divisor de tensión integrado en nuestro montaje, no sólo por el coste, si no por el espacio ocupado y la posibilidad de ajustar la precisión convenientemente. 

arduino-tension-25v-fz0430-componente

Esquema de montaje

El esquema de conexión es muy sencillo. Por un lado, conectamos la tensión que queremos conectar a la clema de conexión, respetando la polaridad.

Por otro lado, conectamos la electrónica del módulo a Arduino mediante los terminales disponibles. Conectando Gnd y SIG del FZ0430, respectivamente, a Gnd y una entrada analógica cualquiera de Arduino.

arduino-tension-25v-fz0430-esquema

El terminal Vcc no hace falta conectarlo. De hecho, no hace absolutamente nada. 

La conexión, vista desde Arduino, sería la siguiente.

arduino-tension-25v-fz0430-conexion

Si quisiéramos hacer lo mismo haciendo nosotros mismos el divisor de tensión, el esquema sería el siguiente.

arduino-tension-25v-fz0430-funcionamiento

Ejemplos de código

El código es igualmente sencillo, ya que es idéntico al que emplearíamos para leer una entrada analógica, simplemente modificando el valor de 5.0V por 25.0V.

const int sensorPin = A0;   // seleccionar la entrada para el sensor
int sensorValue;			// variable que almacena el valor raw (0 a 1023)
float value;				// variable que almacena el voltaje (0.0 a 25.0)

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

void loop() {
	sensorValue = analogRead(sensorPin);		    // realizar la lectura
	value = fmap(sensorValue, 0, 1023, 0.0, 25.0);   // cambiar escala a 0.0 - 25.0

	Serial.println(value);							// mostrar el valor por serial
	delay(1000);
}

// cambio de escala entre floats
float fmap(float x, float in_min, float in_max, float out_min, float out_max)
{
	return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección tutoriales de Arduino

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github.



4.3 9 votes
Article Rating

Anuncio:

Previous Ejercer grandes fuerzas con actuador lineal y Arduino
Next Medir tensiones de 220V-230V con Arduino y transformador
11 Comments
oldest
newest
Inline Feedbacks
View all comments
Ezequiel
4 years ago

Hola. Muy bueno el post me ha servido de mucho. Tengo que realizar un proyecto en en cual tengo que medir el consumo de una bateria de 36v – 12A con arduino y mostrar los mismos por un LCD. Medir la intensidad lo podría realizar con el ACS712, pero la tensión, con el FZ0430 no me alcanza ya que es hasta 25V. Quisiera saber si me puede recomendar algún modulo para manejar esa tensión, si es que viene. Muchas gracias

Jules
4 years ago

Hola Luis, un fan de tus posts
Hay un párrafo muy interesante donde hablas de acoplar un ADC de 16 bit+el FZ, cosa que vaya permite leer salidas analógicas muchísimo mejor, y pocas veces he visto el tema en mis grupos, igual hay información en la red pero estaría por demás excelente que pudieras dedicar un post a esto.
Saludos y muchas gracias.

Fabian
4 years ago

Que mas Luis como te va.
Necesito saber que sensor me podría medir un voltaje mayor o igual a 50 v DC
Gracias.

Luis_Cerquera
2 years ago
Reply to  Fabian

Fabián debes disminuir el valor de la resistencia de 7K5. Realizando el cálculo según la formula matemática de divisor de tensión el valor de la resistencia sería de 3300 Ohms aproximando. Sería bueno conectar un buffer a la salida del divisor para así evitar lecturas inestables.

Iñigo
4 years ago

Hola…
Muy interesante, tengo una idea y pensaba hacer algo con esta propuesta. Tengo idea de hacer un circuito de recarga para baterias ion li y habia pensado colocar el medidor de tension para cuando llegara a un punto de aproximadamente el 20 % de su capacidad sonara una alarma o a traves de un DFP reprodujera un sonido mp3 advirtiendo del estado. Lo ves viable??

Pepe
3 years ago

Es una pequeñez, pero al código le falta un Serial.begin(9600); en el Setup para que funcione bien un copia / pega. 😉
Gracias por todo Luis.

José Joaquín
3 years ago

Hola Luis,

muchas gracias por todos tus tutoriales, increiblemente útiles.

Sería correcto usar este sensor para medir la carga para una batería de 12v para una caravana ?

muchas gracias.

AndresRodriguez
1 year ago

hablando de exactitud, de cuanto es aproximadante la tolerancia de error que hay en las lecturas?