Problema para multiplexar TWS

Hola a todos,
Les comento que estoy en un proyecto en el que hay 4 controles remotos para un sistema (cada control es independiente de los demás y lo va a tener una persona diferente).
Por eso me compré varios pares Tx Rx de 434 MHz y codificadores HT12
El problema que tengo es multiplexar los diferentes módulos. Agradezco cualquier sugerencia.

Probé con módulos de 315 y se pisan con los de 434 MHz. La idea que tengo es agregar un PIC a cada control que mande varias veces los datos cada diferentes tiempos (multiplexación en el tiempo), el problema es que cada envío de información es como de 100ms (así que para que funcione la respuesta sería execívamente lenta).
 
Si vas a usar un PIC, ¿no podés evitar los deco/cod HT?, porque son ellos lo que hacen lenta la comunicación, si podés usá directamente una uart.
 
Hola, gracias por la respuesta, si bien puedo omitir los codificadores, hay mucha gente que reporta problemas de que no tiene alcance o le entra mucho ruido (lo bueno de los codificadores es la robustes y las horas de programación que me ahorran). Lo ideal sería multiplexar en frecuencia, pero no lo logro
 
Hola, gracias por la respuesta, si bien puedo omitir los codificadores, hay mucha gente que reporta problemas de que no tiene alcance o le entra mucho ruido (lo bueno de los codificadores es la robustes y las horas de programación que me ahorran). Lo ideal sería multiplexar en frecuencia, pero no lo logro

¿A que te referís con multiplexar en frecuencia?, para hacer eso tenés que tener tantas portadoras como canales tengas e ir "juntando" todos los anchos de bandas sin que se mezclen, no es tarea fácil y requiere de un mezclador :rolleyes:

Volviendo al tema PIC, yo usé esos módulos y obtuve los mejores resultados, usando la directamente una uart, por 2 motivos:

- Gran lentitud a la hora de enviar un Byte (no bits, para lo que estan preparados), ya que manda muchos bits de payload para solo 4bits de datos.
- Para enviar una trama de byte, el tiempo era enorme y la probabilidad de error hacía imposible la comunicación.

Ahora, es cierto que podrías obtener mejores distancias usando esos decos/cod, pero el costo es trabajar a nivel de bits, si quisieras trabajar a nivel de bytes, te aseguro que esa distancia se acorta y muchísimo.

Entonces volviendo a tu problema, ¿que tipos de datos necesitas enviar?
 
Hola, gracias de nuevo por la ayuda. Voy a probar como funcionan los transmisores con pics y sin los HT12.

A lo que me refería con multiplexar en frecuencia era a "asignar una portadora" a cada emisor / receptor. Teóricamente con pocos kHz de ancho de banda debería sobrar, por eso me extraña que un emisor a 315 MHz interfiera en un receptor de 418 MHz. Si lograse hacer esto todo lo demás sería muy sencillo, me podría olvidar de que existen los demás emisores.

Antes que nada, me falta agregar que es para una cancha de básquet (tablero electrónico grande con minutos, segundos y tantos, además de dos tableros pequeños de 24 segundos) por lo que necesito mínimo 20 metros de alcance (considerando un par de personas en el medio). Por ahora con los codificadores HT12 lo probé a 50 metros con 4 paredes sin ningún problema.

Además, la información a enviar es bastante básica, 3 emisores son de controles remotos con pulsadores que van al "tablero electrónico" de la cancha. De esos 3 controles, 2 tienen menos de 4 botones, por lo que podría usar directamente los canales del codificador (en caso de usar codificador), mientras que el otro tiene 7 botones (pensaba usar un pic y asignar un valor de 0 a 8 a cada botón y mandar ese valor por el codificador).

El cuarto emisor se encontraría en el tablero electrónico y enviaría distintos "comandos" a los tableros de 24 segundos (resetear y restar un segundo principalmente).
 
A lo que me refería con multiplexar en frecuencia era a "asignar una portadora" a cada emisor / receptor. Teóricamente con pocos kHz de ancho de banda debería sobrar, por eso me extraña que un emisor a 315 MHz interfiera en un receptor de 418 MHz. Si lograse hacer esto todo lo demás sería muy sencillo, me podría olvidar de que existen los demás emisores.

En teoría no deberían molestarse, ya que trabajan en frecuencias muy distintas y el filtro pasa banda del receptor debería eliminar todo lo que no esté en la frecuencia de portadora, pero tal vez los filtros del receptor no sean tan buenos.

Antes que nada, me falta agregar que es para una cancha de básquet (tablero electrónico grande con minutos, segundos y tantos, además de dos tableros pequeños de 24 segundos) por lo que necesito mínimo 20 metros de alcance (considerando un par de personas en el medio). Por ahora con los codificadores HT12 lo probé a 50 metros con 4 paredes sin ningún problema.

Además, la información a enviar es bastante básica, 3 emisores son de controles remotos con pulsadores que van al "tablero electrónico" de la cancha. De esos 3 controles, 2 tienen menos de 4 botones, por lo que podría usar directamente los canales del codificador (en caso de usar codificador), mientras que el otro tiene 7 botones (pensaba usar un pic y asignar un valor de 0 a 8 a cada botón y mandar ese valor por el codificador).

El cuarto emisor se encontraría en el tablero electrónico y enviaría distintos "comandos" a los tableros de 24 segundos (resetear y restar un segundo principalmente).

Ok, entonces si trabajas a nivel de bits, por lo tanto seguí con la idea del HT12.

Sobre el control de 7 botones, intentá usar un MUX/DEMUX, de esa forma podés trabajar directamente con los HT sin un PIC de por medio.

Ahora, termina de cerrar como sería la comunicación, tenés muchos transmisores, ¿cuantos receptores tenés? ¿cada control remoto hace algo distinto (salvo el de 7 botones, que envidentemente lo hace)?

Hasta ahora me imagino algo así:

Control 1 (TX 1) ---|
Control 2 (TX 2)------->Canal RF ---> Tablero con un solo receptor RF
Control N (TX 3)---|
 
Última edición:
El esquema es exáctamente lo que tengo que lograr. Además tengo un receptor por cada emisor, por lo que si pudiera modificar las frecuencias podría poner un receptor independiente para cada una.

Por otro lado, también tengo que lograr comunicar el "tablero principal" con los dos más pequeños de "24 segundos". Esta comunicación es en un único sentido.

Me recomendás algún mux que se consiga fácil (estoy en Montevideo y la oferta es muy limitada).

Agradezco nuevamente toda la ayuda brindada



Por cierto, los tres controles simplemente envían la información de los botones presionados. Mientras que la comunicación tablero -> "24 segundos" la puedo lograr enviando 4 "comandos" distintos (reset 24 segundos; reset 14 segundos;iniciar cuenta; pausar cuenta).
 
Última edición:
tengo un par emisor/receptor de 315MHz, otro de 418MHz y dos de 433MHz (son los que conseguí)

También pensaba que a los receptores se les podía modificar la frecuencia

Otra posibilidad sería mejorar el filtro pasabanda de los receptores (con la idea de usar tres portadoras y aliviar el problema)
 
No termina de quedar claro, como pensaste pensaste la comunicación, si el tablero tiene un módulo RF de RX o varios y ¿cual es el problema real que tenés?.

De lo que más o menos dijiste yo entendí que:

- Tenés 2 controles que tienen 4 botones (no explicás si esos controles cumplen o no las mismas funciones, yo creo que si).

- Un 3er control, que maneja 7 botones.

- El tablero "principal" que recibe de los distintos controles y un transmisor para el tablero "secundario".

- El tablero "secundario" que funciona para los 24 Seg y es manejado por el principal.

De toooodo ese embrollo, yo haría esto:

- Tablero principal: solo tiene un módulo RX y TX. El módulo TX sería manejado por un codificador Holtek con una cierta dirección "N". La salida del módulo RX lo conectaría a 2 decodificadores holtek, uno con una dirección "N+1" que será el encargado de comunicarse con los controles de 4 botones y otro decodificador holtek con una dirección "N+2" que será encargado de comunicarse con los controles de 7 botones. Este último decodificador holtek irá a su vez conectado a un decodificador lógico (por ej. un 74XX137, que sirve para decodificar 3 líneas a 8) que convierte 3bits de datos en un bit que indicará el botón presionado.

- Tablero secundario: solo tendrá un módulo RX y el decodificador holtek que usará deberá tener la dirección "N" (misma dirección que maneja el codificador del tablero principal), luego vos resolverás el conteo.

- Controles de 4 botones: todos tendrán un módulo TX y un codificador con la dirección "N+1". Vos resolverás el manejo que haces de esos 4 botones.

- Control de 7 botones: tendrá un módulo TX y un codificador con la dirección "N+2". Para resolver los 7 botones, usá un codificador 74xx148 que sirve para pasar de 10 lineas a 4 lineas, de esas 10 lineas, vos solo usas 7 para tus botones, con lo cual tu salida en realidad será de 3 lineas, para luego en el tablero principal volver a decodificar con el 74xx137 el botón apretado.

Todos los módulos trabajarían a una sola frecuencia de portadora (418 o 315MHz).

Ventajas:

- Al trabajar con distintas direcciones, podés usar solo 1 módulo de recepción en el tablero principal.

- Todos los módulos trabajan a la misma frecuencia, queda todo homogeneizado.

Desventajas:

- Si 2 personas quieren controlar el tablero principal a la vez ---> las señales van a interferir y NO va a llegar el mensaje al tablero.

- Si 1 persona quiere controlar el tablero principal y a la vez el tablero principal quiere manejar el tablero secundario --> las señales van a interferir y NO va a llegar el mensaje al tablero.

Esa desventaja te va a pasar tanto usado los holtek, como usando los PICs, debido a que depende pura y exclusivamente de los módulos RF.

Evidentemente el problema más grave que tenés ahí es a la hora de manejar el tablero secundario, porque no podés permitir en ningún momento que alguien te anule la comunicación. Por lo tanto, acá si tal vez se justifica usar un módulo RF a una frecuencia distinta a la que tendrán los distintos controles, el problema es que según vos incluso a frecuencia de portadora distintas se interfieren, lo cual complicaría las cosas.

Entonces de alguna forma tu circuito debería contemplar el "ACK" (acuse de recibo) por parte del tablero secundario, por lo tanto yo incorporaría tal vez esta modificación (trabajando con módulos a la misma frecuencia):

- Modificaciones tablero secundario: tendrá un módulo RX y un módulo TX. El módulo RX irá al decodificador holtek que usará deberá tener la dirección "N" (misma dirección que maneja el codificador del tablero principal), luego vos resolverás el conteo. Y el módulo Tx irá a un codificador holtek con una dirección "N+3", que será el encargado de dar el acuse al tablero principal.

- Modificaciones tablero principal: Al agregar ese ACK, el tablero principal, también debería poder recibir en la dirección "N+3", por lo tanto habría que agregar un 3er decodificador holtek colgado a la salida del módulo RX con la dirección "N+3".

Como verás, resolver todo eso es bastante engorroso usando "lógica convencional", por lo tanto si usarás PIC tanto en los controles, como en los 2 tableros, todos esos codificadores y decodificadores lo resolvés por software de manera mucho más sencilla. Es cuestión de ver que resulta más práctico y económico.

Sobre el ACK, suponiendo que podés resolver el inconveniente que tenés con los módulos trabajando a distintas frecuencias, igual te recomendaría que lo implementes, más que nada para asegurarte que la orden de reseteo llegue.
 
No termina de quedar claro, como pensaste pensaste la comunicación, si el tablero tiene un módulo RF de RX o varios y ¿cual es el problema real que tenés?.

Mi idea original era usar un receptor para cada transmisor dado que funcionarían en diferentes frecuencias. Debido al problema que tuve (los módulos de diferentes frecuencias se interfieren) tengo que buscar otra solución para poder tener varios circuitos RF en paralelo. Para ello, el fin de semana voy a probar la implementación que me recomendaste de omitir los HT y hacer una "multiplexación en el tiempo", basada en repetir cada mensaje varias veces. Cuando un receptor reciba un mensaje válido (en largo y checksum) no escucha por algunos milisegundos para no interpretar varias veces el mismo mensaje. Lo normal para ésto sería usar un "número de mensaje", pero yo no puedo hacerlo porque necesito que la transmisión sea lo más corta posible (para minimizar las "colisiones").

De lo que más o menos dijiste yo entendí que:

- Tenés 2 controles que tienen 4 botones (no explicás si esos controles cumplen o no las mismas funciones, yo creo que si).

- Un 3er control, que maneja 7 botones.

Son tres controles que controlan distintas cosas:
(Control A) -> tantos (4 botones)
(Control B) -> tiempo restante del partido + pulsador para bocina integrada al tablero principal + ON/OFF (7 botones)
(Control C) -> tiempo de 24 segundos (2 botones)

El Control C va al tablero principal que coordina los dos tableros de 24 segundos.

- El tablero "principal" que recibe de los distintos controles y un transmisor para el tablero "secundario".

- El tablero "secundario" que funciona para los 24 Seg y es manejado por el principal.
Perfecto.
De toooodo ese embrollo, yo haría esto:

- Tablero principal: solo tiene un módulo RX y TX. El módulo TX sería manejado por un codificador Holtek con una cierta dirección "N". La salida del módulo RX lo conectaría a 2 decodificadores holtek, uno con una dirección "N+1" que será el encargado de comunicarse con los controles de 4 botones y otro decodificador holtek con una dirección "N+2" que será encargado de comunicarse con los controles de 7 botones. Este último decodificador holtek irá a su vez conectado a un decodificador lógico (por ej. un 74XX137, que sirve para decodificar 3 líneas a 8) que convierte 3bits de datos en un bit que indicará el botón presionado.

- Tablero secundario: solo tendrá un módulo RX y el decodificador holtek que usará deberá tener la dirección "N" (misma dirección que maneja el codificador del tablero principal), luego vos resolverás el conteo.

- Controles de 4 botones: todos tendrán un módulo TX y un codificador con la dirección "N+1". Vos resolverás el manejo que haces de esos 4 botones.

- Control de 7 botones: tendrá un módulo TX y un codificador con la dirección "N+2". Para resolver los 7 botones, usá un codificador 74xx148 que sirve para pasar de 10 lineas a 4 lineas, de esas 10 lineas, vos solo usas 7 para tus botones, con lo cual tu salida en realidad será de 3 lineas, para luego en el tablero principal volver a decodificar con el 74xx137 el botón apretado.

Todos los módulos trabajarían a una sola frecuencia de portadora (418 o 315MHz).
Es una buena solución, con los integrados que me dijiste puedo resolver el problema de los 7 botones.
Ventajas:

- Al trabajar con distintas direcciones, podés usar solo 1 módulo de recepción en el tablero principal.

- Todos los módulos trabajan a la misma frecuencia, queda todo homogeneizado.
Perfecto.
Desventajas:

- Si 2 personas quieren controlar el tablero principal a la vez ---> las señales van a interferir y NO va a llegar el mensaje al tablero.

- Si 1 persona quiere controlar el tablero principal y a la vez el tablero principal quiere manejar el tablero secundario --> las señales van a interferir y NO va a llegar el mensaje al tablero.

Esa desventaja te va a pasar tanto usado los holtek, como usando los PICs, debido a que depende pura y exclusivamente de los módulos RF.
Este es el problema de fondo por el que hacía la consulta en el foro :D
Evidentemente el problema más grave que tenés ahí es a la hora de manejar el tablero secundario, porque no podés permitir en ningún momento que alguien te anule la comunicación. Por lo tanto, acá si tal vez se justifica usar un módulo RF a una frecuencia distinta a la que tendrán los distintos controles, el problema es que según vos incluso a frecuencia de portadora distintas se interfieren, lo cual complicaría las cosas.
En caso de que use PICs, puedo repetir los comandos cada 10 ms durante 200 ms. De forma que el 99% de las veces no falle. Solo tengo que agregar la lógica en los tableros de 24 segundos de que no acepten el mismo mensaje en esos 200 ms.

Entonces de alguna forma tu circuito debería contemplar el "ACK" (acuse de recibo) por parte del tablero secundario, por lo tanto yo incorporaría tal vez esta modificación (trabajando con módulos a la misma frecuencia):

- Modificaciones tablero secundario: tendrá un módulo RX y un módulo TX. El módulo RX irá al decodificador holtek que usará deberá tener la dirección "N" (misma dirección que maneja el codificador del tablero principal), luego vos resolverás el conteo. Y el módulo Tx irá a un codificador holtek con una dirección "N+3", que será el encargado de dar el acuse al tablero principal.

- Modificaciones tablero principal: Al agregar ese ACK, el tablero principal, también debería poder recibir en la dirección "N+3", por lo tanto habría que agregar un 3er decodificador holtek colgado a la salida del módulo RX con la dirección "N+3".

Como verás, resolver todo eso es bastante engorroso usando "lógica convencional", por lo tanto si usarás PIC tanto en los controles, como en los 2 tableros, todos esos codificadores y decodificadores lo resolvés por software de manera mucho más sencilla. Es cuestión de ver que resulta más práctico y económico.

Sobre el ACK, suponiendo que podés resolver el inconveniente que tenés con los módulos trabajando a distintas frecuencias, igual te recomendaría que lo implementes, más que nada para asegurarte que la orden de reseteo llegue.
Sin dudas voy a empezar probando con los pics.

Como siempre, muchas gracias por tu tiempo.
 
Si bien son más caros, fijate si podés conseguir estos módulos APC220/230:

apc220atitle.jpg


Son transreceptores, o sea con un solo módulo podés recibir y enviar. Acá en Bs. As. se consiguen a $150 que serán ... ni yo se cuanto serán en dolares :LOL:, supongo que rondarán los 20 a u$d 30.

La ventajas que más te interesan a vos es:

- Trabajar directamente con una uart, ya resuelve todo el problemas de ruidos, ideal para usarlo con un uC.
- Poder cambiar la frecuencia de la portadora por software (tenés 100 canales distintos, de 431MHz a 478MHz)
- Tener un alcance mucho mayor que los módulos que estas usando (yo lo comprobé).
 
La otra opción son los Xbee, pero esos son caros también, pero como estos últimos que mencioné, están mucho más cocinados y tienen mejores características que los TWS/RWS.

Sobre TWS/RWS, si vas a trabajar con uC, cuando los usé hice esto:

- Implementé un protocolo a partir de tramas de bytes como estas:

Código|Dir. Destino|Dir. Origen|.... Vector de datos (variable según el código)....|Check-Sum

- El protocolo deberá contemplar el ACK, para poder enviar el mensaje, las veces necesarias.

- Agregar una trama de inicialización en cada mensaje, es decir un preámbulo, que facilitará que el receptor enganche la señal (sería mandar varias veces 0x55 ó 0xAA).

- Por el lado del hardware, si vas a trabajar con una uart (que es lo que te recomiendo), usarla una velocidad de 2400bps y negando sus salida/entrada, esto último es muy importante ya que la uart en reposo está en estado alto y para el TWS eso implica estar transmitiendo todo el tiempo. Para negar la salida/entrada, simplemente usá 2 transistores como switch.
 
Los Xbee los use en la facultad, el problema es que, como todo acá, hay que importarlo, y toma un par de semanas (si lo traigo de Buenos Aires) además de que la mitad de las veces se "pierde" por el camino. Ahora me estoy por poner a probar con TWS/RWS usando la uart de un PIC.

Voy a probar con tu protocolo, muchas gracias.
 
Atrás
Arriba