Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
con radio frecuencia (RF), esta compuesto de un mando emisor y uno o varios receptores, en este caso el receptor permite ser configurado con una serie de BIT para distinguirlo del resto de receptores que pueden ser comandados por el mismo mando de control. La comunicacin entre el emisor (Tx) y circuitos receptores (Rx) se consigue fcilmente usando unos mdulos hbridos de Aurel. Como Tx he utilizado tanto el modulo C-0503 de 2mW y el hermano mayor el modulo C-0507 de 500 mW. Con este ultimo realizando pruebas he podido verificar una distancia aproximada de 700 mtrs en ciudad, pero claro esta es una distancia que hay que tomar solo como referencia ya que varia segn la altura a la que se encuentran los mdulos emisor y receptor uno del otro y tambin interviene la cantidad de edificaciones con sus alturas. La antena que utilice es la misma en ambos circuitos y se trata de un simple cable de cobre 0.7mm de seccin y 17cm de longitud protegido con su funda ya que a esta potencia si tocamos la antena durante la transmisin es posible que nos queme, desde luego yo no pienso correr el riesgo. El modulo C-0503 tiene una cobertura aproximada de 100mtrs segn el fabricante pero queda reducida a 50 o 60 mtrs con paredes de por medio, por lo que funciona bien para ser utilizado en casa. Tengo que aadir que los mdulos de Aurel de tx, se pueden sustituir uno por el otro en este diseo, ya que el modulo C-0503 tambin puede trabajar a 12Vdc, tan solo tener en cuenta que tiene dos pin de entrada de datos uno que se usa cuando esta alimentado a 5Vdc y el otro cuando trabaja alimentado a 12Vdc. Los mdulos mostrados en la imagen son de Laipac y Aurel que son compatibles entre si, el soft del circuito en teora es tambin compatible con los mdulos de Laipac, construyendo el respectivo adaptador. Me baso en rutinas ya probadas anteriormente que me funcionaron bien tanto con los mdulos de Laipac y de Aurel, pero tengo que indicar que en este caso solo lo he probado con los de Aurel, los mdulos de Tx C-0503 y C-0507 junto con el receptor C-0504, todas las referencia del distribuidor en Espaa de estos mdulos hbridos son de Cebek. Sobre la trama de datos (Tx): En la trama de datos para que no se produzcan errores en la recepcin de los mismos, la comienzo siempre con un BYTE de inicio el 0 en mi caso, y recordar que no es lo mismo que escribir en el comando del lenguaje 0 en cerrado entre comillas. Tambin hay que tener encuentra que si queremos usar mdulos de Laipac (los expuestos en la foto) no hay que sobre pasar los 1200 baudios de velocidad del puerto serie. El 0 inicial nos permite sincronizar la trama de datos con el receptor, pero este carcter no se tiene en cuenta a la hora de recomponer la trama en el receptor. Otra cosa importante a tener en cuenta es enviar toda la trama de una sola vez, es decir no dividirla si es posible en varios comandos de programa. Todas estas indicaciones estan pensadas para ser usadas con el modulo USART del PIC. Algunas emulaciones del puerto serie por soft ya tienen encuentra esto y no es necesario tomar tantas precauciones, pero recordar que no es seguro que funcione bien si antes no se toman estas medidas.
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
Control de Reles a Distancia por Radio Frecuencia (RF)_______________________ El funcionamiento del Tx: El circuito esta compuesto de 9 teclas que van directamente conectadas a 9 entradas del PIC y estas entradas fueron polarizadas a positivo mediante resistencia, cada entrada tiene un condensador a masa de 1nF para proteger al micro en lo posible de interferencia por RF que genera el propio mando u otros equipos ajenos a el. Y tambin ayuda a disminuir los rebotes de las mismas teclas al ser pulsadas. Estas capacidades son muy importantes. En la parte de la fuente destacamos D1 que esta en serie con la entrada de la alimentacin y nos protege el circuito contra posibles inversiones de polaridad. Q3 trabaja en modo seguidor de emisor y es un transistor darlington que esta gobernado por Q2, hay muchas formas distintas de alimentar el modulo de Tx y esta es una mas entre ellas. Existe un led por tecla que indica la maniobra que se esta procesando en ese momento, la maniobra solo podr ser activada si se pulsa al mismo tiempo la tecla STAR junto con la tecla de la maniobra deseada, esto genera una secuencia que es indicada con el parpadeo del led asociado a la maniobra activada, esta secuencia esta sincronizada con la secuencia de activacin de la placa remota, el led terminara apagado justo cuando la placa remota lleve acabo la orden recibida (temporizada a la conexin). Activara su rele durante 100mSg, pasando de nuevo al estado de reposo. En este caso un pequeo pulso es suficiente para activar el mecanismo de apertura de una puerta automtica de garaje. La tecla STOP, si es pulsada, anula todas las ordenes que todava estn en el proceso de temporizacion. El funcionamiento del Rx: Esta tambin protegido contra posibles inversiones de polaridad mediante el diodo D1. Se necesitan dos seales opuestas para poder activar el rele de 5v dos circuitos conmutados, y tiene en seriados sus dos circuitos de contactos, una entrada digital (RA4) se utiliza para comprobar que durante el test del circuito no estn cogidos los contactos del rele por motivos desconocidos, D3 protege este pin RA4 de sobre tensiones. Led2 nos da una indicacin visual si el rele esta energizado o sin embargo esta en reposo. D2 absorbe los picos de alta tensin que genera la bobina del rele y T1 y T2 gobiernan el rele. S1 es un bloque de micro interruptores que nos permiten programar el numero de placa o dicho de otra forma nos permite asociar una placa de rele a una maniobra determinada del mando de control. Led1 nos indica con su cadencia de parpadeo en que estado se encuentra el circuito.
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
Control de Reles a Distancia por Radio Frecuencia (RF)_______________________ Esquema del mando (Tx):
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
Control de Reles a Distancia por Radio Frecuencia (RF)_______________________ Esquema del receptor (Rx):
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
Control de Reles a Distancia por Radio Frecuencia (RF)_______________________ Placa del mando, CRFRTX versin 1.1
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
Control de Reles a Distancia por Radio Frecuencia (RF)_______________________ Placa CRFRLRX versin 1.1
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
Control de Reles a Distancia por Radio Frecuencia (RF)_______________________ La trama de datos: La trama de datos esta formada por 4 bytes, no tengo en cuenta el byte de arranque 0. En este caso Hserout es el comando de alto nivel que utiliza este lenguaje para enviar los datos a travs del modulo del puerto serie del PIC. La trama esta compuesta, en riguroso orden, de los bytes contenidos en las variables que se utilizan para componerla. 1 grupo: da nombre al grupo de trabajo o red de placas 2 n_placa: contiene el nombre de una placa en concreto 3 estado: indica la orden a realizar por la placa remota, cuyo nombre lo indica n_placa 4 checsum: es la suma aritmtica de los de mas valores (grupo+n_placa+estado), nos ayuda a identificar posibles errores en la trama recibida. En este caso el comando Hserout quedara de la siguiente forma: checsum = grupo + n_placa + estado Hserout 0, grupo, n_placa, estado, checsum, grupo, n_placa, estado, checsum Se puede apreciar que repito dos veces la trama en el mismo comando, todo precedido una nica vez por el 0. Como el modulo de Tx no esta alimentacin de forma continua hay que dejar un pequeo tiempo, despus de alimentarlo, para que se estabilice antes de enviarle la trama de datos, en este circuito lo activo 50mSeg antes y desactivo 50mSeg despus de enviarle la trama. Utilizo el 0 como byte de arranque por ningn motivo en especial, simplemente fue el primero que utilice y me soluciono el problema de la continua perdida de datos, puede que se pueda utilizar otro que nos genere un mejor rendimiento.
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
Control de Reles a Distancia por Radio Frecuencia (RF)_______________________ El programa del Tx:
'***************** CONTROL DE RELES A DISTANCIA POR RF *************************************** 'NOMBRE: 16F876_CRFRLTX 'VERSION/Autor: 1.1/By COS 11/06 'MICRO: PIC16f876A,8Mhz 'DESCRIPCION: Control de reles a distancia utilizando transmision de datos por radio frecuencia 'Version: 1.0 'Version: 1.1 'se repara el codigo del led de la tecla start que no encendia '************************************************************************************************ '--------------------------------------DEFINICION DE VARIABLES------------------------------------'-------------------------------------Variables del contador del TIMER1---------------------------Dim pause As Word 'contiene el valor para simular el comando Waitms Dim aux_pause As Word 'variable auxiiar Dim basetimer_1ms As Byte 'base de tiempos raiz Dim timer_1ms As Byte 'base de tiempos se incrementa cada 1mSeg Dim timer_100ms As Word 'base de tiempos se incrementa cada 100mSeg Dim timer1_100ms As Byte 'base de tiempos se incrementa cada 100mSeg Dim timer2_100ms As Byte 'base de tiempos se incrementa cada 100mSeg Dim timer3_100ms As Byte 'base de tiempos se incrementa cada 100mSeg Dim timer4_100ms As Byte 'base de tiempos se incrementa cada 100mSeg Dim timer5_100ms As Byte 'base de tiempos se incrementa cada 100mSeg Dim timer6_100ms As Byte 'base de tiempos se incrementa cada 100mSeg Dim timer7_100ms As Byte 'base de tiempos se incrementa cada 100mSeg '--------------------------------------Variables Programa-----------------------------------------Dim grupo As Byte 'nombre del grupo de trabajo Dim n_placa As Byte 'numero de la placa dentro de la red Dim estado As Byte 'accion a tomar por la placa remota Dim checsum As Byte 'control de errores de la trama Dim s1 As Byte 'habilita las operaciones de la tecla P1, parpadeo led, temporizacion, envio trama Dim s2 As Byte 'habilita las operaciones de la tecla P2, parpadeo led, temporizacion, envio trama Dim s3 As Byte 'habilita las operaciones de la tecla P3, parpadeo led, temporizacion, envio trama Dim s4 As Byte 'habilita las operaciones de la tecla P4, parpadeo led, temporizacion, envio trama Dim s5 As Byte 'habilita las operaciones de la tecla P5, parpadeo led, temporizacion, envio trama Dim s6 As Byte 'habilita las operaciones de la tecla P6, parpadeo led, temporizacion, envio trama Dim s7 As Byte 'habilita las operaciones de la tecla P7, parpadeo led, temporizacion, envio trama Dim start As Byte 'habilita las demas teclas al pulsar la tecla Start Dim stop As Byte 'anula las secuencias que se estan procesando de cada una de las placas, tecla Stop '-----------------------------------------------ASIGNACIONES---------------------------------------'-------------------------------------Asigna valores a las variables-------------------------------aux_pause = 0 pause = 0 basetimer_1ms = 0 'on timer_1ms = 255 'off timer_100ms = 255 'off timer1_100ms = 255 'off timer2_100ms = 255 'off timer3_100ms = 255 'off timer4_100ms = 255 'off timer5_100ms = 255 'off timer6_100ms = 255 'off timer7_100ms = 255 'off '--------------------------------------asignacion de valores generales----------------------------grupo = 255 'nombre del grupo de trabajo n_placa = 0 'nombre de la placa actual, se descodifica pero se ignora estado = 0 'comando de reposo s1 = 0 'no hay nada para la placa n1 s2 = 0 'no hay nada para la placa n2 s3 = 0 'no hay nada para la placa n3 s4 = 0 'no hay nada para la placa n4 s5 = 0 'no hay nada para la placa n5 s6 = 0 'no hay nada para la placa n6 s7 = 0 'no hay nada para la placa n7 start = 0 'no estan habilitadas las teclas de maniobra stop = 0 'no se envia comando de cancelacion
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
10
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
11
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
12
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
13
Return led_flash: 'controla la cadencia de on/off de los led de las teclas pulsadas If timer_100ms <= 2 Then 'led a on 200mSeg, controla If timer1_100ms < 100 Then Gosub led1_on If timer2_100ms < 100 Then Gosub led2_on If timer3_100ms < 100 Then Gosub led3_on If timer4_100ms < 100 Then Gosub led4_on If timer5_100ms < 100 Then Gosub led5_on If timer6_100ms < 100 Then Gosub led6_on If timer7_100ms < 100 Then Gosub led7_on 'el tiempo de parpadeo de los leds 'led a on mientras el Rx tempriza la maniobra 'led a on mientras el Rx tempriza la maniobra 'led a on mientras el Rx tempriza la maniobra 'led a on mientras el Rx tempriza la maniobra 'led a on mientras el Rx tempriza la maniobra 'led a on mientras el Rx tempriza la maniobra 'led a on mientras el Rx temporiza la maniobra
Endif If timer_100ms >= 3 Then 'led a off, 200mSeg If timer1_100ms <= 100 Then Gosub led1_off 'led a on mientras el Rx temporiza la maniobra If timer2_100ms <= 100 Then Gosub led2_off 'led a on mientras el Rx temporiza la maniobra If timer3_100ms <= 100 Then Gosub led3_off 'led a on mientras el Rx tempriza la maniobra If timer4_100ms <= 100 Then Gosub led4_off 'led a on mientras el Rx tempriza la maniobra If timer5_100ms <= 100 Then Gosub led5_off 'led a on mientras el Rx tempriza la maniobra If timer6_100ms <= 100 Then Gosub led6_off 'led a on mientras el Rx tempriza la maniobra If timer7_100ms <= 100 Then Gosub led7_off 'led a on mientras el Rx tempriza la maniobra Endif If timer_100ms >= 5 Then timer_100ms = 0 'reinicia esta base de tiempos, tiempo parpadeo leds Return pause_ms: 'rutina de espera, rutina tipo Waitms, pause establece el tiempo total en mSeg aux_pause = 0 'variable auxiliar lleva la cuenta de los ms timer_1ms = 0 'al borrar el contador se activa y comienza la cuenta de 1mSeg While aux_pause <= pause 'tiempo en mSeg maximos a contar aux_pause = aux_pause + 1 'variable auxiliar lleva la cuenta de los ms If timer_1ms > 0 Then timer_1ms = 0 'al borrar el contador se activa y cuenta 1mSeg While timer_1ms < 1 'espera un milisegundo Wend Wend Return
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
14
'P3 LED OFF 'P4 LED OFF 'P5 LED OFF 'P6 LED OFF 'P7 LED OFF 'START LED OFF
Endif TMR1H = 0xf8 'recarga el contador del timer1 para que desborde pasado 1mSeg, byte alto TMR1L = 0x30 'recarga el contador del timer1 para que desborde pasado 1mSeg, byte bajo PIR1.TMR1IF = 0 'borra el flag de salto del tmr1 Endif Resume End
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
15
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
16
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
17
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
18
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
19
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
20
________________________________________________________________
CRFRLTX y CRFRLRX Ver. 1.1 By COS - 10/06 Dogflu66@yahoo.es
21