Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

download Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

of 12

Transcript of Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

  • 8/3/2019 Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

    1/12

    Cmo aprender a usar el puerto USB con PIC 18F4550 y Visual Basic 6.0

    Escrito por Alfredo Rossini

    Aqu presento un proyecto que realic para entrar en el mundo de la electrnica del USB. Es

    algo para ahora y para el futuro. Hay poca informacin en Internet.

    La conexin USB a la PC, es similar a la de la vieja conexin serie. Para el uso que a m me

    gusta darle, lo que hace el USB, es pasar al PIC o recibir en la PC, una cadena, un string,

    mediante la cual se pasan y reciben nmeros con datos u rdenes que el PIC o la PC

    interpretan y ejecutan. As de simple.

    {loadposition user19} El Firmware del PIC tiene dos partes: 1) Conecta al PIC - PC y

    mantiene la conexin, verificndola continuamente, para detectar que no se haya cortado y 2)

    Ejecuta las rdenes recibidas y enva datos u rdenes a la PC. Esta parte es exactamente la

    misma que si estuviramos trabajando con una conexin serie o paralela a la PC. Es ms, a

    cualquier programa que tengamos que se conecte en serie o paralelo a la PC, podemosconvertirlo a USB, tambin con un PIC 18F4550. Si quieren saber de esto,

    vean en esta direccin

    .

    En esta direccin pueden bajar un archivo ZIP con la informacin, completa, Firmware fuente

    y archivo.HEX; Programa en Visual Basic 6.0, archivos fuentes y archivo.EXE, esquema,

    Bootloader, cargador de archivos.HEX en el PIC, artculos de Internet sobre USB, programa

    para grabar el Bootloader en el PIC, y seguro mucho ms.

    En esta direccin pueden bajar un archivo ZIP con la informacin, completa, Firmware fuente

    y archivo.HEX; Programa en Visual Basic 6.0, archivos fuentes y archivo.EXE, esquema,

    Bootloader, cargador de archivos.HEX en el PIC, artculos de Internet sobre USB, programa

    para grabar el Bootloader en el PIC, y seguro mucho ms, de otro proyecto USB, controlado

    por un programa en PC hecho en Visual C, que trabaja con Framework 2.0. Viene a ser mucho

    mas avanzado que el artculo de arriba, ya que el Framework viene includo en la nuevas

    versione de Windows, como el Vista y el 7. Pero a m me tira el Visual Basic 6.0... vi??

    Para empezar encontr este circuito:

    1 / 12

    http://www.arossini.com.ar/files/convertidor/Convertir%20VB%206.0%20LPT%20USB.dochttp://www.arossini.com.ar/files/programaserie/Prog%20Serie.ziphttp://www.arossini.com.ar/files/alfusb/alfusb.ziphttp://www.arossini.com.ar/files/alfusb/alfusb.ziphttp://www.arossini.com.ar/files/programaserie/Prog%20Serie.ziphttp://www.arossini.com.ar/files/convertidor/Convertir%20VB%206.0%20LPT%20USB.doc
  • 8/3/2019 Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

    2/12

    Cmo aprender a usar el puerto USB con PIC 18F4550 y Visual Basic 6.0

    Escrito por Alfredo Rossini

    2 / 12

  • 8/3/2019 Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

    3/12

    Cmo aprender a usar el puerto USB con PIC 18F4550 y Visual Basic 6.0

    Escrito por Alfredo Rossini

    Hay otros circuitos parecidos en Internet y en el datasheet del PIC. Se puede obviar la parte delcircuito de temperatura que se puede reemplazar por otros sensores ms simples, manejablespor el ADC. Tiene adems salida por puerto serie, que no uso, por ahora.Todo el manejo del USB es muy complicado, pero con paciencia todo se aprende. Es mssimple que se lo que se muestra en libros. El mtodo que les muestro se podra llamar de"recortar y pegar". Consiste en recortar y pegar sobre la base de un programa tipo y muygeneral, para adecuarlo al uso que necesitemos darle.Dicho de otra manera, en el Firmware tenemos dos secciones o partes: 1) La seccin que seencarga de conectar la PC al PIC mediante el USB y luego de efectuada la conexin,contnuamente verifica que la conexin no se ha cortado. Esta seccin est en main.c, y casino se debe modificar para crear un nuevo programa. 2) La seccin especfica para realizar lastareas que deseamos. Esta seccin es muy parecida a la que tendramos si manejramos unaconexin serie o paralela. Es la que deberemos modificar para adaptarla a nuestrasnecesidades o a nuestros gustos de diseo de programas.En esta direccin de Microchip se encuentra toda la informacin referida a USB.Firmware

    Es el programa para el PIC. Est hecho en MPLab IDE compilado con C18 para MPLab IDE.

    Es gratis. Bajar de esta direccin , el MPLab IDE y aqu el Compilador C18. Hay una versin

    gratis por 60 das y ms.

    Microchip ofrece muchos ejemplos de Programas y Firmware. Bajarlos de MCHPFSUSB

    Framework v2.4 .

    Bajar la versin correspondiente a

    PIC18F (8bit) e instalarla en el directorio que prefieran.

    All hay muchsimos ejemplos muy muy complicados porque estn preparados para usar con

    muchos PIC 18F y 24F, y para distintos modelos de plaquetas que vende Microchip.

    De todos ellos us como base el USB Device - MCHPUSB - Generic Driver Demo

    En los archivos que se pueden modificar por el usuario (Ojo, no tocar los otros porque todo

    dejar de funcionar), yo trat de limpiar todo lo que no tenga que ver con PIC18 y con la tarjeta

    PICDEM FSUSB de Microchip.

    Los que no hay que tocar, estn en el directorio Microchip y sus subdirectorios. Yo los puse en

    el subdirectorio USB del Firmware

    Para entrar en el USB tuve que aprender lo mnimo de C, C++, C18 y MPlab. Me llev un par

    de meses. (Luego seguimos con el programa para PC)

    Con respecto al USB, hay varias formas de comunicarlo con la PC, tales como HID (Mouse y

    teclados), CDC (Clase genrica de transferencia de datos), BULK (Transferencia de archivos

    grandes), COM (Emula un puerto serie virtual).

    3 / 12

    http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&redirects=mplabhttp://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en540668http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en540668http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en540668http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en540668http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&redirects=mplabhttp://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1486
  • 8/3/2019 Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

    4/12

    Cmo aprender a usar el puerto USB con PIC 18F4550 y Visual Basic 6.0

    Escrito por Alfredo Rossini

    Todos se pueden probar con lo que est en los ejemplos de Microchip, tanto de Firmware como

    de Software (Programas para PIC y PC). Eleg y experiment con CDC y COM Virtual, que son

    los que me sirven para conectar la PC con desarrollos electrnicos para control. Este trabajo sebasa en el CDC (Generic Driver Demo).

    Una precaucin a tomar: El Firmware est armado con distintos mdulos: uno para cada

    tarea a realizar. Todos los mdulos estn en Tareas.c. En Main.c est todo lo necesario para

    que funcione el USB. Recomiendo fuertemente que antes de

    realizar cualquier modificacin al Firmware, sobre todo las del Main.c, que guarden una copia

    de Back Up, en un directorio distinto al de trabajo. Guarden copia de todo el proyecto,

    completo. Ocurre que ante cualquier modificacin mnima, que est equivocada, el USB dejarde conectarse, y se quedarn sin poder hacer nada y sin ninguna indicacin posible relativa al

    error cometido. Simplemente se muere todo, y lo nico posible de hacer es volver a nuestra

    copia de Back Up.

    Programa

    Para la clase USB COM serie virtual se puede usar el Visual Basic 6.0 o el Visual C++. El

    primero es muy fcil de usar, pero no hay ejemplos en Microchip. Encontr ejemplos bsicos

    en Internet, que los pude aplicar. Aqu est lo que pude desarrollar.

    Para la clase CDC, no se puede usar Visual Basic 6.0 porque los programas de Microchip usan

    MPUSBapi.dll, que requieren el Microsoft.Net Framework 2.0, por lo tanto se deben usar Visual

    Basic.Net o Visual C++.

    El programa, y el Firmware que lo acompaa, hacen lo siguiente:

    1. Prenden y apagan 4 LEDs, de a uno, con botones en pantalla. Aplicacin: Prender y

    apagar motores de cualquier potencia, conectar y desconectar vlvulas de cualquier tipo,

    iluminacin, seguridad, CNC.

    4 / 12

  • 8/3/2019 Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

    5/12

    Cmo aprender a usar el puerto USB con PIC 18F4550 y Visual Basic 6.0

    Escrito por Alfredo Rossini

    2. Prenden LEDs 3 y 4 por medio de dos pulsadores. Se apagan con los botones.

    Aplicacin:

    Prender y apagar motores de cualquier potencia, conectar y desconectar vlvulas de cualquier

    tipo, iluminacin, seguridad, CNC.

    3. Mide la tensin cada en una resistencia variable (Uso del ADC) y la indica en una

    barra y en pantalla. Aplicacin: Uso de cualquier tipo de sensor que entregue una seal

    de corriente contnua, de cualquier tensin, para controlar cualquier proceso. Usar

    potencimetros en paneles, que permitan variar analgicamente variables del proceso, o sea

    fijar valores de variables del proceso.

    4. Mide la temperatura y la indica en pantalla. Aplicacin: Uso de cualquier tipo de

    sensor que tenga conexin serie con el PIC. Pueden ser distintos tipos de conexin serie, que

    se pueden ver en la hoja de datos del PIC.

    5. Muestra Conectado/ desconectado. Aplicacin: Recibir indicaciones del estado de

    las distintas variables del proceso bajo control.

    6. Recibe texto cuando se presionan los pulsadores. Aplicacin: Recibir indicaciones

    del estado de las distintas variables del proceso bajo control y de los pulsadores accionados.

    7. Maneja una salida PWM, que vara la tensin sobre un LED. Aplicacin: Entregar

    una seal de tensin variable que pueda manejar cualquier accionamiento proporcional,

    controlado por una tensin de corriente contnua.

    8. Maneja una salida PWM como generador de frecuencia. Aplicacin: Controlar por

    ejemplo, velocidad en motores de corriente alterna, por medio de la variacin de frecuencia.

    9. Conectarse va puerto serie, con la PC. Aplicacin: Conectarse va puerto serie con

    otros PICs u otros dispositivos, de cualquier tipo.

    Con estas aplicaciones, se puede programar con la computadora y el PIC 18F4550 cualquierproceso industrial, de robtica o lo que se nos ocurra. Para robtica se implementan salidas

    PWM con facilidad.

    Us el PIC 18F4550 porque tiene muchsimas prestaciones y solo cuesta alrededor de 13

    dlares, mucho menos que un convertidor ADC rpido de 8 Bits. Este PIC trabaja a 48 mega

    Hertz y el ADC es de 10 Bits. Tiene 35 entradas/ salidas.

    5 / 12

  • 8/3/2019 Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

    6/12

    Cmo aprender a usar el puerto USB con PIC 18F4550 y Visual Basic 6.0

    Escrito por Alfredo Rossini

    Bootloader

    Es un Firmware, que se graba con un grabador convencional, en las primeras 0x800 o 0x1000

    posiciones de memoria del PIC. El Bootloader permite que el Firmware importante del Pic se

    grabe con la computadora, muy fcilmente, despus de las direcciones mencionadas. El

    Bootloader lo provee gratuitamente MIcrochip.

    El Bootloader.hex est en el adjunto del programa y el archivo fuente est en MCHPFSUSB

    Framework v2.4.

    Grabado del Firmware con Bootloader

    Una vez hecho el Firmware con el MPlab, se conecta la plaqueta al PC, se la prepara en modo

    Bootload, se arranca el PDFSUSB.exe, se carga el archivo.exe y se le indica que lo programe.Una vez programado se resetea el PIC y el firmware arranca.

    Grabado del Firmware Bootloader con WinPic.

    Si fabricamos nuestra plaqueta o si averiamos el Bootloader deberemos recargarlo. Yo lo hago

    con una plaqueta grabadora de mi pgina . A esta grabadora, que se conecta al puerto

    paralelo, la alimento con 13,4 Volt en lugar de 12, y la grabacin no falla nunca.

    La grabadora se maneja por el WinPic. Es un programa muy simple y fcil de usar, que no falla

    nunca. Uso aqu un archivo de configuracin propio llamado AlfredoLPT.ini y otro llamado

    PIC18F4550.dev, que estn en el adjunto.

    6 / 12

    http://www.arossini.com.ar/files/programador/programadoralf.ziphttp://www.arossini.com.ar/files/programador/programadoralf.zip
  • 8/3/2019 Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

    7/12

    Cmo aprender a usar el puerto USB con PIC 18F4550 y Visual Basic 6.0

    Escrito por Alfredo Rossini

    El instalador del WinPic est en el adjunto con las instrucciones de instalacin.

    Instrucciones

    Si les interesa este tema y bajan el Prog Serie.zip, una vez bajado, al descomprimirlo se

    generar una carpeta Prog Serie, que podrn moverla donde deseen. En cada carpeta

    encontrarn el ejecutable correspondiente o sea:

    AlfUSBboot.hex: Archivo del Bootloader para cargar con WinPic y tarjeta grabadora.

    Tambin lo pueden cargar con otro software distinto al WinPic.

    Com Virtual CDC.hex: Archivo del Firmware para usar con bootloader. No funcionar

    si lo cargan sin bootloader

    Serie.exe: Ejecutable del programa para el PC.

    Cuando conecten el USB por primera vez, el PC les pedir el driver, que est en la carpeta

    correspondiente. Este driver no viene con la instalacin de Windows original.

    No lo prob con Windows Vista. Si alguien lo prueba, espero comentarios.

    7 / 12

  • 8/3/2019 Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

    8/12

    Cmo aprender a usar el puerto USB con PIC 18F4550 y Visual Basic 6.0

    Escrito por Alfredo Rossini

    Programa Serie

    Este programa est realizado en Visual Basic 6.0. Se comunica con la computadora a la vezpor puerto USB y puerto serie COM 1. Para la comunicacin USB usa Com Virtual MSComm.

    8 / 12

  • 8/3/2019 Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

    9/12

    Cmo aprender a usar el puerto USB con PIC 18F4550 y Visual Basic 6.0

    Escrito por Alfredo Rossini

    El puerto virtual lo encuentra el programa, solo.

    Es de carcter experimental, didctico y para tomar como base para hacer montones deprogramas ms o menos simples que este.

    Como se ve en la pantalla, hace de todo. Le falta trabajar como comparador, que no

    funcionaba bien, pero pronto le ser incorporado. Estn las sentencias, pero no funcionan

    porque estn comentadas (Firmware).

    El Firmware est hecho en MPlab IDE y C18 como compilador, para un PIC 18F4550. Con

    poco trabajo se puede cambiar a otro PIC que maneje USB o hacerlo todo que trabaje de la

    misma manera por el puerto serie.

    En esta entrega, est el programa en Visual Basic 6.0, su ejecutable, el Firmware fuente y su

    archivo .hex, el esquema de la plaqueta, la ayuda para el programa.

    Con el conjunto se puede experimentar con conversor analgico digital, comunicacin USB,

    comunicacin serie, comunicacin sincrnica SPI, generar frecuencias con precisin, trabajar

    con salida PWM, programar con Eventos (DoEvents), programar con OnComm() de USB-Serie

    Virtual, y le falta agregar comparador digital y medidor de frecuencias, que estn ambos

    presentados en la pgina WEB en programas separados y que se pueden bajar y usar, pero

    que faltan integrar. Ser para otra entrega.

    El conjunto est preparado para conectarse con una plaqueta similar a las de Microchip, cuyo

    esquema est en el subdirectorio Esquema. Es algo bsico pero que con mnimas

    adaptaciones sirve para controlar va USB, cualquier proceso industrial, enviando rdenes a

    travs del puerto y recibiendo resultados y / o indicaciones del proceso.

    Conecta la plaqueta a la PC por medio del USB. Usa el modo CDC, que genera en la PC un

    puerto serie virtual, que se maneja en Visual Basic 6 con el MScomm.

    9 / 12

  • 8/3/2019 Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

    10/12

    Cmo aprender a usar el puerto USB con PIC 18F4550 y Visual Basic 6.0

    Escrito por Alfredo Rossini

    El chip usado es PIC 18F4550, de Microchip. En www.microchip.com se encuentra muchsima

    informacin complementaria.

    Este programa es experimental y destinado a quienes deseen avanzar en la conexin USB con

    computadoras para controlar cualquier tipo de procesos.

    Usos

    Botones LED 1 a LED 4: Al clickear cada uno, enva una orden al PIC, que prende cada uno

    de los LED y al clickear por segunda vez los apaga. De igual manera se puede controlar

    cualquier motor, vlvula, calefactor, dispositivo, usando adems secuencias, temporizadores, y

    dems.

    Enviando 1, 3, 5, 7, prenden.

    Enviando 0, 2, 4, 6, apagan.

    Botn Ayuda: Muestra esta ayuda.

    Botn Blink: Prende y apaga secuencialmente el LED 1.

    Botn Eusart: Enva la letra u por el USB. Cuando el PIC la recibe responde enviando no por

    USB sino por el puerto serie com1 el mensaje "El PIC avisa que est todo bien" .

    Tambin se puede recibir la respuesta por el HYPERTERMINAL de Windows. Se deben

    comentar previamente en el programa las lneas que hacen referencia a MSComm1, para que

    10 / 12

  • 8/3/2019 Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

    11/12

    Cmo aprender a usar el puerto USB con PIC 18F4550 y Visual Basic 6.0

    Escrito por Alfredo Rossini

    no aparezca mensaje de error.

    Botn PWM: Tiene dos funciones: 1) Por el PIN RC1 sale la tensin controlada por el anchodel pulso positivo. Se visualiza con la variacin de la intensidad del LED respectivo y se ajusta

    con la barra horizontal Duty Cycle PWM Simple.

    2) Se puede usar como generador de una onda de pulso cuadrado. Variando la barra horizontal

    Frecuencia PWM Simple se ajusta la frecuencia entre 187.5 y 47 K Hertz. El ancho del PWM

    no afecta la frecuencia.

    Botn Iniciar ADC: Mide la tensin aplicada en el PIN A0/AN0. Se la vara con el

    potencimetro de la plaqueta.

    Botn Reset PIC: Resetea el PIC por sotware. No es necesario para el programa, pues la

    plaqueta tiene botn de RESET. Est para experimentar que la comunicacin USB no se

    interrumpa durante la operacin.

    Botn Enviar Recibir Texto: Es muy til para pruebas. Si por ejemplo se enva la letra c (Es

    por el USB), se recibe la lectura de la salida del comparador como COMP1 o COMP0 (Por el

    USB)

    El recuadro Mensajes de DoEvents, muestra un bloque del programa, para experimentar,

    que permite usarlo cuando se produzcan eventos.

    El recuadro MSCommVirtual, muestra un bloque del programa, para experimentar, que

    permite usarlo cuando se produzcan eventos relativos al MSCommVirtual.

    El Recuadro de arriba, derecha muestra el puerto al que se conect el MSCommVirtual.

    11 / 12

  • 8/3/2019 Como Aprender a Usar El Puerto Usb Con Pic 18f4550 y Visual Basic 60

    12/12

    Cmo aprender a usar el puerto USB con PIC 18F4550 y Visual Basic 6.0

    Escrito por Alfredo Rossini

    Presionar botones 2 o 3 de la plaqueta: Aparecer un mensaje para cada botn, en el

    TextBox Mensajes

    -- Pulsador 3 Presionado. LED 3 encendido --

    -- Pulsador 4 Presionado. LED 4 encendido --

    Se limpia la pantalla al clickear el botn Limpiar.

    Recuadro Temperatura: Marca continuamente la temperatura en grados centgrados, positiva

    o negativa. En el recuadro hay dos datos ms. Las dos cifras de arriba, son los dos datos de

    salida del sensor, que devuelva 16 bits. De ellos 13 son los que indican los grados. Otro es el

    signo. Para transcribir a grador centgrados deb pasar a binario de 16 bits, eliminar los

    innecesarios, interpretar el signo y calcular la temperatura.

    En la lnea de abajo se ven los 16 bits de la respuesta del sensor.

    12 / 12