Sie sind auf Seite 1von 5
Tercer Congreso Virtual, Micr ocontroladores y sus Aplicaciones Interfase serie de adquisición para la enseñanza

Tercer Congreso Virtual, Microcontroladores y sus Aplicaciones

Interfase serie de adquisición para la enseñanza de la programación de microcontroladores.

Walter Gemin - Juana Fernández - Miguel Revuelta - Raúl Rivera - Roberto Hidalgo Laboratorio de Procesos y Mediciones de Señales Universidad Nacional de Mar del Plata

Argentina

Correo-e: geminw@hotmail.com

Abstract . En este trabajo se describe una interfase de adquisición serie que es utilizada para la enseñanza de la programaxción de microcontroladores. Este tipo de práctica se presenta como un proyecto que los alumnos deben desarrollar, en un orden creciente de dificultad, aplicando los conceptos teóricos-prácticos que van incorporando en el curso. Finalizado el curso, los alumnos habrán diseñado un sistema de adquisición con distintas funcionalidades, tales como, digitalización de varios canales para la lectura de sensores, alarmas, controlador de un proceso industrial, o un osciloscopio digital de dos canales. El proyecto comprende desde el punto de vista circuital la construcción de una placa de adquisición serie compatible RS232 y USB basada en un microcontrolador PIC y el desarrollo del firmware basado en comandos. En este trabajo se presenta la placa utilizada, el método de carga y actualización del firmware y el intérprete de comandos.

1 Introducción

En el trabajo descripto, el alumno debe armar y poner en funcionamiento un sistema de adquisición compuesto de una interfase serie basada en un microcontrolador PIC18F2550, que se conecta a una computadora personal (PC) mediante puertos

de comunicación RS232 o USB. Ref. [1], [2].

Además el alumno debe desarrollar el firmware del microcontrolador para cumplir los requisitos propuestos en una guía de trabajos prácticos. El firmware del microcontrolador se desarrolla en lenguaje C, mediante el compilador cruzado PICC para implementar la atención a comandos similares

a los conocidos comandos AT por parte de la interfase.

interfases de entrada/salida. A través de los pines del chip asociados a las interfases de entrada/salida

el microcontrolador puede interactuar con otros

circuitos externos enviandoles señales de comando

o recibiendo estímulos correspondientes a variables

externas. Por lo general varios pines de datos son bidireccionales, es decir pueden configurarse como entradas o salidas. Cuando son entradas, pueden adquirir datos interpretando el valor de voltaje como un valor lógico 0 o 1, mientras que cuando son salidas pueden entregar una señal binaria de voltaje cuya magnitud dependerá del valor lógico 0

o 1. Monitoreando el valor de las entradas, el

microcontrolador puede responder a eventos externos y realizar una cierta acción, como variar las señales de salida de acuerdo al valor en las entradas.

Al finalizar el curso, los alumnos disponen de una placa de adquisición versátil y económica, desarrollada íntegramente por ellos, de la cual conocen en detalle el hardware y firmware que la componen. Esto les permite alcanzar un conocimiento avanzado y experiencias prácticas en

el diseño y configuración de sistemas basados en

microcontroladores. Ref. [3]

2. Interfases de Entrada/Salida

Un aspecto de especial interés para el desarrollador de circuitos basados en microcontroladores son las

Las características de entrada/salida utilizadas son:

-Puertos paralelos como entradas o salidas digitlaes

y puerto series (UARTs, Universal Asynchronous Receiver/Transmitter) y USB.

- Conversores Analogicos-Digitales (A/D, analog-

to-digital) para convertir un nivel de voltaje en un

cierto pin a un valor digital manipulable por el programa del microcontrolador.

- Moduladores por Ancho de Pulso (PWM, Pulse-

Width Modulation): para generar ondas cuadradas de frecuencia fija pero con ancho de pulso

Congreso 2014, Página 1

modificable. La alta integración de subsistemas que componen un microcontrolador reduce el número de chips, la cantidad de pistas y espacio que se requeriría en un circuito impreso si se implementase un sistema equivalente usando chips separados.

- Interrupciones: para responder a eventos externos, los micrcontroladores cuentan con un recurso conocido como interrupciones. Las interrupciones son señales que se generan externa o internamente al microcontrolador que detienen la ejecución normal del programa para ejecutar alguna subrutina de respuesta al evento. Una vez ejecutada la subrutina de interrupción la ejecución del programa continúa en el punto en que se encontraba antes de generarse la interrupción. Un ejemplo típico es el de un botón pulsador conectado a un pin de entrada. Una vez pulsado, se genera una señal de interrupción que iniciará la ejecución de la subrutina de interrupción, que por ejemplo podría activar un pin de salida para encender un led.

En este Proyecto se utilizan una serie de interrupciones que permiten configurar el comportamiento del microcontrolador por eventos, dado que mantiene ejecutando el lazo principal del programa y atiende al puerto de entrada/salida cuando este lo requiere. Las interrupciones programadas en esta interfase son las de finalización de una conversión A/D, al arribo de un carácter al puerto serie o el cumplimiento de un periodo de tiempo fijado por un timer o temporizador.

3. Diagrama de la Interfase

La Fig. 1 muestra la distribución de pines de entrada/salida del microcontrolador. La Fig. 2 muestra el circuito de la placa propuesta. La Fig. 3 muestra un ejemplo de una placa armada por un grupo de alumnos. En la última figura se observan la distribución de puertos utilizada, entradas digitales B0 y B1, salidas digitales B2 y B3 y entradas analógicas A0, A1 y A2.

digitales B2 y B3 y entradas analógicas A0, A1 y A2. Figura 1: Distribución de pines

Figura 1: Distribución de pines del microcontrolador

y A2. Figura 1: Distribución de pines del microcontrolador Fig. 2: Diagrama esquemático de la placa

Fig. 2: Diagrama esquemático de la placa

microcontrolador Fig. 2: Diagrama esquemático de la placa Figura 3: Imagen de la placa 4. Control

Figura 3: Imagen de la placa

4. Control Basado en Comandos

Los comandos AT son instrucciones codificadas que conforman un lenguaje de comunicación entre una PC y un Terminal MODEM, como un protocolo de comunicación para configurarlo y proporcionarle instrucciones, tales como marcar un número de teléfono.

Muchos otros dispositivos periféricos adoptaron esta serie de comandos de comunicación con algunas adaptaciones tales como la telefonía móvil GSM.

Dentro del computador la comunicación de la CPU con cada interfase tambien adopta la modalidad de comandos que asegura compatibilidad entre la interfase y el sistema operativo, independientemente del fabricante de la misma.

Los comandos consisten en una secuencia de caracteres ASCII que sintetizan el significado de la

2

Tercer Congreso Virtual, Micr ocontroladores y sus Aplicaciones operación que se quiere ejecutar. De esta

Tercer Congreso Virtual, Microcontroladores y sus Aplicaciones

operación que se quiere ejecutar. De esta forma asignando un comando a cada operación del repertorio que soporta la interfase, se puede armar un lenguaje de comunicación que el microcontrolador interpreta y ejecuta devolviendo la información requerida o actuando sobre el entorno.

El resultado de establecer un estandar para los comandos, como el propuesto en este trabajo, permite independizar el manejo de la interfase del firmware de la misma, es decir que las placas de todos los grupos de alumnos son compatibles entre si. Esto le otorga a la programación de las interfases hardware y software, un nivel de abstracción que facilita el desarrollo de sus aplicaciones.

La Tabla 1, muestra el nombre, formato y descripción de los comandos ASCII de la interfase.

   

muestras.

   

Detiene

la

“DETA”

DETA\n

adquisición

contínua.

   

Identificación de

la

“IDEN”

IDEN\n

placa.

5. Programación de la Interfase

5.1 Proceso de Desarrollo

El proceso de desarrollo del firmware de un microcontrolador se puede dividir en las siguientes etapas principales. Ref [4]:

Tabla 1

Comando

Formato

 

Descripción

“NCAN”

NCAN2\n

Selecciona número de canal analógico entre 0 y 2.

   

Lee el conversor de aproximaciones sucesivas.

“RDAS”

RDAS\n

Devuelve el resultado por RS232 en formato ASCII

   

Escribe

las

salidas

“WRDO”

WRDO1\n

digitales.

 

El

valor a escribir

puede variar entre 0 y

2

   

Lee

las

entradas

digitales.

 

“RDDI”

RDDI\n

Los valores los envía por RS232 en formato carácter y puede variar entre 0 y 2.

“SCAN”

SCAN12\n

Escaneo automático de canales. 1: Canal de Inicio, 2: Canal fin.

 

INIL12345\n

Inicia la adquisición contínua. 12345 corresponde al valor numérico en milisegundos del tiempo entre

“INIL”

INIL12345\n

5.2 Desarrollo del software.

Consiste en escribir y compilar/ensamblar el programa que determinará las acciones del micrcontrolador y su funcionamiento. Existen distintas maneras de desarrollar el programa, dependiendo del lenguaje inicial que se utiliza para escribir el programa:

de

•Lenguaje

Máquina/Código Objeto

(.asm) ensamblador (.hex, .o, .bin, .coff)

• Lenguaje de Alto Nivel - Lenguaje Assembly - Lenguaje de Máquina/Código Objeto

(.c, .cpp) compilador (.asm) ensamblador (.hex, .o, .bin, .coff)

La Fig. 4 muestra las dos alternativas típicas que tiene el desarrollador para generar el código de máquina que es entendido por el microcontrolador.

Assembly

-

Lenguaje

La programación en compiladores cruzados C para

el desarrollo del firmware de los microcontroladores propuesto en el desarrollo de este proyecto, tiene la ventaja de ofrecer las librerias avanzadas requeridas en los algoritmos de cálculo y comunicación entre dispositivos mediante USB, Ethernet, WIFI y Xbee.

entre dispositivos mediante USB, Ethernet, WIFI y Xbee. Figura 4: Alternativas de programación Congreso 2014,

Figura 4: Alternativas de programación

Congreso 2014, Página 3

5.3 Programación del Microntrolador.

Este proceso corresponde a utilizar un programa en la PC que toma el código ensamblado (.hex, .o, .bin, .coff) para el microcontrolador específico, y lo envía mediante algún puerto (serie, paralelo, USB, etc.) a un dispositivo que lo escribe en la memoria del mismo. Se acostumbra denominar programador tanto al sofware como al hardware involucrado para este propósito, lo cual puede prestarse a confusión. El software programador a veces recibe también el nombre de downloader, ya que su propósito es descargar o transferir desde la PC al microcontrolador el código ensamblado. La Fig. 5 muestra las componentes involucradas en el proceso de programación.

5.4

Mediante Bootloaders.

Técnicas

Avanzadas:

Programación

El Bootloader es un pequeño programa que se descarga en el microcontrolador y tiene por finalidad simplificar el desarrollo de programas ya que actuan como un programa residente que tiene por finalidad obtener via el puerto serie el código del programa que se requiere ejecutar, grabandolo en la memoria de programa. Para desarrollar programas usando Bootloaders, por puerto serie RS232, los pasos básicos son:

• Grabar el código del Bootloader en la memoria

del microcontrolador empleando un programador estándar.

• Armar un circuito con un conversor serie RS-232 a TTL como el circuito integrado MAX232.

• Compilar/ensamblar el código de la aplicación

desarrollado con algún compilador/ensamblador.

• Colocar el circuito con el microcontrolador en modo de comunicación serie y descargar el código binario .hex usando el software Bootloader.

el código binario .hex usando el software Bootloader. Figura 5: Proceso de grabación • Reiniciar el

Figura 5: Proceso de grabación

• Reiniciar el circuito con el microcontrolador en modo normal para que se ejecute el programa descargado a través del Bootloader.

La ventaja de utilizar esta técnica es que permite muy facilmente hacer actualizaciones del código firmware, sin necesidad de extraerlo del circuito para colocarlo en un programador estándar. En este método el programador de microcontroladores se emplea solo una vez para descargar el Bootloader al microcontrolador.

6. Interprete de Comandos

En la Tabla 1, se observa que cada comando está compuesto por una secuencia de cuatro caracteres en mayúscula que lo identifican, seguido desde cero hasta cinco caracteres, que representan los parámetros de la acción completa que deberá ejecutarse. Finaliza siempre en un caracter especial (\n) de nueva línea, que sirve para indicar el fín del comando, cualquiera sea su extensión.

El código que atiende los comandos utiliza la interrupción del puerto serie, que se ejecuta cuando arriba un caracter. El Listado 1, muestra un sencillo ejemplo de interprete, con las líneas de programa mínimas que deberá tener.

Basicamente se arma un vector (buffer[ ]) de n elementos, donde se almacena la secuencia de caracteres leidos con la instrucción getch(). Sobre cada caracter recibido se verifica la presencia del ASCII hexadecimal (0A) que representa el fin de línea (\n), con el cual se indica el final del comando, concluyendo la lectura. Cuando esto último se cumple se analiza el contenido del vector comparandolo con los comandos establecidos para la interfase. Para esto se asigna a la variable comando el nombre del comando que se quiere evaluar, en este ejemplo “NCAN”, y se ejecuta la función comparar_comandos() para evaluar si ocurrió este comando. Si es así se cumple en la línea if (comparar_comandos()==1) y se ejecuta dentro del if el comando solicitado, si esto no ocurre, se evalua otro, almacenandolo en la variable comando y repitiendo el procedimiento descripto. En este ejemplo el cuarto elemento del comando es el número de canal que se desea seleccionar, para esto se ejecuta la línea canal[0]=buffer[4], luego se convierte ese valor de ASCII a entero i=atoi(canal) y por último se selecciona el canal en el multiplexor del microcontrolador mediante set_adc_channel(i). La línea siguiente printf("Canal = %u\n\r",i), envía un mensaje de retorno a la PC confirmando la ejecuación del comando solicitado.

4

Tercer Congreso Virtual, Micr ocontroladores y sus Aplicaciones Listado 1 #int_RDA void RDA_isr(void) {  

Tercer Congreso Virtual, Microcontroladores y sus Aplicaciones

Listado 1

#int_RDA

void RDA_isr(void)

{

 

int8 i; char canal[1]; int16 dato; buffer[next_in] = getc();

next_in++; if (buffer[next_in-1]==0x0A)

{

next_in=0;

strcpy(comando,"NCAN"); if (comparar_comandos()==1)

{

canal[0]=buffer[4];

i=atoi(canal); set_adc_channel(i); printf("Canal = %u\n\r",i); } // Fin del interprete de comando

}

}

// Fin de la interrupción

La modalidad de trabajo propuesta requiere una PC con el software de desarrollo instalado compuesto del compilador cruzado PICC y la interfase de comunicación Hyperterminal para prueba y depuración de comandos que ejecuta el microcontrolador, además del armado de un circuito sencillo que conforma la interfase.

Las características de esta interfase y el entorno de desarrollo utilizado, permite transformar fácilmente el mismo repertorio de comandos de serie RS2323 a USB, mediante la modalidad de puerto serie virtual. Esto último permite hacer pruebas de funcionamiento, desde una aplicación de terminal (Hyperterminal) para cualquiera de los dos tipos de comunicación serie.

Referencias

[1] Antonio R. Tafarena, Teoría y Diseños con Microcontroladores PIC, UTN Mendoza.

2005.

7. Conclusiones

Lo necesario para llevar adelante este diseño requiere un mínimo de equipamiento y espacio físico y permite intensificar las experiencias prácticas con microcontroladores, que relacionan los problemas de índole teórico con situaciones reales.

[2]

Microchip Data Sheet, PIC 18F2550.

[3]

Angulo J.M.,: Microntroladores PIC. Diseño práctico de aplicaciones. Mc Graw-Hill. 1999

[4]

Sanchez Julio, Canton Maria: Microcontroler Programming. Microchip PIC, CRC Press, Taylor and Francis Group, 2007.

“Copyright ©2014. “Walter A. Gemin”: El autor delega a la Organización del Tercer Congreso Virtual de Microcontroladores la licencia para reproducir este documento para los fines del Congreso ya sea que este artículo se publique en el sitio web del congreso, en un CD o en un documento impreso de las ponencias del Segundo Congreso Virtual de Microcontroladores.

Congreso 2014, Página 5