Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Neste instrutível, construí um voltímetro para medir altas tensões DC (0-100v) com relativa precisão e exatidão usando um Arduino Nano e um ADS 1115 ADC.
Esta é uma segunda versão do voltímetro usado meu instrutível anterior aqui:
As medições de teste que fiz foram precisas, principalmente dentro de 0,1v da tensão real medida com um voltímetro padrão (usei um Astro AI DM6000AR).
Isso é muito melhor e mais fácil na minha opinião do que usar uma referência de tensão externa no Arduino.
Suprimentos
1 x Arduino Nano - Link
1 x Display Oled (SSD 1306) - Link
1 x ADS 1115 - ADC de 16 bits - Link
1 x 1 / 4W (eu sugiro usar resistores de 1W embora) Resistores de 1% - 220k ohm - Link
1 x 1 / 4W (eu sugiro usar resistores de 1W embora) Resistores de 1% - 10k ohm - Link
Placa de ensaio e fios - Link
Astro AI DM6000AR - Link
USB Power Bank - Link
Baterias 9V - Link
CanadianWinters é um participante do Programa de Associados da Amazon Services LLC, um programa de publicidade de afiliados desenvolvido para fornecer um meio para os sites ganharem taxas vinculando-se à Amazon.com e sites afiliados. Ao usar esses links, como associado da Amazon, ganho com compras qualificadas, mesmo se você comprar outra coisa - e isso não custará nada.
Etapa 1: Etapa 1: os esquemas
Eu conectei todas as peças de acordo com o esquema acima.
Amarrei o pino ADDR do ADC1115 ao aterramento. Isso define o endereço do ADC para 0x48.
Etapa 2: Etapa 2: o código e os cálculos do resistor
Como no instrutível anterior, a ideia do circuito é que a tensão DC a ser medida passe por um resistor de tensão. A tensão escalonada chega ao pino analógico do conversor ADC para ser lida, depois é passada para o Arduino via I2C e depois redimensionada e exibida no display OLed.
Eu não usei nenhuma média ou suavização no código neste caso, pois as leituras parecem bastante precisas e precisas. Para reduzir o ruído, você pode querer adicionar um pequeno capacitor entre A0 (no ADC) e o terra. No entanto, não foi necessário para o meu teste.
Uma coisa que notei foi um pouco de ruído quando não havia bateria instalada (0 volts). Usei o monitor serial do Arduino para mostrar o valor do ADC e corrigir / ajustar via código.
Como no instrutível anterior, fiz uma planilha que automatiza os cálculos caso você queira usar diferentes valores de resistor no divisor de tensão: Link para a Planilha Google
Aqui está o código que usei para este projeto:
#incluir
#include #include #include Adafruit_ADS1115 ads (0x48); // Endereço do ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotação, [redefinir]) int calib = 7; // Valor de calibração do ADS1115 para reduzir o erro float voltage = 0; // usado para armazenar o valor de tensão float Radjust = 0.043421905; // Fator divisor de tensão (R2 / R1 + R2) float vbat = 0; // tensão final após cálculos - tensão da bateria // variáveis para atualizar a tela sem usar atraso unsigned long previousMillis = 0; // armazenará a última vez que a tela foi atualizada // constantes não mudam: const long interval = 250; // intervalo para atualizar a tela (milissegundos) void setup (void) {Serial.begin (9600); u8g2.begin (); ads.begin (); } loop vazio (vazio) {int16_t adc0; // Leitura de ADC de 16 bits de entrada A0 adc0 = ads.readADC_SingleEnded (0); voltagem = ((adc0 + calib) * 0,1875) / 1000; currentMillis longo sem sinal = millis (); vbat = tensão / Radjust; // Evita a exibição de tensão negativa quando a bateria é desconectada if (vbat = intervalo) {previousMillis = currentMillis; u8g2.clearBuffer (); // limpar o menu interno // Exibição da tensão do pacote - Fontes nesta página: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // Fonte 20px u8g2.setFont (u8g2_font_fub35_tr); // Fonte de 35px u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // Fonte de 10 px u8g2.setCursor (1, 60); u8g2.print ("Volts"); } u8g2.sendBuffer (); // transfere a memória interna para o display delay (1); }
Etapa 3: Etapa 3: Vamos fazer um teste
Para testar este voltímetro, usei baterias 10x 9v que comprei em uma loja local. Desta vez, consegui medir até 97 volts! Estou planejando usar este voltímetro para medir a voltagem nas baterias das minhas bicicletas elétricas (elas têm voltagens que variam de 24-60v com as ocasionais de 72v).
Uma vez que os componentes eletrônicos são embalados em uma pcb e uma pequena caixa, isso fará um medidor de bateria portátil e agradável. Os gráficos e fontes no OLED podem ser personalizados para atender às suas necessidades (por exemplo, fonte maior para facilitar a leitura). Meu objetivo era ter uma leitura de tensão no medidor Oled / Arduino não muito longe do meu multímetro digital. Eu estava apontando para +/- 0, delta máximo de 3v.
Como você pode ver no vídeo no início do Instructable, consegui arquivar isso! A maioria das leituras acertou no ponto!
Espero que tenha gostado deste Instructable e deixe-me saber a sua opinião!