Olá, pessoALL.

Estou com o seguinte problema e peço a ajuda de vocês. Estou com um projeto onde tenho que monitorar 4 fonte de alimentação DC com o arduino Mega 2560.

Usando códigos simples e divisores de tensão consegui medir com precisão as duas primeiras fontes, que são 12V; tendo um limite de operação entre 10.5V e 14.5V. fora dessa faixa o sistema alarma. Até ai tudo bem.

A terceira é de 5V e tem uma faixa de operação entre 4.5V e 5.5V, então não usei divisores e leio diretamente na porta. Também funcionando a contento.

O problema está na quarta fonte, que deve operar entre 1.95V e 2.5V. Não consigo ter uma medição abaixo de 2.5V. Com um multímetro nas porta analógicas já obtenho uma tensão de 2.45V. Quando coloco uma bateria com baixa carga (1.5V) ou a retiro; minha leitura continua na casa dos 2.4V.

Este é o código que uso. É o mesmo da fonte de 5V, apenas com uma porta diferente:

GLOBAL
int vccbatPin = A7;
int vccbatPort;
double vccbat;

SETUP
pinMode(vccbatPin, INPUT);

LOOP
vccbatPort=analogRead(vccbatPin);
vccbat=vccbatPort*0.0048828125;

O que devo fazer para obter a leitura correta? Onde estou errando?

Exibições: 477

Responder esta

Respostas a este tópico

???

Ninguem?

Não vejo nada de errado no codigo.

Tente medir diretamente no pino do microcontrolador com um multimetro a tensão com e sem essa bateria. Deve ter ligação errada, algum resistor de pullup, algo assim.

já está escrito:

"O problema está na quarta fonte, que deve operar entre 1.95V e 2.5V. Não consigo ter uma medição abaixo de 2.5V. Com um multímetro nas porta analógicas já obtenho uma tensão de 2.45V. Quando coloco uma bateria com baixa carga (1.5V) ou a retiro; minha leitura continua na casa dos 2.4V."

imagino que seja um pullup, mas pelo que li, eles estariam presentes somente nas portas digitais. se existem nas portas analógicas do arduino mega, como desabilito eles?

O ADC do ATmega 2560 gasta 13 ciclos de Clock de ADC . O clock do ADC pode variar entre 50 Khz e 200kHz. 

T = 1/50 KHz = 20 uS 

Tempo de conversão = 20uS x 13 = 260 uS 

Portanto insira um delay entre as conversões. Faça um teste com 1 ou 10 mS.

LOOP

vccbatPort=analogRead(vccbatPin);
vccbat=vccbatPort*0.0048828125;

delay (10); 

Conecte ao terra, as portas analógicas sem uso. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço