amostras e conversao AD com float

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

amostras e conversao AD com float

Mensagempor cristian » 14 Jan 2011 08:43

Código: Selecionar todos
bufAd[indAD]=ADC_Read(0);// ler AD e guarda no buffer
if((++indAD)>100)indAD=0;// incrementa o indice do ad
aux2=0;//zera a variavel
for(x=0;x<100;x++)
{
aux2=bufAd[x]+aux2; // soma os valores lido do AD e soma com AUX
}
aux2=aux2/100; // divide pelo numero de amostras


   delay_ms(100);// delay entre cada leitura ... vai ser usado o timer

  aux2=aux2*100; // multiplica por 100 pra nao dar 2,5699e-1 e sim 2,56v no caso de 256mv

      valorfloat=aux2*0.00488;// converte em tensao o valor lido
      floatToStr(valorfloat, txtFloat);//transforma em string


galera fiz este codigo pra usar o AD nas seguintes funçoes

ler tensao da bateria 12v
ler temperatura com lm35
ler temperatura com NTC

estas funçao vai pegar 100 amostras do ad e é acumulativa tipo assim
depois de pegar a de numero 100 ele nao espera mais 100 amostras pra calcular ele pega o novo valor e vai substituir o primeiro e calcula depois o segundo e por ai vai

quero saber a opniao de vc sobre esta tecnica

e o sensor NTC , nunca trabalhei com ele sera q serve pra ele tb? mas tenho q montar uma tabela ne ?
Editado pela última vez por cristian em 14 Jan 2011 11:04, em um total de 1 vez.
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor ze » 14 Jan 2011 10:49

ntendidireito
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor cristian » 14 Jan 2011 11:00

esta rotina , ler 100 vezes o canal AD escolhido do pic ....

ei cada canal vai para

medir tensao da bat 1v

medir temperatura interna com lm35

e medir temp com NTC

mas a questao é : estas rotinas q fiz estao certas é este o caminho?
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor ze » 14 Jan 2011 12:17

faz de conta que entendi assim...:
pra pegar a média de 100 amostras é só fazer algo do gênero:

unsigned int admedia()
{
unsigned char i=100;
unsigned int ad=0;
while (i--) ad+=adcread(0);
return ad/100;
}

obs: desde que o resultado do ad não ultrapasse 655. sabe porque? pense. mas o principal é porque tenho dó de usar variáveis de + de 16 bits com pic. Neste caso, eu faria a média de 65 amostras.
abç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor cristian » 14 Jan 2011 14:19

mas ...........

vc quer dizer q a divisao do AD por 100 , vai usar variaveis de + de 16 bits ??

ou pq estou usando float ?.... o float so estou usando
Código: Selecionar todos

valorfloat=aux2*0.00488;// converte em tensao o valor lido



e sobre o principio que estou usando das medias

no lugar de pegar novas 100 leituras eu leio + 1 e tiro a nova media

é melhor assim ?
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor ze » 14 Jan 2011 15:14

VOCE pode usar float EU (e talvez o MC) é que não gosto, comprendes. AD/100 vai usar variável que vc especificou. tô achando que a falta de avatar está me impedindo de conectar em voce. aguarde algum coruja que derepente pode te iluminar. ou tente reformular tuas dúvidas.

sucessos
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x