TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: rbpkirow en 27 de Abril de 2011, 11:43:46
-
Hola a todos.
LLevo tiempo metido en programacion de pic, pero siempre ha sido con datos digitales. Ahora me encuentro que tengo que usar un sensor que me devuelve un valor analogico, y con señales analogicas no he trabajado nunca y por ello no se como tratarlo.
El diseño que tengo es un pic 16f886 en el cual en la patilla RA0 conecto un sensor que me ofrece una salida entre 0.5-3 voltios. Al igual que en el RA0, tengo otros sensores equivalentes en RA1, RA2, RA3...
Lo que me interesa de estos sensores no es el valor analogico concreto sino un umbral, es decir, necesito saber cuando el valor sobrepasa 1 voltio. No me importa el valor exacto, solo si es mayor o menor a 1voltio
Mi pregunta es:
Hay alguna forma de comparar estos valores uno a uno?
Es decir, en c, algo similar a:
if(RA0>1)
RB0 = 1;
else
RB0 = 0
if(RA1>1)
RB1 = 1;
else
RB1 = 0
....
-
Tienes que realizar la conversión analógica de cada canal, usando 8-bits es más que suficiente, entonces cuando sea mayor a 51 (1V*255/5V) la entrada analógica será mayor a 1V.
Saludos!
-
Hola, por lo que parece, el codigo esta hecho en ccs, lo que debes hacer es leer el adc, convertir ese dato en valor del rango que hayas utilizado y luego haces una simple comparacion.
En el caso que utilices el adc en modo de 10 bits la formula que debes usar es:
Calc = 5/1024. Este reultado lo multiplicas por el valor que te de el adc.
Teniendo en cuenta esto, cuando el valor de entrada sea 1 volt, el adc te entregaria el valor de 204.
Lo que viene es una comparacion simple.
if (valor_leido_del_adc > 204)
{
//ejecutas lo qie deseas cando el voltaje de entrada sea mayor a 1 volt
}
saludos