usb entre pic y matlab

Upload: petro

Post on 24-Feb-2018

238 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 USB Entre PIC y Matlab

    1/27

    INSTITUTO TECNOLOGICO DE CHIHUAHUA

    Reporte de Proyecto

    Tarjeta de Adquisicin de Datos Orientada a Aplicaciones Didcticas

    SISTEMAS DE ADQUISICIN DE DATOS

    DESARROLLADO POR:

    JORGE ABRAHAM GARCA RUELAS 06061021

  • 7/25/2019 USB Entre PIC y Matlab

    2/27

    OBJETIVO

    Disear una tarjeta de adquisicin de datos de bajo costo y accesible para el mejoraprendizaje del estudiante de la especialidad de electrnica.

    INTRODUCCION

    La tarjeta DAQ son tarjetas insertables que permiten la entrada y salida de datosde computador a otros aparatos donde se conectan sensores y actuadores parainteractuar con el mundo real. Los datos que entran y salen pueden ser sealesdigitales o anlogas simplemente conteos de ocurrencias digitales tanto deentrada como de salida.

    Las tarjetas se comportan como si fueran un puerto ms en el computador, yposeen todo un protocolo y sistema de manejo, por lo que entender cada tarjeta,como es su funcionamiento, al igual que otro instrumento o cualquier instrumentorequiere detiempo y cuidado.

    Existen tarjetas de alto y de bajo desempeo. Las de alto desempeo sonprogramables y facilitan el manejo de informacin, pues son en cierta formainteligentes y suficientes, y por tanto no comprometen la velocidad y el rendimientodel computador. Las tarjetas de bajo desempeo requieren de un control directodel computador, y se deben limitadas por la velocidad de este.

    Las tarjetas como cualquier otro perifrico requiere de sus parmetros de

    programacin, y hasta protocolos de comunicacin por lo que se requiere de unsoftware (Driver) que maneje lo bajo de programacin y deje en la superficie laposibilidad de programar aplicaciones con los beneficios de dichas tarjetas de unaforma sencilla.

    En la actualidad existen muchas variables analgicas que podemos leer demanera directa a travs del sensor adecuado. En otras ocasiones, al no existir unsensor diseado de manera explcita para determinada variable, se ocupa unsensor para medir una variable fsica diferente, pero que se relaciona con la quenos interesa por medio de una relacin matemtica, lo cual nos da la posibilidadde que para cualquier proceso industrial (ah existe un nmero ilimitado devariables), exista un sensor involucrado. El sensor lee la variable fsica y nos

    entrega una seal elctrica que est dentro de un rango de valores de voltaje,siendo ste el que tenemos que hacer llegar al ADC del microcontrolador.Teniendo en cuenta que el ADC mide variaciones de voltaje, el sensor tiene queadecuarse con respecto del rango mnimo y mximo que puede leer la entrada del

    ADC. Para que el ADC pueda realizar una conversin del valor analgico, se letiene que agregar un voltaje de referencia, porque ste es el que indicaprecisamente cul es el rango de operacin de la entrada del ADC. Todos los ADCde los microcontroladores PIC aceptan, como mximo, un rango de operacin que

    http://www.monografias.com/trabajos10/tarin/tarin.shtmlhttp://www.monografias.com/trabajos10/humed/humed.shtmlhttp://www.monografias.com/trabajos901/evolucion-historica-concepciones-tiempo/evolucion-historica-concepciones-tiempo.shtmlhttp://www.monografias.com/trabajos15/indicad-evaluacion/indicad-evaluacion.shtmlhttp://www.monografias.com/trabajos14/control/control.shtmlhttp://www.monografias.com/trabajos14/control/control.shtmlhttp://www.monografias.com/trabajos15/indicad-evaluacion/indicad-evaluacion.shtmlhttp://www.monografias.com/trabajos901/evolucion-historica-concepciones-tiempo/evolucion-historica-concepciones-tiempo.shtmlhttp://www.monografias.com/trabajos10/humed/humed.shtmlhttp://www.monografias.com/trabajos10/tarin/tarin.shtml
  • 7/25/2019 USB Entre PIC y Matlab

    3/27

    llega hasta 5 Volts, por lo que podemos establecer rangos de operacin decualquier valor de voltaje, siempre y cuando no rebasemos los 5 volt.

    MARCO TEORICO

    El microcontrolador usado es el PIC18F4455 del fabricante Microchip TechnologyInc., el cual presenta caractersticas muy importantes para la realizacin delproyecto como lo son:

    -Arquitectura RISC avanzada Harvard: 16- bit con 8- bit de datos.-77 instrucciones-Desde 18 a 80 pines-Hasta 64K bytes de programa-Multiplicador Hardware 8x8

    -Hasta 3968 bytes de RAM y 1KBytes de EEPROM-Frecuencia mxima de reloj 40Mhz. Hasta 10 MIPS.-Modulo convertidor anlogo digital(A/D) de 10-bit, este modulo

    tiene cinco registros:

    A/D Result High Register (ADRESH)

    A/D Result Low Register (ADRESL)

    A/D Control Register 0 (ADCON0)

    A/D Control Register 1 (ADCON1)

    A/D Control Register 2 (ADCON2)

  • 7/25/2019 USB Entre PIC y Matlab

    4/27

    Figura 1.Microcontrolador PIC18F4455

    COMUNICACION USB

    Existen 2 tipos de velocidades: Full-Speed 12 Mbps y Low-Speed 1.5MbpsPartes del USB(Conectados por medio de un cable):

    El HostEl dispositivo

    Caractersticas del USB

    Existen 2 tipos de velocidades:Full-Speed 12 Mbps

    Low-Speed 1.5 Mbps

    Las dos partes del USB: El Host El dispositivo

  • 7/25/2019 USB Entre PIC y Matlab

    5/27

    (Conectados por medio de un cable)

    El cable de bus USB es de 4 hilos, y comprende lneas de seal (datos) yalimentacin, con lo que las funciones pueden utilizar un nico cable.

    TIPO DE TERMINAL

    TIPO A

    (Rojo 1)

    (Negro 4)

    (Verde 3)(Blanco 2)

  • 7/25/2019 USB Entre PIC y Matlab

    6/27

    Transferencia de Datos

    La transferencia (o transmisin) consiste en un cierto nmero de packets que semueven a travs del bus entre el host y el dispositivo.

    Existen 4 tipos de Transferencia:

    Control

    Bulk

    IsocronoInterrupcin

    Control: Transferencia de configuracin y comandos.

    Bulk: Gran cantidad de informacin donde el tiempo no es crtico.

    Interrupcin: Poca informacin de inmediata atencin.

    Iscrono: Audio o video. Acceso ilimitado al bus. No se corrigen errores.

    Funcionamiento

    El funcionamiento est centrado en el host, todas las transacciones seoriginan en l. Es el controlador host el que decide todas las acciones, incluyendoel nmero asignado a cada dispositivo (esta asignacin es realizada

    automticamente por el controlador "host" cada vez que se inicia el sistema o seaade, o elimina, un nuevo dispositivo en el bus), su ancho de banda,etc. Cuando se detecta un nuevo dispositivo es el host el encargado de cargar losdrivers oportunos sin necesidad de intervencin por el usuario

  • 7/25/2019 USB Entre PIC y Matlab

    7/27

    Cada transaccin USB consiste de:

    Token Packet.- (Paquete testigo o de comienzo): Identificador que define que seespera hacer

    Optional Data Packet. (Paquete de datos opcional): Contiene la informacin tilque necesitamos

    Status Packet. (Paquete de Estatus): Usado para reconocer lastransacciones y proveer seales de error

  • 7/25/2019 USB Entre PIC y Matlab

    8/27

    Sensor de Temperatura.

    El sensor usado para la medicin de la temperatura es el LM35D de NationalSemiconductors.Este sensor cuenta con una precisin calibrada de 1C y un rango que abarca

    desde -55C a +150C [2] .

    Sensor LM35.

    El encapsulado del sensor es el TO-92 con 3 pines, dos de ellos para alimentarlo(VCC-GND) y el tercero VOUT nos entrega un valor de tensin proporcional a latemperatura medida por el dispositivo cuya sensibilidad es de 10mV por cadagrado centgrado.

    Para su correcta lectura es necesario hacer un adecuado tratamiento de la sealpor medio de una etapa de acoplamiento que sirve para amplificar la seal yobtener mayor precisin en la lectura pudiendo leerse fracciones de grado.

  • 7/25/2019 USB Entre PIC y Matlab

    9/27

    DESARROLLO

    El proyecto se realizo en 3 etapas.

    1.- Etapa de Investigacion

    2.-Etapa de Programacion

    3.- Armado y pruebas

    En la etapa de investigacin se buscaron los materiales ptimos que se utilizaronpara el desarrollo del proyecto as como los software de programacin necesarios.

    Para la etapa de programacin de software para la computadora se utilizo elMatlab r2009a, se descargaron los drivers de la pagina de Microchip para que el la

    pc reconozca el microcontrolador, se creo y se programo una interfaz sencilla yfacil de manejar; para la programacin del microcontrolador se utilizo el compiladorCCS, especificando los canales de donde se va realizar la adquisicin de datos asicomo los canales de comunicacin USB con la PC. En esta etapa se realizo ladepuracin de errores y fue la mas larga del proyecto.

    Por ultimo se realizo el armado de la prctica y pruebas, donde obtuvimos larespuesta del sistema, su velocidad de trabajo y se verifico el almacenamiento delos datos.

  • 7/25/2019 USB Entre PIC y Matlab

    10/27

    CONCLUSIONES

    Se cumplieron los objetivos ya que se construyo una tarjeta de adquisicin dedatos funcional a un bajo costo, que trabaja con un protocolo de comunicacinestndar que es el USB lo que la hace muy practica por que puede ser utilizada encualquier PC.

    Adems de que fue diseada para adaptarse a cualquier sensor puesto quecuenta con una interfaz sencilla que nos da la oportunidad de caracterizar larespuesta lo que la hace sumamente funcional

  • 7/25/2019 USB Entre PIC y Matlab

    11/27

    ANEXOS

    Diagrama elctrico de conexin

  • 7/25/2019 USB Entre PIC y Matlab

    12/27

    INTERFAZ DE USUARIO

  • 7/25/2019 USB Entre PIC y Matlab

    13/27

    DISEO FINAL DEL HARDWARE

    SENSOR

  • 7/25/2019 USB Entre PIC y Matlab

    14/27

    Interfaz de usuario

  • 7/25/2019 USB Entre PIC y Matlab

    15/27

    Prueba con generador de funciones.

    La medicin de la respuesta de la frecuencia del sistema se realizo sin resultadosexitosos ya que el generador no proporciono una frecuencia menor de 1 Hz siendorequerida una de 0.8 Hz debido al teorema de Nyquist ya que la frecuencia de

    muestreo es igual a 2 veces la frecuencia mxima de la onda.

    Cdigo PIC18f4455

    #include

    #device ADC=8 //Descomente sta opcin en caso de usar elADC a 10bits

    #fusesHSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN,MCLR,NOPBADEN

    // Paso 2: Ajuste el fusible del PLL de acuerdo al Xtal que utilice

    // No olvide que PLL1 = Para un Xtal de 4Mhz

    // PLL2 = Para un Xtal de 8Mhz

    // PLL3 = Para un Xtal de 12Mhz

  • 7/25/2019 USB Entre PIC y Matlab

    16/27

    // PLL4 = Para un Xtal de 20Mhz , etc.

    #use delay(clock=48000000)

    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

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

    #define USB_HID_DEVICE FALSE //deshabilitamos el uso de lasdirectivas HID

    #define USB_EP1_TX_ENABLE USB_ENABLE_BULK //turn onEP1(EndPoint1) for IN bulk/interrupt transfers

    #define USB_EP1_RX_ENABLE USB_ENABLE_BULK //turn onEP1(EndPoint1) for OUT bulk/interrupt transfers

    #define USB_EP1_TX_SIZE 64 //size to allocate for the tx endpoint 1buffer

    #define USB_EP1_RX_SIZE 64 //size to allocate for the rx endpoint 1buffer

    #include //Microchip PIC18Fxx5x Hardware layer for CCS'sPIC USB driver

    #include //descriptors del Pic USB

    #include //handles usb setup tokens and get descriptor reports

    0xD8,0x04, //vendor id (0x04D8 is Microchip)

    0x0B,0x00, //product id

    0x01,0x00, //device release number

    #define LEDR PIN_B6

  • 7/25/2019 USB Entre PIC y Matlab

    17/27

    #define LEDB PIN_B7

    #define LED_ON output_high

    #define LED_OFF output_low

    #BYTE TRISA = 0x0F92 // Registro de control de E/S del puerto A

    #BYTE TRISB = 0x0F93 // Registro de control de E/S del puerto B

    #BYTE PORTA = 0x0F80 // Registro del puerto A

    #BYTE PORTB = 0x0F81 // Registro del puerto B

    #BYTE ADCON0 = 0x0FC2 // Registro de control del ADC

    #BYTE ADCON1 = 0x0FC1 // Registro de control del ADC

    #BYTE CMCON = 0x0FB4 // Registro del modulo comparador

    int8 dato[63],entrada[6];

    void main(void) {

    LED_ON(LEDR); //encendemos led en RB6 para indicarpresencia de energia

    LED_OFF(LEDB);

    //*************** CONFIGURACIN DEL ADC **************

    setup_comparator(NC_NC_NC_NC);

    setup_adc_ports(AN0); // Se selecciona AN0 como entrada analgicay las dems como digitales

    setup_adc( VREF_VREF ); // Se indica el rango de voltaje que tendrla entrada anloga

    set_adc_channel( 0 ); // Indica de que pin se har la conversion

  • 7/25/2019 USB Entre PIC y Matlab

    18/27

    setup_adc(ADC_TAD_MUL_16);; // Indica la frecuencia que se usar elreloj del ADC ADC_CLOCK_DIV_16

    usb_init(); // inicializamos el USB

    usb_task(); // habilita periferico usb e interrupciones

    usb_wait_for_enumeration(); // esperamos hasta que el PicUSB seaconfigurado por el host

    LED_OFF(LEDR);

    LED_ON(LEDB); // encendemos led en RB7 al establecercontacto con la PC

    while (TRUE){

    if(usb_enumerated()) // si el Pic est configurado via USB

    {

    if (usb_kbhit(1)) // si el endpoint de salida contiene datos delhost

    { LED_OFF(LEDB);

    usb_get_packet(1, dato, 64); // tomamos el paquete de tamao 8bytesdel EP1 y almacenamos en dato

    if (dato[0]==0){

    LED_ON(LEDR);

    entrada[0]= read_adc();

    entrada[1]= read_adc();

    entrada[2]= read_adc();

  • 7/25/2019 USB Entre PIC y Matlab

    19/27

    entrada[3]= read_adc();

    entrada[4]= read_adc();

    entrada[5]=(entrada[0]+entrada[1]+entrada[2]+entrada[3]+entrada[4])/5;

    dato[1]=entrada[5];

    usb_put_packet(1, dato, 64,USB_DTS_TOGGLE);

    delay_ms(300);

    LED_OFF(LEDR);

    delay_ms(300);

    }}

    }

    }

    }

    Cdigo matlab

    functionvarargout = Proyecto(varargin)% PROYECTO M-file for Proyecto.fig% PROYECTO, by itself, creates a new PROYECTO or raises the existing% singleton*.%% H = PROYECTO returns the handle to a new PROYECTO or the handle to% the existing singleton*.%% PROYECTO('CALLBACK',hObject,eventData,handles,...) calls the local

    % function named CALLBACK in PROYECTO.M with the given inputarguments.%% PROYECTO('Property','Value',...) creates a new PROYECTO or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before Proyecto_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to Proyecto_OpeningFcn via varargin.

  • 7/25/2019 USB Entre PIC y Matlab

    20/27

    %% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES

    % Edit the above text to modify the response to help Proyecto

    % Last Modified by GUIDE v2.5 14-Jun-2010 15:56:22

    % Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...

    'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @Proyecto_OpeningFcn, ...'gui_OutputFcn', @Proyecto_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);

    ifnargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});

    end

    ifnargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

    elsegui_mainfcn(gui_State, varargin{:});

    end% End initialization code - DO NOT EDIT

    % --- Executes just before Proyecto is made visible.functionProyecto_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to Proyecto (see VARARGIN)

    % Choose default command line output for Proyectohandles.output = hObject;

    % Update handles structureguidata(hObject, handles);

    % UIWAIT makes Proyecto wait for user response (see UIRESUME)% uiwait(handles.figure1);

  • 7/25/2019 USB Entre PIC y Matlab

    21/27

    % --- Outputs from this function are returned to the command line.functionvarargout = Proyecto_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure

    % eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)

    % Get default command line output from handles structurevarargout{1} = handles.output;

    functionedit1_Callback(hObject, eventdata, handles)% hObject handle to edit1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)

    % Hints: get(hObject,'String') returns contents of edit1 as text% str2double(get(hObject,'String')) returns contents of edit1 as a double

    % --- Executes during object creation, after setting all properties.functionedit1_CreateFcn(hObject, eventdata, handles)% hObject handle to edit1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called

    % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');end

    functionedit2_Callback(hObject, eventdata, handles)% hObject handle to edit2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)

    % Hints: get(hObject,'String') returns contents of edit2 as text% str2double(get(hObject,'String')) returns contents of edit2 as a double

    % --- Executes during object creation, after setting all properties.

  • 7/25/2019 USB Entre PIC y Matlab

    22/27

    functionedit2_CreateFcn(hObject, eventdata, handles)% hObject handle to edit2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called

    % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');end

    functionedit3_Callback(hObject, eventdata, handles)% hObject handle to edit3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)

    % Hints: get(hObject,'String') returns contents of edit3 as text% str2double(get(hObject,'String')) returns contents of edit3 as a double

    % --- Executes during object creation, after setting all properties.functionedit3_CreateFcn(hObject, eventdata, handles)% hObject handle to edit3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called

    % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');end

    functionedit4_Callback(hObject, eventdata, handles)% hObject handle to edit4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)

    % Hints: get(hObject,'String') returns contents of edit4 as text% str2double(get(hObject,'String')) returns contents of edit4 as a double

  • 7/25/2019 USB Entre PIC y Matlab

    23/27

    % --- Executes during object creation, after setting all properties.functionedit4_CreateFcn(hObject, eventdata, handles)% hObject handle to edit4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called

    % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');end

    functionradiobutton1_Callback(hObject, eventdata, handles)global data_in data_out vid_pid_norm out_pipe in_pipe conectado my_in_pipemy_out_pipe

    Estado = get(handles.radiobutton1,'value');conectado = 0;data_in = eye(1,64,'uint8'); % Se declara el vector de datos de entrada (el quese recibe del PIC)data_out = eye(1,64,'uint8'); % Se declara el vector de datos de salida (el quese envia al PIC)

    % TODOS LOS DATOS SE DECLARAN COMO UINT8 de locontrario no hay comunicacin.

    vid_pid_norm = libpointer('int8Ptr',[uint8('vid_04d8&pid_000b') 0]);out_pipe = libpointer('int8Ptr',[uint8('\MCHP_EP1') 0]);in_pipe = libpointer('int8Ptr',[uint8('\MCHP_EP1') 0]);

    loadlibrary mpusbapi_mpusbapi.haliaslibreria

    ifEstado == 1set(handles.radiobutton2,'enable','on');while(conectado == 0)

    [conectado] = calllib('libreria','MPUSBGetDeviceCount',vid_pid_norm);if(conectado ==0)

    selection = questdlg('La tarjeta de evaluacin no se encuentra',...'Tarjeta no encontrada',...'Buscar de nuevo','Cancelar','Cancelar');

    switchselection,case'Cancelar',

    set(handles.radiobutton1,'value',0);set(handles.radiobutton2,'enable','off');return

    case'Buscar de nuevo'

  • 7/25/2019 USB Entre PIC y Matlab

    24/27

    conectado = 0;end

    endend

    else

    set(handles.radiobutton2,'value',0);set(handles.radiobutton2,'enable','off')calllib('libreria', 'MPUSBClose', my_in_pipe); % Se cierra el tunel de recepcincalllib('libreria', 'MPUSBClose', my_out_pipe); % Se cierra el tunel de enviounloadlibrary libreria % Importante descargar la librera de memoria, de lo

    contrario genera errores

    end

    % --- Executes on button press in radiobutton1.functionradiobutton2_Callback(hObject, eventdata, handles)Enable = get(handles.radiobutton2,'Value');

    vid_pid_norm = libpointer('int8Ptr',[uint8('vid_04d8&pid_000b') 0]);out_pipe = libpointer('int8Ptr',[uint8('\MCHP_EP1') 0]);in_pipe = libpointer('int8Ptr',[uint8('\MCHP_EP1') 0]);[conectado] = calllib('libreria','MPUSBGetDeviceCount',vid_pid_norm);

    [my_out_pipe] = calllib('libreria', 'MPUSBOpen',uint8 (0), vid_pid_norm, out_pipe,uint8(0), uint8 (0)); % Se abre el tunel de envio[my_in_pipe] = calllib('libreria', 'MPUSBOpen',uint8 (0), vid_pid_norm, in_pipe,uint8 (1), uint8 (0)); % Se abre el tunel de recepcin

    data_in = eye(1,64,'uint8'); % Se declara el vector de datos de entrada (el quese recibe del PIC)data_out = eye(1,64,'uint8'); % Se declara el vector de datos de salida (el quese envia al PIC)

    % TODOS LOS DATOS SE DECLARAN COMO UINT8% de lo contrario no hay comunicacin.

    Nombre = 'Ultimas Mediciones';fecha = date;datos = strcat(Nombre,'_',fecha,'.txt');

    ifEnable==1arch = 0;i = 3;n = 0;set(handles.radiobutton1,'enable','off')set(handles.edit1,'enable','off')

  • 7/25/2019 USB Entre PIC y Matlab

    25/27

    set(handles.edit2,'enable','off')set(handles.edit3,'enable','off')set(handles.edit4,'enable','off')

    whileEnable ==1i = i + 1;data_out(1) = 0;

    ifconectado == 1calllib('libreria', 'MPUSBWrite',my_out_pipe, data_out, uint8(64), uint8(64),

    uint8(200)); % Se envia el dato al PIC[aa,bb,data_in,dd] = calllib('libreria', 'MPUSBRead',my_in_pipe, data_in,

    uint8(64), uint8(64), uint8(200)); % Se recibe el dato que envia el PICend

    data = data_in(2);vmax = eval(get(handles.edit2,'string'));vmin = eval(get(handles.edit4,'string'));ecuacion = eval(get(handles.edit3,'string'));paso = ((vmax-vmin)/256);Total = data*double(ecuacion*paso);set(handles.edit5,'String',(num2str(Total)));

    axes(handles.axes1)plot(0:1000,(Total));title('Respuesta del sensor');xlabel('Muestras');ylabel('Magnitud');Enable = get(handles.radiobutton2,'Value');

    ifi >= 3ifarch ==0[arch,error] = fopen(datos,'w');endi = 0;

    ifn >= 100;arch = fclose('all');

    elseif(arch > -1)

    numero = fprintf(arch, '%d \n',Total);n = n+1;

    elsedisp('El archivo no pudo ser creado');

    end

  • 7/25/2019 USB Entre PIC y Matlab

    26/27

    endend

    endelse

    set(handles.radiobutton1,'enable','on')set(handles.edit1,'enable','on')set(handles.edit2,'enable','on')set(handles.edit3,'enable','on')set(handles.edit4,'enable','on')set(handles.edit5,'String','Esperando...');fclose('all');data_out(1) = 1;

    ifconectado == 1calllib('libreria', 'MPUSBWrite',my_out_pipe, data_out, uint8(64), uint8(64),

    uint8(200)); % Se envia el dato al PIC[aa,bb,data_in,dd] = calllib('libreria', 'MPUSBRead',my_in_pipe, data_in,

    uint8(64), uint8(64), uint8(200)); % Se recibe el dato que envia el PICend

    warndlg('Reinicie el PIC','Advertencia')end

    functionedit5_Callback(hObject, eventdata, handles)% hObject handle to edit5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)

    % Hints: get(hObject,'String') returns contents of edit5 as text% str2double(get(hObject,'String')) returns contents of edit5 as a double

    % --- Executes during object creation, after setting all properties.functionedit5_CreateFcn(hObject, eventdata, handles)% hObject handle to edit5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called

    % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');end

  • 7/25/2019 USB Entre PIC y Matlab

    27/27

    functioncloseGUI(source,eventdata)%src is the handle of the object generating the callback (the source of the event) %evnt is the The event data structure (can be empty for some callbacks)

    arch = fclose(arch);

    calllib('libreria', 'MPUSBClose', my_in_pipe); % Se cierra el tunel de recepcincalllib('libreria', 'MPUSBClose', my_out_pipe); % Se cierra el tunel de enviounloadlibrary libreria % Importante descargar la librera de memoria, de lo

    contrario genera errores

    delete(gcf)close allclear all

    Referencias.

    Data sheet PIC18F4455.pdf

    Data sheet LM35.pdf

    www.forosdeelectronica.com

    www.national.com

    www.steren.com.mxwww.elet.itch.edu.mx/academia/ehernand/

    http://www.forosdeelectronica.com/http://www.forosdeelectronica.com/http://www.national.com/http://www.national.com/http://www.steren.com.mx/http://www.steren.com.mx/http://www.elet.itch.edu.mx/academia/ehernand/http://www.elet.itch.edu.mx/academia/ehernand/http://www.elet.itch.edu.mx/academia/ehernand/http://www.steren.com.mx/http://www.national.com/http://www.forosdeelectronica.com/