Página 1 de 2

formula comversor AD para volts

MensagemEnviado: 20 Nov 2009 23:29
por cristian
estou fazendo um termometro e um voltimetro no mesmo pic

mas o conversor ad ta louco assim estou entrando com 522mv e ta mostrando 527 sempre o final é 7 ou 2 ta certo isso

a formula foi

val32=read_adc(); //ler o canal
val32+=1;
val32=val32*4+((int32)val32*113)/128;

e mais vou ter q ler de -15 a 5 graus coomo ler a tensao negativa
vi no forum q tenho de fazer um offset como seria isso

MensagemEnviado: 21 Nov 2009 08:24
por fabim
qual sensor esta utilizando ?

MensagemEnviado: 21 Nov 2009 08:34
por cristian
LM35

MensagemEnviado: 21 Nov 2009 08:58
por _blackmore_
qual a referência de tensão? e quantos bits tu está usando de resolução no conversor AD? é necessário tb que se deixe um delay de aprox 20uS para estabilizar a leitura após ler o AD.

Se tu estiver utilizando 10bits no AD, uma boa referência de tensão é 5,115volts pois dividindo este valor pelos 1023 pontos (10 bits) de resolução do AD dá 0,005 volts, a leitura ficará muito mais precisa.

Quanto a fórmula fica bem mais simples:

Código: Selecionar todos
set_adc_channel(0); escolhe o canal 0 para ser utilizado
valor_AD = read_adc (); lê o AD
delay_us (20);
val_tensao = (((valor_AD+1) * 5115)/1024);


veja se ajuda ...

MensagemEnviado: 21 Nov 2009 09:03
por cristian
estou dando 10ms de tempo

e estou usando 10bits e referencia interna

val_tensao = 16bits é?

MensagemEnviado: 21 Nov 2009 09:03
por cristian
e sobre a tensao negativa ???

MensagemEnviado: 21 Nov 2009 09:51
por _blackmore_
bom ... dae tu faz uma pesquisa no fórum que tem tudo explicado ...

MensagemEnviado: 21 Nov 2009 10:04
por Djalma Toledo Rodrigues
Sugestão:

Ler Datasheet

Datasheet ADC µC

Datasheet LM35

MensagemEnviado: 21 Nov 2009 13:26
por cristian
qual topico fala sobre este assunto e leitura negativa q ja rodei tudo e nao acho ...so achei um q comentava mas nao tinha esquema nem nada

MensagemEnviado: 21 Nov 2009 13:56
por Djalma Toledo Rodrigues

MensagemEnviado: 21 Nov 2009 16:39
por cristian
http://www.dm.ufscar.br/~waldeck/pic/thermopic/#fig2


achei este link pra testar falta ver a formula q nao entendi muito bem

MensagemEnviado: 21 Nov 2009 17:00
por fabim
cristian escreveu:qual topico fala sobre este assunto e leitura negativa q ja rodei tudo e nao acho ...so achei um q comentava mas nao tinha esquema nem nada


poracaso este post quem comentava como fazer era o mala do fabim?

Abraços

MensagemEnviado: 21 Nov 2009 23:18
por cristian
este mala esta em todas ....

ja resolvi vou postar mas nao é pra dar risada

lcd_escreve('\f');
temperatura=((valor_ad*5000)/2)/1023;
if(temperatura>455)
{
temperatura=(temperatura-455)/10;
printf(lcd_escreve,"T=%luC",temperatura);
}else
{
temperatura=(460-temperatura)/10;
printf(lcd_escreve,"T=-%luC",temperatura);
}


...sei q tem de melhorar mas da uma ideia ai pow

a precisao foi la pro espaço mas vai dar para o q quero

MensagemEnviado: 22 Nov 2009 00:37
por Djalma Toledo Rodrigues
Cristian admiro seu 'esforço' e sua 'criatividade'

mas, não é essa a Técnica

Para medir tensão maior que a Referência do ADC se faz um Divisor de Tensão.

Para Visualizar no Display não se multiplica diretamente a medição mas, se desloca
o Ponto Decimal .

Exemplo VTVM de 3 1/2 Digitos, Display 1999

( Medição pode ser 200 mV e em alguns 2 V)

Medir 199.9 mV ( ~200 mV ) Div não tem = 199.9

Medir 19.99 V (~20 V) Div de Tensão 99 / 1 = 199.9 mV Ponto Decimal 19.99
...
Medir 1 999 V (~2 000 V) Div de Tensão 9999 / 1 = 199.9 mV Ponto decimal apaga 1 999

Voltando a Visualizar o Delocamento do Ponto Decimal para indicação
de ~2V a ~2 000 V

1.999
19.99
199.9
1999

O Ponto Decimal se desloca automáticamente ao Selecionar a Escala

Obs.: Os Divisores de Tensão não foram colocados aqui de forma escalonável.
.

MensagemEnviado: 22 Nov 2009 08:29
por cristian
temperatura=((valor_ad*5000)/2)/1023;//transfoma em tesao

pega o valor lido no AD x 5000 ( referencia ) / 2 ( o operacional com ganho=2 ) /1023 (10bits)

vc acha q devo colocar a ref em 2,5v??

if(temperatura>455)// se o valor for maior q 455 ( ref do LM35 ) temper positiva
{
temperatura=(temperatura-455)/10;// subtrae o tensao pelo ref assim fica a tensao no pino de saida do lm35 ...divido por 10 pq so quero 2 digitos
printf(lcd_escreve,"T=%luC",temperatura);
}else
{
temperatura=(460-temperatura)/10;//subtrae a ref pela tensao assim fica a tensao no pino de saida do lm35 ...divido por 10 pq so quero 2 digitos
printf(lcd_escreve,"T=-%luC",temperatura);
}


e ai o q achao