TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Xelene en 04 de Abril de 2005, 02:28:00

Título: Potenciometro en RA0
Publicado por: Xelene en 04 de Abril de 2005, 02:28:00
Holas a tod@s! Os explico mi problema: Enfurruñado

En RA0 tengo conectado un potenciometro con una R=5k. Me gustaría sacar el valor de ese pot por el LCD. De momento solo consigo sacar el valor .000000 y x mucho q mueva la ruleta del pot no cambia, os dejo el programita q he creado para q lo reviseis y digais posibles fallos o sugerencias para q esto me rule. Gracias!!

Codigo:
#include <16F877.h>
#device adc=8
#use delay(clock=4000000)
#include <lcd-picdem.c>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP

const int escala = 256;
const float v_max = 5.0;

void calcula_voltaje (int val, float &voltaje)
 {
 voltaje=(val*v_max)/escala;
 }

void main(void)
{
 int valor;
 float voltaje;
 set_tris_a(0b00000001);
 
 lcd_init();
 lcd_putc("f"); //Borra pantalla
 lcd_putc("voltios =
"Giño;

 for(;Giño
  {
  lcd_gotoxy(4,2);

  setup_adc(adc_clock_div_2);
  setup_adc_ports(AN0);
  set_adc_channel(0);

  valor=read_adc();
  delay_ms(5000);
  setup_adc (adc_off);
  calcula_voltaje(valor,voltaje);
  printf(lcd_putc,"%f",voltaje);
  delay_ms(10);
  }
}
Título: RE: Potenciometro en RA0
Publicado por: Nocturno en 04 de Abril de 2005, 02:59:00
¿Cómo tienes conectado el potenciómetro?
Podría ser que hubieras conectado un extremo a masa, y el punto medio al pin RA0, pero no hayas conectado el otro extremo a ningún sitio. Si es así, tendrías que meter +5V por este extremo.
Título: RE: Potenciometro en RA0
Publicado por: Xelene en 04 de Abril de 2005, 03:12:00
El ensayo lo hago sobre la picdem 2 plus, y de los datasheet solo se puede sacar q el centro está conectado a RA0 (The center tap of R16 is connected to RA0). Los extremos no pone como están conectados. Pero es de suponer q están como tu comentas, no?

Saludos.
Título: RE: Potenciometro en RA0
Publicado por: Nocturno en 04 de Abril de 2005, 03:22:00
Bueno, es de suponer que sí, aunque no conozco esa placa. ¿Puedes probar a meter 5V a pelo sobre el pin a ver si la lectura cambia?
Título: RE: Potenciometro en RA0
Publicado por: Nocturno en 04 de Abril de 2005, 03:41:00
Vale, olvídate de lo que te he dicho antes.
He simulado tu programa en Proteus y he conseguido que funcione, pero para ello hay que declarar como FLOAT la variable ESCALA.
Giño
Título: RE: Potenciometro en RA0
Publicado por: Xelene en 04 de Abril de 2005, 03:44:00
Ahora mismo no xq estoy en casa y no en el lab y no tengo fuente. Pero he revisado los esquemas de conexion y efectivamente está como comentas: un extremo a masa y el otro a 5V.
Título: RE: Potenciometro en RA0
Publicado por: Xelene en 04 de Abril de 2005, 03:45:00
Valeee!!! Respondí antes de ver tu ultimo mensaje, ahora mismo lo compruebo!! Gracias!!
Título: RE: Potenciometro en RA0
Publicado por: Xelene en 04 de Abril de 2005, 03:49:00
RebotadoRebotadoRebotadoRebotado

Tenías razón!! Comprobado y funcionando!! Muchisimas gracias!!

RebotadoRebotadoRebotado
Título: RE: Potenciometro en RA0
Publicado por: Xelene en 04 de Abril de 2005, 04:15:00
Tengo otra dudilla... El resultado me sale con 6 decimales, si quiero q el resultado se muestre por ejemplo con 2 decimales que tendría q hacer??

Gracias!
Título: RE: Potenciometro en RA0
Publicado por: Nocturno en 04 de Abril de 2005, 04:17:00
Ah, jeje, esta es más facilita. Puedes poner esto:
printf(lcd_putc,"%f3.2",voltaje);

Los números 3 y 2 significan 3 dígitos enteros y 2 decimales respectivamente, y puedes cambiarlos por otros a tu gusto.