Category: Sin categoría


¡Hola mundo!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Anuncios

 

Uno de los sensores con los que pude trabajar y que me gustaron mucho es el MLX90614 de la compañía Melexis http://www.melexis.com/ , esta pequeña maravilla es un sensor de temperatura infrarrojo que incluye una termopila para detectar la temperatura, un amplificador de bajo ruido, un convertidor analógico digital de 17 bits y una pequeña unidad DSP, todo en el mismo ASIC, la salida puede ser en forma de señal PWM proporcional a la temperatura ó utilizando el puerto SMBUS (que es básicamente el bus I2C con algunas variaciones)

 

sensor de temperatura MLX90614

Existen varias versiones del mismo sensor, dependiendo de algunas  características, por ejemplo si es de una o dos zonas de detección, voltaje de alimentación (3 ó 5 volts) , resolución, en fin (incluso existe una versión de grado médico) pero esto se puede verificar el la hoja de especificaciones.

El costo del sensor esta alrededor de los 5 dólares a través de América II electronics, un precio mucho mas que aceptable considerando las características del sensor, aunque al escribir esto pase por algunas de la tiendas en línea de electrónica  y me sorprendí al ver como se dispararon los precios, llegando a los 27 dólares en algunos lugares como Digikey.

Interfaz del sensor con un PIC MICRO

 

En la pagina del fabricante viene una nota de aplicación para realizar la  comunicación usando el SMBUS, sin embargo esta nota de aplicación se basa en un pic10 y usando lenguaje ensamblador, que aunque nos sirve para entender el proceso de comunicación completo,  realmente no es de mucha ayuda cuando se trata de echar a andar el sensor rápidamente para una aplicación.

Para utilizar rápidamente el sensor lo mas aconsejable es utilizar algún compilador en C y utilizar directamente el puerto I2C para la comunicación, en ejemplo que coloco aquí estoy utilizando un PIC18F4550, y el compilador CCS

////  Programa para hacer interfaz con el sensor de temperatura      ////
////  infrarrojo Melexis                                                                             ////
////                                                                                                              ////
////                                                                                                              ////
////                                                                                                              ////
//// status: Funcionando                                                                        ////
//// Por: Victor Pasilla Campos                                                              ////
////    30 Agosto 2007                                                                              ////
////                                                                                                             ////
//// Notas:                                                                                                ////
////                                                                                                             ////
////                                                                                                            ////
///////////////////////////////////////////////////////////////////////////////////////

#include <18F4550.H>
//#device ADC=10
//#device ADC=8
#device HIGH_INTS=TRUE

//#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,PUT,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN // para el cristal de 20mhz
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN   // para el cristal de 12mhz
#use delay (clock=48000000)
#use rs232(baud=115200, xmit=PIN_C6,rcv=PIN_C7)

#use I2C(master,sda=PIN_B0, scl=PIN_B1)

int8 resultado1=0;
int8 resultado2=0;
int8 CRC=0;
int16 tempk=0;
float tempc=0.0;

void main (void){

   while (TRUE){
//      lectura = read_adc();
      output_toggle(pin_B4);
      i2c_start();
      //i2c_write(0x00);        // pido datos del sensor
      if (i2c_write(0xB4)==0){   // direccion del sensor melexis para mandar comando
          i2c_write(0x07);        // pido datos del sensor
          i2c_start();
        i2c_write(0xB5);        // direccion del sensor melexis para leer

          resultado1 = i2c_read(1);
          resultado2 = i2c_read(1);
          tempk= make16(resultado2,resultado1); 
          CRC = i2c_read(0);

      }
      i2c_stop();
      tempc=(tempk*0.02)-273;
      printf("temp:%3.2f\n\r",tempc);
      delay_ms(500);

   }
}

 

El programa lee de un único sensor conectado en el bus I2C y envía el resultado de la temperatura a través del puerto Serial, en la PC puede visualizarse usando cualquier SERIAL PORT MONITOR, como el que viene incluido con el compilador CCS, o incluso puede usarse el hiperterminal.

Pantalla EzLCD touch Screen

 

Como parte de mi trabajo tuve la oportunidad de jugar con una de las pantallas inteligentes de EzLCD (www.EzLCD.com ) en este caso con el modelo EzLCD-004, esta pantalla es una pantalla touch screen que permite un rápido desarrollo debido a su capacidad comunicación con diferentes protocolos USB, USART, SPI, I2C (aunque el firmware de control para el bus no estaba listo al momento de escribir esto) y a la posibilidad de trabajar directamente con imágenes en mapas de bits, lo cual permite generar Interfaces de usuario visualmente muy atractivas y de una forma muy rápida.

Aquí un resumen de sus características:

  • Full ezLCD Command Set
  • 5.6" 320X240, 16 bit Color TFT LCD, capable of 65,536 simultaneous colors
  • Integrated Resistive Touch Screen
  • Dedicated LCD Controller Chip
  • Full Speed USB Interface (via Mini-USB connector)
  • Serial (RS232), I2c
  • Integrated SD/MMC (Secure Digital/MultiMedia) Memory Slot
  • Arm Microcontroller
  • 128Kb Flash ROM (available for fonts & bitmaps)
  • 1 Megabyte Flash ROM (use to be determined)
  • Runs on +5 Volt Power Supply

Y algunas fotografías

Quizá el único inconveniente es el costo de la pantalla, algo así como unos 400 dólares + gastos de envió, pero creo que por las capacidades de despliegue de bitmaps y la facilidad de uso y de programación el costo es aceptable.

La interfaz hacia la pantalla LCD es a través de una tarjeta que desarrolle específicamente para controlar la pantalla pero además le agregue algunas otras conexiones para hacerla más general.

Al final y para tener la pantalla de prueba con una mejor calidad y que me sirva para múltiples propósitos la coloque dentro de un Enclosure de OKW (www.okwenclosures.com ) tienen unos muy bonitos, de diferentes materiales (ABS, aluminio), varios tamaños y colores, incluso en la página de OKW se pueden solicitar algunas muestras de partes.

En este caso seleccione el modelo A0620107 que tiene el tamaño necesario para albergar la pantalla

Y que se puede adquirir en Newark con el número de parte A0620107 (del fabricante) o el número 37K9175 (de Newark)

Montaje del hardware dentro del enclosure de OKW.

 

El montaje interno comenzó con realizar una ventana en la parte frontal del enclosure ya que no tiene un espacio para que salga la pantalla y también algunas pequeñas perforaciones para colocar los tornillos que soportarían la pantalla

Además de las perforaciones en la parte superior para la colocación de conectores para comunicación.

 

Al final la pantalla montada dentro del enclosure de okw, quedo de la siguiente forma

Conectores Externos

 

 

al final esta pantalla me sirvió mucho durante el tiempo que pude trabajar con ella, lastima que ya no la tengo, se quedo en el trabajo , pero espero pronto comprarme una para mi.

Mas adelante publicare algunos programas de ejemplo.