Tabla de contenido:

Voltímetro preciso y exacto de Arduino (0-90 V CC): 3 pasos
Voltímetro preciso y exacto de Arduino (0-90 V CC): 3 pasos

Video: Voltímetro preciso y exacto de Arduino (0-90 V CC): 3 pasos

Video: Voltímetro preciso y exacto de Arduino (0-90 V CC): 3 pasos
Video: Точное и точное напряжение Arduino | С КОДОМ 2024, Noviembre
Anonim

En este instructivo, construí un voltímetro para medir altos voltajes DC (0-90v) con relativa precisión y exactitud usando un Arduino Nano.

Las mediciones de prueba que tomé fueron lo suficientemente precisas, en su mayoría dentro de 0.3v del voltaje real medido con un voltímetro estándar (usé un Astro AI DM6000AR). Esto es lo suficientemente cerca para mi uso previsto del dispositivo.

Para archivar esto utilicé una referencia de voltaje (4.096v) y un divisor de voltaje.

En el lado del código, usé, por supuesto, la opción de "referencia externa" para el Arduino Nano y el ejemplo de "Suavizado" en los tutoriales de Arduino.

Suministros

1 x Arduino Nano - Enlace

1 x pantalla Oled (SSD 1306) - Enlace

1 x 1 / 4W 1% Resistencias - 1k ohmios - Enlace

Resistencias 1 x 1 / 4W 1% - 220k ohmios - Enlace

1 x 1 / 4W 1% Resistencias - 10k ohmios - Enlace

1 x 4.096v LM4040DIZ-4.1 Referencia de voltaje - Enlace

Protoboard y cables - Enlace

Astro AI DM6000AR - Enlace

Banco de energía USB - Enlace

Baterías de 9V - Enlace

CanadianWinters participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad afiliado diseñado para proporcionar un medio para que los sitios ganen tarifas mediante enlaces a Amazon.com y sitios afiliados. Al usar estos enlaces, como Asociado de Amazon, gano con las compras que califican, incluso si compras algo más, y no te costará nada.

Paso 1: los esquemas

Los esquemas
Los esquemas
Los esquemas
Los esquemas

Conecté todas las partes según los esquemas anteriores. En particular, elegí la referencia de voltaje 4.096 para mantenerme lo más cerca posible de la marca de 5v para evitar perder resolución.

Siguiendo la hoja de datos, elegí una resistencia de 1K ohmios para la referencia de voltaje, aunque se podría usar un valor diferente. El voltaje para la referencia se suministra desde el pin Nano 5v.

La idea del circuito es que el voltaje de CC que se va a medir pasa a través de una resistencia de voltaje. El voltaje escalado y luego ingresa al pin analógico del Arduino para ser muestreado, suavizado, reescalado y mostrado en la pantalla OLed.

Traté de mantener las cosas simples:)

Paso 2: Cálculos de código y resistencia

Los valores de las resistencias se eligieron porque es aconsejable (si no me equivoco, esto está en la hoja de datos de Arduino / Atmega) para mantener la impedancia por debajo de 10k ohmios.

Para simplificar las cosas, hice una hoja de cálculo que automatiza los cálculos en caso de que desee utilizar diferentes valores de resistencia: Enlace a la hoja de Google

Aquí está el código que usé para este proyecto:

#incluir

#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotación, [reset]) tensión de flotación = 0; // utilizado para almacenar el valor de voltaje float Radjust = 0.043459459; // Factor divisor de voltaje (R2 / R1 + R2) float vbat = 0; // voltaje final después de calcs- voltaje del flotador de la batería Vref = 4.113; // Referencia de voltaje - valor real medido. Valor nominal 4.096v const int numReadings = 50; // número de muestras de lectura - aumentar para suavizar más. Disminuir para una lectura más rápida. int lecturas [numReadings]; // las lecturas de la entrada analógica int readIndex = 0; // el índice de la lectura actual unsigned long total = 0; // el total acumulado int promedio = 0; // variables para refrescar la pantalla sin usar delay unsigned long previousMillis = 0; // se almacenará la última vez que se actualizó la pantalla // las constantes no cambiarán: const long interval = 50; // intervalo en el que se actualiza la pantalla (milisegundos) void setup (void) {analogReference (EXTERNAL); // use AREF para voltaje de referencia 4.096. Mi voltaje real de referencia es 4.113v u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) {//… pasar al principio: readIndex = 0; } // calcula el promedio: average = (total / numReadings); voltaje = promedio * (Vref / 1023.0); //4.113 es el Vref vbat = voltage / Radjust; // Establecer el retraso para la actualización de la pantalla usando Millis if (currentMillis - previousMillis> = interval) {// guardar la última vez que se actualizó la pantalla previousMillis = currentMillis; u8g2.clearBuffer (); // limpiar la memoria interna // Pantalla de voltaje del paquete u8g2.setFont (u8g2_font_fub20_tr); // Fuente de 20px u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // Fuente de 10 px u8g2.setCursor (76, 20); u8g2.print ("Voltios"); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters '"); u8g2.setCursor (1, 60); u8g2.print ("Voltaje preciso"); } u8g2.sendBuffer (); // transferir la memoria interna a la pantalla delay (1); }

Tenga en cuenta que estoy un poco oxidado con la codificación de Arduino, por lo que si encuentra algún error o una forma de mejorar el código, estoy abierto a sugerencias:)

Paso 3: ¡Probémoslo

¡Probémoslo!
¡Probémoslo!
¡Probémoslo!
¡Probémoslo!
¡Probémoslo!
¡Probémoslo!

Para probar este voltímetro usé baterías de 8x 9v que compré en una tienda local. Estoy planeando usar este voltímetro para medir el voltaje en los paquetes de baterías de mis bicicletas eléctricas (tienen voltajes que van desde 24-60v con los ocasionales de 72v).

Una vez que los componentes electrónicos estén empaquetados en una placa de circuito impreso y una pequeña caja, esto será un medidor de batería portátil y agradable. Los gráficos y las fuentes del OLED pueden personalizarse para adaptarse a sus necesidades (por ejemplo, una fuente más grande para facilitar la lectura).

Mi objetivo era tener una lectura de voltaje en el medidor Oled / Arduino no muy lejos de mi multímetro digital. Apuntaba a +/- 0, delta máximo de 3v. Como puede ver en el video, pude archivar esto, excepto en el extremo superior de las medidas.

Espero que hayas disfrutado de este Instructable y déjame saber lo que piensas.

Recomendado: