Autor Tópico: Aumentar os Bits no AD de um microcontrolador  (Lida 3325 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Aumentar os Bits no AD de um microcontrolador
« Online: 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!
« Última modificação: 29 de Setembro de 2011, 22:19 por Jost Dayan »

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Aumentar os Bits no AD de um microcontrolador
« Resposta #1 Online: 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.
« Última modificação: 30 de Setembro de 2011, 06:45 por minilathe »

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Aumentar os Bits no AD de um microcontrolador
« Resposta #2 Online: 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.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Aumentar os Bits no AD de um microcontrolador
« Resposta #3 Online: 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"...
« Última modificação: 30 de Setembro de 2011, 14:45 por minilathe »

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Aumentar os Bits no AD de um microcontrolador
« Resposta #4 Online: 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 ...

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Aumentar os Bits no AD de um microcontrolador
« Resposta #5 Online: 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, ...

......


Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Aumentar os Bits no AD de um microcontrolador
« Resposta #6 Online: 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!!
 

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Aumentar os Bits no AD de um microcontrolador
« Resposta #7 Online: 02 de Outubro de 2011, 01:58 »
pois é ... estou com medo dessa ruidera toda ... eu vou montar um protótipo e ver como funfa.

Offline fh007

  • Novato
  • *
  • Posts: 20
  • Sexo: Masculino
Re: Aumentar os Bits no AD de um microcontrolador
« Resposta #8 Online: 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

depois diga se resolveu

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Aumentar os Bits no AD de um microcontrolador
« Resposta #9 Online: 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

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.

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Aumentar os Bits no AD de um microcontrolador
« Resposta #10 Online: 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!
« Última modificação: 03 de Outubro de 2011, 17:11 por Blackmore »

 

/** * */