Autor Tema: Presentacion + Temporizador + LCD + CCS  (Leído 4514 veces)

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

Desconectado nanodocl

  • PIC10
  • *
  • Mensajes: 4
Presentacion + Temporizador + LCD + CCS
« en: 24 de Agosto de 2010, 09:02:10 »
Buenas a todos,

Este es mi primer post, pero llevo entrando y saliendo del foro desde el año 2008 que me registré. Nunca había tenido la necesidad de postear por que solo me dedicaba a la lectura, pero me he embarcado en un proyecto del cual tengo muy poca experiencia, para no decir nula.
Necesito realizar un temporizador cuenta atrás (al segundo) para una insoladora, en el el cual debo incluir un display de 16x2, botones de UP/DOWN para aumentar y disminuir el tiempo, un boton de ENTER, y un STOP de emergencia. En este momento dispongo de un 16F84A y un 16F876A, estoy dispuesto a comprar otro si es necesario, pero he leido por ahi que con un 16F84A me valdría, quisiera saber la opinion de ustedes y que PIC me recomendarían en caso de que este no sirviera.
Por otro lado mi habilidad en la programacion es muy poca, tengo instalado MPLAB y CCS, al parecer el compilador CCS es mas intuitivo y ya he realizado el tipico programita de encender y apagar un LED, pero hasta aquí llego. No pido que me hagais el programa pero si me ayudarais a estructurar como debería plantearme la programacion. Espero haberme explicado bien, cualquier informacion será de ayuda. Gracias de antemano.

Nano

PD: He leido otros posts sobre temporizadores, pero no quiero hacer algo que ya está hecho, me gustaría aprender a hacerlo yo mismo y partir desde 0.

Desconectado 1jabato1

  • PIC10
  • *
  • Mensajes: 8
Re: Presentacion + Temporizador + LCD + CCS
« Respuesta #1 en: 24 de Agosto de 2010, 20:45:17 »
Hola nanodocl.
De novato a novato.
Creo que el 16f84 te servirá,necesitas 6 pines para el Lcd(aunque se puede hacer con menos),4 para los pulsadores y 1 para la salida hacia el relé,ten cuidado con RA4(es colector abierto).
Después de distribuir los pines,con el timer0 y su interrupción puedes decrementar una variable previamente ajustada con los pulsadores up/dowm hasta que llegue a cero y apague la insoladora,para el lcd usa las librerías de CCS y muestra esa variable como quieras.
Espero te sirva.
Un saludo!
Javi

Desconectado nanodocl

  • PIC10
  • *
  • Mensajes: 4
Re: Presentacion + Temporizador + LCD + CCS
« Respuesta #2 en: 24 de Agosto de 2010, 21:17:29 »
Hola nanodocl.
De novato a novato.
Creo que el 16f84 te servirá,necesitas 6 pines para el Lcd(aunque se puede hacer con menos),4 para los pulsadores y 1 para la salida hacia el relé,ten cuidado con RA4(es colector abierto).
Después de distribuir los pines,con el timer0 y su interrupción puedes decrementar una variable previamente ajustada con los pulsadores up/dowm hasta que llegue a cero y apague la insoladora,para el lcd usa las librerías de CCS y muestra esa variable como quieras.
Espero te sirva.
Un saludo!
Javi

Gracias por tu respuesta Javi, segun tengo entendido para el LCD necesitaría 7 pines, como se hace con 6?
Mas o menos esto es lo que quiero hacer (archivo adjunto proteus), estoy en lo correcto??

Un saludo
Nano



Desconectado 1jabato1

  • PIC10
  • *
  • Mensajes: 8
Re: Presentacion + Temporizador + LCD + CCS
« Respuesta #3 en: 24 de Agosto de 2010, 21:41:14 »
Hola.
Si solo escribes en el lcd la patilla RW se suele poner a masa,el pulsador de reset lo puedes poner en MCLR,así dispones de mas pines por si quieres poner un buzzer,esto es solo una opinión,si lo quieres dejar como esta te servirá igual.También se suele poner un potenciómetro en VEE para ajustar el contraste del lcd,es posible que solo veas cuadros negros o no veas nada tal como lo tienes.

Un saludo!
Javi.
« Última modificación: 24 de Agosto de 2010, 21:45:54 por 1jabato1 »

Desconectado nanodocl

  • PIC10
  • *
  • Mensajes: 4
Re: Presentacion + Temporizador + LCD + CCS
« Respuesta #4 en: 25 de Agosto de 2010, 00:45:38 »

Lo del reset mediante MCLR me di cuenta despues, gracias por recordarmelo. Lo del potenciómetro lo tengo en cuenta tambien, utilizaré la patilla del reset para el buzzer que mencionas.
Como debería comenzar a escribir el código para que en la pantalla LCD me aparezca un mensaje que diga que el el sistema está listo para que se le ingrese el valor del tiempo?

Gracias nuevamente

Desconectado 1jabato1

  • PIC10
  • *
  • Mensajes: 8
Re: Presentacion + Temporizador + LCD + CCS
« Respuesta #5 en: 25 de Agosto de 2010, 23:28:29 »
Hola Nano.
Tienes que incluir una librería para el lcd y estudiar sus funciones,en el foro hay mucha información al respecto,una vez que le pilles el tranquillo podrás escribir cualquier mensaje o variable en el lcd.Yo no estoy capacitado para hacerte el código.
Un saludo.
Javi.

Desconectado berlanga

  • PIC10
  • *
  • Mensajes: 5
Re: Presentacion + Temporizador + LCD + CCS
« Respuesta #6 en: 26 de Agosto de 2010, 14:40:19 »
muy buenas nano...

antes de nada decir que soy novato en programacion en c para pic (tan solo un par de semanas, pero en assembler ya van unos añitos...), pero por lo que he andado cacharreando en el IDE de ccs hay un boton en la pestaña "Project" que se llama "pic wizard", te abre una ventana para que le indiques la direccion y nombre del proyecto, una vez clicado en aceptar, se te abre otra ventana ordenada por pestañas para que le indiques todas las directivas y perifericos, desde el tipo de PIC y velocidad hasta drivers de perifericos y librerias a usar. Una vez aceptado lo prepara todo para que sea empezar a programar dentro de main(). si en "pic wizard" le has añadido el lcd en el menu lateral izq. en la pestaña files, aparecerá lcd.c o lcd.h (o las dos) no estoy seguro ahora mismo... y ahí podras ver las funciones que tiene y como se usan.

aparte, te recomiendo hechar un repaso a este post Ejemplitos C, que está muy bien. Tienes multiples ejemplos del uso de los diferentes sistemas integrados en el pic (aunque sea para un 16F648 se extrapola muy facil al 16F84.

respecto a lo que quieres empezar de 0... no te molestes mucho, yo creo que lo que importa es comprender lo que se usa, aunque sea "copiado" de otro código. En el 16F84 o cuentas por timer o por delay (prefiero la primera: mucha mas precisión)

otro consejo, pero este a tu gusto... yo quitaria el botón de enter, podrias dejar el led para indicar que esta insolando, poner un buzzer para indicar que ha acabado y el enter podria ser presionando up y down a la vez (se hace por codigo)

y una pregunta ¿el lcd es retriluminado? ....

y otra cosilla... (que pesado soy...  :oops:) a lo mejor la distribución del PORTB no es la mas indicada para el lcd... pero eso tendria que comprobarlo... lo miro y luego te digo... que ahora no estoy en casa


EDICION: y una cosa que he visto al cerrar el proteus... si el botón de stop es de emergencia lo pondria a la interrupción externa (RB0) y gestionaría la interrupción.... o incluso lo suprimiría y usaría el mismo de reset, ya que al presionar el reset se pararía el proceso y volvería a pedir el tiempo, cosa que hará de igual manera al recibir el micro un reset

siento el tochopost... y mucha suerte en el proyecto.
« Última modificación: 26 de Agosto de 2010, 14:58:47 por berlanga »

Desconectado nanodocl

  • PIC10
  • *
  • Mensajes: 4
Re: Presentacion + Temporizador + LCD + CCS
« Respuesta #7 en: 26 de Agosto de 2010, 21:10:18 »
Buenas berlanga

Cita de: berlanga
muy buenas nano...
antes de nada decir que soy novato en programacion en c para pic (tan solo un par de semanas, pero en assembler ya van unos añitos...)

Eso ya es una gran ventaja, yo tambien hago algunas cosillas en assembler, pero hace casi 10 años que no tocaba un PIC y bueno, lo que se aprende se olvida  :mrgreen:.

Cita de: berlanga
pero por lo que he andado cacharreando en el IDE de ccs hay un boton en la pestaña "Project" que se llama "pic wizard", te abre una ventana para que le indiques la direccion y nombre del proyecto, una vez clicado en aceptar, se te abre otra ventana ordenada por pestañas para que le indiques todas las directivas y perifericos, desde el tipo de PIC y velocidad hasta drivers de perifericos y librerias a usar. Una vez aceptado lo prepara todo para que sea empezar a programar dentro de main(). si en "pic wizard" le has añadido el lcd en el menu lateral izq. en la pestaña files, aparecerá lcd.c o lcd.h (o las dos) no estoy seguro ahora mismo... y ahí podras ver las funciones que tiene y como se usan.

Esto si que se ve prometedor, le echaré un vistazo y te comento que tal me va. Gracias por el dato.

Cita de: berlanga
aparte, te recomiendo hechar un repaso a este post Ejemplitos C, que está muy bien. Tienes multiples ejemplos del uso de los diferentes sistemas integrados en el pic (aunque sea para un 16F648 se extrapola muy facil al 16F84.

De ese post he cogido varias cosas, la verdad es que es muy educativo, de hecho me compré un 16f648 solo para enredar con aquellos ejemplos.
Cita de: berlanga

respecto a lo que quieres empezar de 0... no te molestes mucho, yo creo que lo que importa es comprender lo que se usa, aunque sea "copiado" de otro código. En el 16F84 o cuentas por timer o por delay (prefiero la primera: mucha mas precisión).

Aquí es donde está el problema y es que no se como plantearme bien el problema, siempre he sido de electrónica analógica, lo digital me va poco, aunque me defiendo. No se como debería plantearme la programacion. Si partir con el código de la pantalla, lalectura de las entradas, las dos cosas a la vez? En este sentido creo0 que me falta formacion o instruccion.  :oops:

Cita de: berlanga
otro consejo, pero este a tu gusto... yo quitaria el botón de enter, podrias dejar el led para indicar que esta insolando, poner un buzzer para indicar que ha acabado y el enter podria ser presionando up y down a la vez (se hace por codigo).

La verdad es que sí, muy buena idea, no lo había pensado así.

[quote autor=berlanga]y una pregunta ¿el lcd es retriluminado? ....[/quote]

Si es retroilimunado AZUL.

Cita de: berlanga
y otra cosilla... (que pesado soy...  :oops:) a lo mejor la distribución del PORTB no es la mas indicada para el lcd... pero eso tendria que comprobarlo... lo miro y luego te digo... que ahora no estoy en casa

Ahi si que me pillas, ni idea, yo lo pude el el B por que leí por ahí que el CCS utilizaba el LCD en el puerto B, aunque creo que se puede modificar, pero vamos que ahi si que me quedo mas que corto.

Cita de: berlanga
EDICION: y una cosa que he visto al cerrar el proteus... si el botón de stop es de emergencia lo pondria a la interrupción externa (RB0) y gestionaría la interrupción.... o incluso lo suprimiría y usaría el mismo de reset, ya que al presionar el reset se pararía el proceso y volvería a pedir el tiempo, cosa que hará de igual manera al recibir el micro un reset

Lo había pensado como un pause, aunque no es realmente necesario. Creo que lo voy a eliminan y asi hacerlo mas simple, auque creo que conservaré el ENTER, mas que necesari es intuitivo.

Cita de: berlanga
siento el tochopost... y mucha suerte en el proyecto.

Me has ayudado mucho, asi que muchas gracias  :).
Un saludo

Desconectado berlanga

  • PIC10
  • *
  • Mensajes: 5
Re: Presentacion + Temporizador + LCD + CCS
« Respuesta #8 en: 28 de Agosto de 2010, 15:35:37 »
perdona los dos dias de retraso...

pues creo que ahora lo que deberías de hacer, una vez teniendo un poco claro el hardware, es un  esquema de bloques de lo que tiene que hacer el programa. una vez hecho eso, "traducir" ese diagrama a la programacion es facil.

yo en tu caso, primero haria los ajustes iniciales como poner a 0 las salidas, para evitar estados de incertidumbre al arrancar, y los valores iniciales en el lcd ( configuracion como si vas a usar 1 o 2 lineas, la comunicacion con 4 u 8 hilos... etc) despues que el lcd muestre algo parecido a "tiempo:  0:00" y esperar a que se pulse up o down o enter.Si se aprieta up o down baja o sube el tiempo y si se aprieta enter que inicie el timer0 contando de un segundo en un segundo. cuando se llegue al número de segundos que aparezcan en el display, que apague la salida de rigor y que pite el buzzer. y de ahí, a volver al principio...

espero haberte servido de ayuda y ya nos contarás.

¿que ide estas usando? porque si no sabes mucho de programación en c, existe el nipple: dibujas configuras, dibujas el esquema de bloques y compilas. ademas de que tiene soporte para lcd. Es un programa que se maneja de una manera muy intuitiva.

un saludo