jueves, 3 de junio de 2010

DAQ mediante CDC y LabView



Esta es una aplicación de la conectividad USB, en este caso en particular, usando la emulación de un puerto serie RS232 mediante un microcontrolador PIC18F2550 (Puede usarse cualquiera de esta familia) para la adquisición de datos analógicos usando el convertidor analógico-digital del mismo, y enviando estos datos a la PC y procesarlos mediante LabView.
Con el LabView se pueden realizar una cantidad de cosas impresionantes, y lo mas impresionante es el tiempo de implementación que es muy corto, en cuestión de minutos uno puede obtener una aplicación bastante poderosa.

Para esta aplicación se utilizaron los componentes VISA de labview para realizar la conexión serial de manera rápida pero eficaz, se utiliza un GRAPH CHART para graficar los datos adquiridos, y la función WRITE TO SPREED SHEET para guardar estos datos a una hoja de cálculo de exel.

CLICK AQUÍ PARA VER CÓDIGO [-/+]



//-----------------------------------------------------------------------------------
//
// Mas proyectos en: http://perfectalgorithm.blogspot.com
//
//----------------------------------------------------------------------------------
// Esta obra está bajo una licencia
// Atribución-No comercial-Licenciamiento Recíproco 2.5 México de Creative Commons.
// Para ver una copia de esta licencia, visite:
// http://creativecommons.org/licenses/by-nc-sa/2.5/mx/
// o envie una carta a Creative Commons, 171 Second Street, Suite 300,
// San Francisco, California 94105, USA.
//-----------------------------------------------------------------------------------

#include <18F2550.h>
#device ADC=10
#fuses XTPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)


#include <usb_cdc.h>
#include <lcd1.c> //Cambie por libreria LCD adecuada.
#include <string.h>

#BYTE TRISA = 0x0F92
#BYTE TRISB = 0x0F93
#BYTE PORTA = 0x0F80
#BYTE PORTB = 0x0F81
#BYTE ADCON0 = 0x0FC2
#BYTE ADCON1 = 0x0FC1
#BYTE CMCON = 0x0FB4



char comando[10];
char adc_string[10];
int16 adc_dato;
int len=0;
char c;

void commando();



void main(void) {

LCD_init();
usb_init();

TRISA = 0x0FF;
TRISB = 0x00;
ADCON1 = 0x0F;
CMCON = 0x07;


setup_comparator(NC_NC_NC_NC);
setup_adc_ports(AN0);
setup_adc(vss_vdd);
set_adc_channel(0);
setup_adc(adc_clock_internal);


printf(lcd_putc,"\fPerfectAlgorithm");
len=0;


while (TRUE) {
if (usb_enumerated()) {
if (usb_cdc_kbhit()) {
c=usb_cdc_getc();
Comando[len]=c;
len++;
}
if (len>2) {
commando();
len=0;
}
}
}
}

void envia_dato() {
int i;
read_adc(ADC_START_ONLY);
while (bit_test(ADCON0,1));
adc_dato = read_adc(ADC_READ_ONLY);
sprintf(adc_string,"%Lu",adc_dato);
for(i=0;i<strlen(adc_string)+1;i++) {
usb_cdc_putc(adc_string[i]);
while(!usb_cdc_putready());
}

}

void commando() {

if (Comando[0]=='G') { //----------- GDT
if (comando[1]=='D') {
if (comando[2]=='T') {
envia_dato();
}
}
}

}

CLICK AQUÍ PARA VER DESCARGAR SOURCE LABVIEW/PIC [-/+]



El archivo contiene el Firmware para el PIC (.C para copilador PCW CCS) y SOURCE para LabView v8.6

http://rapidshare.com/files/395453831/Conexion_CDC_con_Labview.rar.html







5 comentarios:

luis enrique moreno dijo...

me cae que son bien chingones... (y)

Anónimo dijo...

EL LINK DEL PROGRAMA EN LAVBIEW ESTA ROTO, PODRIAS ACTUALIZARLO? GRACIAS

Anónimo dijo...

no funciona!! el link
http://rapidshare.com/files/395453831/Conexion_CDC_con_Labview.rar.html
arreglenlo!!!

Anónimo dijo...

arreglen el link porfa

Abdel Mohamed El Chama Andrade dijo...

Amigo disculpa podrias enviarme el surce en labview y en pic
ing.abdel2014@gmail.com

Publicar un comentario

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger