EL BLOG SE HA MUDADO, TODA LA INFORMACION SE ENCUENTRA AHORA EN palmacas.com.

diciembre 03, 2011

Control PID para motor DC - Programación

En la publicación Control PID para motor DC (Lectura y Potencia) comentaba sobre la primera parte de este proyecto y sobre sus interfaces de lectura y potencia, ahora esta publicación estará dedicada a la programación del controlador en LabVIEW y la comunicación USB entre el PIC y el ordenador.


Para comenzar explicare la estructura del programa en LabVIEW, el programa esta compuesto por un While Loop que permite ejecutar iteraciones continuamente, al inicio del programa se establece la configuración del COM virtual con el que se va a comunicar el programa, es decir datos como el nombre del puerto, velocidad de transmisión y numero de bits en la transmisión. Dentro del While Loop se establece la apertura del puerto y el tamaño del buffer de recepción, luego se hace la conversión del dato de tipo "string" como lo envía el PIC a tipo "int" para ser usado en el PID. En la programación se usaron subVIs para cada uno de los controladores separados y luego sumar su resultado.


El primer controlador es el Proporcional, según la teoría este corresponde unicamente a el error multiplicado por una constante, es decir wk = Kp*Ek. El error es calculado en el programa principal restando el valor muestreado de el valor del set point.


El controlador Integral es mas complejo que el Proporcional, en este se tienen en cuenta el tiempo de muestreo, una constante o tiempo de integración, nuevamente el error, la constante de proporcionalidad y la salida del controlador en la iteración anterior (esta se establece en el programa principal). De esta forma se cumple la formula pk = ((kp*t/ti)*ek)+pk-1 de donde pk es la salida del controlador, kp es la constante de proporcionalidad, t es el tiempo de muestreo, ti es el tiempo de integración, ek es el error y pk-1 es el valor del controlador en ciclo inmediatamente anterior.


El controlador Derivativo tiene la siguiente ecuación qk = (td*kp/t)*(ek-ek-1), en esta ecuación de tiene a qk que es la salida del controlador, td que corresponde al tiempo de derivación, kp es la constante de proporcionalidad, t el periodo de muestreo, ek el error y ek-1 el valor del error en el ciclo inmediatamente anterior.

Luego de los valores de los controladores son sumados y enviados al PIC donde este valor se vera reflejado en el ciclo de trabajo de el PWM que controla el motor. Para evitar posibles ambiguedades en el ciclo de trabajo del PWM se hace una restricción en la que si el valor del PID es superior a 255 el PWM sera de 255 y si es inferior a 0 el PWM sera de 0.



control_pid_front

En el front panel se pueden visualizar y modificar el set point y cada una de las constantes (kp,ti y td), ademas una gráfica de la velocidad y una de la salida del PID. El PIC hace la lectura de la velocidad del motor, establece la comunicación USB, recibe el valor del PID y varia el ciclo útil del PWM.

Para descargar: PID Motor.rar

Si tienes alguna inquietud no dudes en comentar.

noviembre 17, 2011

Control PID para motor DC - Lectura y Potencia

Este semestre estoy cursando la materia de control digital en la universidad, uno de las practicas planteadas fue aplicar un control PID sobre un motor DC. La idea es medir la velocidad del motor y controlarla usando una señal de PWM, el programa de control PID correrá en LabVIEW y las conexiones con el exterior serán manejadas con un microcontrolador PIC18F2550, en esta publicación comentare todo lo referente al proceso de medición de la velocidad y a el manejo de la potencia del motor.


Se utiliza un motor DC de 12000rpm a 24V y 1A (sin carga). Para la practica se alimenta con 15V, voltaje suficiente para que su velocidad máxima sea de unas 7500rpm. Al eje del motor se le adapta un encoder óptico de 40 pasos, la lectura la hace un sensor infrarrojo GP3S62 (herradura), en este caso cada vez que detecta una ranura en el encoder genera un voltaje alto, este voltaje es leído por una entrada del microcontrolador que almacena el numero de pulsos en determinado tiempo y genera la equivalencia en rpm para luego enviarlo al programa de LabVIEW. Para la captura de los pulsos se utiliza el Timer1 y su entrada externa contando pulsos cada 200ms.

En el proceso de lectura se presenta un problema de voltajes ya que en algunos momentos el voltaje alto generado por el sensor es inferior al voltaje que puede leer el microcontrolador y considerar como alto, para solucionar esto se utiliza un disparador smith trigger (74LS14), el funcionamiento de este integrado es fácil de explicar: si el voltaje de entrada es inferior a 3V, el voltaje de salida será de 0V y si el voltaje de entrada es mayor a 3V el voltaje de salida sera de 5V.


Luego de que se procesa el dato de la velocidad del motor y se calcula la magnitud de la salida de el PID en LabVIEW, este dato es enviado al microcontrolador en donde se ve reflejado variando el duty del PWM generado por el microcontrolador. Como se menciono antes el motor se alimenta con 15V así que se usa un MOSFET (IRF540) para manejar este voltaje, para la activación del MOSFET se utiliza un juego de transistores NPN (2N3904) y PNP (2N3906), ademas se aísla este circuito del microcontrolador con un optoacoplador (4N35) ya que su salida es a transistor. Ademas se usa un diodo se marcha libre en paralelo con el motor.


El valor de R3 es de 330Ω, el de R4 y R5 es de 1KΩ y el de R6 debe ser inferior a 50Ω.

En la publicación Control PID para motor DC (Programación) esta disponible el código usado en el microcontrolador y los VIs de LabVIEW.

Si tienes alguna inquietud no dudes en comentar.

octubre 28, 2011

Programador USBtinyISP

Recientemente me encargaron la construcción de un programador para la serie AVR8 es decir los microcontroladores mas famosos de ATMEL, el plano que debí utilizar como base fue el que se encuentra en la pagina web del grupo del Centro de Microelectrónica de la Universidad de los Andes, luego de revisar el esquema y el PCB de la pagina decidí hacer unos cambios en la estructura de la PCB.


octubre 05, 2011

Armando la Coconut Board

Luego de que pasara le emoción de al fin tener en casa las tarjetas llego el momento de ponerme manos a la obra y encarar la construcción de una de las placas para saber si la espera valió la pena.


Luego de alistar los componentes y limpiar la tarjeta con un paño húmedo me dispuse a soldar el microcontrolador (LQFP64). Comience aplicando un poco de soldadura a todos los pads donde iba el microcontrolador, con la ayuda de una pinza ubiqué el microcontrolador y soldé los pads de los extremos para asegurar el chip, luego de revisar que estaban bien ubicados soldé el resto de los pads y probé continuidad entre los pads cercanos para revisar posibles puentes.


Una vez realizado el paso mas difícil lo que me restaba era soldar los condensadores, las resistencias, los led, el cristal de 16MHz, los reguladores y el conector MiniUSB; en ese momento hice la primera conexión a voltaje alimentando la tarjeta desde el puerto USB, todo ando bien. Me quedaba soldar los pulsadores, el conector USB Host, el jack de alimentación y los conectores de los GPIOs.

Cuando termine de soldar todos los componentes llegó el momento de probar el microcontrolador, para eso utilicé la aplicación LM Flash Programmer de Texas Instruments que me permite programar el ARM usando un puerto serial y el bootloader que viene de fabrica en el microcontrolador, utilice un conversor USB-Serial y luego de arreglar un problema con un cable pude cargar un programa básico al microcontrolador.


Cabe indicar que no soldé el cristal de 32.768KHz y el conector MicroSD porque en este momento no los voy a utilizar.

Mas info:
Coconut Board (ARM Cortex-M3).
Stellaris® Flash Programmer, GUI and command line.

Si tienes alguna inquietud no dudes en comentar.

octubre 01, 2011

Coconut Board en casa!

Luego de esperar poco mas de un mes hoy ha llegado a mi casa una paquete con las 10 tarjetas que el grupo de investigación mando a fabricar a China.



El paquete era una caja pequeña rellena de plástico con burbujas, en el fondo se encontraba un paquete sellado al vació con las tarjetas.


Luego de sacarlas del empaque habían 5 tarjetas separadas y otras 5 pegadas con cinta y con una pequeña marca en un lado, supongo que estas 5 tarjetas son las que fueron probadas en Seeed Studio.


Luego de revisar las otras tarjetas no noté errores, creo que todas están en buenas condiciones. Teniendo en cuenta el costo y la calidad de las tarjetas podría decir que el servicio prestado por Seeed Studio es bueno; el único inconveniente es la demora en la entrega, pero por ahorrar unos buenos pesos se puede esperar un mes.

Mañana (domingo) me dedicare a armar una de las placas y si el día me alcanza haré las pruebas con el software de programación.

Mas info:
Coconut Board (ARM Cortex-M3).

Si tienes alguna inquietud no dudes en comentar.

agosto 30, 2011

eZ430-Chronos

Quizá algunos conozcan ya el nuevo sitio de Texas Instruments TI Deals, la idea de este sitio es entregar "bonos" de descuento para comprar algunas herramientas y kits de desarrollo que ya están a punto de ser descontinuados. La promoción comenzó el 9 de agosto y permaneció activa por 36 horas, en esa oportunidad la promoción aplico sobre el conocido eZ430-Chronos; hoy se dio inicio a otra promoción que también durara 36 horas y en este caso el bono servirá para adquirir una tarjeta de desarrollo que integra algunos de sus microcontroladores con funcionalidad USB.

Como ya habrán imaginado yo compre el eZ430-Chronos, lo pedí el mismo 9 y ya estaba en mi casa el 12 de agosto, el precio del reloj fue de $24.5 incluyendo el envío y a la llegada a Colombia no cobraron impuestos.


El reloj incluye un microcontrolador que tiene integrado un modulo RF de menos de 1GHz de frecuencia al igual que un sensor de temperatura, los sensores externos con los que cuenta son un acelerómetro de 3 ejes y un sensor de presión. El kit, ademas del reloj incluye un nodo RF para comunicar el reloj con el computador o algún host USB, un programador, un destornillador y un par de tornillos.


Por ahora solo he probado algunas de sus funcionalidades, espero tener el tiempo suficiente para poder revisar el programa y hacer algunas modificaciones en las que ya he estado pensando.

Mas Info:
EZ430-Chronos Wiki.
EZ430-Chronos eStore.

agosto 13, 2011

Coconut Board - ARM Cortex-M3

Recientemente he estado trabajando con los microcontroladores ARM como el de la LPCXpresso LPC1114, en estos días he querido avanzar un poco mas y aprovechando que en mi universidad han creado un grupo de investigación en microelectrónica del cual yo soy miembro he propuesto la creación de una tarjeta de desarrollo basada en un microcontrolador ARM, luego de presentar la idea esta fue aprobada y llegaron días de arduo trabajo.

Para comenzar se debía seleccionar un microcontrolador que fuera mas potente que un LPC1114 (Cortex-M0) y económico, así que apele a uno de los mejores amigos que tiene un estudiante cuando necesita un chip gratis, Texas Instruments. Estuve buscando un rato entre la cantidad de microcontroladores ARM que fabrica Texas y encontré los de la gama 3000 y 5000, vi que los de la gama S3000 no estaban en el programa de muestras de Texas pero los de la S5000 si. Estuve revisando algunos chips y luego de descartar algunos (por no estar en el programa de muestras o por tener un encapsulado difícil de soldar a mano) la elección fue el LM3S5732, habían algunos otros pero este me convenció por sus prestaciones en memoria.


Ahora venia el diseño de una PCB en donde montar el chip para comenzar a sacarle el jugo, para saber que tipo de PCB se debía diseñar era necesario recordar las características de el microcontrolador, estas son:

- Procesador ARM Cortex-M3 a 50MHz.
- Debug via JTAG.
- Memoria Flash de 128Kb.
- Memoria SRAM de 64Kb.
- Memoria ROM con Bootloader y StellarisWare Software.
- 33 GPIOs.
- Timers de 32bits.
- ADC de 10bits.
- 2 Puertos UART con soporte IrDa.
- Puerto SSI (SPI).
- 2 Puertos I²C, velocidad estándar de 100Kbps y máxima de 400Kbps.
- Puerto CAN 2.0, velocidad superior a 1Mps.
- Puerto USB 2.0, velocidad entre 1.5Mbps y 12Mbps, host USB.

Viendo esto se sabe que no puede ser cualquier placa, debe estar diseñada de manera que sin muchas modificaciones se pueda aprovechar todo el potencial de este chip. Luego de unos días de trabajo nació "Coconut Board" (Diseñada por Palma).


La tarjeta tiene:

- Conector Jack-DC, para alimentacion externa.
- Conector Mini-USB (Modo Device).
- Conector USB-A (Modo Host).
- Reguladores de voltaje a 5V y 3.3V de 800mA cada uno.
- Jumper para selección de la fuente de alimentación.
- Pulsadores Reset, Wake y de usuario.
- Leds de encendido, hibernación y de usuario.
- Conector de voltajes.
- Conector JTAG.
- Conector para los GPIOs.
- Conector de puertos análogos.
- Conector para tarjeta MicroSD.

Esta semana el grupo envió el diseño a Seeed Studio, así que en unos 20 días las PCBs estarán llegando a mi casa. Luego del ensamble y las primeras pruebas liberaremos el esquema, un pequeño manual y un programa básico para probar el funcionamiento de la tarjeta.

Mas info:
Coconut Board (ARM Cortex-M3).

Si tienes alguna inquietud no dudes en comentar.

julio 04, 2011

Reloj Binario

Hoy comparto un proyecto que tenia en mente desde hace unos meses, que luego abandone y que en estos días me anime a encararlo nuevamente. Un reloj binario como lo define Wikipedia seria "Un reloj que despliega la hora o tiempo con el sistema numérico binario, la representación de las horas se hace mediante una o varias barras de LEDs", así que ya se podrán imaginar a que me estoy refiriendo.


junio 14, 2011

GrIDMe

Hace unos meses en mi universidad nació la iniciativa de la creación de un grupo de investigación basado en un grupo de estudiantes de Ingeniería Mecatrónica, luego de algunas reuniones se decidió crear el grupo y orientar su trabajo hacia el área de la microelectrónica, buscando que el uso de esta en la universidad fuera mayor.

El nombre escogido para el grupo fue GrIDMe, de Grupo de investigación y desarrollo en Mecatrónica, las lineas sobre las que trabaja el grupo son microelectrónica, robótica e inteligencia artificial; la idea es que las lineas se logren complementar. Por el momento el grupo es pequeño así que se esta desarrollando un solo proyecto con la colaboración de todos los miembros.

El grupo ya esta acreditado por la universidad y registrado en Colciencias, ademas el grupo tiene una pagina web en donde presenta cada una de las lineas y el avance de los proyectos.

Pagina web del grupo: GrIDMe

mayo 26, 2011

Linealizar una Termocupla


Hace unos días me fue necesario diseñar un circuito que me permitiera linealizar la temperatura de una termocupla, esto con el fin de implementarla en un sencillo control PID integrando además un PLC S7-300.


El funcionamiento del sistema es el siguiente: El voltaje de la termocupla es amplificado para que el ADC (Analog to Digital Converter) del PIC lo pueda leer, luego ese voltaje es convertido a su respectivo valor de temperatura, por medio de una DAC (Digital to Analog Converter) el valor de temperatura es enviado al ADC del PLC donde es leído y entra a ser parte del control PID, la planta está compuesta por una resistencia (que genera calor) y un ventilador; el proceso deberá ser monitoreado desde una HMI.

En el circuito se utilizan un PIC16F877 para leer la temperatura, linealizarla y enviar el valor al ADC del PLC; un amplificador LM358 para amplificar el voltaje de la termocupla (x100), un amplificador LM324 para amplificar el voltaje del DAC al ADC (x2), el circuito tiene borneras para alimentación de 5V para el PIC y el LM358, y de 12V para el LM324, una bornera para conectar la termocupla y una bornera para la salida al PLC, tiene conectores para programación ICSP, un jumper para seleccionar el tipo de termocupla (J o K) y un conector para comunicación Serial (UART).


Para escribir el código del PIC es necesario tener en cuenta ciertos valores relacionados con el voltaje de la termocupla, el ADC del PIC, el ADC del PLC.

- El voltaje de la termocupla está entre los 0mv (0ºC) y los 42.92mV (760ºC).
- La resolución del ADC del PIC es de 10bits así que el paso será de 4.8mV (5/1024).
- La resolución del DAC es de 8bits así que el paso será de 19.5mV (5/256).
- La resolución del ADC del PLC es de 8bits así que el paso será de 39mV (10/256).
- La ganancia del LM358 será de 100.
- La ganancia del LM324 será de 2.

En el archivo para descargar se encuentran los planos en EAGLE y el código del PIC.
Para descargar: termocupla.rar

Si tienes alguna inquietud no dudes en comentar.

abril 25, 2011

Efecto BIG MUFF PI



Presento este proyecto por si acaso alguno de ustedes es guitarrista y le interesaría hacerse su propio pedal. Me animé a construir este pedal ante la insistencia de mi hermano (que es guitarrista). Después de un rato de búsqueda en la red, encontrar algunas versiones y leer opiniones pude concluir que la mejor opción seria construir uno basado en transistores PNP porque según dicen los que realmente saben, este tiene mejor sonido. Admito que de estos temas de efectos y sonidos no se mucho, así que no podría dar una explicación detallada de la manera en que funciona este efecto.

abril 23, 2011

PICKit 2 Clone ICSP


Basado en la publicación de hace unos meses (años) PICKit 2 Clone Zócalo ZIF, he decidido compartir otra versión del PICKit 2 Clone, esta versión ha sido desarrollada por Suky y Felixls.


marzo 05, 2011

Hello World con la LPC1114 LPCXpresso Board


Luego de haber desempacado el LPCXpresso vamos a ver como la configuramos para hacerla andar y lograr el famoso "Hello World" que en este caso será encender un LED. Como primer paso debemos instalar el IDE para poder desarrollar nuestros programas, este se puede descargar desde la pagina de Code Red luego de ingresar algunos datos y registrarnos.


Cuando conectamos la placa se inicia un programa que esta precargado en el LPC1114, este programa enciende y apaga un LED durante determinado tiempo. Al mismo tiempo el sistema nos informa sobre un nuevo dispositivo detectado y tendremos que hacer la instalación de los drivers que se encuentran en la carpeta de instalacion del IDE. Luego abrimos el IDE e importamos uno de los proyectos de ejemplo.


En este caso abriremos el proyecto "blinky", que no es mas que un programa que hace parpadear un led, la idea de abrir este proyecto es con el fin de probar la placa; asi que modificaremos el trozo de codigo que genera el retardo en el estado del LED, luego cargaremos el programa nuevamente en el LPC1114, con la herramienta "Debug" podremos controlar la ejecucion del programa y veremos como se cargan los diversos registros del LPC1114, o simplemente podemos arrancar el programa y veremos como cambió la frecuencia de encendido del LED.


Se puede desarrollar un programa que modifique la frecuencia de encendido del LED basado en una lectura analogica con alguno de los canales del LPC1114, pero eso será mas adelante.

Si tienes alguna inquietud no dudes en comentar.

marzo 02, 2011

LPC1114 LPCXpresso Board


Hace un tiempo la gente de NXP realizó un concurso el cual consistía en mostrar de que manera nos podiamos deshacer de los microcontroladores de 8 y 16 bits para poder adquirir una placa de desarrollo de 32-bits, en este concurso muchas personas agregaron fotos y videos en los que pasaban por fuego, cortaban, trituraban o simplente tiraban al bote de la basura algunas placas de desarrollo como el Arduino, el MSP430 LaunchPad, entre otros. Yo me inscribi y envie una foto con algunas placas de mis proyectos (sin llegar a destruirlas), la foto fue aceptada y luego de esperar unos días, hoy ha llegado a mi casa la LPC1114 LPCXpresso Board, que es la mas básica de las tres placas de la linea LPCXpresso.


Las características de la LPC1114 LPCXpresso Board son las siguientes:

- Procesador : Microcontrolador NXP's Cortex-M0 LPC1114 en encapsulado LQFP48
- Flash: 32 kB
- SRAM: 8 kB
- Cristal:12.000 MHz
- Dimensiones: 35 x 140 mm
- Alimentación: Externa de 3.15V-3.3V, o desde el LPC-LINK
- Connectores: Todos los pines del LPC1114 están disponibles en un conector de expansión de 27 pines
- Otros:
Embedded JTAG (LPC-LINK) soportado por el LPCXpresso IDE
El LPC-LINK puede ser conectado a un procesador externo después de hacer algunas modificaciones a la placa
LED en PIO0_7

Y las características del microcontrolador LPC1114 son:

- Procesador: Núcleo ARM Cortex-M0 con velocidad superior a 50 MHz
- Flash: 32 kB
- SRAM: 8 kB
- Timers:
Dos Timers de 32 bits
Dos Timers de 16 bits
Un Watchdog timer
- PWM: 13 Usando los timers
- ADC: De 10 bits con muplexor de entradas
- Interfaz serial: 1xUART, 1xI2C, 2xSSP
- Otros:
Serial Wire Debug
PMU integrado para reducir el consumo de energía
Tres modos de reducción de consumo: Sleep, Deep-sleep, y Deep power-down
Code Read Protection (CRP) con diferentes niveles de seguridad

La programación se realiza en C++, con un IDE que se puede descargar de la pagina de LPCXpresso



Ahora solo queda instalar el IDE y comenzar a experimentar con esta gran herramienta, en la entrada Hello World con la LPC1114 LPCXpresso hablare sobre los pasos de instalación de software y hardware; y les presentare mi primer programa desde 32 bits.

Mas Info: NXP Semiconductors - Microcontrollers [LPCXpresso - LPC1114].

febrero 17, 2011

Concurso FREE LPCXpresso!


La empresa NXP esta realizando un concurso en el que invita a los aficionados a la electrónica a ganarse una placa de desarrollo LPCXpresso con el fin de dar a conocer sus microcontroladores basados en ARM Cortex-3 de 32 bits, el concurso pide que se muestre la forma en que el concursante de desharía de sus herramientas de desarrollo de 8 bits y 16 bits con el fin de iniciarse en el mundo de los 32 bits.


Esta es la pagina del concurso Video and Photo Gallery - Receive your free NXP LPCXpresso board.

enero 14, 2011

Configuracion de Modulos XBee



El protocolo ZigBee ha sido diseñado para soportar un diverso mercado de aplicaciones que requieren bajo coste y bajo consumo, con una conectividad más sofisticada que los anteriores sistemas inalámbricos. El estándar ZigBee enfoca a un segmento del mercado no atendido por los estándares existentes, con baja transmisión de datos, bajo ciclo de servicio de conectividad. La razón de promover un nuevo protocolo como un estándar es permitir la interoperabilidad entre dispositivos fabricados por compañías diferentes. Los mercados como la automatización de edificios y hogares, la atención sanitaria, control industrial, control de alumbrado y control comercial, son los principales campos de aplicación.

Esta comunicación se realiza en la banda libre de 2.4GHz. A diferencia de bluetooth, este protocolo no utiliza FHSS (Frequency hooping), sino que realiza las comunicaciones a través de una única frecuencia, es decir, de un canal. Normalmente puede escogerse un canal de entre 16 posibles. El alcance depende de la potencia de transmisión del dispositivo así como también del tipo de antenas utilizadas (cerámicas, dipolos, etc) El alcance normal con antena dipolo en línea vista es de aproximadamente de 100 m y en interiores de unos 30m. La velocidad de transmisión de datos es de hasta 256kbps.

¿Cómo empleamos los módulos ZigBee?

Pues bien, debido a que estos dispositivos poseen una interfaz serial, se emplea la misma para transmitirle los datos desde un ordenador o desde un microcontrolador, luego el modulo se encargara de empaquetar este dato y transmitirlo vía inalámbrica a otro dispositivo ZigBee que al recibir el dato lo enviara a su interfaz serial en donde se suele conectar igualmente un ordenador u otro microcontrolador.

¿Qué tipos de datos puedo Transmitir?

Los módulos ZigBee han sido diseñado con el firme propósito de incursionar en el mundo de los sistemas Scada (Sistemas de Supervisión y Control y Adquisición de Datos de Forma Remota) y en los sistemas Domoticos. Es decir, para realizar transmisiones con requerimientos muy bajos de transmisión de datos y consumo energético. Tales como la información de sensores, recolección de datos médicos,ejercer labores de detección de humo o intrusos. En fin para transmisiones de datos que no requieran un gran ancho de banda. Esta es una característica de los módulos ZigBee que no permiten la transmisión de audio y vídeo.

ZigBee vs. Bluetooth:

ZigBee es muy similar al Bluetooth pero con algunas diferencias

Una red ZigBee puede constar de un máximo de 65535 nodos distribuidos en subredes de 255 nodos, frente a los 8 máximos de una subred (Piconet) Bluetooth.

Menor consumo eléctrico que el de Bluetooth. En términos exactos, ZigBee tiene un consumo de 30mA transmitiendo y de 3uA en reposo, frente a los 40mA transmitiendo y 0.2mA en reposo que tiene el Bluetooth. Este menor consumo se debe a que el sistema ZigBee se queda la mayor parte del tiempo dormido, mientras que en una comunicación Bluetooth esto no se puede dar, y siempre se está transmitiendo y/o recibiendo.

Tiene una velocidad de hasta 250 kbps, mientras que en Bluetooth es de hasta 3 Mbps. Debido a las velocidades de cada uno, uno es más apropiado que el otro para ciertas cosas. Por ejemplo, mientras que el Bluetooth se usa para aplicaciones como los teléfonos móviles y la informática casera, la velocidad del ZigBee se hace insuficiente para estas tareas, desviándolo a usos tales como la Domótica, los productos dependientes de la batería, los sensores médicos, y en artículos de juguetería, en los cuales la transferencia de datos es menor.

Dispositivos:

Tipos de dispositivos

Se definen tres tipos distintos de dispositivo ZigBee según su papel en la red:

Coordinador ZigBee(ZigBee Coordinator, ZC). El tipo de dispositivo más completo. Debe existir uno por red. Sus funciones son las de encargarse de controlar la red y los caminos que deben seguir los dispositivos para conectarse entre ellos.

Router ZigBee(ZigBee Router, ZR). Interconecta dispositivos separados en la topología de la red, además de ofrecer un nivel de aplicación para la ejecución de código de usuario.

Dispositivo final (ZigBee End Device, ZED). Posee la funcionalidad necesaria para comunicarse con su nodo padre (el coordinador o un router), pero no puede transmitir información destinada a otros dispositivos. De esta forma, este tipo de nodo puede estar dormido la mayor parte del tiempo, aumentando la vida media de sus baterías. Un ZED tiene requerimientos mínimos de memoria y es por tanto significativamente más barato.

Como ejemplo de aplicación en Domótica, en una habitación de la casa tendríamos diversos Dispositivos Finales (como un interruptor y una lámpara) y una red de interconexión realizada con Routers ZigBee y gobernada por el Coordinador.

¿Cómo configurar 2 módulos ZigBee en modo Transparente?

El uso de estos módulos Xbee2 permite reemplazar un cable por una comunicación serial inalámbrica, hasta el desarrollo de configuraciones punto a punto, multipunto, peer-to-peer (todos los nodos conectados entre sí) o redes complejas de sensores. Lo primero que se necesita es el circuito de Conexión para poder emplear los módulos ZigBee.

La siguiente figura muestra las conexiones mínimas que necesita el módulo Xbee para poder ser utilizado.


El módulo requiere una alimentación desde 2.8 a 3.4 V, la conexión a tierra y las líneas de transmisión de datos por medio del UART (TXD y RXD) para comunicarse con el microcontrolador, o directamente a un puerto serial utilizando algún conversor adecuado para los niveles de voltaje como un max232. Como se puede observar en la imagen también es necesario dividir el voltaje de entrada al modulo Xbee2 desde los 5v que salen del pic a los 3.3 que él puede soportar, para esto se emplearon 3 resistencias de 10k. Es importante señalar que el disminuir el nivel de tensión no afecta la información.

La programación de los módulos Xbee2, se realiza de manera de que todo lo que ingresa por el pin 3 (Data in), es guardado en el buffer de entrada y luego transmitido y todo lo que ingresa como paquete RF, es guardado en el buffer de salida y luego enviado por el pin 2 (Data out). Los módulos Xbee2 no vienen programados por lo que es necesario hacer uso del software que proporciona el fabricante para configurarlos en modo Transparente. Este modo está destinado principalmente a la comunicación punto a punto, donde no es necesario ningún tipo de control. También se usa para reemplazar alguna conexión serial por cable, ya que es la configuración más sencilla posible y no requiere una mayor configuración. En este modo, la información es recibida por el pin 3 del módulo Xbee, y guardada en el buffer de entrada. Dependiendo de cómo se configure el comando RO, se puede transmitir la información apenas llegue un carácter (RO=0) o después de un tiempo dado sin recibir ningún carácter serial por el pin 3. En ese momento, se toma lo que se tenga en el buffer de entrada, se empaqueta, es decir, se integra a un paquete RF, y se transmite. Otra condición que puede cumplirse para la transmisión es cuando el buffer de entrada se llena, esto es, más de 100 bytes de información.

Básicamente todo lo que pasa por el puerto UART (DIN, pin 3), es enviado al módulo deseado, y lo recibido en el módulo, es enviado devuelta por el mismo puerto UART (DOUT, pin2). Existen básicamente 4 tipos de conexiones sencillas. La diferencia principal radica en el número de nodos o puntos de acceso, y la forma en que éstos interactúan entre sí.

Sólo se debe configurar la dirección. Para ello se utilizan los comandos MY y el DL. La idea, es definir arbitrariamente una dirección para un módulo, usando el comando MY, el cual se va a comunicar con otro que tiene la dirección DL, también definida arbitrariamente. Con esto cada módulo define su dirección con MY, y escribe la dirección del módulo al cual se desea conectar usando DL.

Configuración de los Módulos Xbee2

Los módulos Xbee2 pueden ser programados a través de una Hyperterminal y una interface serial con un max232 y una serie de comandos llamados at, pero este método es más complicado.

Existen dos tipos de interfaces, serial y usb que pueden ser utilizadas para configurar los módulos Xbee2 con un software propietario llamado X-CTU. Con este software podemos definir de una forma rápida todos los parámetros que queramos modificar en nuestros módulos. Una de las ventajas es que podemos tener hasta 65000 combinaciones distintas de red y se pueden hacer redes de punto a punto y punto a multi-punto.

Los módulos tienen 6 convertidores análogo-digital y 8 entradas digitales además de rx y tx. La imagen siguiente muestra la ventana del software X-CTU, con el cual se programan los módulos Xbee2, basta con hacer click sobre cualquiera de los parámetros para introducir el valor deseado.

Paso 1: El primer paso para la programación de estos módulos es conectarlos con el puerto serial o usb de la computadora empleando el siguiente circuito de conexión.


La imagen muestra como conectar el modulo Xbee con el puerto serial de una computadora pero también podría emplearse un convertidor serial- usb y conectar directamente en un puerto USB del ordenador.

Por medio del software X-CTU se selecciona el puerto al que se conecta el modulo inalámbrico y de esta forma se establece la comunicación entre el software y el modulo. Luego se debe verificar la conexión por medio de X-CTU para esto se presiona sobre la ficha “PC Settings” y al conectar el puerto indicado en esta ventana se pulsa el botón “Test /Query” como se muestra en la imagen.


Paso 2: Luego de que muestre el mensaje que indica que sí existe conexión entre el modulo y el software. Se procede a leer los parámetros del Xbee2, para esto se selecciona la ficha “Modem Configuration” y en Modem: se selecciona el modulo Xbee que se desea programar. Tal y como se muestra en la siguiente figura. Por ejemplo si se posee un modulo Xbee serie 2 se debe seleccionar XB24-B en el recuadro marcado con color verde.


Paso 3: El paso tres consiste en presionar el botón Read.

Paso 4: El siguiente paso es seleccionar el modo de operación del Xbee. Para eso se selecciona “Function Set”. Tal y como se muestra en la siguiente figura, existen muchas formas distintas en las cuales se pueden programar los módulos. Los diferentes modos de programación están remarcados con color verde. Es muy importante hacer notar que si se desea configurar 2 módulos Xbee para que operen como un cable virtual. Es decir, que solo se transmitan información entre ellos y No en red. Se debe escoger uno de los módulos en modo COORDINATOR y el otro en modo ROUTER /END DEVICE.


Paso 5: Después de haber seleccionado un modulo como COORDINATOR y otro como END/DEVICE. Se procede a programar los siguientes parámetros.

Primero se Procede a programar en el Coordinador los siguientes parametros

-DH : Destination Address High: aquí se debe colocar el número (#######) SH -Serial Number High. Que se lee del otro modulo.

-DL: Destination Address Low: aquí se debe colocar el numero (########)SL

- Serial Number Low. Que se lee del otro modulo.

-NI -Node Identifier: igual para ambos módulos.

-BD –Baud Rate: baud rate igual para ambos módulos.

Todos los módulos xbee poseen un nombre SH y SL, para que otro módulo le transmita a él debe colocar en su destinación DH y DL el SH y SL del módulo al que quiere comunicarse. Luego la velocidad de baud rate, el pan id, y el canal de transmisión debe ser igual en los 2 modulos. Ver siguiente figura.

Paso 6: Consiste en revisar los parámetros y luego pulsar el botón write para que la configuración establecida pueda ser guardada en la memoria del módem inalámbrico.


Como se puede observar en la imagen anterior al finalizar la configuración deben corresponder el SH y SL del Router con el DH y DL del Coordinador y viceversa. Aparte de los otros parámetros comentados anteriormente.

En resumen, se conectan los modulos con un hardware apropiado. A algún puerto serial o usb de la computadora. Se verifica la conexión con el modem inalámbrico. Se leen los parámetros del primer modem y se anotan su SH y SL. Luego se desconecta este modulo. Se conecta otro modulo y se llenan los parámetros DH Y DL con los SH y SL tomados del anterior. Se fija una velocidad de Baud, un canal de comunicaciones entre los 16 disponibles, se verifica el pan id que corresponda con el pan id del modem anterior y se pulsa el botón write. Por último se retira este modem y se conecta el primero nuevamente y se llenan los parámetros DH Y DL con los SH y SL respectivamente.

Basado en el tutorial de Julio Marturet que se encuentra en su pagina.

Si tienes alguna inquietud no dudes en comentar.