Ver las NORMAS de estos Foros Web ZackYFileS Chat ZackYFileS Agregar a Favoritos Contactar con Administrador
 
 

TU PUBLICIDAD AQUÍ!!
Navegación
Retroceder   Foros ZackYFileS >
OTROS TEMAS DE INTERES - INTERNET:
> PROGRAMACIÓN Microcontroladores: PICs , AVRs.
Nombre de usuario
Contraseña
Configuración de UsuarioAyuda (FAQs)Nuevos PostsBuscar


Respuesta
 
Herramientas
Antiguo 28/07/2007, 16:45   #1
ZackY
Administrador
 
Avatar de ZackY
 
Fecha de ingreso: 31/mar/2001
Mensajes: 7.477
ZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asi
Post Emisor RF (433MHz) para HCS101. Aplicación: Control de persiana motorizada

Este proyecto lo he programado desde cero según el protocolo usado por los chip HCS101 de microchip. Estos chips son usados ampliamente en codificadores RF para apertura de puertas de garaje, control de persianas motorizadas, dimmers, etc.

Podéis ver el protocolo de la comunicación usada por este chip en su datasheet.

Código:
Program Envio_Comandos_RF
' Envios de comandos RF con modulo TM50-1 a persiana motorizada
' Protocolo HCSx01  (usado por Chip HCS101 de Microchip)
' *******************************************************************************
'  (c) Autor: ZackY - zackyzgz@yahoo.es
'
' HARDWARE:
'    MCU: PIC 16F84A
'    Cristal: 4 Mhz
'    1- Emisor RF TM50-1 conectado a PORTB.3
'    2- Pulsadores conectados a PORTB.0
' *******************************************************************************
 const Te = 400           ' Tiempo de pulso (usg)
 const Funcion_Subir = %10010001  ' Comando subir persiana IZQ
 const Funcion_Bajar = %01000001  ' Comando bajar persiana IZQ
 const Funcion_Stop  = %01100001  ' Comando stop persiana IZQ
 
 dim S3_cc_func as word   ' Serial Nº3 + 00 + Function
 dim S3_cc_subir as word  ' Serial Nº3 + Function SUBIR
 dim S3_cc_bajar as word  ' Serial Nº3 + Function BAJAR
 dim Counter    as word   ' Contador de pulsaciones
 dim S1a        as word   ' Serial Nº1 primera parte
 dim S1b        as word   ' Serial Nº1 segunda parte
 Dim i          as byte   ' Usado para bucles
 Dim Pulsado    as byte   ' Para evitar rebites de pulsador

       ' Sub-rutina para generar Preamble (23Te) y Cabecera (10Te)
       ' 12 pulsos de 400 usg y 4 msg hasta comienzo de datos
   Sub procedure Env_Cabecera_RF()
    For i = 1 to 12
    Delay_us(Te)            ' Envio Preamble: Tp = 23Te
    Setbit(PORTB,3)
    Delay_us(Te)
    Clearbit(PORTB,3)       ' Se envia un ultimo Te a cero
    next i
    Delay_us(10*Te)         ' Tiempo de Cabecera Th=10Te
   End sub

        ' Sub-rutina para envio de bit RF
   Sub procedure Env_bit_RF (dim bitenv as byte)
      If bitenv = 1 then
          Setbit(PORTB,3)     'Envia 1
          Delay_us(Te)
          Clearbit(PORTB,3)
          Delay_us(2*Te)
      else
         Setbit(PORTB,3)      'Envia 0
         Delay_us(2*Te)
         Clearbit(PORTB,3)
         Delay_us(Te)
      End if
   End sub
   
           ' Sub-rutina para envio de word RF
   Sub procedure Env_word_RF (dim wordenv as word)
    For i = 0 to 15
      Env_bit_RF(wordenv.0)
      wordenv = wordenv >> 1
    Next i
   End sub

Main:
  TRISB = %00000011 	' PORTB.0 y .1 como Entradas y .3 como Salida
  PORTB.3 = 0         ' Salida a 0
  Pulsado = 0         ' Pulsador sin activar

  S3_cc_subir = %1111000101110111   ' Serial Nº3 + Funcion Subir
  S3_cc_stop =  %0110000101110111   ' Serial Nº3 + Funcion Subir
  S3_cc_bajar = %0100000101110111   ' Serial Nº3 + Funcion Bajar

  Counter = %0000001110000101    ' Contador de pulsaciones (901)
  S1a = %0100110100111010           ' Serial Nº1 primera parte
  S1b = %1101011001100010           ' Serial Nº1 segunda parte

Inicio:
  While true
  
      If PORTB.0 = 0 then           ' SUBIR Persiana IZQ
         If Pulsado = 0 then       ' ¿Nueva pulsación?
           Counter = Counter + 1
           Pulsado = 1
         End if
         Env_Cabecera_RF       'Envia Cabecera - Tp+Th = 33Te

                           'Envia Stream de DATOS
         Env_word_RF(S3_cc_subir)
         Env_word_RF(Counter)
         Env_word_RF(S1a)
         Env_word_RF(S1b)
         Env_bit_RF(0)             ' VLow
         Env_bit_RF(1)             ' Envia Fin de stream = 1
    
         Delay_us(39*Te)  ' Envia Tg = 39Te
      End if

      If PORTB.1 = 0 then          ' BAJAR Persiana IZQ
         If Pulsado = 0 then       ' ¿Nueva pulsación?
           Counter = Counter + 1
           Pulsado = 1
         End if
         Env_Cabecera_RF       'Envia Cabecera - Tp+Th = 33Te

                           'Envia Stream de DATOS
         Env_word_RF(S3_cc_bajar)
         Env_word_RF(Counter)
         Env_word_RF(S1a)
         Env_word_RF(S1b)
         Env_bit_RF(0)             ' VLow
         Env_bit_RF(1)             ' Envia Fin de stream = 1

         Delay_us(39*Te)  ' Envia Tg = 39Te
      End if

      If PORTB.0 = 1 then
         Pulsado = 0
      End if
  
  Wend
End.
La variable "Contador" es usada para llevar la cuenta del número de pulsaciones (nº de usos) del dispositivo emisor. El receptor no acepta contadores inferiores al último recibido. Osea, si se le envía un comando con la variable contador por debajo de la almacenada en el receptor (en una emisión de comandos anteriores), el receptor no ejecutará el comando. Se puede mantener la variable Contador a un valor fijo. De esta forma si funciona el receptor (al menos en el sistema de control de persinas donde yo lo he usado).


Para cualquier duda sobre este código, podéis postearla en este hilo.
ZackY está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 28/07/2007, 16:52   #2
ZackY
Administrador
 
Avatar de ZackY
 
Fecha de ingreso: 31/mar/2001
Mensajes: 7.477
ZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asiZackY Va a salirse de la galaxia como siga asi
Para la Recepción y Decodificación se puede usar un microcontrolador PIC como recomienda el fabricante:

AN740, Decoding the HCS101 for Non-Secure Applications
ZackY está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Publicidad: Conoce las ofertas de ANUNCIATE
Respuesta


Usuarios viendo actualmente este tema: 1 (0 usuarios registrados y 1 visitantes)
 
Herramientas

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Activado

Ir al foro


!! ADVERTENCIAS !!: Las informaciones aquí publicadas NO CONTIENEN KEYS para la decodificación de ningún sistema: NO SON OPERATIVOS en sistemas SAT que precisen de su correspondiente suscripción.

ESTA TOTALMENTE PROHIBIDO EL USO DE ESTAS INFORMACIONES PARA LA MODIFICACIÓN O  DEFRAUDACIÓN DE SISTEMAS DE ACCESO CONDICIONAL.

ESTOS FOROS SON MODERADOS Y NO SE PERMITE LA PUBLICACIÓN DE INFORMACIONES ILEGALES POR PARTE DE LOS USUARIOS. EN CASO DE DETECTARSE ESTE TIPO DE INFORMACIONES, LOS USUARIOS SERÁN EXCLUIDOS DE ESTAS PÁGINAS.

USO DE COOKIES: Utilizamos COOKIES y de terceros para mejorar nuestros servicios y navegación por la web. Si continua navegando, consideramos que acepta su uso.  


La franja horaria es GMT +2. Ahora son las 01:27.


-------------------------------------------------------------------- --------------------------------------------------------------------

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
Hispaservicios - J.G.C - 29112549T - Rio Cinca, 2, 30 (50180) SPAIN.
Todos los derechos reservados. Prohibida cualquier reproducion total o parcial.


Foros Patrocinados por anunciantes.