You are on page 1of 23

1

Prácticas
Sistemas Empotrados
Curso 2005-2006

Dr. D. José Luis Villarroel Salcedo

Dr. D. José María Martínez Montiel


2

ÍNDICE

Practica 1. Entradas salidas paralelo. Entorno de desarrollo 1

Practica 2. Manejo del tiempo. Un cronómetro 3

Practica 3: Autómatas estado finito 5

Practica 4: Control de un sistema analógico 8

Práctica DSP1: Conversión AD y PWM 11

Práctica DSP2: Filtrado digital 13

Practica 7: Pseudolavadora 15
1

Practica 1. Entradas salidas paralelo. Entorno de desarrollo


1 Objetivos

• Manejo del entorno de programación


• Programación E/S paralelo
• Manejo depurador

2 Descripción del sistema controlado

El sistema controlado se compone de 4 pulsadores de entrada conectados al PTA y


de dos displays de 7 segmentos conectados al PTC:

código 3 bits
PTA1 PTC0 A
PTA2 PTC1 B
PTA3 HC PTC2 C
PTC3 D
PTA4 D1 D0
PTC5 PTC4

validación

Al presionar el pulsador de validación, el valor codificado por los 3 pulsadores se


muestra por el display D0. El valor contenido en el display D0 pasa al D1.
Inicialmente, D0 contiene el valor 0 y D1 el valor 1.

3 Trabajo a realizar
3.1 Conexión de los periféricos al microcontrolador

• Verificar y entender las conexiones realizadas en la Placa de Adaptación.


PTA debe estar conectado a los pulsadores y PTC a los visualizadores de
segmentos.
• Verificar el correcto funcionamiento de los pulsadores que se vayan a utilizar.

3.2 Programación del la iluminación de los displays

• Implementación de una función para la iluminación del display, cuyo


prototipo es:
2

void display(unsigned char queDisplay, unsigned char valor)

• Implementación de la iluminación alternativa de los 2 displays con los


valores 0 y 1 respectivamente

3.3 Lectura del valor introducido a través de los pulsadores


Es importante resaltar que los pulsadores conectados al puerto PTA están negados,
por lo tanto: pulsado Æ valor 0; sin pulsar Æ valor 1. De esta forma al pulsar un
pulsador se genera un flanco de subida.
• Configurar el PTA:
• PTA1..PTA4 como entradas
• Habilitación de la interrupción en PTA4
• Programar una rutina de interrupción que lea el valor de los pulsadores
(recuérdese que están negados) y lo deposite en una variable global. La rutina
de interrupción entrará en un flanco de subida en PTA4.
• Verificación del funcionamiento con el debugger

3.4 Aplicación completa

A partir de lo programado en los puntos anteriores montar la aplicación completa de


acuerdo a las especificaciones.

3.5 Mapa de memoria

A partir de la información contenida en el *.map dibujar el mapa de memoria de


vuestro programa, identificando las distintas secciones del programa, su ubicación en
la memoria y el empleo de memoria, tanto ROM como RAM

3.6 Puntos opcionales

1. Almacenar el valor de los 5 últimos códigos introducidos en el sistema


3

Practica 2. Manejo del tiempo. Un cronómetro


1 Objetivos
• Manejo de visualizadores de 7 segmentos
• Problemática del tiempo
• Programación de un reloj basado en el TBM

2 Descripción del sistema


Se trata fundamentalmente del desarrollo de un cronómetro. Se deberá disponer de
dos pulsadores: uno de RESET o puesta a cero del cronómetro y otro START/STOP
de puesta en marcha o parada de la medición. El sistema deberá representar el tiempo
en tres visualizadores de 7 segmentos. Los de la izquierda representarán los segundos
y el de la derecha las décimas de segundo.

segundos dec

SISTEMA
CONTROL
D2 D1 D0

Las especificaciones a imponer al sistema son:


1. Precisión en la representación: 1 décima de segundo
2. Precisión en la medida de al menos 2 milisegundos
3. Rango de medida hasta 99.9 segundos

3 Trabajo a realizar
3.1 Conexión de los periféricos al microcontrolador
• Verificar y entender las conexiones realizadas en la Placa de Adaptación.
PTA debe estar conectado a los pulsadores, el pulsador de STAR/STOP al
PTA1 y el pulsador de RESET al PTA2 (módulo KBI). PTC debe estar
conectado a los visualizadores de siete segmentos.
• Verificar el correcto funcionamiento de los pulsadores que se vayan a utilizar.

3.2 Programación de un módulo de reloj


• Programar un módulo de reloj basado en el TBM
• Puesta a punto del módulo utilizando los displays (utilizar la función de la
práctica 1, posiblemente modificada)

3.3 Pulsadores de control y aplicación


Programar la aplicación CRONÓMETRO utilizando la capacidad del módulo de
teclado KBI para interrumpir.

3.4 Puntos opcionales


Conseguir que todos los visualizadores luzcan por igual.
Implementar un módulo de reloj que sea monótono durante 1 siglo.
4

4 Estructura del módulo reloj

clock.h

extern void Reset_Clock (void) ;


extern void Start_Clock (void) ;
extern void Stop_Clock (void) ;

extern unsigned int Get_Time (void) ;


extern void delay_until (unsigned int T) ;

clock.c

#include <68hc08gp32.h>
#include "clock.h"

/* Variables del modulo */

static unsigned int tick_counter ;

/* Implementacion servicios */
void interrupt 17 Tick (void) {…}

void Reset_Clock (void) {

asm sei ;

/* Inicializacion del periferico */


/* Tick de 1.66mS, 600Hz */

/* Inicializacion de variables */

/* Activacion de las interrupciones y del TBM */



asm cli ;
return;
}

void Start_Clock (void) {…}

void Stop_Clock (void) {…}

unsigned int Get_Time (void) {…}

void delay_until(unsigned int T){


while(!(T==tick_counter))
asm WAIT ;
}
5

Practica 3: Autómatas estado finito


1 Objetivos

• programación autómata finito


• medida tiempo ciclo del autómata
• aplicación periódica

2 Descripción del sistema controlado

El sistema controlado es un ascensor para un edificio de 3 plantas.

SUBIR

BAJAR

B2
P2
S2

B1
S1 P1

B0
S0 P0

El sistema consta de 3 pulsadores para llamar al ascensor desde el exterior (B0, B1,
B2), 3 detectores de presencia (S0, S1, S2) para determinar en que piso se encuentra
el ascensor y 3 LEDs P0, P1, P2 que indican en que piso se encuentra es ascensor.
Finalmente existen otros dos LEDs: SUBIR, encendido cuando el ascensor sube y
BAJAR encendido cuando el ascensor baja. Las señales de estos LEDs podrían
emplearse directamente para controlar el motor del ascensor.

3 Trabajo a realizar
3.1 Conexión de los periféricos al microcontrolador

• Verificar la conexión de los pulsadores S0, S1, S2, B0, B1, B2 al PTA del
microcontrolador. Se emplearan los pulsadores P1-P6 de la placa de E/S
digitales.
• Verificar la conexión del PTB del microcontrolador a los LEDs SUBIR y
BAJAR, P0, P1, P2. Se emplearan los LEDS D1-D5 de la placa de E/S
digitales
• Las conexiones seguirán la siguiente tabla:
6

entradas PTA salidas PTB


HC08 modelo tarjeta HC08 modelo tarjeta
PTA1 B0 P1 PTB2 P1 D1
PTA2 B1 P2 PTB3 P2 D2
PTA3 B2 P3 PTB4 P3 D3
PTA4 S0 P4 PTB5 SUBIR D4
PTA5 S1 P5 PTB6 BAJAR D5
PTA6 S2 P6 - - -

• Comprueba las conexiones con el programa pruebacon.


• Verás como se iluminan los LEDs D1 hasta D5 sucesivamente 3 veces.
Después de forma indefinida, al pulsar los pulsadores P1-P6 se iluminan los
LEDS D1-D6.

3.2 Programación del automata de estado finito que controla al ascensor

• Implementa en C el autómata de estado finito que controla el ascensor


• Impleméntalo como autómata de Moore.

3.3 Determinación del tiempo de ciclo y temporización del bucle

Se quiere determinar cual es el tiempo de ciclo del autómata, esto es cuanto tiempo
cuesta realizar cada iteración del bucle. Para ello cuando comienza el bucle, la
patilla PTB7 se pone a uno y cuando se termina se pone a 0.

• Implementar la comprobación anterior y determinar cuanto es el tiempo de ciclo


para vuestra implementación.
• ¿Duran lo mismo todas las iteraciones de dicho bucle? ¿Por qué?
• Modifica el ciclo de tratamiento para que se ejecute periódicamente cada 0.2 seg.
(tiempo discreto)

3.4 Temporización del bucle

Modifica el autómata para que, cuando el ascensor esté en el último piso, si no se


recibe ninguna llamada en 5 segundos baje al piso cero automáticamente.

3.5 Puntos opcionales

Realizar un autómata síncrono que evolucione cuando llegue algún evento (flanco en
el valor de un sensor o pulsador)
7

4 Programas

Se da el siguiente módulo de reloj de sistema ya implementado. Se dispone de los


ficheros de cabecera que contienen la especificación y de su implementación en C.

4.1 clock.h
#ifndef clock_h
#define clock_h

extern void Reset_Clock (void) ;


extern unsigned int Get_Time (void) ;
extern void Delay_Until (unsigned int T) ;

extern void Set_Timer (unsigned int Ticks) ;


extern char Time_Out (void) ;
extern void Remove_Timer (void) ;

#endif
8

Practica 4: Control de un sistema analógico


1 Objetivos

• Implementación de un controlador de velocidad de un motor de cc

2 Descripción sistema
Se desea realizar el control de velocidad de un motor de corriente continua. El motor
está equipado con una dinamo.


A

3 Trabajo a realizar

Se dispone de un modulo PWM ya implementado, pwm.h y pwm.c. El módulo


produce la onda PWM por la patilla PTD4.

También se dispone de un módulo de conversión AD que lee las entradas analógicas


por las patillas PTB0 y PTB1.

3.1 Accionar el motor mediante PWM

5V

PTB0 PTD4
PWM A
10K
T=50

sistema de control
9

3.2 Implementar control con regulador y T=50ms

U 1 + 0.05s
R( s ) = = 3 .5
sistema de control E s
5V PTD4

PTB0 Filtro
10K R(s) Paso Bajo A

PTB1
Filtro
y
Protección

3.3 Eliminar el potenciómetro y generar la siguiente consigna por programa

3 Volt.
2 Volt.

0.5 Volt.

5 seg 10 seg 15 seg

3.4 Determinación del tiempo de cómputo

Se quiere determinar cual es el tiempo de cómputo del control, esto es cuanto tiempo
cuesta realizar cada iteración del bucle. Para ello utilizar una salida digital del µC.

3.5 Módulos AD y PWM

Describir los módulos de PWM y conversión analógica-digital que se han dado


implementados para la práctica. Debe explicarse el porqué de las cosas y los modos
elegidos de funcionamiento.
10

3.6 Puntos opcionales

3.6.1 Implementación del controlador con en coma fija.

Compara el tiempo de cómputo y la ocupación en memoria entre usar cálculo en


coma flotante y usar cálculo en coma fija.

4 Programas

Se dan los siguientes módulos ya implementados. Se dispone de los ficheros de


cabecera que contienen la especificación y de su implementación en C.

4.1 ad.h

extern void Init_AD (void) ;


extern unsigned char Read_Value_Char_1 (void) ;
extern unsigned char Read_Value_Char_2 (void) ;
extern float Read_Value_1 (void) ;
extern float Read_Value_2 (void) ;

4.2 pwm.h

extern void Init_PWM (void) ;


extern void Set_Value (float value) ;
extern void Set_Value_Char (unsigned char value) ;

4.3 clock.h

extern void Reset_Clock (void) ;


extern void Start_Clock (void) ;
extern void Stop_Clock (void) ;
extern unsigned int Get_Time (void) ;
extern void delay_until(unsigned int T);

extern void Set_Timer (unsigned int Ticks) ;


extern char Time_Out (void) ;
extern void Remove_Timer (void) ;
11

Práctica DSP1: Conversión AD y PWM


1 Objetivos

• Conversión AD
• Generación de PWM
• Generación de ondas por programa
• Procesado de una señal basado en una interrupción generada por el CAD

2 Descripción sistema

A CAD DSP PWM PB A

3 Trabajo a realizar

En esta práctica se va a trabajar con el DSP F2812 utilizando su máxima frecuencia


de bus 150 MHz. Para ello es necesario configurar el pll que dispone. La función
InitSystem() realiza esta configuración del pll, de los relojes que se entregan a
los periféricos (HSPCLK, LSPCLK) y activa la entrada de reloj de los periféricos
que se tienen que utilizar.

Por otro lado, la función Gpio_select() permite configurar el sentido de los


pines de I/O y si son controlados por los periféricos.

3.1 Generación de una senoide

Genérese una senoide por programa de aproximadamente 100 Hz utilizando una


tabla con 16 muestras. La senoide debe tener la máxima amplitud posible. Para ello
utilícese los módulos clock y pwm de los que se dispone.

¿Qué frecuencia tiene la senoide? Realizar los cálculos oportunos.


Visualícese la senoide en un osciloscopio una vez filtrado el PWM.
12

3.2 Muestreo y generación de sonido

Impleméntese una aplicación que muestree la señal de un micrófono y la reproduzca


sin modificar por un altavoz. Para ello utilícese los módulos adc y pwm de los que
se dispone.

¿Cuál es la frecuencia de muestreo del módulo adc?

3.3 Modificación del muestreo y del PWM

Modifíquese el módulo adc de tal forma que la frecuencia de muestreo sea 20 KHz.

Modifíquese el módulo pwm de tal forma que su frecuencia sea aproximadamente


146 KHz. ¿Qué parámetros es preciso modificar? ¿Se puede conseguir la misma
precisión?

Compruébese su correcto funcionamiento.

3.4 ECO

Impleméntese un ECO reproduciendo el sonido muestreado con un retraso de 0.25


segundos.

3.5 Mapa memoria

A partir de la información contenida en el fichero .map dibujar el mapa de memoria


de la última aplicación realizada.

3.6 Opcional

Utilícese el “profiler” del Code Composer Studio para establecer el tiempo de


cómputo de la rutina de interrupción.
13

Práctica DSP2: Filtrado digital


1 Objetivos

• Conversión AD y generación de ondas por programa


• Filtrado digital mediante un filtro FIR
• Manejo del entorno Code Composer

2 Descripción sistema

DSP
PWM

Filtro FIR paso bajo

CAD

3 Trabajo a realizar

En esta práctica se va a trabajar con el DSP F2812 utilizando su máxima frecuencia


de bus 150 MHz. Para ello es necesario configurar el pll que dispone. La función
InitSystem() realiza esta configuración del pll, de los relojes que se entregan a
los periféricos (HSPCLK, LSPCLK) y activa la entrada de reloj de los periféricos
que se tienen que utilizar.

Por otro lado, la función Gpio_select() permite configurar el sentido de los


pines de I/O y si son controlados por los periféricos.

3.1 Generación de una onda cuadrada de 2 kHz

Genérese una onda cuadrada de 2 kHz de frecuencia utilizando el módulo PWM que
se dispone. El ancho del pulso debe ser el 50% del periodo.

Visualícese la onda en un osciloscopio.


14

3.2 Adquisición mediante el CAD de la onda

Conéctese la salida PWM al canal 0 del conversor analógico digital. Impleméntese


una aplicación que muestree la señal y actualize un buffer circular de 1000 muestras
sin procesar. Para ello utilícese el módulo ADC del que se dispone.

¿Cuál es la frecuencia de muestreo del módulo ADC?


Visualícese la onda captada mediante el visualizador gráfico del Code Composer y
compruébese que la captación es correcta.

3.3 Filtrado de la señal

Realícese el filtrado de la señal incorporando lo necesario a la rutina de interrupción


del ADC. La rutina de interrupción deberá también actualizar un segundo buffer de
1000 muestras filtradas.

Los coeficientes del filtro ya han sido calculados (símbolo FIR16_LPF50). Se trata
de un filtro paso bajo, de orden 50 (50 + 2 coeficientes), con ventana Hamming y
frecuencia de transición 2 kHz. La respuesta en frecuencia es:

Visualícese el buffer de muestras sin filtrar y el de muestras filtradas para constatar


el efecto del filtro.

3.4 Tiempo de cómputo del filtro

Utilícese el “profiler” del Code Composer Studio para establecer el tiempo de


cómputo de la función de filtrado.
15

Practica 7: Pseudolavadora
1 INTRODUCCION

Se pretende el desarrollo de un sistema de control similar a los que incorporan las


lavadoras actuales. Como elementos materiales del sistema contaremos con una
maqueta de un motor eléctrico de corriente continua que simulará el motor del
bombo de la lavadora, una tarjeta con pulsadores y leds, una tarjeta con
visualizadores de siete segmentos, una tarjeta de conexiones y el kit de desarrollo
para el 68HC08 de Motorola.

2 ESPECIFICACION DE LA MAQUETA DE MOTOR CON INERCIA

VI
VE A A Vθ
θ ω J Kθ
Vω 1
Jm n

f

La figura representa el esquema de un accionamiento electromecánico. Este sistema


consta de un amplificador de potencia de ganancia A, un motor de corriente continua
controlado por inducido, un tren de engranajes de relación de reducción n y la inercia
J1. Sobre el eje del motor actúa una fricción viscosa de valor f. Para permitir el
control de dicho sistema se dispone de dos sensores, uno que mide la posición θ del
eje de la inercia de constante Kθ V/rad y una dínamo tacométrica sobre el eje del
motor de constante Kω V/rad*sg-1.

Existen en el motor una fricción seca y juego en el reductor que se pueden modelar
como perturbaciones aditivas sobre el par del eje.

Algunos valores numéricos de los parámetros del sistema son:


A = 2.7 Ganancia del amplificador
n= 119.75 Relación de reducción

Sensores:
Kq = 2.08 V/rad Cte. sensor de posición
16

Kw = 2.73*10-2 V/rad*sg-1Cte. dínamo tacométrica

El sistema dispone de una caja de conexionado donde se tienen accesibles la señal de


entrada VE y las señales de salida Vω, Vθ y VI (véase el dibujo esquemático de la
maqueta). Todas ellas tienen el mismo rango y unidades: ± 10 V. En la maqueta, las
señales de entrada están marcadas con distintivo amarillo y las de salida con
distintivo rojo.

3 REQUISITOS FUNCIONALES

La Pseudo-Lavadora (PL en adelante) deberá presentar las entradas y salidas que se


especifican en la siguiente figura:

MARCHA
SELECCION PROGRAMA 1 (Ropa blanca)
SELECCION PROGRAMA 2 (Ropa delicada)
VISUALIZACION EJECUCION PROGRAMA
VISUALIZACION VELOCIDAD

PROGRAMA EN MARCHA
PROGRAMA 1 SELECCIONADO
Vω PROGRAMA 2 SELECCIONADO
PL VISUALIZACION EJEC PROG SELECCIONADA
VISUALIZACION VEL. SELECCIONADA
VE (PWM)
RESET

VISUALIZADOR Indicador (led, bombilla, …)


7 SEGMENTOS Pulsador
17

Dicho sistema deberá cumplir los siguientes requisitos funcionales:

1. La PL podrá ejecutar dos programas distintos

Prog. 1 (ropa blanca)

5 4 3 2 1 0
3,5V
2V
1V
0V
-1V

4s 4s 4s 4s 10s

Prog. 2 (ropa delicada)

4 3 2 1 0
3V
1V
0V
-0,5V
2s 4s 2s 6s

En los cronogramas se indica la velocidad a la que debe girar el motor de la PL (en


voltios), el tiempo de cada sección de programa y su número identificativo.

2. Los visualizadores de siete segmentos deberán poder representar:

• la velocidad a la que gira el motor en cada instante expresada en tanto por


ciento del máximo que son 10V
• el número identificativo de la sección de programa en ejecución

En todo momento se podrá seleccionar una u otra representación mediante dos


botones (VISUALIZACION EJECUCION PROGRAMA / VISUALIZACION
VELOCIDAD) y se indicará la selección realizada mediante dos leds
(VISUALIZACION EJECUCION PROGRAMA SELECCIONADA /
VISUALIZACION VELOCIDAD SELECCIONADA). El refresco de los
visualizadores se hará aproximadamente cada 10 milisegundos, esto es, si es preciso
multiplexar en el tiempo los visualizadores, cada uno estará encendido durante 10
ms.
18

3. Existirán dos botones que permitirán seleccionar entre el programa 1 y el 2.


Además a cada programa le corresponderá un led que indicará su selección. La
selección únicamente se podrá hacer con la PL parada (no se ejecuta ningún
programa). Para arrancar la ejecución del programa seleccionado se pulsará el
botón MARCHA que además deberá encender el led PROGRAMA EN
MARCHA. Cuando acabe el programa dicho led deberá apagarse.

4. Existirá además un botón de RESET que permitirá en todo instante recuperar el


estado inicial del sistema abortando si fuera preciso un programa en ejecución.

5. Deberá controlarse la velocidad del motor leyendo la señal Vω y generando un


PWM. El algoritmo de control a implementar obedece a la siguiente función de
transferencia

Ve 1 + 0.05s
= 3. 5
E s
donde E = Consigna - Vω. El periodo de muestreo será de 50ms.

6. El control discreto (lectura de pulsadores, actualización de estado, acciones) del


sistema debe realizarse de forma síncrona cada 75 ms

Para el desarrollo del sistema se dispone de diversas librerías: generación de PWM,


reloj/timer basado en el TBM, intérprete de una RdP y conversión AD.
19

4 TABLA DE CABLEADO

PTA – Botonera

PIN Conexión
PTA0 NC Empleado comunicación PC
PTA1 P1 Marcha
PTA2 P2 Selección programa P1, largo
PTA3 P3 Selección programa P2, corto
PTA4 P4 Ver estado ejecución por display
PTA5 P5 Ver módulo velocidad por display
PTA6 P6 Reset
PTA7 NC

PTB -->entradas A/D y LEDS

PIN Conexión
PTB0 AD0 Read_Value_1()
PTB1 AD1 Read_Value_2()
PTB2 D1 Programa en marcha
PTB3 D2 Seleccionado programa P1, largo
PTB4 D3 Seleccionado programa P2, corto
PTB5 D4 Viendo estado ejecución
PTB6 D5 Viendo módulo velocidad
PTB7

PTC --> Display

PIN Conexión
PTC0 A Valor BCD
PTC1 B Valor BCD
PTC2 C Valor BCD
PTC3 D Valor BCD
PTC4 D0 Seleccionado Display 0
PTC5 D1 Seleccionado Display 1
PTC6 D2 Seleccionado Display 2
20

PTD --> PWM, visualización ciclos de ejecución

PIN Conexión
PTD0 RdP Interprete RdP activado
PTD1 TBI Interrupción tiempo real activada
PTD2 Contol Tarea de control activada
PTD3 Visualizador Tarea visualización activada
PTD4 PWM Salida del PWM
PTD5
PTD6
21

5 PROGRAMAS DISPONIBLES

Se dan los siguientes módulos ya implementados. Se dispone de los ficheros de


cabecera que contienen la especificación y de su implementación en C.

5.1 ad.h

extern void Init_AD (void) ;


extern unsigned char Read_Value_1 (void);
extern unsigned char Read_Value_2 (void);
extern float Read_Value_Char_1(void);
extern float Read_Value_Char_2(void);

5.2 pwm.h

extern void Init_PWM (void) ;


extern void Set_Value (float value) ;
extern void Set_Value_Char (unsigned char value) ;

5.3 clock.h

extern void Reset_Clock (void) ;


extern void Start_Clock (void) ;
extern void Stop_Clock (void) ;
extern unsigned int Get_Time (void) ;
extern void delay_until(unsigned int T);

extern void Set_Timer (unsigned int Ticks) ;


extern char Time_Out (void) ;
extern void Remove_Timer (void) ;

5.4 rdpRom.h

typedef struct{
const char *Lugares_Entrada;
const char *Lugares_Salida;
void (*Accion) (void);
char (*Condicion)(unsigned char entrada);
}T_TRAN;

void Interpretar_RdP(const T_TRAN Trans[], int nTrans,


unsigned char M[], unsigned char Sig_M[],
const unsigned char M_Inicial[],
int nLugares,
void (*Leer_Entrada)(unsigned char *pEntrada),
char (*Condicion_Stop)(unsigned char entrada),
void (*Accion_Stop)(void));

You might also like