Sei sulla pagina 1di 72

USO DEL PUERTO USB(UNIVERSAL SERIAL BUS) DE LA COMPUTADORA PERSONAL EN EL DISEO Y UTILIZACIN DE UN SISTEMA DE ACOPIO DE INFORMACIN GENERADA POR

SENSORES
Presentada por: Profesor Ismael Snchez Ros Catedrtico Asociado Departamento de Electrnica e Instrumentacin Universidad de Puerto Rico en Bayamn Noviembre 2011

Qu significa USB?
USB viene de frase en Ingles Universal Serial Bus que se utiliza para describir un tipo de puerto en la computadora personal en donde se conectan distintos perifricos tales como mquinas de imprimir, camaras fotogrficas, teclados de computadoras e infinidad de productos de uso generalizado.
Un puerto es una localizacin en la computadora en donde conectamos los perifricos. Estos pueden enviar informacin a la computadora, recibir informacin de la misma o hacer ambas cosas.

La computadora personal moderna tiene dos puertos tpicos de conexin:

a) El puerto USB descrito anteriormente b) El puerto Ethernet usado para conectar la computadora personal a la Internet Tambin incluye internamente otros puerto nombrados PCI etc. para usos en aplicaciones que requieran mayores velocidades de transferencia de informacin los cuales no fueron objeto de investigacin en este trabajo. Nos concentramos especficamente en el puerto USB.

Qu es un sensor?
En esta presentacin mezclamos ambos trminos sensor y transductor. Un transductor es un dispositivo que convierte de una forma de energa a otra. En nuestro caso por ejemplo tomamos la variable fsica humedad relativa y la convertimos en un voltaje que pudiera ser convertido de analgico a digital y as ser procesado por una computadora. Un sensor detecta la presencia de algn objeto o variable fsica. En nuetro caso por ejemplo usamos un interruptor para detectar si una puerta estba cerrada o estaba abierta.

Motivacin: Este trabajo est motivado por la necesidad de generar nuevos conocimientos y diseminar el conocimiento disponible en la literatura y en la Internet. Dada la gran cantidad de computadoras disponibles en la Universidad que poseen un puerto USB y la diversidad de lugares en donde operan dichas computadoras se impone un proyecto que haga uso de las mismas y saque provecho de sus capacidades computacionales para implementar un uso prctico como lo es el acopio de informacin producida por sensores. En un proyecto como este se pueden implementar destrezas de diseo y uso de circuitos electrnicos y desarrollo de programacin en lenguajes como C y Visual Basic como fue en nuestro caso. Tambin se involucra a los estudiantes para que pongan en prctica los conocimientos adquiridos en el transcurso de su bachillerato.

Componentes Bsicos Necesarios para Implementar el proyecto

Diagrama en bloque del sitema diseado

Descripcin de algunos sensores y transductores usados

a) Transductor de Temperatura y Humedad relativa Mide ambas variables y las convierte a voltajes desde 0 hasta 1 voltio Temperatura 0 voltios 1voltio representa 0 100 C Humeda relativa 0 voltios 1 voltio representa 0 100 % de HR

Sensor de Humedad relativa

b) Sensor de presin atmosfrica

Este sensor de presin atmosfrica est calibrado para medir la presin en Kilo-Pascales (kPa). Necesita una fuente externa para operar de 5V DC.

c) Los interruptores se utilizarn para indicar el estado de una puerta (abierta o cerrada). Estos estarn conectados a una fuente de 5v DC que se puede obtener del conector USB.

d) Detector de Luz (Fotorresistencia): La fotorresistencia se utilizar para detectar si la luz de un cuarto est prendida o apagada. Esta estar conectada a una fuente de 5V DC que se puede obtener del conector USB.

e) Detector de Movimiento El detector de movimiento trabaja con un emisor de infrarrojo. Est puede detectar movimiento hasta una distancia de 20 pies. El detector necesita una fuente externa para operar de 3.3v a 5v DC.

f) Detector de Humo El detector de humo trabaja en conjunto a una alarma que se activa cada vez que detecta humo. Necesita ser enchufado a un receptculo con 120v AC para que pueda operar.

Sensor de CO2(Dioxido de Carbono)

Sensor de Monoxido de Carbono

Sensor de metano (CH4 (Methane) Gas Sensor)

PING))) Ultrasonic Sensor

OTROS ELEMENTOS CONTROLABLES

Relevador

Motores elctricos

Bombillas

El prototipo del sistema diseado y algunos sensores

El microcontrolador: pieza clave del proyecto:


El microcontrolador utilizado en este diseo es el PIC18F4550 Un microcontrolador es una computadora en miniatura capaz de ejecutar instrucciones aritmticas y lgicas. Tambien incluye un sinnumero de puertos que le dan versatilidad al momento de la implementacin de un proyecto . En el caso nuestro una caracterstica indispensable del microcontrolador era que tuviera capacidad de comunicarse en el protocolo USB. El microcontrolador se diferencia del microprocesador de la computadora personal en que tiene una cantidad de instrucciones reducidas y optimizadas para aplicaciones especficas.

Caractersticas del microcontrolador PIC18F4550

El microcontrolador PIC18F4550 tiene muchas caractersticas bsicas que lo hacen apropiado para ser utilizado en nuestro diseo

Listado de Caractersticas del Microcontrolador PIC18F4550

77 tipos instrucciones. Compatibilidad con el cdigo fuente de un PIC16F. Memoria de Programa para direccionamiento hasta 2 MB. Memoria de Datos para direccionamiento hasta 4 kB. Operable de DC a 40MHz. 8X8 Multiplicador de Hardware. Niveles de interrupcin con prioridad Instrucciones de 16-bit-de ancho y ruta de data de 8-bit-de ancho Dos Temporizadores de 8 bits y dos contadores de 8 bits. Tres Temporizadores de 16 bits y Tres contadores de 16 bits. Cuatro Interruptores Externos.

Caractersticas del PIC18F4550 (continuacin) Alta corriente (25mA) para capacidad de la fuente. Convertidor Rpido de Anlogo a Digital de 10 bits. Mdulo de Deteccin Programable de bajo voltaje (LVD). Inicializacin al ser encendido Power on Reset (POR), Temporizador de encendido Power-up timer (PWRT), Oscilador con Temporizador para iniciar (OST). Programacin de Instrucciones en Lenguaje C. Entre muchos otros ms.

El PIC18F4550 tambin ofrece conexin directa con las siguientes interfases: USB 2.0 CAN 2.0 LCD controlado ZigBee Control de Motores Y otros

Diagrama de conexiones del PIC18F4550

Prototipo Bsico

Diagrama del Diseo

Tarjeta impresa para soldar circuitos

Puede observarse el microcontrolador y otros componentes del circuito

Programacin del Sistema Diseado

La programacin del sistema diseado conlleva el uso de lenguajes de alto Nivel. Se utilizaron dos programados diferentes para codificar en Lenguaje C y Visual Basic. El lenguaje C se utiliz para programar al microcontrolador PIC18F4550. El compilador de Lenguaje C utilizado fue el Mikro C. Este consta de un editor que permite escribir y corregir el programa y tambin genera el codigo en formato hex necesario para programar la memoria del microcontrolador. El lenguaje Visual Basic utilizado para programar la computadora personal pas por varias estapas. Comenzamos utilizando el lenguaje Visual Basic 6.0 y luego emigramos a lenguaje Visual Basic 2008. Este eventualmente emigrar a la ltima versin de Visual Basic que est disponible.

Comenzamos en Visual Basic 6.0 porque para poder comunicar a la computadora personal con su puerto USB, utilizamos un programa conocido como el HID wizard.

Este programa nos permite insertar los parmettros de inicializacin del puerto USB y los convierte en comandos en el formato usado por Visual Basic 6.0. La frase HID viene del ingls Human Interface Device y tiene que ver con las rutinas que utiliza el protocolo USB para comunicarse con el teclado de la computadora, el raton y otros perifricos de uso comunmente humano.
El uso del HID wizard simplifica la programacin ya que no tenemos que desarrollar programas conocidos como drivers lo cual estaba fuera de nuestros conocimientos.

Programacin en Lenguaje C usando el compilador Mikro C

Ventana para configurar el reloj del PIC18F4550

Las siguientes configuraciones son recomendadas para el proyecto que se estar trabajando, por favor seleccione solamente los siguientes: PLLDIV_2_1L CPUDIV_OSC1_PLL2_1L USBDIV_2_1L FOSC_HSPLL_HS_1H FCMEM_OFF_1H IESO_OFF_1H PWRT_ON_2L BOR_ON_2L BORV_43_2L VREGEN_ON_2L WDT_OFF_2H WDTPS_256_2H MCLRE_ON_3H LPT1OSC_OFF_3H PBADEN_OFF_3H CCP2MX_ON_3H STVREN_ON_4L LVP_OFF_4L ICPRT_OFF_4L XINST_OFF_4L DEBUG_OFF_4L

El diagrama que sigue ilustra como el PIC18F4550 produce el Reloj de operacin y de acuerdo a esto se programa

Una vez termine de seleccionar todas las configuraciones oprima OK para comenzar a programar. Si desea en el futuro cambiar alguna configuracin puede hacerlo oprimiendo Proyect de nuevo y seleccione Edit Proyect

El microcontrolador PIC18F4550 tiene un convertidor de Analgico a Digital de 10 Bits. Tambien tiene un selector de canales para escoger cual seal analgica va a ser convertida a digital.

Aspectos importantes en el programa en C


Es importante mencionar, que la funcin del programa principal (Main Function) estar ejecutndose dentro de un ciclo infinito [for ( ; ; )].

Se program el Puerto A (PORT A) para utilizarlo como entradas anlogas. La instruccin TRISA = 0xFF inicializa todo el PORT A como entradas. A las entradas analgicas se les tiene que asignar unos canales: AN0, AN1, AN2,, AN12, para que pueda pasar por el convertidor de anlogo a digital (A/D) que se encuentra internamente en el microcontrolador.
En este proyecto se utiliz el canal AN0 asignado a puerto RA0, el canal AN1 a RA1 y canal AN2 a RA2. En el puerto RA0 se conectar el sensor de Temperatura En el puerto RA1 se conectar el Sensor de Humedad (HX302/303) El puerto RA2 se conectar el Sensor de Presin Atmosfrica (MPX200/201).

Aspectos importantes en el programa en C (continuacin)


Se debe tomar en cuenta lo siguiente al convertir el voltaje leido de un sensor por un puerto de entrada analgica: Conversin Voltaje. A/D = (Vsensor * 5000 mV) / 1024 (Paso inicial para convertir el voltaje de un sensor.) Como el convertidor de A/D es de 10 bits, se sabe que 210 = 1024. Se va a tomar el voltaje que sale por el convertidor de A/D y se va multiplicar por el voltaje de referencia que se obtiene del USB (+5v) y luego se va a dividir por 1024.

Aspectos importantes en el programa en C (continuacin) Luego de convertir el voltaje se va seguir las especificaciones de calibracin que tenga el sensor que se est utilizando. En el caso de la conversin del Sensor de Temperatura y Humedad se va a multiplicar por 100, obteniendo una temperatura en C y una humedad relativa en %. Estos sensores producen un voltaje mximo de 1 voltio tanto para el valor mximo de temperatura como para el de humedad relativa. La conversin del Sensor de Presin se obtiene en kPa, pero convertimos los kPa en milli-Bars (mB) utilizando la siguiente frmula: mB = (2.0*Vconversin + 0.95) / 0.009

Aspectos importantes en el programa en C (continuacin) En el Puerto B (PORT B) se program la mitad para entradas digitales (RB0, RB1, RB2, RB3) y la otra mitad como salidas digitales (RB4, RB5, RB6, RB7).

Utilizado la instruccin ADCON1 = 0xFF se inicializa todo el PORT B para utilizarlo como entrada y/o salida.
La instruccin TRISB = 0x0F (0000 11112) inicializa la mitad de PORTB como entrada y la otra mitad como salida.

Aspectos importantes en el programa en C (continuacin) En el programa, a toda la informacin que se lee por los puertos (PORT A y PORT B) se le asignan unos arreglos en especfico, estos son:

Write_buffer[4], Temperature[8], Humidity[8], Pressure[8],


y todos estos arreglos se unen (concatenan) en un Buffer de 32 caracteres (bytes) declarado como

Cat_Temp_Hum_Press_Digital[32].
Es importante mencionar que el programa siempre debe tener incluida la librera de USBdsc.c

Aspectos importantes en el programa en C (continuacin)

La linea siguiente debe estar incluida en el programa:


#include"C:\Program Files\Mikroelektronika\mikroC\Examples\EasyPic4\extra_examples\HID -library\USBdsc.c A esta librera se le deben asignar los Buffers de entrada y salida. Los Buffers se enumeran de forma de 2n. En este caso como se utilizan ms de 16 caracteres se bebe asignar 32 bytes de entrada y salida.

Para acceder a esta configuracin oprima en Tools y seleccione HID Terminal. En la pantalla seleccione Descriptor y verifique que en el Report Length, ambas, salida y entrada, deben tener 32 bytes.

Importante: Hay ocasiones donde el Report Length no guarda los datos. Por esta razn es necesario abrir la carpeta en donde est localizado el programa de mikroC y buscar la librera USBdsc.c. Debe de abrir el cdigo y entrar los valores de los Buffers directamente. Observe la siguiente ilustracin del cdigo de la librera.

Observe en la figura donde se inicializan los valores de los buffers en la libreria USBdsc.c

Aspectos importantes en el programa en C (continuacin)

Los arreglos:
op[12], op2[12], op3[12], op4[12] se utilizan para retener la data en forma de string. Como se estn utilizando Buffers en exceso, el programa acumula algunos espacios en blancos que son innecesarios. Estos espacios son tomados por el programa como caracteres, los cuales resultan ser basura (garbage). Los arreglos ops luego se utilizan para remover la basura acumulada. Luego de remover los espacios en blancos, todos los Buffers quedan guardados en el arreglo concatenado llamado Cat_Temp_Hum_Press_Digital.

Aspectos importantes en el programa en C (continuacin) Finalmente, se utiliza la instruccin Hid_Write(&Cat_Temp_Hum_Press_Digital,32) para enviar todo el buffer que contiene 32 bytes o 32 caracteres por el interface de USB a la computadora. La instruccin de Delay_ms( ) asigna un retraso en unidades de milisegundos (ms) al proceso del programa.

Listado del Programa en lenguaje C

Vease documento adjunto a esta presentacin

Pasando el Programa a la memoria del Microcontrolador

Utilizamos el programador PICkit 2 para pasar el archivo hex creado por el Compilador MikroC a la memoria del PIC18F4550

El programa ha sido transferido con xito la memoria del PIC18F4550

El programa en Visual Basic Programa de EasyHID El programa de EasyHID USB Wizard, desarrollado por Mecanique, es un programa gratuito y de fcil instalacin. Se utilizar ste programa para desarrollar un proyecto en Visual Basic 6.0, donde ste tendr el cdigo escrito para poder trabajar con la interface USB 2.0.

Company Name: Para decir el nombre de la compaa (Cualquier nombre). Product Name: Para el nombre del producto (Cualquier nombre). Serial Number: Para poner un nmero de serie (Es opcional).

Importante: Los VID y PID son nmeros autnticos que asignan los Implementadores de USB (USB Implementers Forum, Inc.) y tiene un costo (www.usb.org). Para propsitos de prueba e investigacin estaremos usando los siguientes: VID = 4660 y PID = 1.

USB Device Compiler: Seleccione microEngineeringLabs PICBASIC PROTM. Microcontroller: Seleccione 18F4550. Application Compiler: Seleccione Microsoft Visual BASIC 5.0.

Programacin en Visual Basic 6.0

Pantalla de Presentacin programada en Visual Basic 6

Actualizacin a Visual Basic 2008

Abra el programa de Visual Studio 2008, oprima File y seleccione Open Project Luego seleccione el proyecto en Visual Basic 6.0, en este caso estaremos escogiendo el file USB_Project_Application.

Oprima Next> y el programa comenzar a crear un proyecto nuevo (actualizado). Una vez termine, oprima Finish.
Al terminar con la ejecucin, el proyecto actualizado abrra automticamente. Oprima View y seleccione Code. Notar que el cdigo tiene algunas modificaciones y algunos comentarios como el siguiente: 'UPGRADE_WARNING:_____________. No debe de preocuparte por estas advertencias, pero sirven de sugerencia para el programador. Lo que s es importante es el error que aparecer si trata de correr el programa. Observe la ventana de la extrema derecha y oprima mcHIDInterface.vb para ver el cdigo en donde se encuentra el error. . La siguiente ilustracin demuestra el error.

Para corregir este error es necesario crear una Funcin de Delegado (Delegate Function). El siguiente cdigo demuestra cmo hacerlo
'This adds a Delegate Function, it is require for VB 2008 Delegate Function SubClassProcDelegate _ (ByVal hwnd As Integer, _ ByVal msg As Integer, _ ByVal wParam As Integer, _ ByVal lParam As Integer) As Integer Declare Function SetWindowLong _ Lib "USER32.DLL" Alias "SetWindowLongA" _ (ByVal hwnd As Integer, _ ByVal attr As Integer, _ ByVal lVal As SubClassProcDelegate) As Integer End Module

Ejemplo del programa corriendo con el Sistema de Monitoreo en Visual Studio 6.0.

Ejemplo del programa corriendo con el Sistema de Monitoreo en Visual Studio 2008.

Evolucin del sistema

Evolucin del Sistema

Para el usuario en general

Para el desarrollador

Resumen En esta propuesta investigamos como aadiendo sensores y activadores a un microcontrolador podemos darle inteligencia a un edificio u otro sistema. Adems usamos la computadora personal y el microcontrolador como elementos claves implementacin del proyecto. Resalta la necesidad de mayores conocimientos en programacin y redes de computadoras

Potrebbero piacerti anche