Luz por detector de movimiento y crepuscular Senpir

Hola:

Estoy diseñando un pequeño proyecto sobre sensor de luz y de movimiento. Para lo que lo voy a usar me parece mucho usar el famoso 16F84A. Tengo pensado en usar el 12F509, ya que sólo en el proyecto voy a usar una LDR para un pin de entrada al PIC y otro sensor de movimiento o proximidad que también usa otro pin de entrada, en cambio a su salida, sólo una un pin para un relé.

Lo bueno del 12F509 es que usa un oscilador interno con lo que me ahorra componentes externos y su tamaño del PIC es de 8 pines.

Mi preocupación es, que mirando bien la hoja de datos o datasheet como que solo tiene un puerto. Con esto quiero decir que no se si se puede configurar como dos pines de entrada y una de salida del mismo puerto.

Sensor PIC que voy a usar:
555-28027.jpg


http://ww1.microchip.com/downloads/en/DeviceDoc/41236D.pdf

¿Qué opinan?
 
hola
cuando configuras las entradas o salidas de un puerto no solo se puede realizar con el puerto completo, sino que tambien puedes configurarlo bit a bit segun tus necesidades.

Código:
 movlw b'10000'        ;RA4 entrada, resto salidas. 0=salida, 1=entrada
 movwf   TRISA             ;lo tranfiere al puerto A
 movlw    b'11110000'  ;RB4 a RB7 como entrada, RB0 a RB3 como salidas. 
 movwf   TRISB
 
Gracias.

Fijándome bien en los datasheet, se llaman GP0..GP5. Aún así primero lo hago para el 16F84A ya que uso el TE20x y no se si el 12F509 sirve par ello. Luego adapto si no hay complicaciones el programa del 16F84A al 12F509.

Gracias de nuevo por la explicación. Si alguien quiere opinar algo, adelante.
 
Hola:

Hace dos años que tengo el mini-proyecto hecho con la fecha de acabado ahora. Es muy simple, sólo que estaba aprendiendo a manejar el PIC por dentro. Nada del otro mundo.

Interruptor crepuscular y de movimiento microcontrolado documentado paso a paso.

Este documento te enseña a crear un dispositivo electrónico con un circuito capaz de encender la luz al caer la noche y de apagarla al salir el sol.

Es un proyecto pensado para cualquier tipo de uso, ya sea el poder tener luz de un lado al otro de una casa sin necesidad de tocar el interruptor, hasta el activado de una alarma en caso de detección de intrusos.

http://www.abcdatos.com/tutoriales/tutorial/v875.html

Ver.

Saludo.
 
Última edición:
tengo una consulta acerca de este proyecto, la verdad no se mucho de pic, he estado intentando hacer que la lampara se mantenga encendida solo 20 seg pero no se en que parte del programa debo hacer el cambio
 
Código:
; Delay = 20 seconds
; Clock frequency = 4 MHz

; Actual delay = 20 seconds = 20000000 cycles
; Error = 0 %

	cblock
	d1
	d2
	d3
	endc

Delay
			;19999992 cycles
	movlw	0xB5
	movwf	d1
	movlw	0x99
	movwf	d2
	movlw	0x2C
	movwf	d3
Delay_0
	decfsz	d1, f
	goto	$+2
	decfsz	d2, f
	goto	$+2
	decfsz	d3, f
	goto	Delay_0

			;4 cycles
	goto	$+1
	goto	$+1

			;4 cycles (including call)
	return
 
Hola a todos. modifique el programa para que la lampara solo encienda 20 seg. Pero no se si lo hice bien si alguien pudiera revisarlo y darme su opinion lo agredeceria. Ah! tambien tengo una duda sobre el cto. ¿ que es lo que hay entre el pic y el cristal? no he podido decifrar lo que hay. Ahora va el programa para que lo vean:

Código:
LIST  P=116F84A
INCLUDE P16F84A.INC
  ;VERSION DEL PROGRAMA
CBLOCK 0X0C
ENDC
#DEFINE  LED_VERDE PORTA,0  ;LED VERDE INDICA OPCION LDR SELECCIONADA
#DEFINE  LED_ROJO PORTA,1  ;LED ROJO INDICA OPCION PIR SELECCIONADA
#DEFINE  LED_AZUL PORTA,2  ;LED AZUL INCICA QUE EL RELE ESTA ACTIVADO
#DEFINE  LAMPARA  PORTA,3  ;LAMPARA
#DEFINE  PIR  PORTB,1  ;SENSOR PIR
#DEFINE  LDR  PORTB,3  ;SENSOR LDR
#DEFINE  INT_RB4  PORTB,4  ;INTERRUPTOR RB4
#DEFINE  INT_RB5  PORTB,5  ;INTERRUPTOR RB5
#DEFINE  INT_RB6  PORTB,6  ;INTERRUPTOR RB6
#DEFINE  INT_RB7  PORTB,7  ;INTERRUPTOR RB7

;CODIGOS
  ORG 0
  BSF STATUS,RP0  ;ACCEDE AL BANCO 1
  CLRF PORTA   ; PUERTO A COMO SALIDA
  MOVLW 0XFF   ;PUERTO B COMO ENTRADA
  MOVWF PORTB
  BCF  STATUS,RP0  ; ACCEDE AL BANCO CERO
  CLRF PORTA   ; SUPUESTAMENTE LAMPARA APAGADA
OPCION_PRINCIPAL
 BTFSS INT_RB4    ;¿RB4 ES 1?¿ESTA ACTIVADO?
 GOTO OPCION_LDR   ;NO ACTIVA MODO LDR
 GOTO OPCION_PIR   ;SI ACTIVA MODO PIR
;INTERRUPTOR CREPUSCULAR LDR
OPCION_LDR
 BCF LED_ROJO    ;SE APAGA LED ROJO
 BSF LED_VERDE    ;SE ENCIENDE LED VERDE INDICANDO MODO LDR ACTIVADO
 BTFSS LDR    ;¿LDR=1?¿LDR EN 
 GOTO APAGA_LA_LAMPARA
ENCIENDE_LA_LAMPARA
 CALL RETARDO_20_SEG
 BTFSS LDR
 GOTO OPCION_PRINCIPAL
APAGA_LA_LAMPARA
 CALL RETARDO_20_SEG
 BTFSC LDR
 GOTO OPCION_PRINCIPAL
 BCF LAMPARA
 BCF LED_AZUL
 GOTO OPCION_PRINCIPAL
;DETECTOR DE MOVIMIENTO
OPCION_PIR
 BCF LED_VERDE
 BSF LED_ROJO
 BTFSS LDR
 GOTO LAMPARA_OFF
 BTFSS PIR
 GOTO LAMPARA_OFF
LAMPARA_ON
 BSF LAMPARA
 BSF LED_AZUL
 BTFSS INT_RB5
 GOTO  RB6
 CALL RETARDO_20_SEG
RB6
 BTFSS INT_RB6
 GOTO RB7
 CALL  RETARDO_20_SEG
RB7 BTFSS INT_RB7
 GOTO OPCION_PRINCIPAL
LAMPARA_OFF
 BCF LAMPARA
 BCF LED_AZUL
 GOTO OPCION_PRINCIPAL
;SUBRUTINA
;RETARDO DE 20 SEGUNDOS
RETARDO_20_SEG
 cblock
 d1
 d2
 d3
 endc
Delay
   ;19999992 cycles
 movlw 0xB5
 movwf d1
 movlw 0x99
 movwf d2
 movlw 0x2C
 movwf d3
Delay_0
 decfsz d1, f
 goto $+2
 decfsz d2, f
 goto $+2
 decfsz d3, f
 goto Delay_0
   ;4 ciclos
 goto $+1
 goto $+1
   ;4 ciclos (incluyendo call)
 return
 END
 
Última edición por un moderador:
Atrás
Arriba