Tabla de contenido:

Voltímetro Arduino (0-100V DC) - Versión 2 (mejor): 3 pasos
Voltímetro Arduino (0-100V DC) - Versión 2 (mejor): 3 pasos

Video: Voltímetro Arduino (0-100V DC) - Versión 2 (mejor): 3 pasos

Video: Voltímetro Arduino (0-100V DC) - Versión 2 (mejor): 3 pasos
Video: COMO conectar este VOLTIMETRO para MEDIR 100 voltios! 2024, Junio
Anonim
Image
Image
Paso 1: los esquemas
Paso 1: los esquemas

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

Esta es una segunda versión del voltímetro que usé mi instructable anterior aquí:

Las mediciones de prueba que tomé fueron precisas, en su mayoría dentro de 0.1v del voltaje real medido con un voltímetro estándar (usé un Astro AI DM6000AR).

En mi opinión, esto es mucho mejor y más fácil que usar una referencia de voltaje externa en el Arduino.

Suministros

1 x Arduino Nano - Enlace

1 x pantalla Oled (SSD 1306) - Enlace

1 x ADS 1115 - ADC de 16 bits - Enlace

1 x 1 / 4W (aunque sugiero usar resistencias de 1W) Resistencias al 1% - 220k ohmios - Enlace

1 x 1 / 4W (aunque sugiero usar resistencias de 1W) Resistencias al 1% - 10k ohmios - 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: Paso 1: los esquemas

Paso 1: los esquemas
Paso 1: los esquemas

Conecté todas las partes según los esquemas anteriores.

Até el pin ADDR del ADC1115 a tierra. Esto establece la dirección del ADC en 0x48.

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

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

Como en el instructable anterior, 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 convertidor ADC para ser leído, luego se pasa al Arduino a través de I2C y luego se vuelve a escalar y se muestra en la pantalla OLed.

No utilicé ningún promedio o suavizado en el código en este caso, ya que las lecturas parecen bastante precisas. Para reducir el ruido, es posible que desee agregar un pequeño condensador entre A0 (en el ADC) y tierra. Sin embargo, no fue necesario para mi prueba.

Una cosa que noté fue un poco de ruido cuando no había batería conectada (0 voltios). Usé el monitor serial del Arduino para mostrar el valor ADC y corregirlo / ajustarlo mediante código.

Como en el instructivo anterior, hice una hoja de cálculo que automatiza los cálculos en caso de que desee utilizar diferentes valores de resistencia en el divisor de voltaje: Enlace a la hoja de Google

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

#incluir

#include #include #include Adafruit_ADS1115 ads (0x48); // Dirección del ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotación, [reset]) int calib = 7; // Valor de calibración de ADS1115 para reducir error flotante voltaje = 0; // utilizado para almacenar el valor de voltaje float Radjust = 0.043421905; // Factor divisor de voltaje (R2 / R1 + R2) float vbat = 0; // voltaje final después de calcs- voltaje de la batería // 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 = 250; // intervalo en el que se actualiza la pantalla (milisegundos) void setup (void) {Serial.begin (9600); u8g2.begin (); ads.begin (); } bucle vacío (vacío) {int16_t adc0; // Lectura ADC de 16 bits de la entrada A0 adc0 = ads.readADC_SingleEnded (0); voltaje = ((adc0 + calib) * 0.1875) / 1000; currentMillis largo sin firmar = millis (); vbat = voltaje / Radjust; // Evita mostrar voltaje negativo cuando la batería está desconectada if (vbat = interval) {previousMillis = currentMillis; u8g2.clearBuffer (); // borra el menú interno // Pantalla de voltaje del paquete - Fuentes en esta página: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // Fuente de 20px u8g2.setFont (u8g2_font_fub35_tr); // Fuente de 35px u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // Fuente de 10 px u8g2.setCursor (1, 60); u8g2.print ("Voltios"); } u8g2.sendBuffer (); // transferir la memoria interna a la pantalla delay (1); }

Paso 3: Paso 3: ¡Probémoslo

Paso 3: ¡Probémoslo!
Paso 3: ¡Probémoslo!

Para probar este voltímetro usé baterías de 10x 9v que compré en una tienda local. ¡Esta vez pude medir hasta 97 voltios! 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 al comienzo del Instructable, ¡pude archivar esto! ¡La mayoría de las lecturas fueron acertadas!

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

Recomendado: