Tabla de contenido:

Termómetro USB para interiores / exteriores (o 'Mi primer dispositivo USB'): 4 pasos (con imágenes)
Termómetro USB para interiores / exteriores (o 'Mi primer dispositivo USB'): 4 pasos (con imágenes)

Video: Termómetro USB para interiores / exteriores (o 'Mi primer dispositivo USB'): 4 pasos (con imágenes)

Video: Termómetro USB para interiores / exteriores (o 'Mi primer dispositivo USB'): 4 pasos (con imágenes)
Video: Primeros pasos con un NAS | ¿Qué es y cómo usarlo? | ChicaGeek 2024, Noviembre
Anonim
Termómetro USB para interiores / exteriores (o 'Mi primer dispositivo USB')
Termómetro USB para interiores / exteriores (o 'Mi primer dispositivo USB')

Este es un diseño simple que muestra el periférico USB en los PIC 18F. Hay un montón de ejemplos para los chips 18F4550 de 40 pines en línea, este diseño muestra la versión más pequeña de 18F2550 de 28 pines. La PCB utiliza piezas de montaje en superficie, pero todos los componentes están disponibles en versiones de orificio pasante. Utilizo piezas de montaje en superficie porque es más rápido hacer la placa sin taladrar agujeros. El resultado final es un pequeño periférico USB que mide la temperatura interior / exterior. Los datos están disponibles para la PC a través de un puerto serie virtual. Los sensores de temperatura se utilizan en el ejemplo, pero se pueden agregar otros sensores analógicos. PS Vea un gráfico en vivo de los datos de mi registrador aquí: https://www.syndicit.com/stream/ian/nieuwemarkt/indoor_temperature/? Format = grafico

Paso 1: descripción general del diseño

Descripción general del diseño
Descripción general del diseño
Descripción general del diseño
Descripción general del diseño
Descripción general del diseño
Descripción general del diseño

Componentes PIC requeridos

Este periférico USB se basa en el PIC 18F2550 de 28 pines. Este chip tiene todo lo necesario para una interfaz USB de velocidad completa. Un condensador de 0,1 uf entre la alimentación y la tierra desacopla el PIC de la fuente de alimentación. Un cristal de 20MHz (usado para generar un reloj interno de 48MHz) y dos capacitores de 27pf. Una resistencia de 10K desde la alimentación hasta el pin MCLR. Agregué un diodo equivalente 1n4148 entre la resistencia y la potencia para que los 13 + voltios colocados en MCLR durante la programación no dañen otros componentes en la placa de circuito. Se utiliza un encabezado ICSP (5 pines) para programar y depurar el dispositivo. Material USB necesario Un conector hembra USB tipo "B". Se requieren 220nf-440nf de capacitancia para el regulador de voltaje USB interno. Utilizo dos condensadores de 0,1 uf (los mismos que se utilizan para el desacoplamiento) sin ningún problema. Se utiliza un LED con una resistencia limitadora de corriente de 330 ohmios para mostrar el estado de la conexión USB. Material del sensor requerido Usé el sensor de temperatura del microchip TC1047A como sensor de temperatura interior. Está físicamente soldado a la placa, lo que hace que se caliente unos pocos grados más que la temperatura ambiente. Se utiliza un cabezal para conectar una sonda de temperatura exterior (versión TO-92 de TC1047a). Un condensador adicional de 0,1 uf ayuda a desacoplar un cable largo del resto de la placa. Los niveles de voltaje del USB no son lo suficientemente consistentes para medir y calcular la temperatura con precisión a partir de los sensores analógicos. Se utiliza una referencia de voltaje externa (MCP1525, 2,5 voltios). La referencia de voltaje requiere un condensador en la salida de 1 uf a 10 uf. Sin este condensador, la referencia de voltaje no funcionará.

Paso 2: firmware

El firmware utiliza la clase CDC USB para emular un puerto serie. El dispositivo se mostrará como un puerto de comunicaciones virtual en una PC. El firmware se divide en tres secciones: 1. El controlador USB se encarga de enumerar el dispositivo en una PC y emular un puerto COM. 2. Una rutina de servicio lee alternativamente los valores de temperatura y los convierte a un formato legible. Hacer ambas operaciones a la vez provocó que el dispositivo USB perdiera la conexión con la PC (acaparamiento de tiempo). La conversión de los valores de punto flotante a una cadena en el ciclo de servicio después de la conversión resolvió el problema de conectividad. * 3. Finalmente, una rutina principal recibe los bytes enviados desde la PC y devuelve las medidas solicitadas. Múltiples medidas están separadas por una coma, las líneas terminan con un carácter nulo (hexadecimal 0x00) El firmware de demostración acepta los siguientes comandos: Valor hexadecimal Retorna 0x00 Temperatura interior (sensor integrado) 0x01 Temperatura exterior (encabezado externo) 0x02 Ambas temperaturas (coma separados) La temperatura se calcula en base a la referencia de 2.5 voltios y la desviación y pendiente del Microchip TC1047A. Otros sensores de temperatura pueden tener características diferentes. La hoja de datos TC1047A está disponible aquí: https://ww1.microchip.com/downloads/en/DeviceDoc/21498c.pdf El firmware está escrito en MPLAB con el compilador de demostración PIC C18. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011 Microchip proporciona el firmware USB real. El entorno original está disponible aquí: https://www.microchip.com/stellent/idcplg? IdcService = SS_GET_PAGE & nodeId = 1824 & appnote = en021631 Para editar el firmware: extraiga la estructura de directorio completa de la fuente a su directorio raíz (c: / MCHPFSUSB). A continuación, puede cargar el archivo del espacio de trabajo en MPLAB. * La rutina de flotar a cadena es un acaparador de recursos. Para solucionar el problema de conectividad, se llama a la rutina de servicio USB en varios puntos de la rutina float2string. Esto se solucionaría mejor reparando el periférico USB en caso de interrupción. Usé el truco para que el firmware se mantuviera lo más cerca posible de la versión de referencia.

Paso 3: prueba del dispositivo

Prueba del dispositivo
Prueba del dispositivo
Prueba del dispositivo
Prueba del dispositivo
Prueba del dispositivo
Prueba del dispositivo

Las instrucciones son para Windows, pero el dispositivo se puede conectar a cualquier dispositivo que tenga controladores de emulación de puerto serie CDC.

Programe el dispositivo con el firmware. Todos los bits de configuración deben establecerse correctamente en el firmware. Conecte el dispositivo a un puerto USB. Windows lo detectará y le pedirá que elija un controlador. ASEGÚRESE DE HACER CLIC EN "BUSCAR PARA CONDUCTOR PERSONALIZADO". Navegue hasta la ubicación del archivo.inf incluido con el archivo del proyecto (driver-win2k_winxp). Windows usará este archivo para instalar el dispositivo. * Una nota sobre el controlador CDC: el controlador de emulación de puerto serie CDC se incluye con Windows. El archivo.inf (proporcionado por Microchip) simplemente le dice a Windows que conecte estos controladores al dispositivo. Para saber qué puerto COM se asignó al dispositivo, haga lo siguiente: Vaya al panel de control (inicio-> configuración-> panel de control) Haga doble clic en "sistema" Haga clic en la pestaña "hardware". Haga clic en "administrador de dispositivos" Haga clic en "+" junto a los puertos. Se muestra una lista de puertos COM en el sistema. He visto que el dispositivo se muestra como COM 3 y 4, pero variará según el sistema. Si no es obvio qué puerto es nuevo, intente esto: Desenchufe el dispositivo del puerto USB. Uno de los puertos desaparecerá. Este es el número de puerto COM del dispositivo. Vuelva a conectar el dispositivo, el puerto volverá a aparecer. La pequeña aplicación VB (fuente incluida) se puede utilizar para probar el dispositivo. Ingrese el comando para enviar, haga clic en 'Iniciar'. La respuesta se mostrará en la ventana.

Paso 4: ¿Qué más puede hacer?

¿Que mas puedo hacer?
¿Que mas puedo hacer?

Esta placa de demostración es un buen punto de partida para una pequeña estación meteorológica doméstica: agregue un sensor de humedad HIH3160 o reemplace el sensor de temperatura analógico con el sensor de temperatura y humedad en serie de alta precisión Sensiron HT74. medir la presión barométrica. ¿Quiere distribuir estos datos a la web? ¿Incluirlo en su propio sitio web, visualizarlo en Google Earth u obtener actualizaciones en su lengüeta RSS? Vea este instructivo sobre la integración de este dispositivo con el backend web syndicIT.com:

Recomendado: