Lectura de un potenciometro en LCD.(PIC16F628A)

Hola.

Me gustaria que me ayudaran con una practica que consiste en mostrar en un lcd la lectura de el valor (en porcentaje) de un potenciometro.
Utilizo el PIC16F628A y hasta ahora he intentado con la instruccion POT,conectando un capacitor de .1uf,el cual se carga y descarga utilizando el potenciometro para regular la corriente que circula,entonces a mayor resistencia el capacitor tarda mas tiempo en cargarse, y la PIC da un valor alto o si se gira el potenciometro a la minima resistencia, el capacitor se cargara mas rapido y la variable dara cero.
He armado el circuito requerido,pero se supone que el potenciometro al estar a su maximo en el LCD marque 255 y al minimo 0, pero al mover el potenciometro va de 0 hasta 255, esto sin haber girado el potenciometro ni a la mitad de su valor.
Haber si me pueden ayudar a que marque el 255 cuando este a su maxima resistencia.Adjunto el circuito y el programa empleado.

Gracias de antemano:apreton:.
 

Adjuntos

  • poenciometrolcd.PNG
    poenciometrolcd.PNG
    40.1 KB · Visitas: 176
  • programa.PNG
    programa.PNG
    30.9 KB · Visitas: 186
ponle en VCC y el GND al LCD ademas te falto los ":" despues de la etiqueta de inicio "medir"



dato VAR BYTE

medir:
POT portb.0,255,dato
LCDOUT $FE, 1," Rango= "
LCDOUT, #dato
PAUSE 100
GOTO medir
END
 
Gracias por la respuesta lpnavy.
Mira ya habia tomado en cuenta eso de los dos puntos y tambien la alimentacion del LCD pero de igual manera no funciona.

Gracias.
 
Gracias por la respuesta lpnavy.

El circuito lo estoy probando en proteus y tambien fisicamente,el resultado es el mismo.
No creo que este mal proteus.
 

Adjuntos

  • POT.zip
    14.4 KB · Visitas: 266
Gracias por la respuesta lpnavy.

El circuito lo estoy probando en proteus y tambien fisicamente,el resultado es el mismo.
No creo que este mal proteus.


Hola...A mí de esta forma me funciona.
Device = 16F628A
All_Digital= true
Config INTRC_OSC_NOCLKOUT, WDT_OFF, LVP_OFF, BODEN_OFF, CP_OFF,PWRTE_OFF,MCLRE_OFF
' OPTION_REG.7=0
Declare Xtal= 4
Declare LCD_Type 0
Declare LCD_RSPin PORTA.4 'RS en RB1
Declare LCD_ENPin PORTB.3 'E en RB3
Declare LCD_DTPin PORTB.4 'Selecion del port B
Declare LCD_Interface 4 'Modalidad 4 bits
Declare LCD_Lines 2 '2 linea
Dim dato As Byte

medir:
Pot PORTB.0,255,dato
Print At 1,1,"RANGO="
Print @dato, " "
DelayMS 100
GoTo medir
End



Saludos.

Ric.
 

Adjuntos

  • POT.ZIP
    7.5 KB · Visitas: 145
a mi me funciona bien, y si lo pruebas fisicamente fijate en los fuses que esten bien configurados a la hora de grabarlo al micro ya que puede acrear errores y no te ande el pic. te dejo la modificacion que le hice.
 

Adjuntos

  • POT2.rar
    14 KB · Visitas: 251


Hola.

Ricbevi,no me habia dado cuenta que adjuntaste el circuito y el archivo hex,lo probe y funciono de maravilla.(y)Me podrias decir cual software de programacion utilizas?
Sabes cual era el error en mi programacion?

Ipnavy con tu circuito la lectura es mas exacta pero tengo el mismo problema de que al estar a 41% el potenciometro el lcd ya marca 255.

Ahora una duda mas, como creen que se tenga que hacer para que en el LCD se muestren valores de 0 a 100 y no de 0 a 255.Me han dicho que con un calculo pero en realidad lo desconozco.


Gracias a ambos.
 
Última edición:
pues sencillo solo cambia el 255 por un 100 y listo ya que seria tu valor maximo. y Ricbevi usa PROTON en ves del compilador de Microstudio.
 
Hola.

Me gustaria que me ayudaran con una practica que consiste en mostrar en un lcd la lectura de el valor (en porcentaje) de un potenciometro.
Utilizo el PIC16F628A y hasta ahora he intentado con la instruccion POT,conectando un capacitor de .1uf,el cual se carga y descarga utilizando el potenciometro para regular la corriente que circula,entonces a mayor resistencia el capacitor tarda mas tiempo en cargarse, y la PIC da un valor alto o si se gira el potenciometro a la minima resistencia, el capacitor se cargara mas rapido y la variable dara cero.
He armado el circuito requerido,pero se supone que el potenciometro al estar a su maximo en el LCD marque 255 y al minimo 0, pero al mover el potenciometro va de 0 hasta 255, esto sin haber girado el potenciometro ni a la mitad de su valor.
Haber si me pueden ayudar a que marque el 255 cuando este a su maxima resistencia.
Gracias de antemano:apreton:.
Saludos.
En este ejemplo que adjunto en PICBASIC Se muestra el porcentaje de la posición del potenciometro.
Si quieres que mida de 000 a 255 solo debes omitir la fórmula de mi ejemplo,
y mostrar el valor directo de la variable. Por ejemplo: DEC3 B0
Espero te sirva de ayuda.

Suerte y hasta luego.
 

Adjuntos

  • 16F628A PBP_POT.rar
    17.2 KB · Visitas: 284
Hola.

Ricbevi,no me habia dado cuenta que adjuntaste el circuito y el archivo hex,lo probe y funciono de maravilla.(y)Me podrias decir cual software de programacion utilizas?
Sabes cual era el error en mi programacion?

Ipnavy con tu circuito la lectura es mas exacta pero tengo el mismo problema de que al estar a 41% el potenciometro el lcd ya marca 255.

Ahora una duda mas, como creen que se tenga que hacer para que en el LCD se muestren valores de 0 a 100 y no de 0 a 255.Me han dicho que con un calculo pero en realidad lo desconozco.


Gracias a ambos.

Uso como te dijeron Proton y a mi también me falla tú simulación disparándose después de la mitad la lectura a fondo de escala. Como ya te aclararon cambia Pot PORTB.0,255,dato por Pot PORTB.0,100,dato para tener una escala de 0 a 100 en vez de 0 a 255.
En mí simulación sacada de la ayuda del Proton el extremo del potencio metro no va a la alimentación ya que esto afectaría a forma en que mide la función POT y los valores o del potencio metro o del capacitor lo altere de 100nF a 75nF o el pote de 10K a 7K5 para mayor exactitud en la medición.

Saludos.

Ric.
 
Hola a todos buscando informacion sobre el tema me encontre con este post quisiera conectarle a este circuito un rele , que se active al llegar a determinado valor de lectura en el potenciomtero por ejemplo al llegar al 50% se active el rele saludos
 
De los pines sobrante del pic utilizarlo para activar un rele en que parte del codigo pudiera insertar la linea de codigo para activar el rele cuando el poteciometro llegue a determinado valor leido o ejemplo 50% , veo que tu mismo lo agregaste , saludos
 
Pues si se puede. Nada más tienes que hacer la comparación y actuar en consecuencia.

con una sentencia if lo logras,
Código:
[B]if[/B](valor_leído == valor) salida_pic = 1;
                    [B]else[/B] salida_pic = 0;
Sería mejor hacer una histéresis por software para evitar una conmutación errática cuando la lectura esté en la transición.
 
Última edición:
Atrás
Arriba