8 jun 2011

CREAR UNA BASE DE DATOS ACCES DESDE LABVIEW


Este ejercicio consiste en la creación, escritura y lectura de una tabla de una base de datos de ACCES. 
En el panel del código hay que indicar la dirección del archivo .mdb y el nombre del archivo .udl, en la parte del código remarcada:



La siguiente imagen muestra el panel frontal, que es el panel con el que se introduce lo que se quiere escribir en la base de datos, además es el que utiliza el usuario:




5 jun 2011

MEDIR DISTANCIA ENTRE DOS OBJETOS CON DOS CÁMARAS CON VISIÓN ARTIFICIAL





Este ejercicio se vasa en medir la distancia entre dos objetos a tiempo real con dos cámara y con Vision Builder AI 2009 SP1 para la visión artificial. 

Lo primero que hay que hacer es elegir una de las dos cámaras y calibrar la imagen, yo he escogido primero la de la izquierda.



El segundo paso es seleccionar la imagen.


El tercer paso es seleccionar el objeto.


El cuarto paso es colocar unos ejes como punto para medir y el quinto es decidir lo que tiene que medir.


Luego repetimos todos los pasos con la cámara de la derecha para la otra imagen que tiene el otro objeto. Una vez hecho tenemos que realizar una serie de operaciones con el "calculator" para calcular la distancia entre ambos objetos.


Y por último colocaremos un mensaje para que muestre la distancia que queremos medir.


Esto es todo así que aquí os dejo un enlace para que os podáis descargar el programahttp://cid-64f7131e50857260.office.live.com/self.aspx/MEDIR%20DISTANCIA%202%20CAMARAS/dos%20camaras.rar












2 jun 2011

POTENCIOMETRO DIGITAL MCP41010 CON SPI



La finalidad de este ejercicio es el estudio del potenciometro digital MCP41010 controlado con el pic 18F4550 mediante el bus SPI.

Deberéis leeros las características del potenciometro en el datasheet que os dejare en el enlace de descarga o también lo podéis ver AQUÍ.

En el CCS hay una librería para el MCP41010 que sirve como guía para hacer el programa principal, pero que también debe ser incluida para que funcione el programa, al igual que la del LCD, os las paso con el programa.

Una vez echado un vistazo a esa librería comenzaremos a realizar el código del programa, yo le he hacho de tal manera que escribo un dato desde la dirección 0x00 hasta la 0x0A, pero puedes poner la dicección que quieras sin pasarte de la 0xFF, y sale el valos 351,56 ohm en el LCD, luego espera 4 segundos y vuelve a empezar.

///////////////////////////////////////////////////////////////////////////////
//   AUTOR: Clara Alonso Fernández                       Junio/2011
//////////////////////////////////////////////////////////////////////////////
//   PROGRAMA: Potenciometro MCP41010        VERSIÓN:    1.0
//   DISPOSITIVO: PIC 18F4550                COMPILADOR: PCWHC Compiler v4,093
//   Entorno IDE:                            SIMULADOR:  Proteus 7.7 sp2
//   TARJETA DE APLICACIÓN: Virtual          DEBUGGER: Virtual
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// CABECERA ///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#include <18F4550.h>    //Pic que se va a utilizar.
#fuses INTHS            //Configuración para el oscilador interno.
#use delay(internal=8Mhz)   //Configuración de la velocidad del oscilador interno.
#include <LCD_flexible5.c>    //Librería para ql funcionamiento del LCD.
#include <mcp410101.C>  //Librería para el funcionamiento del potenciometro digital.
///////////////////////////////////////////////////////////////////////////////
// VARIABLES GLOBALES /////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
int a;      //Dato que se escribe en el potenciometro.
float b;    //Dato en ohmios.
///////////////////////////////////////////////////////////////////////////////
// FUNCIONES //////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// PRINCIPAL //////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void main()
{
lcd_init();                     //Esta función inicializa LCD.
lcd_putc("     MCP41010");      //Muestra en el LCD ese mensaje.
do{                             //Se crea un bucle infinito para que esté todo el rato en funcionamiento el potenciometro.
for(a=0x00;a<0x0A;a++) //Escribimos el valor que queremos. En este caso e puesto de 0x00 a
                                        //0xxA para que el potenciometo tenga un valor de 315,56 ohmios.
{                                                                        
set_pot(a);                     //Con esta función mandamos el dato del valor al potenciometro.
lcd_gotoxy(1,2);                //Movemos el cursor a la segunda fila del LCD.
b=(a*10000.0)/256.0;            //Esta es la ecuación para obtener los ohmios.
printf(lcd_putc,"%f Ohm    ",b);   //Se muestra en el LCD el calculo.
delay_ms(200);                  //Retardo de 200ms
}
delay_ms(4000);                //Retardo de 4 seg para que de tiempo a ver bien el valor del potenciometro.
}while(1);
}

Después hacemos la simulación y el diseño con el PROTEUS. Con el ISIS hacemos la simulación, para ello necesitamos los siguientes componentes: el PIC18F4550, el potenciometro digital MCP41010, un pulsador para el reset, una resistencia de 10K y otra de 470R, y una regleta de dos entradas.


luego pasamos al ARES para el diseño de la PCB. Colocamos los componentes y le damos al "auto-route" para tirar las pistas y ya tenemos el diseño hecho.


Para hacernos una idea de como quedaría la placa utilizamos el "3D visualization"




Aquí os dejo un enlace para que podáis descargaros el código, la simulación, las librerías y el datasheet del MCP41010: http://cid-64f7131e50857260.office.live.com/self.aspx/POTENCIOMETRO/POT.rar




26 may 2011

ESCRIBIR DATOS DE UNA SEÑAL Y LEER EL DATO ELEGIDO


Este programa escribe los datos de la señal que se muestra en la gráfica, en una tabla excel, al pulsar el botón "ESCRIBIR". Y también podemos leer uno de los datos eligiendo una columna y una fila, mediante el pulsador "LERR DATO".

La siguiente imagen muestra el diagrama del programa:


Y en la siguiente la parte del panel frontal del programa, que es la parte que el usuario utiliza:




23 may 2011

COMUNICACIÓN ENTRE UN PIC18F4550 Y UNA MEMORIA EEPROM MEDIANTE SPI



En este ejercicio realizaremos la lectura y escritura de una EEPROM mediante un módulo SPI y programando un PIC18f4550. La EEprom que utilizaremos es 25LC020

Lo primero es realizar el código del programa para poder escribir y leer en la memoria EEPROM.

///////////////////////////////////////////////////////////////////////////////////////////////////
//   AUTOR: Clara Alonso Fernández                      Mayo/2011
//////////////////////////////////////////////////////////////////////////////////////////////////
//   PROGRAMA:Escritura y Lectura de una EEPROM con un SPI    VERSIÓN:    1.0
//   DISPOSITIVO: PIC 18F4550                COMPILADOR: PCWHC Compiler v4,093
//   Entorno IDE:                            SIMULADOR:  Proteus 7.6 sp0
//   TARJETA DE APLICACIÓN: Virtual                  DEBUGGER:
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
//Ejercicio; Escribir en una EEPROM con un 18F4550 mediante el bus SPI

///////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////
// CABECERA //////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
#include <18F4550.h>       //PIC que se va a utilizar.
#fuses INTHS//oscilador interno        //Configuración de los fusibles.
#use delay(internal=8Mhz)    //Configuración de la velocidad del oscilador.
#include <LCD_flexible.c>    //Librería del LCD.
/////////////////////////////////////////////////////////////////////////////////////////////////
// VARIABLES GLOBALES ///////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
int a;
int p;
//////////////////////////////////////////////////////////////////////////////////////////////
// FUNCIONES ////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
escribir()
{
   output_bit(pin_a0,1);                      //Habilita la salida CS.
   spi_write(0x06);                            //Con esta instrucción habilitamos la escritura en la EEPROM.
   spi_write(0x02);                           //Dirección para configurar que vamos a escribir.
   spi_write(0x00);                           //Dirección de la memoria.       
   lcd_putc("ESCITURA: ");
   lcd_gotoxy(1,0);
   for(a=0;a<5;a++)
      {                                            //Configuración para escribir datos desde 0x00 hasta 0x07.
         spi_write(a);                        //Escribe en el SPI el valor de los datos.
         printf(lcd_putc,"%u",a);        //Muestra en el LCD el valor de los datos.
         delay_ms(500);                   //Retardo de 500 mseg.
      }
}

leer()
{
   output_high(pin_a0);                 //Deshabilita la salida CS.
   delay_ms(1000);                      //Retardo de 1 seg.
   lcd_putc("\f");                          //Muestra en la segunda fila del LCD la palabra LECTURA.
   delay_ms(300);
   lcd_putc("LECTURA: ");
   lcd_gotoxy(1,0);
   output_low(PIN_A0);                //Volvemos ha habilitar la salida CS.
   spi_read(0x03);                      //Configurar la operación de escritura.
   spi_read(0x00);                      //Dirección de lectura.
   for(p=0;p<5;p++)
      {
      a=(spi_read(p));                 //Lee de la direccion 0×00 hasta la 0×09.
      printf(lcd_putc,"%u",a);       //Lo muestra en el LCD.
      delay_ms(500);                  //Retardo de 500 mseg.
      }                                   
      output_high(PIN_A0);         //Volvemos a deshabilitar la salida CS.
}
///////////////////////////////////////////////////////////////////////////////
// PRINCIPAL //////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void main()
{
   lcd_init();                         //Inicializa el LCD.
   setup_spi(spi_MASTER | spi_L_to_H | spi_clk_div_16);
   //ESCRITURA EN EEPROM
   output_bit(pin_A0,1);        //Se vuelve ha habilitar CS.
   spi_write(0x06);               //Se habilitar la escritura.
   spi_write(0x02);               //Direcccion para configurar que vamos a escribir.
   spi_write(0x00);               //Direccion de la memoria donde se guarda.       
   delay_ms(300);               //Retardo de 300 mseg.
   escribir();                       //Función de escritura.
   leer();                            //Función de lectura.
   }


Después haremos el esquemático en el PROTEUS para poder simular su funcionamiento y realizar luego el diseño de la placa en el otro entorno de proteus, el ARES.


La siguiente imagen muestra la ventana donde se ve si la EEPROM tiene contenido escrito:




Una vez terminado el esquemático pasamos a realizar el diseño en ARE:


Con la siguiere imagen nos podemos hacer una idea bastante aproximada de cómo quedaría la placa en la realidad:




Aquí os dejo un enlace para que podáis descargar el programa y el datasheet de la EEPROM: http://cid-64f7131e50857260.office.live.com/self.aspx/EEPROM/EEPROM.rar










Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes Powered by Blogger | DSW printable coupons