TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Ginho_rj en 13 de Mayo de 2004, 23:13:00
-
PARA ACABAR COM DUVIDAS E ENGANOS PRESTEM ATENÇÃO:
O CONVERSOR TEM 10 BITS DE RESOLUÇÃO,SUPONDO QUE SÓ TIVESSE 3 BITS ENTAO O MÁXIMO QUE CHEGARIA SERIA 111(BINARIO) OU 7(DECIMAL) AO TOTAL TERIAMOS 8 VALORES(0,1,2,3,4,5,6,7).
ENTAO NÃO PODEMOS CALCULAR QUE PELO FATO DE TER 3 BITS O VALOR MÁXIMO SERIA 23=8 E SIM O CERTO É 23-1=7.
ENTAO PARA 10 BITS É:
210-1=1023(VALOR MAXIMO ATINGIDO PELO AD,MAS TERIAMOS NO TOTAL 1024 VALORES).
O ERRO É DE APROXIMADAMENTE 5mV,POUCO PARA UNS ,MAS PARA MIM QUE UTILIZA SENSORES QUE VARIAM A CADA 1mV SERIA MUITO!
ESPERO TER AJUDADO!
-
Haber si no me falla la memoria. La fórmula general para calcular la resolución de cualquier conversor es: VRES=VFS/2^n siendo VFS el valor a fondo de escala y n el número de bits.
Esta fórmula es válida para todos los conversores tanto A/D como D/A salvo para el de resistencias ponderadas en la que aparece 2^n - 1.
No sé que tipo de conversor A/D lleva el PIC internamente, supongo que será uno de aproximaciones sucesivas y para este es válida la fórmula general por lo tanto hay que poner 2^n en la fórmula de la resolución.
Un saludo
-
Escrito originalmente por pocher
Haber si no me falla la memoria. La fórmula general para calcular la resolución de cualquier conversor es: VRES=VFS/2^n siendo VFS el valor a fondo de escala y n el número de bits.
Esta fórmula es válida para todos los conversores tanto A/D como D/A salvo para el de resistencias ponderadas en la que aparece 2^n - 1.
No sé que tipo de conversor A/D lleva el PIC internamente, supongo que será uno de aproximaciones sucesivas y para este es válida la fórmula general por lo tanto hay que poner 2^n en la fórmula de la resolución.
Un saludo
NÃO É BEM ASSIM POCHER:
SUPONHA QUE SEU CONVERSOR TENHA 1 BIT(0 OU 1) DE RESOLUÇÃO,ENTAO SEGUNDO O QUE VC DISSE TERIAMOS:
VRES=VFS/2^n
VRES=5/2^1
VRES=2,5V
OU SEJA :
0=0V E 1 =2,5V
O CERTO SERIA:
VRES=VFS/(2^n-1)
VRES=5/((2^1)-1)
VRES=5V
OU SEJA :
0=0V E 1 =5V
-
Só para justificar o uso do 1024, ele ocorrre devido ao fato de uma divisão por 1024 corresponder a 10 rotações para a direita do numero sem necessitar de nenhum algoritimo para divisão. Já com 1023 (que seria o correto) você precisaria de um algoritimo que lhe consumiria um tempo grande. Como os dois são muito próximos justifica-se a utilização do 1024,este tipo de divisão é mais facilmente implementada, desde que a sua aplicação possa tolerar o erro .
-
A ver que opinas de esto:
Para n=8bits:
Según lo que yo creo:
- VRES=5V/256=19.53125mV --> Vmax=255·19.53125=4980mV
Según lo que tú crees:
- VRES=5V/255=19.6078mV --> Vmax=255·19.6078=5000mV
(Hay una diferencia entre los resultados de un escalón)
Ahora viene la prueba:
Si haces en PROTEUS un programa (yo lo he hecho) que a medida que vayas cambiando la tensión de entrada se te vayan encendiendo luces en los 8 bits del PORTB, podrás comprobar que el valor máximo (todas las luces encendidas se alcanza para Vi=4983mV que salvo un pequeño error de 3mV es lo que tendría que sacar según lo que yo pienso y creo que es (2^n)
Sería interesante que tú lo comprobases también, y mejor aún que te agenciases un buen polímetro e hicieses esta misma prueba de forma real.
-
compile o exemplo do pcw "EX_AD12" e va em VIEW->SYMBOL MAP
APARECERA PARA 8 BITS O SEGUINTE:
Compiler Settings:
Processor: PIC16F877
Pointer Size: 8
ADC Range: 0-255
Opt Level: 9
Short,Int,Long: 1,8,16
Se compilar o exemplo de voltimetro que coloquei neste forum ira aparecer:
Compiler Settings:
Processor: PIC16F877A
Pointer Size: 8
ADC Range: 0-1023
Opt Level: 9
Short,Int,Long: 1,8,16
quanto ao seus testes o valor correto seria 5000mv ou 5v!
-
El ADC Range lo que te indica es que hay 256 valores. Desde 0 (0000 0000) hasta 255 (1111 1111), ya que en el programa se está eligiendo por omisión del #device una resolución de 8 bits.
Si en el programa eliges #device adc=10 entonces te saca ADC Range= 0 (00 0000 0000) hasta 1023 (11 1111 1111)
Lo dicho: has la prueba, o bien con el PROTEUS o bien físicamente.
-
"El ADC Range lo que te indica es que hay 256 valores. Desde 0 (0000 0000) hasta 255 (1111 1111)"
eu disse que era 256 valores, de 0 a 255,vc acabou de dizer!
não entendi,vc disse que apresentou este range pq eu não coloquei o device???
-
"El ADC Range lo que te indica es que hay 256 valores. Desde 0 (0000 0000) hasta 255 (1111 1111)"
eu disse que era 256 valores, de 0 a 255,vc acabou de dizer!
não entendi,vc disse que apresentou este range pq eu não coloquei o device???
-
En fin, por mi parte ya no tengo nada más que añadir, solo que hagas la prueba física.
Un saludo