Página 1 de 2

ADC PIC18F4553

MensagemEnviado: 08 Ago 2012 17:40
por brasilma
Olá Colegas,

Estou fazendo a leitura utilizando referencia interna e o comando adc_read(X) do MikroBasic porem o valor não fica estável (variação chega a 7-8 unidades para um sinal estável - seria necessário uma variação de 10mV para isto, o que não ocorre).

Se curto circuitar a entrada com o terra a leitura fica zerada.

Alguém pode me dar dicas de algum teste que posso fazer para descobrir o que está acontecendo?

Obrigadúuuuuuuuuuuuuuu

MensagemEnviado: 08 Ago 2012 23:09
por Andre_Cruz
brasilma véi !

Como esta configurado os tempos de conversão do CAD ?
Passa mais informações da tensão que esta sendo usada como referência e qual circuito você tem ligado no canal do CAD que esta apresentando problema.

MensagemEnviado: 09 Ago 2012 09:18
por ze
oi bra. Talvez não lhe seja totalmente inútil...
já passei por isso com um sinal de termopar. ao amplificar 200x ele amplificava tudo até mesmo uma tal de corrente parasita que vinha do gnd. O truque pra resolver foi colocar os terras direito: que o terra do sinal morra direto no pino gnd do pic e dali não vá pra lugar nenhum. Tipo assim: gnd sinal, gnd amplificador, gnd mc. Como a variação com o tempo era irrisória, considerei como dc, coloquei um R em serie e um C entre a entrada e gnd. Ficou lisinho (ui!) até mesmo num protoboard. E olha que o ref era o +5 do mc. Ah, também fiz a media de varias leituras. p.ex some 10 leituras e divida por 10
sucessos colega!

MensagemEnviado: 09 Ago 2012 10:14
por brasilma
Obrigado a todos,

Para não ter dúvidas sobre a estabilidade do sinal, estou usando no momento como fonte de sinal uma pilha palito AA.

Como referência já utilizei referência interna 5V e externa com um LM385, a qual ajustei para 2,000V.

Vou implementar a ideia do terra direto no pino do PIC!!!

André, me fala mais sobre esta questão dos tempos de conversão, como funciona e pode afetar na estabilidade, apesar de acreditar que a função adc_read(X) do MikroBasic já configure isto automáticamente.

Mais uma informação, estou usando Clock externo com cristal.

MensagemEnviado: 09 Ago 2012 10:35
por Djalma Toledo Rodrigues
Correto Lellis

Qualquer Circuito Analógico, gnd é fundamental

Ressalva é fazer o uC dividir por 10 tadinho

porque não por 8 ? 2³ gira gira gira

DJ

MensagemEnviado: 09 Ago 2012 10:46
por ze
só complementando/corrigindo... que o terra da fonte VÁ direto no pino do mc e não VENHA através do circuito do ad.
Peço também que considere a dica do amigo DJ (que chegaram a dizer que é outro eu. as vezes fico na dúvida). 10 facilita a conta na nossa cabeça. 8 na dos mc. 10 DJ! ou melhor, 8!

MensagemEnviado: 09 Ago 2012 10:52
por Djalma Toledo Rodrigues
brasilma escreveu:Obrigado a todos,

Como referência já utilizei referência interna 5V e externa com um LM385, a qual ajustei para 2,000V.
.


2.000V ? Resulta mV / Bit fracionado

Ref. fracionada 2.048V = 2^11 fica bem mais facil

redondinho

MensagemEnviado: 09 Ago 2012 12:44
por Andre_Cruz
brasilma,

Leia a página 21 do datasheet do PIC que você esta usando, o registrador ADCON2 é o responsável pro configurar quanto tempo o CAD vai levar para efetuar a conversão.
Se este tempo estiver muito pequeno você pode ter leituras incorretas.
Não sei como isso é configurado no mikrobasic deve ter alguma função, senão encontrar configure diretamente no registrador.

Nesta página tem uma explicação melhor do que estou dizendo http://extremeelectronics.co.in/microchip-pic-tutorials/using-analog-to-digital-converter-%E2%80%93-pic-microcontroller-tutorial/

Aproveitando a dica do DJ e lellis use de referência tensão multipla 4096 para facilitar as contas internamente no PIC, e evite dividir por números diferente de 2^x tipo 2^1 = 2^2 = 4, e assim sucessivamente.

MensagemEnviado: 09 Ago 2012 13:17
por brasilma
Obrigadão Lellis, Djalma e André!!!

Prossigo com os testes agora a tarde, e assim que tiver outras informações retorno.

MensagemEnviado: 10 Ago 2012 08:27
por brasilma
Fiz alteração no terra, ajustei a referência para 2,048V, e testei vários valores para o Tad e Tclock no ADCON2 mas até agora nada de parar completamente a variação.

Uma coisa interessante é que com a referência no valor que inseri (2,048V) a leitura multiplicada por 0,0005 (o AD é de 12bits) deveria dar exatamente o valor que está na entrada, e está dando mais, para exibir o valor correto preciso utilizar uma referência de 2,151V.

Bom, já estou praticamente conformado e já querendo seguir em frente, pelo momento estou amenizando a coisa fazendo uma media de leituras, porem surgiu mais uma ideia:

A configuração dos fuse bits poderia de alguma forma estar influenciando a questão???

Uso clock externo com cristal de 8MHz, qual seria a configuração correta?

MensagemEnviado: 10 Ago 2012 20:42
por andre_luis
Brasilma,


Será que poderia ser ruído gerado internamente pelo próprio uC ?
Já tive problemas com a família PSoC no passado.

Experimenta despejar um pouco de gás congelante ( ex.: limpa-contato ) sobre o CI e verifica se a amplitude do ruído diminui um pouco.


+++

MensagemEnviado: 10 Ago 2012 21:15
por RobL
Por acaso estas chaveando (saidas ) portas vizinhas (cross talk) à sua porta de entrada do ADC?

Se estiver, pode estar aí o problema. Silencie elas e teste.

Melhor, pare todo tipo de chaveamento (portas como saida) e teste seu ADC.

MensagemEnviado: 10 Ago 2012 21:46
por MOR_AL
Se sua tensão de referência for de 2,048V e o seu CAD tiver 12 bits, então seu bit menos significativo corresponderá a 500uV, o que é bem pouco em relação a comutações próximas de 5V.
O seu circuito analógico deverá ser bem isolado do circuito digital.
Um filtro passa-baixas (analógico ou digital) poderia reduzir o expalhamento da tensão, mas vai limitar a sua taxa de leitura.
MOR_AL

MensagemEnviado: 10 Ago 2012 23:59
por Jorge_Francisco
Não esquece do capacitor em Vusb,mesmo não usando esta função OK.

MensagemEnviado: 12 Ago 2012 16:19
por brasilma
Obrigado a TODOS, as informações realmente são muito relevantes, irei testar tudo e assim que descobrir a causa volto aqui.

Abraços.