Puerto Serial Con Matlab y PIC 16F877A

Puerto serial con Matlab y PIC 16F877A UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DEINGENIERIA ELECTRICA Y ELECTRONICA ES

Views 78 Downloads 2 File size 584KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Puerto serial con Matlab y PIC 16F877A UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DEINGENIERIA ELECTRICA Y ELECTRONICA ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA CIRCULO DE ESTUDIOS:

Autor: OBLITAS ARISTONDO FRANZUA LE RENNARD

INTRODUCCION:

Este archivo realizaremos una aplicación en la cual mostraremos el voltaje obtenido en un potenciómetro alimentando con 5v y lo mostraremos en Matlab.

Materiales:

-

1 pic 16f877a 1 cristal de cuarzo de 4MHZ 2 condensadores de 22pF. 1 potenciómetro de 10k. 1 potenciómetro de 50k. 1 resistencia de 10k. 1 pulsador. 1 LCD de 16x2. 1 cable serial *

*: El cable puede ser serial o USB – serial.

Programas: -

CSS Compiler. Proteus. Matlab. Virtual Serial Port.

Programación del CSS Compiler: 1. Configuramos los pines de nuestro microcontrolador : #fuses XT,NOWDT,NOPUT // constantes #device adc=10 // constante para el ADC en los PIC #use delay(clock=4M) // configurando el cristal que vamos a utilizar #define lcd_data_port gentev("sfr:portd") // diciendole al pic que vamos a conectar el LCD por el Puerto D #define lcd_enable_pin pin_d0 // Conecto el enable del LCD con el pin D0 #define lcd_rs_pin pin_d1 // Conecto el RS del LCD con el pin D1 #define lcd_rw_pin pin_d2 // Conecto el RW del LCD con el pin D2 #include // Librería del LCD #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) El rs232 es la librería para el puerto serial el Baud= 9600 es la velocidad con la cual se transmiten los datos, El parity es el bit de paridad le pongo N porque no lo utilizo, xmit= PIN_C6 es el pin por donde yo envió la información, rcv=PIN_C7 es el pin por donde se recepciona la información, bits=8 es el número de bits que va pasar por el cable por segundo. void main(){ int16 q; setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL); lcd_init(); while(true){ set_adc_channel(0); delay_us(10); q = read_adc(); printf(lcd_putc,"\f ADC = %4ld",q); printf("%4ld \r",q); delay_ms(100); } }

Programación del Matlab: Creamos una función en el cual nos pida el número de muestras que vamos a tomar .

function Matlab_Control(numero_muestras) close all; clc; y=zeros(1,1000); %Vector donde se guardan los datos %Inicializando el puerto que utilizare delete(instrfind(('Port'),('COM2'))); puerto_serial=serial('COM2'); puerto_serial.BaudRate=9600; warning('off','Matlab:serial:fscanf:unsuccessfulRead'); %Abro el puerto serial fopen(puerto_serial); %Declaro un contador del numero de muestras ya tomadas contador_muestras=1; %Creo una ventana para la grafica figure('Name','Serial Comunication: Matlab + PIC, Oblitas (CEICTEC)') title('SERIAL COMUNICATION MATLAB + PIC '); xlabel('Numero de muestra'); ylabel('Voltaje(V)'); grid on; hold on; %Bucle while para que tome la muestras que queremos while contador_muestras