TODOPIC
Microcontroladores PIC => - Niple - => Mensaje iniciado 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.
-
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.
-
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
-
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: 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...
-
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.
-
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
-
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
-
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.
-
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
-
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
-
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.
-
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!
-
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
-
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
-
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.