Autor Tema: Control de reles a distancia mediante IR  (Leído 16356 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado BLACKPIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 129
RE: Control de reles a distancia mediante IR
« Respuesta #45 en: 13 de Agosto de 2004, 22:20:00 »
hola a todos los del foro no soy muy experto en esto de los PIC pero quise ayudar en algo.. amigo CARLETE 71 A QUI TE DOY ESTA PAG. A VER SI TE SIRVE en algo AMIGO...... Y GRACIAS POR AYUDARME...

http://www.geocities.com/electronic_death/circuitos.htm



SALUDOS PARA TODOS DESDE Republica Dominicana...
Saludo desde Rep.Dom ( BLACKPIC )..
La ciencia es el arte del ensayo y el error, su producto más importante es la razón...

Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: Control de reles a distancia mediante IR
« Respuesta #46 en: 13 de Agosto de 2004, 22:25:00 »

Gracias Novato

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Control de reles a distancia mediante IR
« Respuesta #47 en: 14 de Agosto de 2004, 00:59:00 »
Novato, no puedo ver la página que has publicado. Dice que está suspendida por inactividad.

¿Tú has podido, Carlete?

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Control de reles a distancia mediante IR
« Respuesta #48 en: 14 de Agosto de 2004, 03:11:00 »
Después de leer el post me he dibujado el esquemilla con los cálculos para un paso banda por si os puede interesar para filtrar el asunto.
Si a alguno le interesa,que me lo diga y se lo mando al privado.
Un saludo

Desconectado Leonsport

  • PIC12
  • **
  • Mensajes: 88
RE: Control de reles a distancia mediante IR
« Respuesta #49 en: 14 de Agosto de 2004, 06:03:00 »
Me parece buena tu idea, pero yo simplificaria  mas esos circuitos.
salu222

Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: Control de reles a distancia mediante IR
« Respuesta #50 en: 14 de Agosto de 2004, 06:13:00 »
Escrito originalmente por nocturno66
Novato, no puedo ver la página que has publicado. Dice que está suspendida por inactividad.

¿Tú has podido, Carlete?


Si Manolo, lo que pasa con esa página es que aveces la puedes ver y otras veces no. Es muy buena porque tiene muchos esquemas. Lo que te recomiendo es que cuando tengas suerte de que esté activa, bájate todo lo que te interese por que es muy inestable.

Saludos,

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Control de reles a distancia mediante IR
« Respuesta #51 en: 14 de Agosto de 2004, 07:08:00 »
Queria decir cada 300us,esto en los primeros pulsos, luego tendria que ser un poco mas. En cuanto al hard del emisor, yo lo dejaria asi.

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Control de reles a distancia mediante IR
« Respuesta #52 en: 14 de Agosto de 2004, 15:14:00 »
Estoy aciendo el soft para el emisor y me ha surgido una duda, como lo hago para que cuando x ejemplo mande el pulso para encender el primer rele salga un 1 en el display.

He echo esto y no me rula, seguramente me he liado con el mov y sus variables.

ahi va el codigo.

Codigo:


RELE1
   bsf      PORTB,7            ;Emite un pulso poritivo por RB1
   call   Retardo_500micros   ;de 500 micro segundos de longitud
   bcf      PORTB,7            ;Termina de enviar el pulso
   movlw   b"00001"         
   movwf   PORTA            ;Muestra un 1 en el display
   call   Retardo_5s         ;durante 5 segundos
   movlw   b"00000"
   movwf   PORTA            ;vuelve a poner el display a 0.


Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: Control de reles a distancia mediante IR
« Respuesta #53 en: 14 de Agosto de 2004, 15:27:00 »
Definiste bien los bits de entrada y los de salida?

No le veo nada raro a la rutina que colocaste, claro que tal vez por no estar completa pede ser que no se vea el error. Los mov me parecen bien. Claro que no se si estarán bien las subrutinas de retardo.

Las ultimas dos instrucciones las puedes cambiar por un

clrf   porta

Tal vez sería bueno que coloques el programa completo.

Una pregunta, lo estás simulando con algún software??

Saludos,

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Control de reles a distancia mediante IR
« Respuesta #54 en: 14 de Agosto de 2004, 15:43:00 »
Estoy simulando con proteus. Pero no se si fiarme mucho porque ningun programa que tenga pulsadores me rula bien en proteus, luego en protoboard si k rulan.

Ahi va lo que tengo del programa.

Codigo:

;******************************************Emisor IR.asm*************************************
;
; El programa testea el estado de los pulsadores conectados a RB0:RB6 y emite un pulso durante
; un periodo de tiempo determinado en RB7
;

;ZONA DE DATOS*******************************************************************************

   LIST   P=16F84         ;El ucontuolador utilizado
   INCLUDE   "p16f84.inc"   ;Define los registros mas utilizados


;ZONA DE CODIGOS*****************************************************************************

   ORG      0            ;El programa empieza en la direccion 0

INICIO
   bsf      STATUS,RP0      ;Me situo en el banco 1
   clrf   TRISA         ;Puerto A configurado como salida
   movlw   b"11111110"      ;RB0:RB6 configurado como entrada, RB7 configurado como salida
   movwf   TRISB         
   bcf      STATUS,RP0      ;Acceso al banco 0
   
TESTEA
    btfss   PORTB,0         ;Testea RB0, si=1 se salta la siguiente instruccion
    goto   RELE0         ;Si RB0=0 va a RELE0
    btfss   PORTB,1         ;Testea RB1, si=1 se salta la siguiente instruccion   
    goto   RELE1         ;Si RB1=0 va a RELE1
   btfss   PORTB,2         ;Testea RB2, si=1 se salta la siguiente instruccion
   goto   RELE2         ;Si RB2=0 va a RELE2
    btfss   PORTB,3         ;Testea RB3, si=1 se salta la siguiente instruccion   
    goto   RELE3         ;Si RB3=0 va a RELE3
   btfss   PORTB,4         ;Testea RB4, si=1 se salta la siguiente instruccion
   goto   RELE4         ;Si RB4=0 va a RELE4
   btfss   PORTB,5         ;Testea RB5, si=1 se salta la siguiente instruccion
   goto   RELE5         ;Si RB5=0 va a RELE5
    btfss   PORTB,6         ;Testea RB6, si=1 se salta la siguiente instruccion   
    goto   RELE6         ;Si RB6=0 va a RELE6
    goto   TESTEA         ;Vuelve a testear las entradas
   
;PULSOS PARA LA ACTIVACION DE LOS RELES****************************************************

RELE0
   bsf    PORTB,7            ;Emite un pulso positivo por RB7
   call   Retardo_200micros   ;de 200 micro segundos de longitud
   bcf      PORTB,7            ;Deja de emitir el pulso
   goto   TESTEA            ;Vuelve a testear los pulsadores
   
RELE1
   bsf      PORTB,7            ;Emite un pulso poritivo por RB7
   call   Retardo_500micros   ;de 500 micro segundos de longitud
   bcf      PORTB,7            ;Termina de enviar el pulso
   movlw   b"00001"         
   movwf   PORTA            ;Muestra un 1 en el display
   call   Retardo_5s         ;durante 5 segundos
   movlw   b"00000"
   movwf   PORTA            ;vuelve a poner el display a 0.
   goto   TESTEA
   
RELE2
RELE3
RELE4
RELE5
RELE6

   INCLUDE <RETARDOS.INC>   
   END




Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: Control de reles a distancia mediante IR
« Respuesta #55 en: 14 de Agosto de 2004, 16:21:00 »

Piriots, si quieres pon el archivo .asm completo para poder simularlo ya que me da "n" errores por variables no definidas, etc.

Saludos,

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Control de reles a distancia mediante IR
« Respuesta #56 en: 14 de Agosto de 2004, 18:21:00 »
En cuanto tenga el programa acabado lo posteo, lo de las variables no definidas debe ser porque no tienes la libreria de subrutinas que uso yo, porque lo he compilado y no tengo ningun problema con las variables.

Salu2

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Control de reles a distancia mediante IR
« Respuesta #57 en: 14 de Agosto de 2004, 18:51:00 »
En el otro post, el ultimo include que no sale es INCLUDE "RETARDOS.INC"La libreria de retardos es esta:
Codigo:
;**************************** Librería "RETARDOS.INC" *********************************;;   ===================================================================;     Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS";     E. Palacios, F. Remiro y L. López.;      Editorial Ra-Ma.  www.ra-ma.es;   ===================================================================;; Librería con múltiples subrutinas de retardos, desde 4 microsegundos hasta 20 segundos. ; Además se pueden implementar otras subrutinas muy fácilmente.;; Se han calculado para un sistema microcontrolador con un PIC trabajando con un cristal; de cuarzo a 4 MHz. Como cada ciclo máquina son 4 ciclos de reloj, resulta que cada; ciclo máquina tarda 4 x 1/4MHz = 1 µs.;; En los comentarios, "cm" significa "ciclos máquina".;; ZONA DE DATOS *********************************************************************   CBLOCK   R_ContA            ; Contadores para los retardos.   R_ContB   R_ContC   ENDC;; RETARDOS de 4 hasta 10 microsegundos ---------------------------------------------------;; A continuación retardos pequeños teniendo en cuenta que para una frecuencia de 4 MHZ,; la llamada a subrutina "call" tarda 2 ciclos máquina, el retorno de subrutina; "return" toma otros 2 ciclos máquina y cada instrucción "nop" tarda 1 ciclo máquina.;Retardo_10micros            ; La llamada "call" aporta 2 ciclos máquina.   nop            ; Aporta 1 ciclo máquina.   nop            ; Aporta 1 ciclo máquina.   nop            ; Aporta 1 ciclo máquina.   nop            ; Aporta 1 ciclo máquina.   nop            ; Aporta 1 ciclo máquina.Retardo_5micros            ; La llamada "call" aporta 2 ciclos máquina.   nop            ; Aporta 1 ciclo máquina.Retardo_4micros            ; La llamada "call" aporta 2 ciclos máquina.   return            ; El salto del retorno aporta 2 ciclos máquina.;; RETARDOS de 20 hasta 500 microsegundos ------------------------------------------------;Retardo_500micros            ; La llamada "call" aporta 2 ciclos máquina.   nop            ; Aporta 1 ciclo máquina.   movlw   d"164"         ; Aporta 1 ciclo máquina. Este es el valor de "K".   goto   RetardoMicros      ; Aporta 2 ciclos máquina.Retardo_200micros            ; La llamada "call" aporta 2 ciclos máquina.   nop            ; Aporta 1 ciclo máquina.   movlw   d"64"         ; Aporta 1 ciclo máquina. Este es el valor de "K".   goto   RetardoMicros      ; Aporta 2 ciclos máquina.Retardo_100micros            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"31"         ; Aporta 1 ciclo máquina. Este es el valor de "K".   goto   RetardoMicros      ; Aporta 2 ciclos máquina.Retardo_50micros            ; La llamada "call" aporta 2 ciclos máquina.   nop            ; Aporta 1 ciclo máquina.   movlw   d"14"         ; Aporta 1 ciclo máquina. Este es el valor de "K".   goto   RetardoMicros      ; Aporta 2 ciclos máquina.Retardo_20micros            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"5"         ; Aporta 1 ciclo máquina. Este es el valor de "K".;; El próximo bloque "RetardoMicros" tarda:; 1 + (K-1) + 2 + (K-1)x2 + 2 = (2 + 3K) ciclos máquina.;RetardoMicros   movwf   R_ContA         ; Aporta 1 ciclo máquina.Rmicros_Bucle   decfsz   R_ContA,F      ; (K-1)x1 cm (cuando no salta) + 2 cm (al saltar).   goto   Rmicros_Bucle      ; Aporta (K-1)x2 ciclos máquina.   return            ; El salto del retorno aporta 2 ciclos máquina.;;En total estas subrutinas tardan:; - Retardo_500micros:   2 + 1 + 1 + 2 + (2 + 3K) = 500 cm = 500 µs. (para K=164 y 4 MHz).; - Retardo_200micros:   2 + 1 + 1 + 2 + (2 + 3K) = 200 cm = 200 µs. (para K= 64 y 4 MHz).; - Retardo_100micros:   2     + 1 + 2 + (2 + 3K) = 100 cm = 100 µs. (para K= 31 y 4 MHz).; - Retardo_50micros :   2 + 1 + 1 + 2 + (2 + 3K) =  50 cm =  50 µs. (para K= 14 y 4 MHz).; - Retardo_20micros :   2     + 1     + (2 + 3K) =  20 cm =  20 µs. (para K=  5 y 4 MHz).;; RETARDOS de 1 ms hasta 200 ms. --------------------------------------------------------;Retardo_200ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"200"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_100ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"100"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_50ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"50"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_20ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"20"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_10ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"10"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_5ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"5"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_2ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"2"         ; Aporta 1 ciclo máquina. Este es el valor de "M".   goto   Retardos_ms      ; Aporta 2 ciclos máquina.Retardo_1ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"1"         ; Aporta 1 ciclo máquina. Este es el valor de "M".;; El próximo bloque "Retardos_ms" tarda:; 1 + M + M + KxM + (K-1)xM + Mx2 + (K-1)Mx2 + (M-1) + 2 + (M-1)x2 + 2 =; = (2 + 4M + 4KM) ciclos máquina. Para K=249 y M=1 supone 1002 ciclos máquina; que a 4 MHz son 1002 µs = 1 ms.;Retardos_ms   movwf   R_ContB         ; Aporta 1 ciclo máquina.R1ms_BucleExterno   movlw   d"249"         ; Aporta Mx1 ciclos máquina. Este es el valor de "K".   movwf   R_ContA         ; Aporta Mx1 ciclos máquina.R1ms_BucleInterno   nop            ; Aporta KxMx1 ciclos máquina.   decfsz   R_ContA,F      ; (K-1)xMx1 cm (cuando no salta) + Mx2 cm (al saltar).   goto   R1ms_BucleInterno      ; Aporta (K-1)xMx2 ciclos máquina.   decfsz   R_ContB,F      ; (M-1)x1 cm (cuando no salta) + 2 cm (al saltar).   goto   R1ms_BucleExterno    ; Aporta (M-1)x2 ciclos máquina.   return            ; El salto del retorno aporta 2 ciclos máquina.;;En total estas subrutinas tardan:; - Retardo_200ms:   2 + 1 + 2 + (2 + 4M + 4KM) = 200007 cm = 200 ms. (M=200 y K=249).; - Retardo_100ms:   2 + 1 + 2 + (2 + 4M + 4KM) = 100007 cm = 100 ms. (M=100 y K=249).; - Retardo_50ms :   2 + 1 + 2 + (2 + 4M + 4KM) =  50007 cm =  50 ms. (M= 50 y K=249).; - Retardo_20ms :   2 + 1 + 2 + (2 + 4M + 4KM) =  20007 cm =  20 ms. (M= 20 y K=249).; - Retardo_10ms :   2 + 1 + 2 + (2 + 4M + 4KM) =  10007 cm =  10 ms. (M= 10 y K=249).; - Retardo_5ms  :   2 + 1 + 2 + (2 + 4M + 4KM) =   5007 cm =   5 ms. (M=  5 y K=249).; - Retardo_2ms  :   2 + 1 + 2 + (2 + 4M + 4KM) =   2007 cm =   2 ms. (M=  2 y K=249).; - Retardo_1ms  :   2 + 1     + (2 + 4M + 4KM) =   1005 cm =   1 ms. (M=  1 y K=249).;; RETARDOS de 0.5 hasta 20 segundos ---------------------------------------------------;Retardo_20s            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"200"         ; Aporta 1 ciclo máquina. Este es el valor de "N".   goto   Retardo_1Decima      ; Aporta 2 ciclos máquina.Retardo_10s            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"100"         ; Aporta 1 ciclo máquina. Este es el valor de "N".   goto   Retardo_1Decima      ; Aporta 2 ciclos máquina.Retardo_5s            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"50"         ; Aporta 1 ciclo máquina. Este es el valor de "N".   goto   Retardo_1Decima      ; Aporta 2 ciclos máquina.Retardo_2s            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"20"         ; Aporta 1 ciclo máquina. Este es el valor de "N".   goto   Retardo_1Decima      ; Aporta 2 ciclos máquina.Retardo_1s            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"10"         ; Aporta 1 ciclo máquina. Este es el valor de "N".   goto   Retardo_1Decima      ; Aporta 2 ciclos máquina.Retardo_500ms            ; La llamada "call" aporta 2 ciclos máquina.   movlw   d"5"         ; Aporta 1 ciclo máquina. Este es el valor de "N".;; El próximo bloque "Retardo_1Decima" tarda:; 1 + N + N + MxN + MxN + KxMxN + (K-1)xMxN + MxNx2 + (K-1)xMxNx2 +;   + (M-1)xN + Nx2 + (M-1)xNx2 + (N-1) + 2 + (N-1)x2 + 2 =; = (2 + 4M + 4MN + 4KM) ciclos máquina. Para K=249, M=100 y N=1 supone 100011; ciclos máquina que a 4 MHz son 100011 µs = 100 ms = 0,1 s = 1 décima de segundo.;Retardo_1Decima   movwf   R_ContC         ; Aporta 1 ciclo máquina.R1Decima_BucleExterno2   movlw   d"100"         ; Aporta Nx1 ciclos máquina. Este es el valor de "M".   movwf   R_ContB         ; Aporta Nx1 ciclos máquina.R1Decima_BucleExterno   movlw   d"249"         ; Aporta MxNx1 ciclos máquina. Este es el valor de "K".   movwf   R_ContA         ; Aporta MxNx1 ciclos máquina.R1Decima_BucleInterno             nop            ; Aporta KxMxNx1 ciclos máquina.   decfsz   R_ContA,F      ; (K-1)xMxNx1 cm (si no salta) + MxNx2 cm (al saltar).   goto   R1Decima_BucleInterno   ; Aporta (K-1)xMxNx2 ciclos máquina.   decfsz   R_ContB,F      ; (M-1)xNx1 cm (cuando no salta) + Nx2 cm (al saltar).   goto   R1Decima_BucleExterno   ; Aporta (M-1)xNx2 ciclos máquina.   decfsz   R_ContC,F      ; (N-1)x1 cm (cuando no salta) + 2 cm (al saltar).   goto   R1Decima_BucleExterno2   ; Aporta (N-1)x2 ciclos máquina.   return            ; El salto del retorno aporta 2 ciclos máquina.;;En total estas subrutinas tardan:; - Retardo_20s:   2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 20000807 cm = 20 s.;         (N=200, M=100 y K=249).; - Retardo_10s:   2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 10000407 cm = 10 s.;         (N=100, M=100 y K=249).; - Retardo_5s:      2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) =  5000207 cm =  5 s.;         (N= 50, M=100 y K=249).; - Retardo_2s:      2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) =  2000087 cm =  2 s.;         (N= 20, M=100 y K=249).; - Retardo_1s:      2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) =  1000047 cm =  1 s.;         (N= 10, M=100 y K=249).; - Retardo_500ms:   2 + 1     + (2 + 4N + 4MN + 4KMN) =   500025 cm = 0,5 s.;         (N=  5, M=100 y K=249).;   ===================================================================;     Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS";     E. Palacios, F. Remiro y L. López.;      Editorial Ra-Ma.  www.ra-ma.es;   ===================================================================

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Control de reles a distancia mediante IR
« Respuesta #58 en: 16 de Agosto de 2004, 11:42:00 »
Bueno, esto es para volverse uno medio loco. He montado el circuito en una protoboad, pero sin pulsadores, poniendo las patillas directamente a 1 o 0, y el programa parece funcionar ok, dependiendo de la entrada que pongo a 0, sale el numero en bcd hacia el 4511 y aqui es donde esta el problema, si no conecto la patilla 5 a masa el display no enciende, y si la conecto, solo sale un 8 y no muestra la informacion que tendria que mostrar.

Simulando en proteus, el display marca 0 cuando no hay ninguna entrada activada, y sin embargo no va cambiando el numero del display.

Que puede estar pasando?? He conectado mal el 4511??

Bueno voy a seguir probando un rato mas, si hay alguna novedad os lo cuento.

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Control de reles a distancia mediante IR
« Respuesta #59 en: 16 de Agosto de 2004, 13:45:00 »
Piriots no tengo muy claro la forma en que el receptor va a averiguar y distinguir correctamente la frecuencia que le está entrando. En definitiva se trata de averiguar qué frecuencia es la que entra, yo para esto emplearía un módulo de captura.

Hazlo a tu manera y si no te va te digo como lo haría yo.

Lo del display será una tontería, seguro que lo solucionas.

un saludo


 

anything