La comunicación serial consiste en el envío de
un bit de información de manera
secuencial, es decir, un bit a la vez y a una velocidad definida entre el emisor
y el receptor.
La
comunicación serial siguelos estándares definidos por el RS-232 (Recommended Standard
232) que establece niveles de voltaje, velocidad de transmisión de los datos,
etc.
La
parte física encargada de la comunicación serial es la UART (Universal
Asynchronous Receiver and Transmitter). En la comunicación asincrónica, la
velocidad de envío de los datos es acordada entre el emisor y el
receptor.
Figura 1.
Comunicación asíncrona.
OBJETIVO
Generar una
señal en Simulink y enviarla al puerto serial hacia el canal de recepción del
microcontrolador, este a su vez generar un eco de la señal por medio del uso
del DAC (Digital to Analog Converter) y
ADC (Analog to Digital Converter), y retornar esa señal vía serial hacia
Simulink.
DESARROLLO
La comunicación serial con el
MatLab, puede ser realizada vía un modelo en Simulink. Para esto se hace uso de
los bloques localizados en la herramienta Instrument
Control Toolbox, dentro de la librería Simulink.
Figura 2.
Bloques para comunicación serial.
El modelo
implementado en Simulink es el siguiente.
Los bloques to instrument y Query Instrumet, ocupados para el envío y recepción de datos
respectivamente en forma serial, son configurados a 115200 Baudios, y
direccionados al puerto COM4. Tal y como se muestra en la figura siguiente.
Figura 4. Configuración de
bloques de envío y recepción en Simulink.
Además el bloque Query
Instrument, requiere de la configuración del terminador de la cadena de
caracteres que recibirá, esto con el fin de determinar que una cadena de datos
completa ha sido recibida. En este caso el terminador utilizado es el 0x55
hexadecimal, que corresponde al carácter U. Los datos son enviados y recibidos
por medio de cadenas en formato ASCII, los cuales tambien se especifican en las
configuraciones del bloque en la pestaña “query”.
Figura 5. Configuraciones
del bloque de recepción serial Query
Intrument.
Tambien es necesario definir la variable Ts en el espacio de
trabajo del MatLab, para el tiempo de muestreo a la que trabajaran todos los
bloques dentro del modelo Simulink. Previamente la variable Ts deberá ser
colocada en la casilla correspondoente al tiempo de muestreo, dentro de las
configuraciones de todos los bloques como lo indican las figuras anteriores.
Por otra parte, el bloque de la Función seno, es configurado a una amplitud de 2040
unidades, y a una frecuencia de 60 hz, expresada en rad/seg.
Figura 6. Configuración del
bloque función seno.
El programa se desarrolla en MQX
lite, cuenta con 2 tareas y 3 interrupciones detalladas en las siguientes tablas.
Name
|
Stack
Size
|
Priority
|
MQX_AUTO_START_TASK
|
Task1
|
512
|
8
|
ENABLE
|
Task2
|
512
|
8
|
DISABLE
|
Tabla 1. Configuración de tareas.
Name
|
Description
|
AD1_OnMeasurementComplete
|
Evento que es invocado cuando una medición ha
sido realizada.
|
AS1_OnRxChar
|
Evento que es invocado cuando un carácter ha sido recibido
correctamente.
|
AS1_OnTxChar
|
Evento que es invocado después que un
carácter ha sido transmitido.
|
Tabla 2. Lista de eventos.
El desarrollo
del programa se basa en una tarea 1 de inicialización y espera, para habilitar
la tarea 2, encargada de la conversión de la cadena recibida en entero,
escritura en el DAC y disparo del ADC para lectura de valor retroalimentado
físicamente mediante un cable del DAC (PTE30) hacia el ADC (PTB3). Por Su parte
el evento del canal de recepción es el encargado de guardar en un buffer
circular los datos recibidos provenientes del MatLab, via puerto serial. El
evento del ADC se encarga de leer valor cuando le es indicado y llama a la
función Int2str, la cual convierte el valor de entero a cadena con terminador (para nuestro caso ‘U’ y ‘\n’), lista
para ser enviada al puerto serial, y
envía el primer dato mediante la función AS1_SendChar().Una vez
enviado el primer carácter, el evento de transmisión continúa elenvío
carácter por carácter. El proceso se repite en forma indefinida mientras se
estén recibiendo datos vía serial.
Ver Código
Resultados
No hay comentarios:
Publicar un comentario