Tabla de contenido:
Video: Voltímetro preciso y exacto de Arduino (0-90 V CC): 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
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
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
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:
Voltímetro preciso con pantalla de tinta electrónica Waveshare (0-90v CC) con Arduino Nano: 3 pasos
Voltímetro preciso de pantalla de tinta electrónica Waveshare (0-90v CC) con Arduino Nano: en este Instructable, uso una pantalla de papel electrónico Waveshare de 2.9 '' con un Arduino Nano, un divisor de voltaje y un ADS1115 para mostrar voltajes precisos de hasta 90 voltios DC en el E-Paper Display. Este instructable combina estos dos proyectos anteriores: - Ardui
Voltímetro Arduino (0-100V DC) - Versión 2 (mejor): 3 pasos
Voltímetro Arduino (0-100V DC) - Versión 2 (mejor): En este instructable, 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í: https: // ww
Voltímetro de CA con Arduino: 3 pasos (con imágenes)
Voltímetro de CA usando Arduino: ¡Este es un circuito simple para determinar el voltaje de CA usando el Arduino UNO sin ningún voltímetro de CA! ¡¡DISFRUTAR
Escudo para Arduino de viejos tubos VFD rusos: reloj, termómetro, voltímetro : 21 pasos (con imágenes)
Escudo para Arduino de los viejos tubos VFD rusos: reloj, termómetro, voltímetro …: Este proyecto tardó casi medio año en completarse. No puedo describir cuánto trabajo se dedicó a este proyecto. Hacer este proyecto solo me llevaría una eternidad, así que tuve la ayuda de mis amigos. Aquí puede ver nuestro trabajo compilado en una instrucción muy larga
Visuino - Obtenga tiempo exacto del servidor NIST de Internet usando NodeMCU: 8 pasos
Visuino - Obtenga tiempo exacto del servidor NIST de Internet usando NodeMCU: En este tutorial usaremos NodeMCU Mini, OLED Lcd y Visuino para mostrar el tiempo de Internet en vivo desde el servidor NIST en Lcd. Vea un video de demostración. El crédito por la inspiración es para el usuario de YouTube " Ciprian Balalau "