Autor Tema: Comparar valor de Pin Analogico  (Leído 5011 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rbpkirow

  • PIC10
  • *
  • Mensajes: 21
Comparar valor de Pin Analogico
« 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:
Código: [Seleccionar]
if(RA0>1)
   RB0 = 1;
else
   RB0 = 0
if(RA1>1)
   RB1 = 1;
else
   RB1 = 0
....

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comparar valor de Pin Analogico
« Respuesta #1 en: 27 de Abril de 2011, 12:55:53 »
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!
No contesto mensajes privados, las consultas en el foro

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Comparar valor de Pin Analogico
« Respuesta #2 en: 27 de Abril de 2011, 13:01:53 »
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
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.