Estoy tratando de conseguir un par de temperaturas en mi ordenador. En mi pequeño laboratorio tengo unos 50 termistores que se parecen un poco a esto Termistor NTC . Ahora me gustaría obtener la temperatura de todos ellos simultáneamente y escribir su temperatura en un archivo en mi ordenador (Linux, Win, Mac no importa). ¿Qué posibilidades tendría? ¿Qué costes tengo que esperar? ¿Existe alguna placa con adaptador USB?
Respuestas
¿Demasiados anuncios?Creo que este problema es muy fácil de resolver.
Puede elegir entre dos formas:
- Convertidor de UART a USB
- USB real con clase HID o CDC
Lo único que tienes que hacer es enviar algunos datos del sensor de temperatura (creo que usando un convertidor ADC). Puede utilizar FTDI UART <-> convertidores USB - y enviar datos como señales UART normales.
Muchos uC's tienen pila USB incorporada - algunos de PIC - también de 8 bits (ej. PIC16F1459), AVR's (Atmega8U2), o STM de 32 bits (como STM32F405). USB es más complicado que UART, pero puedes hacer cosas increíbles con él. Además - la clase CDC USB funciona como emulador UART sin ningún chip adicional.
Pero para este tipo de operación - utilizar UART a USB convertidor, si quieres hacerlo rápido.
Además - con Arduino puedes hacerlo en unos 15 minutos - tiene puerto serie virtual dedicado.
Pero aquí la comunicación es sencilla. Hay otro problema con esto. PCB para este circuito será grande. ¿Por qué? Tienes que encontrar la manera de medir los 50 canales ADC. Sólo los microcontroladores con muchos GPIO puede hacerlo sin IC multiplexor adicional. Otra cosa que hay que hacer es crear algunos circuitos de prevención de ruido, ya que esta cantidad de canales puede generarlo - y también - es necesario evitar que los canales de medición de la temperatura del ruido del microcontrolador. También para aumentar la linealidad y la estabilidad tienes que hacer circuitos de excitación de puente - que tomará área. Si quieres crear un PCB de 3 sensores, es muy fácil hacerlo. Pero 50 sensores... Tienes que imaginarlo.
¿Y si tienes pocos canales ADC? Usa multiplexores analógicos - pero entonces necesitas más GPIO para manejar la lógica del multiplexor, y más espacio para nuevos circuitos integrados en tu PCB. Recuerde - multiplexores analógicos no son ideales - por lo que un canal puede afectar a otro (usted tiene este tipo de información en la hoja de datos).
Si utiliza 50 canales en su microcontrolador recuerde sobre el retardo adecuado entre la conversión en varios canales - porque si cambia de canal al instante, el condensador interno ADC tendrá algo de tensión, y esto falsificará el valor de medición.
Este problema parece fácil, pero no lo es tanto como creemos.
Prueba primero a hacer el medidor de temperatura con 4 canales.
La forma más sencilla es comprar algunas tarjetas DAQ (adquisición de datos) a una empresa como National Instruments. Para cada DAQ, construye una placa de acondicionamiento de señal para convertir los termistores en salida de voltaje. Los circuitos de estas tarjetas serían muy sencillos: básicamente, una referencia de tensión para toda la tarjeta, más una resistencia y un condensador para cada termistor.
PERO. Esto tiene dos inconvenientes. El primero es la velocidad. Tendrías que muestrear cada canal de temperatura en secuencia, en lugar de todos a la vez. Esto probablemente no es un problema real - termistores suelen tener constantes de tiempo en el rango de segundos, por lo que no es probable que pierda mucha precisión por muestreo secuencial. El segundo problema es quizá mayor: el coste. Puedes conseguir 32 canales a 12 bits por canal por ~1500$ por placa, y necesitas 2 placas para 50 canales. Si quieres arriesgarte en eBay puedes conseguir precios más bajos en placas usadas.
Como alternativa, puedes hacerte con una o varias placas IO USB digitales y montar la tuya propia. Una placa DIO de 32 bits te costaría ~ $100, and 32 bits should be more than enough to acquire 50 channels. Search on Digikey and you can get parallel-output 8-bit ADCs for less than $ 2, 12 bits por menos de 10$ (y dependiendo del rango de temperatura que estés buscando, y la resolución de temperatura que quieras, 12 bits pueden ser muy necesarios - los termistores son muy no lineales). Usted tendría que hacer placas de PC para su acondicionamiento de señal y ADCs, y puede hacer sus propias compensaciones entre el número de ADCs y multiplexación. También es posible que tenga que aprender multiplexación digital para seleccionar el ADC que desea leer (si utiliza más de uno), pero eso es algo que usted necesita aprender de todos modos.