Índice:

Medidor de volt Arduino (0-100 V DC) - Versão 2 (melhor): 3 etapas
Medidor de volt Arduino (0-100 V DC) - Versão 2 (melhor): 3 etapas

Vídeo: Medidor de volt Arduino (0-100 V DC) - Versão 2 (melhor): 3 etapas

Vídeo: Medidor de volt Arduino (0-100 V DC) - Versão 2 (melhor): 3 etapas
Vídeo: A MOTO MAIS PERIGOSA DE TODOS OS TEMPOS! É VERDADE? #filipebueno #motos #viúvanegra #rd350 2024, Junho
Anonim
Image
Image
Etapa 1: os esquemas
Etapa 1: os esquemas

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

Etapa 1: os esquemas
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

Etapa 2: o código e os cálculos do resistor
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

Etapa 3: Vamos testar!
Etapa 3: Vamos testar!

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!

Recomendado: