Página 1 de 1

Problemas com AD no PIC16F690

MensagemEnviado: 03 Mar 2011 09:29
por bonella
Pessoal, estou monitorando uma fonte de tensão DC variável de até 300V em uma entrada AD do PIC.

Pra isso coloquei um divisor de tensão com um resistor de 1MB e outro de 10K, sendo assim, possuo uma relação de 1/100. Quando tenho 100V na fonte, no AD do PIC tenho 1V.

Até aí tudo beleza, quando coloco o osciloscópio, vejo que a tensão esta perfeita no pino do PIC, mas quando eu ativo o Canal para leitura AD, a tensão sobe de 1 para 1,6V, dando uma leitura errada. Parece ter um pullup interno no pino AD (muito estranho).
Inclusive se eu deixo o pino do AD flutuando ele mede 5V (parece um pullup mesmo), mas a PORTC nem tem como colocar pullup...muito menos em AD


Quando coloco o pino como entrada digital a tensão fica perfeita, quando coloco como entrada analógica a tensão sobe mais de 0,5V descaracterizando a relação 1/100.


A entrada utilizada é a AN6 que esta na PORTC e compilador CCS 4.114.

Alguém tem alguma idéia do que pode ser?

MensagemEnviado: 03 Mar 2011 10:37
por EDSONCAN
"The maximum recommended impedance for analog sources is 10 kΩ. This is required to meet the pin leakage specification."

Usa um resistor de 1K para gnd ao inves de 10K, talvez ajude.

Edson

MensagemEnviado: 03 Mar 2011 11:09
por renatokodaira
Depois do divisor de tensao use um amplificador operacional com ganho 1 (modo buffer) e a saida dele ligue no AD do PIC. prefira um AO com entrada JFET (LF411, TL081, etc).

MensagemEnviado: 03 Mar 2011 12:08
por ze
além das recomendações supramencionadas, se for dc mesmo com variação lenta, coloque um capacitor eletrolítico chute 47uF
veja com o mplab a situação real dos registros. voce (ou o MC) pode estar sendo enganado
e tente com outro compilador

MensagemEnviado: 03 Mar 2011 16:01
por MOR_AL
Bom!
1 - Você deve estar sabendo que um resistor de 10k para terra e outro de 1M para Vx, vai obter Vx/101 e não Vx/100.
2 - Você tem que considerar a impedância de entrada do CAD no momento da leitura da tensão Vx. Ela vai ficar em paralelo com essa de 10k que você colocou.
3 - Se o manual recomenda que a máxima impedância da fonte deve ser 10k, então é porque a impedância de entrada do CAD não deve influenciar nem o bit menos significativo na leitura, para essa condição.
4 - Por "Thevenin", a impedância da sua fonte será de 1M//10k = 9901, o que ainda está dentro das especificações.
5 - Se ainda me lembro, acho que em algum ponto você deve definir que o pino é de entrada, além de ser analógico. O "analógico" conecta a entrada do CAD ao pino do chip. O sentido "entrada" desconecta o latch do pino. O sentido saída conecta. Não me lembro se o padrão, quando não se especifica o sentido do pino, ele fica como entrada (alta impedância) ou saída (baixa impedância). Verifique o TRISC e force o pino como entrada.
MOR_AL

MensagemEnviado: 03 Mar 2011 17:37
por proex
Bom senhores, a impedância da fonte de tensão não tem relação com a precisão da conversão. Tem relação com a VELOCIDADE da conversão.

Vc só conseguirá 500k amostras por segundo se a impedância da fonte for igual ou menor que a impedância da entrada A/D.

Quando a impedância da fonte for muito maior que 10k, vc terá que dar mais tempo para o capacitor interno do Sample and Hold se carregar logo, o tempo de aquisição será maior e consequentemente o Sampling Rate deverá ser menor, para manter a precisão de 10 bits.

.

MensagemEnviado: 04 Mar 2011 09:49
por joel_inacio
Que aula!!!

MensagemEnviado: 05 Mar 2011 09:03
por MOR_AL
proex escreveu:Bom senhores, a impedância da fonte de tensão não tem relação com a precisão da conversão. Tem relação com a VELOCIDADE da conversão ...
... Quando a impedância da fonte for muito maior que 10k, vc terá que dar mais tempo para o capacitor interno do Sample and Hold se carregar logo, o tempo de aquisição será maior e consequentemente o Sampling Rate deverá ser menor, para manter a precisão de 10 bits.
.


Dei uma olhada no 33023a (de 1997) da Microchip.
Na seção 23 A/D Converter, figura 23-3 - Analog Input Model, consta uma fonte de corrente (+/- 100nA) que simula a resistência de entrada do canal analógico.
Se considerarmos uma tensão de entrada de 5V, a resistência de entrada seria de 5/1e-7 = 50M. Um divisor resistivo com 10k e 50M, faria a tensão de entrada cair para 0,9998 do valor de entrada, ou 0,2 partes em 1000, ou metade da influência da metade do bit menos significativo.
A figura mostra o capacitor Chold sem mais nada pendurado. Nós sabemos que não é assim. Sempre tem alguma "carga resistiva" pendurada.
Considerando uma tensão de Vcc = 5V, a resistência em série com o capacitor fica em Ric + Rss = 1k + 7k = 8k. Como já se tem um erro de 0,2 partes em 1000 (resistência da fonte com 10k), pode-se ainda dispor de um erro de 0,3 partes em 1000. Se considerarmos que todos os outros fatores de erro estejam concentrados no divisor resistivo entre os 8k calculados e a resistência em // com o capacitor Chold, então esta resistência deverá ser superior a 27M.
Por esses motivos é que, para um erro de conversão ficar com até 1/2 da influência do bit menos significativo de um CAD de 10 bits, a resistência da fonte tem que ser menor ou igual a 10k.
Para um CAD com 8 bits a resistência da fonte poderá ser maior.
Observar que não foram computados tempos de carga e de descarga das capacitâncias.
MOR_AL

MensagemEnviado: 05 Mar 2011 18:37
por DEJANO
Ola Pessoal!!!
Catando um pouco de cada um do que foi dito:
O nosso amigo bonnela quer saber porque da uma diferenca de tensao na entrada do pino quando ele aciona para leitura do AD.Pela impedancia de entrada, esquece, como nosso amigo Proex disse, ela se relaciona ao tempo de carga do capacitor interno para comparacao da conversao que é feita por aproximacao sucessiva.Alem diso, esse resistor nao é aquele que vai colocado para o terra e sim o resistor que vem da tensao a ser convertida para o pino de entrada, pois é por ele que a corrente vai passar para carregar o capacitor Chold. A resistenca para o terra teria uma efeito inverso.Quanto menor, menos corrente vai para o capacitor.
Olhando diagrama em bloco da porta AN6, nao existe pull up como ja foi dito e acho que a microchip nao cometeria um erro grosseiro de fazer a porta logica END com uma entrada inversa que determina a leitura do pino quando o pino é entrada digital de forma errada com algo do tipo parecido com TTL e assim polarizar os componentes extenos.
Se utilizarmos um buffer (seguidor de tensao) feito com um operacional como sugerido acima, nao basta ser apenas entrada com fet, tem que ser do tipo rail to rail (ca 3130 ). Mesmo assim ele nao chega a zerar em absoluto a saida quando se aterra a entrada. Da uns 10 milivots remascente.Mas para e precisao do nosso amigo até que seria bom.
A conclusao que eu cheguei é a seguinte:
Ou a configuracao do pino esta feita de forma errada como ja sugerido ou o CI esta com defeito.
Até mais e boa sorte
Dejano

MensagemEnviado: 08 Mar 2011 10:00
por renatokodaira
Se utilizarmos um buffer (seguidor de tensao) feito com um operacional como sugerido acima, nao basta ser apenas entrada com fet, tem que ser do tipo rail to rail (ca 3130 ). Mesmo assim ele nao chega a zerar em absoluto a saida quando se aterra a entrada. Da uns 10 milivots remascente.Mas para e precisao do nosso amigo até que seria bom.


Eu nao pensei em AO rail-to-rail, mas sim em AO alimentado por duas fontes de tensao (uma positiva e uma negativa - tipo +9V e -9V) de forma que o sinal possa ser plenamente reproduzido na saida do AO e com excursao de saida alem da faixa de mediçao. Rail-to-rail se fosse um AO alimentado soh pela fonte positiva, mas mesmo assim, nao chegaria a 0V na saida, como o Dejano disse.

MensagemEnviado: 09 Mar 2011 16:16
por bonella
Pessoal, agradeço as respostas.

Bom como mencionado pelos colegas, quando coloco um resistor de 1K e 100K funciona perfeitamente, ja com 10K e 1M da pau. Vou fazer alguns testes, mas acho que o problema pode estar realmente ligado ao tempo de conversão.

Apesar de ser muuuito estranho a tensão subir, concordo com o colega que mencionou que seria ilógico um AD com pullup.

Asseguro que não é problema com o compilador, (verifiquei o ASM) e nem com o Chip (testei em vários)

Quando a configuração errada, apenas esta configurado como AD, e o TRIS como entrada, sem mistério algum.

Abs