Autor Tema: Resultados de las Conversiones. como interpretarlas...  (Leído 1631 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado isfan

  • PIC16
  • ***
  • Mensajes: 145
Resultados de las Conversiones. como interpretarlas...
« en: 20 de Junio de 2013, 06:52:50 »
Haber si alguien puede ayudar,

Partiendo que ya tengo todo el proceso de adquisición de datos del Conversor A/D

Capturando el valor que me da el registro de ADRESH y ADRESL:

Quiero saber como hago para pasar esa rista de 10 bits, en interpretarla de alguna manera en Voltios, para cuando me entre 4 o mas v activar un led señalizador, y cuando entre menos apagarlo. por el PB por ejemplo.

Vref: 5v = entonces dispondre de 1024 muestra de rastreo (0 al 1023) lo que equivale a cada muestra por 0.00488v/bit  o 4.888mV/bit (tampoco necesito tanta precisión)
por esta regla de 3  0000000000 = 0v y 1111111111 = 5v

1100110100 = seria igual a una salida de 4V

Hasta ahi de acuerdo, pero no logro comprender como hacer un bucle o comprobación para verificar ese valor es >= 4v

alguien podria guiarme como implementar un codigo en ASM?
un saludo y gracias.

PD: el PIC es 16f876, pero puede valer otro cualquiera, La entrada A/D es AN0, y la tension de ref es Vcc y GND (5v)
« Última modificación: 20 de Junio de 2013, 08:18:28 por isfan »

Desconectado AleSergi

  • PIC16
  • ***
  • Mensajes: 209
Re: Resultados de las Conversiones. como interpretarlas...
« Respuesta #1 en: 20 de Junio de 2013, 09:14:47 »
Hola Isfan, no es tan complicado lo que requerís implementar, primero, olvidate del 4V, (por ahora) mejor que sean:
(1023*4)/5=818,4  (*1)
o sea,  el valor 818 ó 819 (valor discreto del ADC), con este número (11.0011.0010) te planteas la famosa comparación, primero con los bit_H, si resulta ó mayor ó menor, se termino el jaleo.
Si resultan iguales, nuevamente a comparar, pero esta vez los bit_L...
La comparación en assembler, se hace con una resta, y después mirando las banderas "C" & "Z".

Se viene el tema de la operación (*1), escalar proporcionalmente, se hace de un solo tiro, esto es UNA multiplicación (para simplificar las cosas):
tu constante de proporcionalidad en este caso es:
5/1023=0,0048875855....  decimos que es 488
al número 488 lo multiplicas por el valor obtenido del ADC, p.e.:
488*818=399184 (*2)
Esta vez se viene una descomposición BCD, de un número de 24 o tal vez 32 bit, el punto decimal se lo trabaja como fijo, pues siempre aparece entre la cifra 5ta y 6ta de (*2)

Una de esas la cosa sigue..... imaginá si querés mostrar estos resultados, en Led display 7 segmentos, o LCD?, "demultiplexión" en 4 ú 8 bit, comunicacion de 4 ú 8 bit, y la cosa sigue.
Si te mandaron de la "U" o el "Cole", una forma de resolverlo es como lo propongo.
Si no es lo anterior, podrías pasar por:
http://piclist.com/techref/microchip/compcon.htm#16_bit
donde hay cantidad de rutinas matemáticas y utilidades, listas para emplear.
Ya cansado de liarme con esto, me pase al C!.-

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Resultados de las Conversiones. como interpretarlas...
« Respuesta #2 en: 20 de Junio de 2013, 14:43:17 »
Muy buena explicacion AleSergi.

isfan si no necesitas una gran precision, puedes hacer la lectura a 8bits, despreciando los dos de ADRESL, despues restas lo que haya en ADRESH del valor de 4V, chequeas si STATUS,C marca acarreo, si hay accarreo el resultado es negativo o positivo, segun como restes o cual de las siguientes instrucciones uses, te dejo aqui la explicacion de Leon_pic en asm desde 0:

Citar
SUBLW

Resta el contenido de W con un literal de hasta 8 bit (.255). El resultado se guarda en W.


Código:

              SUBLW       .20

Si antes de la instrucción W vale .23 después de la instrucción W vale .3 Para saber si el resultado es negativo o positivo, hay que chequear el bit C del registro Status. Si hay acarreo, el resultado es negativo, y por el contrario, si no hay acarreo es positivo.

Para recordar SUBtraction es restar Literal es literal y W es el registro W.

Afecta a:

•Z se pone a 1 si el resultado es 0
•DC se pone a  si hay acarreo del bit del 4 al 5 bit del registro (recordemos que en la resta, es distinto a la suma, por eso, se pone a 0 si hubo acarreo).
•C se pone a 0 si hubo acarreo (recordemos que en la resta, es distinto a la suma, por eso, se pone a 0 si hubo acarreo).

Citar
Resta el contenido de un registro seleccionado por el programador con el contenido del registro W. La fórmula es F - W = d. d es la dirección elegida por el programador en dónde se guardará el resultado que puede ser el registro W o el registro elegido por el programador.

Ejemplo:


Código:

           SUBWF        MINUENDO,W

Si antes de la instrucción W vale .55 y MINUENDO vale .56, después de la instrucción, MINUENDO vale .56 y W vale .1

Para recordar SUBtraction es resta W es el registro W y File es el registro elegido.

Afecta a:

•Z se pone a 1 si el resultado es 0
•DC se pone a 0 si hubo un acarreo del 4 bit al 5 bit (recordemos que en la resta, es distinto a la suma, por eso, se pone a 0 si hubo acarreo).
•C se pone a 0 si hubo acarreo del 7 bit. (recordemos que en la resta, es distinto a la suma, por eso, se pone a 0 si hubo acarreo).

Creo que a 8bits te simplica el problema y creo que para lo que tu quieres te va a dar suficiente precision.




Desconectado isfan

  • PIC16
  • ***
  • Mensajes: 145
Re: Resultados de las Conversiones. como interpretarlas...
« Respuesta #3 en: 20 de Junio de 2013, 18:58:34 »
Muchas gracias por los 2 post, me sirvio de gran ayuda vuestros comentarios. Tome la recomendación de coger los 8 primeros bits de mas peso y descartar los otros 2.