Página 1 de 2
formula comversor AD para volts

Enviado:
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

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

Enviado:
21 Nov 2009 08:34
por cristian
LM35

Enviado:
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 ...

Enviado:
21 Nov 2009 09:03
por cristian
estou dando 10ms de tempo
e estou usando 10bits e referencia interna
val_tensao = 16bits é?

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

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

Enviado:
21 Nov 2009 10:04
por Djalma Toledo Rodrigues
Sugestão:
Ler Datasheet
Datasheet ADC µC
Datasheet LM35

Enviado:
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

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

Enviado:
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

Enviado:
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

Enviado:
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

Enviado:
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.
.

Enviado:
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