Vous êtes sur la page 1sur 8

Sordo Castillo Fernando Ammisadday Ingeniera Electrnica

Objetivo
Realizar una comunicacin entre un MCU y el software MATLAB, logrando visualizar
los datos enviados desde el MCU por medio del puerto serie.
Materiales
-Software de diseo electrnico ISIS Proteus
-MATLAB
-PIC16f877
-conector RS-232
-LCD 16 X 2

Introduccin
Dentro del trabajo de investigacin pudimos observar la manera en la que funciona
la comunicacin serial, se observ la forma en que se comporta, los dispositivos
que pueden ser utilizados, de igual manera se eligi el compilador donde
programaremos en lenguaje C el microcontrolador.
De igual manera se dio a conocer la importancia y una pequea parte de la gran
potencia que tiene el software MATLAB, especificando las sentencias que
podremos utilizar para leer los datos desde el puerto serie:
fopen
fgets
fclose
serial(com,baudrate,velocidad en baudios);


Teniendo en claro estos conceptos, podemos proceder a realizar la programacin
necesaria y proponer nuestro propio diseo para establecer la comunicacin,
apoyndonos de las hojas tcnicas de cada uno de los dispositivos.

Procedimiento

Como primer paso, necesitamos proponer un circuito que nos permita visualizar los
datos a travs del puerto serie, como lo vamos a visualizar en simulacin el software
ISIS nos permite ingresar y leer datos de forma serial con una herramienta llamada
Sordo Castillo Fernando Ammisadday Ingeniera Electrnica
Virtual Terminal , esto puede funcionar como interfaz grfica para que el usuario
ingrese lo que desea que aparezca en MATLAB.

El dispositivo que voy a utilizar es un pic16f877, utilizar cristal de cuazro a 4MHz,
segn la hoja de datos los pines 25 es TX y 26 RX, entonces debemos colocar ahi
el conector RS-232, cabe mencionar que si el circuito fuese a conectarse de manera
fsica debemos anteponer el MAX232, tambin es importante colocar el virtual
terminal, el cual tomara la funcin de interfaz grfica para ingresar los datos de
forma serial optimizando el sistema.Para la visualizacin de los datos enviados,
ocuparemos una pantalla LCD 16X2, estos son los componentes que componen el
circuito propuesto, el siguiente paso es realizar la programacin necesaria para que
funcione.





Es indispensable la configuracin del puerto antes de la programacin, puesto que
esto definir el COM que ocupara y tambin la velocidad en baudios, para que est
completamente sincronizado.
Sordo Castillo Fernando Ammisadday Ingeniera Electrnica





Bien procedemos a la parte de programacin del pic, apoyndonos en la librera
UART realizamos una comunicacin, antes que nada proponemos que es lo que
haremos, primero declaramos las variables a utilizar, las cuales almacenaran el dato
enviado, una ms para el conteo de los datos que enviaremos, en este caso
propongo que los datos entren de forma serial al puerto RX, por medio de una
interfaz, al momento de que se ingresa un dato, este se visualiza en la pantalla LCD,
al ver concluida la trama de 8 bits manda un mensaje de completo y la pantalla se
borra dando un delay de 2 segundos, para que en MATLAB podamos abrir el puerto
y leerlo.
Sordo Castillo Fernando Ammisadday Ingeniera Electrnica
Para mayor entendimiento el cdigo se muestra a continuacin:
// conexiones LCD
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// fin conexiones LCD

void main() {
char dato; //variable de tipo caracter
int contador=0; // variable para el conteo, con inicio en 0
UART1_Init(9600); // inicia usart
Lcd_Init(); // Inicializa LCD

Lcd_Cmd(_LCD_CLEAR); // limpia display
Lcd_Cmd(_LCD_CURSOR_OFF); // apaga cursor
UART1_Write(13);
UART1_Write(10);

Lcd_out(2,1,"Ingrese datos"); // mensaje de inicio en LCD
delay_ms(1500); //tiempo de espera
Lcd_cmd(_lcd_clear); // borra display

while(1) //bucle infinito
{
if(UART1_Data_Ready()==1) //si lee un dato el uart entonces
{
dato = UART1_Read(); // dato toma el valor leido desde el teclado
UART1_Write(dato); //enviamos de vuela el valor hacia matlab
UART1_Write(13); //envia ASSci enter
UART1_Write(10); //envia retroceso
Lcd_chr_cp(dato); //imprimimos el dato ingresado

contador++; //incrementa la variable contador
if(contador==8){ //Detecta el ingreso de 8 caracteres (podemos agregar mas)
Lcd_out(2,1,"Trama Completa");//mensaje cuando se completa la trama,lista para ser leida
contador=0; //reinicia el contador,
Delay_ms(2000); //espera 2 segundos,
Lcd_Cmd(_LCD_CLEAR); //y borra el LCD.
} } } }



El siguiente paso a realizar es la lectura desde MATLAB, pero necesitamos realizar
un paso intermedio para poder establecer la comunicacin entre los 2 software,
puesto que la comunicacin serial es por cableado entre dos dispositivos, en este
caso PIC-PC, como es simulacin debemos hacer una comunicacin virtual creando
de igual maneras puertos COM virtuales por medio de un software(Virtual Serial
Port Emulator), el proceso es el siguiente:

-Abrir el programa
-Dar clic en el botn crear
Sordo Castillo Fernando Ammisadday Ingeniera Electrnica
-Elegir el nombre del puerto que deseemos y dar finalizar para que se inicie la
emulacin del puerto.




Con esto ya quedan creados los puertos, entonces el paso final es la visualizacin
en MATLAB, el cdigo es realmente sencillo, debemos de declarar una variable que
tomara el valor de lo que existe en el puerto COM, tambin debemos asignar la
velocidad del mismo, procurando que este sincronizado con el conector del PIC,
despus abrimos el puerto con fopen(), para finalizar leyendo los datos con fgets().

El cdigo es el siguiente para que este ms claro, al mismo tiempo que tenemos el
programa debemos iniciar la simulacin en Proteus, debido a que la lectura es en
tiempo real, necesitamos corroborar que los datos sean recibidos, lo que indica que
el circuito y el cdigo son correctos.


>> s=serial('COM2','BaudRate',9600);
>> fopen(s)
>> fgets(s)
>> fclose(s)


Por ultimo visualizamos el comportamiento del sistema propuesto.

- Iniciamos la simulacin en Proteus y observamos los datos de entrada
Sordo Castillo Fernando Ammisadday Ingeniera Electrnica


Tambin se encuentra el virtual terminal que es nuestra pequea interfaz grfica.

- Ingresamos los datos en la virtual terminal, podemos observar que lo que
escribamos en nuestra pequea interfaz se visualizan en la pantalla LCD, al
momento de llenar la trama de 8 bits manda el mensaje de Trama completa
comienza el retardo y es momento de leer en MATLAB, la pantalla se borra
y puedes comenzar a ingresar datos nuevamente.



Sordo Castillo Fernando Ammisadday Ingeniera Electrnica


- Abrimos MATLAB, ingresamos el cdigo porpuesto con anterioridad y
visualizamos que es lo que entra por el puerto COM2.

La respuesta en MATLAB es la misma que estamos enviando desde el
microcontrolador, podemos verificarlo en comparacin con los datos que aparecen
la LCD, lo ltimo que hacemos es cerrar el puerto con fclose(), o bien podemos
dejarlo abierto si es que queremos observar que es lo que est pasando.
Con esto comprobamos que la comunicacin serial est hecha de buena manera y
el circuito propuesto funciona correctamente, si deseamos podemos grficar los
datos que obtuvimos, quedando de la siguiente forma

Sordo Castillo Fernando Ammisadday Ingeniera Electrnica


Conclusiones
Despus de las pruebas realizadas observamos la funcionalidad del circuito,
aunque es importante mencionar que al momento de obtener los daos tenemos un
tiempo de retardo para que aparezcan en el rea de trabajo de MATLAB, aunque
los datos enviados desde el PIC son los mismos que se estn recibiendo desde el
otro lado de la comunicacin, sera interesante agregar una forma para leer archivos
analgicos, solo debemos utilizar el ADC y enviar los parmetros de forma serial,
pero como primer paso, logramos realizar una comunicacin correcta
permitindonos buscar mayores aplicaciones con el software tan poderoso que es
MATLAB.
Referencias bibliogrficas
- Juan Ricardo Clavijo Mendoza, Diseo y simulacin de sistemas
microcontrolados en lenguaje C, 2011.
- https://plus.google.com/u/1/+EmbeddedLaboratory_India
- http://cens.ioc.ee/local/man/matlab/techdoc/ref/fopen.html

Vous aimerez peut-être aussi