Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print

ELETRÔNICA / ELÉTRICA => Eletrônica Básica => Microcontroladores => Tópico iniciado por: Blackmore em 29 de Setembro de 2011, 20:09

Título: Aumentar os Bits no AD de um microcontrolador
Enviado por: Blackmore em 29 de Setembro de 2011, 20:09
Bom ... como o título já diz, eu quero saber se existe alguma forma de aumentar a resolução (em bits) de um AD de microcontrolador.
O motivo é bem simples, um microcontrolador de 8 bits (PIC12F627/629/PIC16 ... ) dá e sobra para a minha aplicação, tem custo interessante, fácil de achar no mercado ... então não justifica colocar um PIC24 por exemplo.
Eu já pensei em fazer isso diminuindo a tensão de alimentação do microcontrolador, diminuindo tb a tensão de referência e fazendo umas tramóia com transistores e comparadores de tensão uma "escada" e assim conseguir a resolução necessária onde pretendo esquematizar isso no fds e ver se funciona por simulação ...
Alguém sugere algo diferente?
Agradeço qualquer ajuda com relação ao assunto do tópico.

abraço!
Título: Re: Aumentar os Bits no AD de um microcontrolador
Enviado por: minilathe em 30 de Setembro de 2011, 06:37
Bom ... como o título já diz, eu quero saber se existe alguma forma de aumentar a resolução (em bits) de um AD de microcontrolador.
O motivo é bem simples, um microcontrolador de 8 bits (PIC12F627/629/PIC16 ... ) dá e sobra para a minha aplicação, tem custo interessante, fácil de achar no mercado ... então não justifica colocar um PIC24 por exemplo.
Eu já pensei em fazer isso diminuindo a tensão de alimentação do microcontrolador, diminuindo tb a tensão de referência e fazendo umas tramóia com transistores e comparadores de tensão uma "escada" e assim conseguir a resolução necessária onde pretendo esquematizar isso no fds e ver se funciona por simulação ...
Alguém sugere algo diferente?
Agradeço qualquer ajuda com relação ao assunto do tópico.

abraço!

Sim existe, quantos bits você precisa?

Mas não dá para ir muito além. Há ainda outras questões tais como a relação sinal/ruído (S/N) do conversor, ou seja, se você aumentar muito a resolução, vai começar a obter ruído nas leituras menores do conversor. Conversores A/D de muito bits possuem baixa relação S/N, compatível com a quantidade de bits do conversor.
Título: Re: Aumentar os Bits no AD de um microcontrolador
Enviado por: Blackmore em 30 de Setembro de 2011, 12:33
hoje eu "tenho" 3 necessidades ... 11, 12 e 13 bits  ... e apenas 1024 divisões (10bits) não está me atendendo.
Título: Re: Aumentar os Bits no AD de um microcontrolador
Enviado por: minilathe em 30 de Setembro de 2011, 14:39
Blackmore,

hoje eu "tenho" 3 necessidades ... 11, 12 e 13 bits  ... e apenas 1024 divisões (10bits) não está me atendendo.

Para ganhar 1 bit:
Voce pode usar um microcontrolador com duas entradas de conversão A/D (com leitura entre 0 e E), numa delas, aplica-se o sinal diretamente e na outra coloca-se um atenuador (por exemplo, dividindo a tensão de entrada pela metade). Desse modo, uma entrada lerá de 0 a E e a outra de 0 a 2*E. Dependendo da tensão na entrada (entre 0 e 2*E), o software deverá verificar se a entrada sem atenuação ultrapassou o final de escala e, então, selecionar a outra entrada atenuada, fazendo a leitura se o sinal for menor que 2*E. Com isso, você acaba de ganhar um bit gastando apenas dois resistores e duas entradas.

Para ganhar mais de 1 bit:
Extenda o conceito com mais entradas e mais resistores, ok?


P.S. - use resistores de precisão e também efetue a calibração do conjunto, como dizem: "não existe almoço de graça"...
Título: Re: Aumentar os Bits no AD de um microcontrolador
Enviado por: Blackmore em 30 de Setembro de 2011, 23:04
poxa mestre ... não é atoa que tu é mestre!  :)

eu pensei algo no mesmo caminho ... mas com amp op em comparador de tensão ... (mais caro e mais complicado)

1 - 3 comparadores cada um em um nível de tensão por exemplo ... 2,5v ... 5,0v e 7,5v;
2 - utilizar o AD do microcontrolador com ref de tensão em 2,5volts;
3 - limitar a tensão que entra em um único AD em 2,5v;
4 - ler a saída dos comparadores para saber "onde" está a tensão ...

mas não tenho certeza se funcionaria, sem contar que é chatinho neh?

Vou tentar fazer uma simulação e montar um prototipo da opção recomendada por ti.
Obrigado por enquanto ...
Título: Re: Aumentar os Bits no AD de um microcontrolador
Enviado por: minilathe em 02 de Outubro de 2011, 00:37
1 - 3 comparadores cada um em um nível de tensão por exemplo ... 2,5v ... 5,0v e 7,5v;
2 - utilizar o AD do microcontrolador com ref de tensão em 2,5volts;
3 - limitar a tensão que entra em um único AD em 2,5v;
4 - ler a saída dos comparadores para saber "onde" está a tensão ...

mas não tenho certeza se funcionaria, sem contar que é chatinho neh?

Vou tentar fazer uma simulação e montar um prototipo da opção recomendada por ti.
Obrigado por enquanto ...

Para uma conversão adequada (para maximizar cada faixa de valores binários), as tensões devem ser potências de 2, por exemplo:
(2^0 * 2.5 = ) 2.5V, (2^1 * 2.5 = ) 5.0V, (2^2 * 2.5 = ) 10V, (2^3 * 2.5 = ) 20V, ...

ou então (Se Vref = 1V):
(2^0 * 1.0 = ) 1V, (2^1 * 1.0 = ) 2.0V, (2^2 * 1.0 = ) 4.0V, (2^3 * 1.0 = ) 8.0V, ...

ou então (Se Vref = 0.5V):
(2^0 * 0.5 = ) 0.5V, (2^1 * 0.5 = ) 1.0V, (2^2 * 0.5 = ) 2.0V, (2^3 * 0.5 = ) 4.0V, ...

......

Título: Re: Aumentar os Bits no AD de um microcontrolador
Enviado por: minilathe em 02 de Outubro de 2011, 00:50
Mas, lembre-se do que eu disse antes, relativo à relação sinal / ruído. Exemplo, na menor escala, se Vref = 0.5V a menor tensão será: 0.5 / 1024 (10 bits) = 0.488 mV = 488 uV, se a maior tensão for 4V (10+3=13 bits), a faixa dinâmica será: 78 dB. Ou seja, seu sinal deverá ser bem filtrado (filtro passa baixa ou passa faixa), e seu circuito bem construído, com baixa impedância de entrada, senão terás ruído ao invés de sinal nas faixas inferiores de bits, caso contrário, os bits adicionais não servirão pra nada!!

Nesse caso, pode ser melhor usar um conversor A/D com 13 bits e uma relação sinal/ruído compatível com essa quantidade de bits. Não é a toa que conversores com mais bits são caros!!
 
Título: Re: Aumentar os Bits no AD de um microcontrolador
Enviado por: Blackmore em 02 de Outubro de 2011, 01:58
pois é ... estou com medo dessa ruidera toda ... eu vou montar um protótipo e ver como funfa.
Título: Re: Aumentar os Bits no AD de um microcontrolador
Enviado por: fh007 em 02 de Outubro de 2011, 12:47
você pode tentar aumentar a resolução por oversampling que não precisa fazer protótipo, é só software, se rapidez na conversão não for problema...
para 1 bit: some 4 medições consecutivas e depois  divida por 2 (>>1).
  veja: 1023+1023+1023+1023 = 4092 >>1 = 2046 (teoricamente 11bits)
para 2bits: some 16 medições e divida por 4 (>>2)

há um appnote AVR que fala sobre a precisão, a partir da pag 10 mostra gráficos do resultado do oversampling...
http://www.atmel.com/dyn/resources/prod_documents/doc8003.pdf (http://www.atmel.com/dyn/resources/prod_documents/doc8003.pdf)

depois diga se resolveu
Título: Re: Aumentar os Bits no AD de um microcontrolador
Enviado por: minilathe em 02 de Outubro de 2011, 17:12
Bem lembrado, pode-se usar o oversampling e a decimação.

você pode tentar aumentar a resolução por oversampling que não precisa fazer protótipo, é só software, se rapidez na conversão não for problema...
para 1 bit: some 4 medições consecutivas e depois  divida por 2 (>>1).
  veja: 1023+1023+1023+1023 = 4092 >>1 = 2046 (teoricamente 11bits)
para 2bits: some 16 medições e divida por 4 (>>2)

há um appnote AVR que fala sobre a precisão, a partir da pag 10 mostra gráficos do resultado do oversampling...
http://www.atmel.com/dyn/resources/prod_documents/doc8003.pdf (http://www.atmel.com/dyn/resources/prod_documents/doc8003.pdf)

depois diga se resolveu

Se usar oversampling, a banda passante cairá proporcionalmente à frequência de amostragem. E a solução age como um filtro digital de valor médio. Se a faixa de medição for sempre a mesma, (0 a 100% por exemplo) há algumas considerações:

Para 1 bit quadruplica-se a taxa de amostragem, soma-se as 4 amostras e divide-se o resultado por 2 (0 a 4095) e por 2 de novo (0 a 1023.0). Gerando 2 casas binárias após a vírgula (0 a 100.0%).
 
Para 2 bit use a taxa de amostragem x 16, soma-se as 16 amostras e divide-se o resultado por 4 (0 a 8191)e por 4 (0 a 1023.00) de novo. Gerando 4 casas binárias após a vírgula (0 a 100.00%).
 
Lembrando que a taxa de amostragem deve ser no mínimo duas vezes a maior frequencia do sinal. Deve ser usado um filtro passa baixa cortando em metade da taxa de amostragem para evitar o aliasing, parte da filtragem é feita digitalmente, ao calcular a média.
Título: Re: Aumentar os Bits no AD de um microcontrolador
Enviado por: Blackmore em 03 de Outubro de 2011, 15:17
muito interessante ... vou ler o AN recomendado com mais paciência e atenção, e ver se este resolve o meu caso, pois apesar de ter ficado empolgado eu nao entendi direito como funciona.
obrigado por enquanto.
abrax!