Hola a todos, tengo una dudilla respecto al conversor analogico-digital del pic16f877a, más concretamente con las alineaciones.
He estado leyendo por el foro sobre alinear a la izda. o a la dere.
Según mis conclusiones y lo que he aprendido en este foro entiendo lo siguiente:
Hay dos registros, adresh y adresl los cuales son de 1 byte cada uno, con lo cual, entre los dos tenemos un word, hasta ahí bien, ahora, el conversor tiene una resolución de 10 bits, con lo cual nos dá unos valores de 0 a 1023.
Ahora bien, en un esquema que he montado para entenderlo mejor, he puesto el pic con una pantalla lcd de 4 lineas, las cuales me dán los siguientes valores:
1- Valor de la conversion de AN0 ( variable word )
2- Valor de la conversion de AN1 ( variable word )
3- Valor de adresh y adresl antes de leer an1 ( directamente a lcd )
4- Valor de adresh y adresl despues de leer an1 ( directamente a lcd )
Pues bien, la duda es la siguiente.
Introduciendo un voltage por AN0 y otro por AN1, por ejemplo 1v en AN0 y 2 en AN0, los valores de las conversiones en las lineas 1 y 2 del lcd me dá unos numeros del 0 al 1023 ( no los pongo porque son irrelevantes ) y las lineas 3 y 4 otros numeros que van de 0 a 253, bien, por ahora todo correcto, todo esto con alineación a la derecha ( registro ADCON1 = %10101000 ) con lo cual evito leer los LSB y así la lectura es más estable, pero si le pongo alineación a la izquierda ( registro ADCON1 = %00101000 ), se supone que lee los LSB y tendría más precisión aunque perdería estabilidad en la lectura.
Pues la pregunta es: ¿ en que o en donde o como debería de notar la diferencia entre las distintas alineaciones ? a mi me dan los mismos valores alineando a izquierda o a derecha refiriendome a adresh y adresl.
Pienso que debería de cambiar el regsitro adresl al rellenar los espacios con 0 tras especificarle el tipo de alineación pero no lo hace y no se porque.
El caso es que intento leer un lm35 en todo el rango ( desde -55 hasta +150 ºC ) con la máxima precisión posible, por ahora tengo una precisión variable que te indica cambios de 0,1 grados desde 0 ºC hasta 20ºC y ahí empieza a disminuir hasta quedarse en 0,2 a partir de unos 100 grados.
No se si me habeís entendido.
La precisión en temperatura negativa está entre 0,3 y 0,5 grados para un cambio
El proyecto final es leer 4 lm35 de los cuales 2 tienen que ser lo más precisos posibles y los otros 2 son orentativos.
He estado estudiando la posibilidad de meterle un convertidor digital-analogico para controlar el Vref+ y Vref- del pic pero todavía no he dado con la formula para saber si necesito uno de 8,10,12 o 16 bit's de resolución, todo se verá.
Gracias y saludos!
P.D.: Cada día me sorprende más Proteus... capaz de simular hasta un disco duro ATA
He estado leyendo por el foro sobre alinear a la izda. o a la dere.
Según mis conclusiones y lo que he aprendido en este foro entiendo lo siguiente:
Hay dos registros, adresh y adresl los cuales son de 1 byte cada uno, con lo cual, entre los dos tenemos un word, hasta ahí bien, ahora, el conversor tiene una resolución de 10 bits, con lo cual nos dá unos valores de 0 a 1023.
Ahora bien, en un esquema que he montado para entenderlo mejor, he puesto el pic con una pantalla lcd de 4 lineas, las cuales me dán los siguientes valores:
1- Valor de la conversion de AN0 ( variable word )
2- Valor de la conversion de AN1 ( variable word )
3- Valor de adresh y adresl antes de leer an1 ( directamente a lcd )
4- Valor de adresh y adresl despues de leer an1 ( directamente a lcd )
Pues bien, la duda es la siguiente.
Introduciendo un voltage por AN0 y otro por AN1, por ejemplo 1v en AN0 y 2 en AN0, los valores de las conversiones en las lineas 1 y 2 del lcd me dá unos numeros del 0 al 1023 ( no los pongo porque son irrelevantes ) y las lineas 3 y 4 otros numeros que van de 0 a 253, bien, por ahora todo correcto, todo esto con alineación a la derecha ( registro ADCON1 = %10101000 ) con lo cual evito leer los LSB y así la lectura es más estable, pero si le pongo alineación a la izquierda ( registro ADCON1 = %00101000 ), se supone que lee los LSB y tendría más precisión aunque perdería estabilidad en la lectura.
Pues la pregunta es: ¿ en que o en donde o como debería de notar la diferencia entre las distintas alineaciones ? a mi me dan los mismos valores alineando a izquierda o a derecha refiriendome a adresh y adresl.
Pienso que debería de cambiar el regsitro adresl al rellenar los espacios con 0 tras especificarle el tipo de alineación pero no lo hace y no se porque.
El caso es que intento leer un lm35 en todo el rango ( desde -55 hasta +150 ºC ) con la máxima precisión posible, por ahora tengo una precisión variable que te indica cambios de 0,1 grados desde 0 ºC hasta 20ºC y ahí empieza a disminuir hasta quedarse en 0,2 a partir de unos 100 grados.
No se si me habeís entendido.
La precisión en temperatura negativa está entre 0,3 y 0,5 grados para un cambio
El proyecto final es leer 4 lm35 de los cuales 2 tienen que ser lo más precisos posibles y los otros 2 son orentativos.
He estado estudiando la posibilidad de meterle un convertidor digital-analogico para controlar el Vref+ y Vref- del pic pero todavía no he dado con la formula para saber si necesito uno de 8,10,12 o 16 bit's de resolución, todo se verá.
Gracias y saludos!
P.D.: Cada día me sorprende más Proteus... capaz de simular hasta un disco duro ATA