TODOPIC

Microcontroladores PIC => - Niple - => Mensaje iniciado por: brunobal en 08 de Febrero de 2012, 13:28:24

Título: temporizador por entrada analogica
Publicado por: brunobal en 08 de Febrero de 2012, 13:28:24
hola amigos estoy diseñando un programa para el pic 16f876 que mediante un potenciometro que conecto en ra0 como entrada analogica hago que cambien la velocidad de parpadeo de ub diodo led que conecto en rb0.

lo primero que hago es configurar ra0 como entrada analogica luego activo el conversor ad, luego comfiguro rb0 como salida y ahora no se como crear el temporizador para que me encienda el led y lo apage.
Título: Re: temporizador por entrada analogica
Publicado por: Fer_TACA en 08 de Febrero de 2012, 16:31:00
A la derecha en el arbol de herramientas tienes la opcion de "temporizadores"
Luego puedes elegir por ejemplo: tiempo por ciclos y a continacion tiempo variable. Al seleccionar esta ya te va pidiendola variable,(si es un valor directo o el contenido en un registro, como es tu caso. A finalizar la base de tiempos.
Título: Re: temporizador por entrada analogica
Publicado por: brunobal en 09 de Febrero de 2012, 14:15:36
hola de nuevo fermin. he estado mirando lo que me explicaste pero cuando selecciono el tiempo variable me dice que selecione un registro y cuando activo la conversion ad me dice que nombre dos registros donde guardar los datos de la combercion. cual de estos dos registros pongo cuando selecciono el tiempo variable. me puedes poner un ejemplo en niple 5.2 ke es la version que utilizo. gracias un saludo
Título: Re: temporizador por entrada analogica
Publicado por: henryflash en 09 de Febrero de 2012, 18:46:52
hola: te cuento como hago yo, genero dos registros para el AD un lo llamo xxxh y el otro xxxl luego a esos dos registros los convierto con lu funcion escalar en 0 a 100
y ese nuevo registro lo uso para el temporizador. espero que te sirva.
Saludos enrique
Título: Re: temporizador por entrada analogica
Publicado por: henryflash en 09 de Febrero de 2012, 19:46:04
hola: te cuento como hago yo, genero dos registros para el AD un lo llamo xxxh y el otro xxxl luego a esos dos registros los convierto con lu funcion escalar en 0 a 100
y ese nuevo registro lo uso para el temporizador. espero que te sirva.
Saludos enrique
hola , me olvide de algo, ¿porque no elegiste el AD de 8 bit? igual esta bueno escalarlo, por estetica....
saludos...
Título: Re: temporizador por entrada analogica
Publicado por: Fer_TACA en 10 de Febrero de 2012, 07:00:20
Al elegir el Ad de 8 bits, solo necesitas un registro para guardar el valor de la conversion. Ese registro es el que debes utilizar como base d etiempos para el temporizador.

En la web de niple, tienes resumido la forma de utilizar el conversor y el temporizador.

Con eso tiene que serte suficiente para que realiezes lo que quieres.

F.
Título: Re: temporizador por entrada analogica
Publicado por: brunobal en 10 de Febrero de 2012, 11:54:37
hola fermin he realizado una prueba aver si he entendido lo ke me has explicado, yo la he realizado con la version 5.2.gracias y un saludo
Título: Re: temporizador por entrada analogica
Publicado por: Fer_TACA en 10 de Febrero de 2012, 14:21:31
Este finde ando un poco agobiadillo.
Se casa mi hijo tengo que preparar(comprar) traje, regalos,etc
Pero en cuanto saque un rato lo compruebo
Título: Re: temporizador por entrada analogica
Publicado por: Fer_TACA en 12 de Febrero de 2012, 16:07:15
Hola bruno,

por fin tuve un momento de rekax y dedicarme a los pics. ;-)
Lo que has realizado es lo mque te expliqué y para empezar y entender el funcionamiento lo has clavado.

F.
Título: Re: temporizador por entrada analogica
Publicado por: brunobal en 08 de Mayo de 2012, 20:17:18
hola fermin he estado probando el programa en un pic real y no me funciona. aver si puedes pasarme un ejemplo con niple 5.2 ke es la version ke yo uso. gracias
Título: Re: temporizador por entrada analogica
Publicado por: brunobal en 09 de Mayo de 2012, 20:31:07
hola a todos. he conseguido k funcione pero no se como aumentar la escala de tiempos y no se si cambiando el potenciometro ira mejor o no yo le he puesto uno de 100k. ademas tengo un pequeño problema y es ke cuando le giro el potenciometro acia un lado el led se me keda encedido y se keda como blokeado lo tengo ke riniciar para k buelva a funcionar. aver si podeis echar una mano. gracias
Título: Re: temporizador por entrada analogica
Publicado por: Fer_TACA en 10 de Mayo de 2012, 01:56:23
Lo mejor es que adjuntes el esquema, para ver la forma de ampliar la escala.
Por otra parte como has modificado bastante el programa, me supongo, deberias de adjuntarlo tambien.

F.

Título: Re: temporizador por entrada analogica
Publicado por: vesperia en 10 de Mayo de 2012, 12:57:49
Hola, brunobal!

Supongo q por lo q comentás ya corregiste el problema del 1er programa q subiste (solamente hacías la conversión AD al principio! tenés q meterla adentro del bucle, sinó el led va a quedar intermitente siempre a la misma frecuencia). Cambiar el pote no creo q te ayude en nada. No se q escala estás usando actualmente, pero podés convertir el valor q guardás en tiempo_1 (que va de 0 a 255) a la escala q quieras usando la función "escalar" de las rutinas matemáticas. Para periodos menores de 20 mS (50 Hz) casi no vas a notar una diferencia en el led, te va a parecer q esta siempre encendido. Yo lo q haría es usar en tiempo_1 la función "comparar" para escalar en mS valores por debajo de determinado número, y escalar en segundos los restantes hasta el valor q quieras. Te subiría un ejemplo, pero tengo niple 5.6. Te sugiero lo mismo q Fer, subí el esquema y el último programa q hiciste, así de paso vemos xq se cuelga.

Saludos!
Título: Re: temporizador por entrada analogica
Publicado por: brunobal en 12 de Mayo de 2012, 10:08:37
aki os dejo el programa y el circuito aver si me podeis echar una mano y me `podeis explicar como poder variar la temporizacion de entre 1 y 10 minutos por ejemplo gracias
Título: Re: temporizador por entrada analogica
Publicado por: vesperia en 14 de Mayo de 2012, 13:22:35
pregunta: no te convendra mas usar un solo registro y hacer una lectura de 8 bit? si temporizas en segundos podes tener desde un pulso cada 2 segundos hasta un pulso cada 8 minutos y medio
Título: Re: temporizador por entrada analogica
Publicado por: Fer_TACA en 14 de Mayo de 2012, 16:55:34
Porque no en el adc lo  realizas con 10bits, justificado a al derecha, con esto te quedan los 6 bits mas altos del registros ADRESH = 0.
Con esto tendras un tiempo determinado y si es corto vas rotando los bits hacia la izquierda, con esto si no me equivoca vas multiplicando el tiempo x2 cada vez que rotas un bit.

F.