Autor Tema: parpadeo leds- temporizado con pic10f200  (Leído 3472 veces)

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

Desconectado JosepTerol

  • PIC10
  • *
  • Mensajes: 5
parpadeo leds- temporizado con pic10f200
« en: 04 de Junio de 2014, 05:22:24 »
Muy buenas a todos

Este sistema lo quiero implementar en una maqueta, el funcionamiento es muy sencillo pero no carezco de suficientes conocimientos para realizarlo adecuadamente.


La idea es que mediante un pulsador me parpadee un led durante 5 segundos a una frecuencia de 0.5Hz  (2 parpadeos por segundo).

El primer inconveniente que encuentro es que esto tiene que ir a una exposición y alimentado a pilas, con lo que nadie lo desconectara por la noche.
Sería necesario adaptar la pic a un estado de mínimo consumo cuando no recibe señal, creo que se le llama durmiente.

Voy muy perdido con el tema de pic, ya que a lo máximo que llego es a Arduino pero por un tema de coste de estas placas se me dispara.

He pensado utilizar la PIC 10F200, que creo que es la más económica que existe.

Si alguien tiene algún programilla similar os lo agradezco

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: parpadeo leds- temporizado con pic10f200
« Respuesta #1 en: 05 de Junio de 2014, 14:45:29 »
Normalmente aqui no hacemos trabajos, mas bien ayudamos a hacerlos, sin embargo comprendo que si solo quieres hacer un trabajillo para tu hija no te vas a poner a aprender. Por tanto si lo que quieres es el esquema y el programa, te lo pongo yo mañana o este fin de semana.

Lo que si tendras que tener es para grabar el PIC y algunos conocimientos para montar el circuito, no muchos ya que son un par de resistencias un PIC y un LED y las tres pilas.

Desconectado JosepTerol

  • PIC10
  • *
  • Mensajes: 5
Re: parpadeo leds- temporizado con pic10f200
« Respuesta #2 en: 06 de Junio de 2014, 04:18:30 »
Agradecido.

Las pruebas las he realizado con arduino y funciona perfectamente, si alguien le puede interesar puedo colgar el programa y conexionado.

estoy intentando hacer algo con PIC, pero por falta de conocimientos y en este caso de tiempo, ya que el fin de curso esta a la vuelta de la esquina, me será imposible.

No entiendo como es tan sensicllo cualquier programa con Arduino y Pinguino y programar un fincionamiento directo en una pic es tan complejo.

Espero que algún dia alguien pueda realizar un convensor, creo que nos abrirá muchas puertas a los que no tenemos conocimientos

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: parpadeo leds- temporizado con pic10f200
« Respuesta #3 en: 06 de Junio de 2014, 05:39:51 »
Para nada es complicado, programar en Arduino se parece mucho a hacerlo en ccs
mira este post, es con un pic diferente, pero la base es lo mismo
http://www.todopic.com.ar/foros/index.php?topic=4530.0

por cierto, para los moderadores... Podríais colocar una chincheta al post al que hago mención ya que creo que es de gran utilidad
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: parpadeo leds- temporizado con pic10f200
« Respuesta #4 en: 06 de Junio de 2014, 06:52:59 »
Citar
Para nada es complicado, programar en Arduino se parece mucho a hacerlo en ccs
mira este post, es con un pic diferente, pero la base es lo mismo
http://www.todopic.com.ar/foros/index.php?topic=4530.0

Si cierto es lenguaje C tanto en uno como en otro.

Citar
por cierto, para los moderadores... Podríais colocar una chincheta al post al que hago mención ya que creo que es de gran utilidad

Ya esta con chincheta en el foro de C en los cursos, creo.

Citar
He pensado utilizar la PIC 10F200, que creo que es la más económica que existe.

No me extraña que sea barato, no tiene de nada  :D :D ni vector de interrupciones, ni registro TRIS, ni registro OPTION, por no tener ni siquiera tiene las instrucciones RETURN ni RETFIE hay que arreglarse con RETLW  :lol: :lol: Pero todas las incomodidades que tiene lo suple en el precio, es un buen PIC para hacer cosas de muy bajo coste (0,31$, precio Microchip), la verdad que nunca lo habia programado y me volvi un poco loco, espero que funcione bien.



Código: [Seleccionar]
; **** Encabezado ****
list p=10F200
#include P10F200.inc

__CONFIG 0FFB ;__CONFIG   _CP_OFF & _WDT_OFF & _MCLR_ON




CBLOCK 0X10 ;definimos donde empiezan los registros de RAM

PDel0
PDel1
CONTADOR

ENDC

#DEFINE PULSADOR GPIO,1 ;definimos los pines a usar
#DEFINE LED GPIO,0 ;los puedes cambiar si quieres


ORG 0x00 ;cuando haya interrupcion tambien vendra aqui, ya que este PIC no tiene
GOTO INICIO ;vector de interrupciones.

INICIO

MOVLW 0X3F ;para configurar la interrupcion por cambio de estado
OPTION ;se usa la instruccion "OPTION", ya que el registro OPTION no existe fisicamente

MOVLW 0X7E
MOVWF OSCCAL

MOVLW 0X02 ;configuramos GPIO,1 como entrada, para pulsador
TRIS GPIO ;se usa la instruccion "TRIS" ya que el registro TRIS no esta implementado fisicamente

BTFSC STATUS,GPWUF ;chequeamos el bit STATUS,GPWUF, este flag indica que hubo un cambio en GP0, GP1 o GP3
GOTO ISR ;si el FLAG esta a 1, haremos la secuencia de encendido y apagado del LED

DORMIR

SLEEP ;aqui estara hasta que una pulsacion lo despierte
GOTO DORMIR


;***********En el ISR no se hacen copias de respaldo de registros, porque solo hay este programa, no hace nada mas***************
;***********Realmente no es una interrupcion, o si, ya no lo se, pero no se puede volver con un RETFIE, no existe****************
;***********Tampoco tiene la instruccion "RETURN" solo tiene "RETLW", MPLAB si pones RETURN lo sustutiye por RETLW***************

ISR

BCF STATUS,GPWUF ;borramos flag de "interrupcion" por cambio de estado
BTFSC PULSADOR ;esperamos hasta que se suelte el pulsador
GOTO ISR

ISR_1

BSF LED ;encendemos el led
CALL DEMORA ;llamamos retardo de 500mS
BCF LED ;apagamos led
CALL DEMORA ;llamamos retardo de 500mS
INCF CONTADOR,1 ;para contar 5 veces esta secuencia
MOVLW .5 ;cambiando este numero se cambia el numero de veces que realiza la secuencia
SUBWF CONTADOR,0
BTFSS STATUS,Z ;comprobamos que llego a 5, STATUS,Z=FLAG 0
GOTO ISR_1 ;no llego a 5, repite secuencia
CLRF CONTADOR
GOTO INICIO ;llego a 5, acaba secuencia, no se puede poner un RETFIE
;porque no existe y se pierde el programa, tampoco existe RETURN, SOLO RETLW

DEMORA 

movlw     .239      ; 1 set numero de repeticion  (B)
        movwf     PDel0     ; 1 |
PLoop1  movlw     .232      ; 1 set numero de repeticion  (A)
        movwf     PDel1     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
PDelL1  goto PDelL2         ; 2 ciclos delay
PDelL2  goto PDelL3         ; 2 ciclos delay
PDelL3  clrwdt              ; 1 ciclo delay
        decfsz    PDel1, 1  ; 1 + (1) es el tiempo 0  ? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) es el tiempo 0  ? (B)
        goto      PLoop1    ; 2 no, loop
PDelL4  goto PDelL5         ; 2 ciclos delay
PDelL5  goto PDelL6         ; 2 ciclos delay
PDelL6  goto PDelL7         ; 2 ciclos delay
PDelL7  clrwdt              ; 1 ciclo delay
        RETLW              ; 2+2 Fin.

END


Cuando se presiona el pulsador, sale de SLEEP y al soltarlo realiza la secuencia.

Esta hecho con el esquema adjunto, la resistencia de 330 si ves que alumbra poco bajasela un poco, pero no mucho si no cascara el LED.

Si quieres puedes ponerle otro LED (arreglariamos el programa) y se podrian hacer unos juegos de luces mas vistosos.


 

anything