Examenes SEDA

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 45

UNIVERSIDAD DE ALCALÁ GRADO EN INGENIERÍA ELECTRÓNICA DE COMUNICACIONES

ESCUELA POLITÉCNICA SUPERIOR GRADO EN INGENIERÍA EN TECNOLOGÍAS DE


DEPARTAMENTO DE ELECTRÓNICA TELECOMUNICACIÓN
ASIGNATURA SISTEMAS ELECTRÓNICOS DIGITALES AVANZADOS FECHA 27/11/2020
APELLIDOS TITULACIÓN
NOMBRE Nº MESA

PRUEBA DE EVALUACIÓN INTERMEDIA 1

El sistema digital basado en el LPC1768 monitoriza dos magnitudes analógicas (Temperatura y Humedad) en un
display LCD y sobre un único visualizador basado en un servomotor que mueve una aguja sobre un marcador
analógico. La identificación de la magnitud que muestra el marcador analógico queda reflejada a través de dos
LED. De forma remota desde un entorno WEB se podrán monitorizar dichas magnitudes, así como modificar
algún parámetro de configuración. NOTA: F_pclk=25Mhz, y F_cpu=100Mhz.

Funcionamiento:
Tendrá un modo de funcionamiento en el que periódicamente (tiempo configurable) se registrarán las
magnitudes en memoria con objeto de poder analizar su evolución temporal a lo largo de un día, una semana,
etc. Las distintas magnitudes medidas podrán ser consultadas en tiempo real a través una conexión de internet
mediante la implementación de un servidor web empotrado, pudiendo interactuar de forma remota con el
sistema. Se propone que el sistema tenga un sistema de alarma o aviso programable sobre cualquier magnitud,
de manera que se genere un mensaje de voz grabado previamente por el usuario para la Temperatura y un tono
de frecuencia audible para la Humedad cuyo valor se puede modificar manualmente con un potenciómetro (100
a 1000Hz).
Un menú de configuración permitirá seleccionar una opción para grabar en RAM el mensaje de audio de alarma
para la Humedad utilizando un micrófono con el correspondiente circuito acondicionador. La pulsación de KEY
Sistemas Electrónicos Digitales Avanzados
1 iniciará el proceso de grabación a una frecuencia de muestreo de 8 kHz durante 2 segundos. La pulsación de
KEY 2 inicia la reproducción para comprobar en mensaje grabado.

a) A partir de la función de interrupción del ADC que lee los sensores (LM35, HIH4000 y potenciómetro) y en la
que se actualizan en var1, var2 y var3 las magnitudes consideradas, deduzca las entradas del ADC utilizadas
e indíquelas sobre el diagrama de la figura, complete la configuración del ADC y Timer asociado,
deduzca la frecuencia de muestreo de cada canal y añada los comentarios al código.

void init_ADC_TIMER_sensores(void)
{
LPC_SC->PCONP|= (1<<12); // Power ON
LPC_PINCON->PINSELx|=sólo comentarios ;//
LPC_PINCON->PINMODEx|=solo comentarios ;//
LPC_ADC->ADCR = (0x01)| //
(3<<8)| //
(1<<21)| // PDN=1
( <<24); //

LPC_TIM1->PR=24;
LPC_TIM1->MR0=1000000-1;
LPC_TIM1->MCR=
LPC_TIM1->TCR=
}
void ADC_IRQ_Handler(void)
{
switch((LPC_ADCR->ADGR>>24)&0x07){
case 0:
var1= ((LPC_ADC-ADGDR>>4)&0xFFF)*300/4095; break;
case 1:
var2= (LPC_ADC-ADGDR>>8)&0xFF; break;
case 2:
var3= (((LPC_ADC-ADGDR>>4)&0xFFF)*3.0/4095)-0.8)*70/2.2; break;
}
canal++;
if(canal==3) canal=0;
LPC_ADC->ADCR&=˜0xFF;
LPC_ADC->ADCR|=(1<<canal);
}

NOTA: float var1, var3; uint8_t var2; // se ha considerado que la humedad varía entre el 0º y 70%

2
Sistemas Electrónicos Digitales Avanzados
b) Explique claramente la configuración del Timer que menos recursos consume de CPU para medir el ciclo
de trabajo de la señal PWM que actúa sobre el servo. Escriba en pseudocódigo la función asociada a dicho
Timer encargada de hacer la medida.

c) Al generar la señal de alarma de Humedad se captura en un osciloscopio un ciclo de la señal periódica tal
como la mostrada en la figura.

c.1 Complete la función:

void genera_muestras_seno(void)
{
char i;
for(i=0;i< ;i++) muestras[i]=(uint16_t)(511+511*sin(2*pi*i/ );
}

c.2 Indique sobre la figura el valor máximo de tensión obtenido a la salida.

3
Sistemas Electrónicos Digitales Avanzados
d) Si se utiliza a la vez el mismo Timer utilizado en el apartado b) para generar interrupciones periódicas cada
50ms, añada a la ISR las instrucciones necesarias para leer la posición del potenciómetro y actualizar la
frecuencia de salida de las muestras hacia el DAC en función de la variable global tipo_alarma modificando
los registros que crea necesarios. Añada el código necesario para visualizar en el LCD la temperatura y
humedad cada 10 segundos (ver funciones en Anexo).

e) Escriba la función de interrupción del Timer 3 que saca las muestras hacia el DAC para generar la señal de
alarma correspondiente al tono o al audio, en función de la variable global tipo_alarma e indique el periodo
de interrupción en cada caso. NOTA: Considere ya inicializado el array con las muestras de audio.
void TIMER3_IRQHandler(void)
{

4
Sistemas Electrónicos Digitales Avanzados
f) Explique en detalle, sin escribir código, qué recurso utilizaría y cómo lo configuraría para reducir al máximo
la carga de CPU durante la generación de la señal de alarma correspondiente al tono. Justifique si es
necesario modificar la función genera_muestras_seno() del apartado c1.

g) Se desea monitorizar remotamente el valor de las variables medidas implementando un servidor HTTP
empotrado en el microcontrolador. En la página se visualiza gráfica y numéricamente el valor de una variable
(temperatura o humedad) y da la posibilidad de cambiar la magnitud visualizada.

La página que el usuario debe visualizar y su código HTML se encuentran en las figuras adjuntas. Se debería
visualizar una página o la otra, dependiendo del contenido de la variable global denominada
“visu_magnitud” que puede tomar los valores TEMP o HUM (valores constantes definidos previamente)
dependiendo de si se quiere visualizar la temperatura o la humedad respectivamente. La magnitud
visualizada se puede cambiar pulsando en el botón correspondiente en la página web.

El indicador analógico se realiza con un CANVAS que se rellena con código Javascript. Este código representa
la aguja con el ángulo que le indica la variable “grados”, utiliza de fondo una imagen que depende de la
magnitud medida y representa el valor de la magnitud.
Al seleccionar uno de los dos botones de selección la URL puede ser una de estas dos:
• https://seda.es/index.cgi?seleccion=temperatura
• https://seda.es/index.cgi?seleccion=humedad

Escriba el contenido del fichero index.cgi, y de las funciones cgi_func(…), cgi_process_var(…) y/o
cgi_process_data(…) que sea necesario.

5
Sistemas Electrónicos Digitales Avanzados

6
Sistemas Electrónicos Digitales Avanzados

7
Sistemas Electrónicos Digitales Avanzados

8
Sistemas Electrónicos Digitales Avanzados

9
Sistemas Electrónicos Digitales Avanzados

10
Sistemas Electrónicos Digitales Avanzados

ANEXO I (Mapa de memoria LPC1768 y Registros)

11
Sistemas Electrónicos Digitales Avanzados

12
Sistemas Electrónicos Digitales Avanzados

13
Sistemas Electrónicos Digitales Avanzados

ANEXO II (Funciones de control del LCD)

/* Private function prototypes -----------------------------------------------*/


void LCD_Initializtion(void);
void LCD_Clear(uint16_t Color);
uint16_t LCD_GetPoint(uint16_t Xpos,uint16_t Ypos);
void LCD_SetPoint(uint16_t Xpos,uint16_t Ypos,uint16_t point);
void LCD_DrawLine( uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1 , uint16_t color );
void PutChar( uint16_t Xpos, uint16_t Ypos, uint8_t ASCI, uint16_t charColor, uint16_t bkColor );
void GUI_Text(uint16_t Xpos, uint16_t Ypos, uint8_t *str,uint16_t Color, uint16_t bkColor);
void PutChinese(uint16_t Xpos,uint16_t Ypos,uint8_t *str,uint16_t Color,uint16_t bkColor);
void GUI_Chinese(uint16_t Xpos, uint16_t Ypos, uint8_t *str,uint16_t Color, uint16_t bkColor);

14
Sistemas Electrónicos Digitales Avanzados
ANEXO III (Características sensores HIH4000 y LM35, Vcc=+5V)

15
UNIVERSIDAD DE ALCALÁ GRADO EN INGENIERÍA ELECTRÓNICA DE COMUNICACIONES
ESCUELA POLITÉCNICA SUPERIOR GRADO EN INGENIERÍA EN TECNOLOGÍAS DE
DEPARTAMENTO DE ELECTRÓNICA TELECOMUNICACIÓN
ASIGNATURA SISTEMAS ELECTRÓNICOS DIGITALES AVANZADOS FECHA 11/11/2021
APELLIDOS TITULACIÓN
NOMBRE

PRUEBA DE EVALUACIÓN INTERMEDIA 1


CUESTIÓN 1
El sistema digital basado en el LPC1768 monitoriza dos magnitudes analógicas (Temperatura y Humedad) en un
display LCD y sobre un único visualizador basado en un servomotor que mueve una aguja sobre un marcador
analógico. La frecuencia de la señal PWW de control del servo será de 50Hz. La identificación de la magnitud que
muestra el marcador analógico queda reflejada a través de dos LEDs (LED1 y LED2 en la Mini-DK2). Un
potenciómetro permitirá modificar el brillo del LCD mediante una señal PWM de 1 KHz. NOTA: F_pclk=25Mhz, y
F_cpu=100Mhz.

Descripción del funcionamiento:


Tendrá un modo de funcionamiento en el que periódicamente se registrarán las magnitudes en memoria con objeto
de poder analizar su evolución temporal a lo largo de un día, una semana, etc. Se propone que el sistema tenga un
sistema de alarma o aviso programable sobre cualquier magnitud, de manera que se genere un mensaje de voz
previamente grabado por el usuario. Un menú de configuración en el LCD permitirá seleccionar una opción para
grabar en RAM los mensajes de audio de alarma de Temperatura y Humedad utilizando un micrófono con el
correspondiente circuito acondicionador. La pulsación de KEY 1 iniciará el proceso de grabación a una frecuencia de
muestreo de 8 kHz (12 bits/muestra) durante 1 segundo por mensaje. La pulsación de KEY 2 inicia la
reproducción para comprobar el mensaje grabado.
Sistemas Electrónicos Digitales Avanzados
a) A partir de la función configuración del ADC para la lectura de los sensores (LM35, HIH4000 y potenciómetro),
deduzca las entradas del ADC utilizadas e indíquelas sobre el diagrama de la figura, complete la
configuración del ADC, deduzca la frecuencia de muestreo de cada canal considerando que se ha configurado
el máximo tiempo de conversión y añada los comentarios al código.

void init_ADC_sensores(void)
{
LPC_SC->PCONP|= (1<<12); // Power ON
LPC_PINCON->PINSELx|=sólo comentarios ;//
LPC_PINCON->PINMODEx|=solo comentarios ;//
LPC_ADC->ADCR = (0x07)| //
( <<8)| //
(1<<21)| // PDN=1
(1<<16); //

b) Explique el recurso que utilizaría y como lo configuraría, para generar la señal PWM que actuaría sobre el
brillo del LCD. Escriba en pseudocódigo la función modifica_brillo(float brillo) cuyo argumento, al variar entre
0 y 1, modifica el ciclo de trabajo de la señal PWM entre el 0 y 100%.

2
Sistemas Electrónicos Digitales Avanzados
c) Explique el recurso que utilizaría para generar la señal PWM que actúa sobre el servo (0,3≤TH<2,1ms) indicando
su configuración y el PIN sobre el que actúa.
Escriba en pseudocódigo la función asociada correspondiente que genera el movimiento en función de las
variables globales temperatura y humedad, y de la variable booleana magnitud que contiene el valor que sirve
para indicar la magnitud a representar.

3
Sistemas Electrónicos Digitales Avanzados
d) Considere que se utiliza el Timer 2 para generar interrupciones periódicas cada 50ms (considere que ya se
encuentra configurado), añada a la ISR las instrucciones necesarias para leer la posición del potenciómetro,
modificar el brillo del LCD, actualizar los valores de las variables temperatura y humedad, así como el estado
de sus respectivos LEDs asociados en función de la variable magnitud.
Añada el código necesario para visualizar en el LCD la temperatura y humedad cada 10 segundos.

e) Complete la función de configuración del ADC (incluyendo los comentarios) para la entrada a la que se conecta
el micrófono e indique el tiempo de conversión y la configuración del Timer (sin escribir el código) que
proporciona el muestreo (Fs=8kHz a 12 bits). Considere que funciona por DMA para grabar 1 segundo de audio
por cada mensaje de alarma. Justifique los recursos de memoria necesarios.

void init_ADC_microfono(void)
{
LPC_ADC->ADCR= ( 1<< )| //
( <<8)| //
(1<<21)| // PDN=1
(4<<24); //

4
Sistemas Electrónicos Digitales Avanzados
f) Escriba la función de interrupción del Timer 3 que saca las muestras hacia el DAC para generar la señal de alarma
correspondiente en función de la variable global tipo_alarma y deduzca el periodo de interrupción. Complete
la inicialización de los arrays de las muestras de audio necesarios para cada tipo de alarma.

. . . . . . buffer_alarma_T[ ];

. . . . . . buffer_alarma_H[ ];

void TIMER3_IRQHandler(void)
{

5
Sistemas Electrónicos Digitales Avanzados
g) Explique con detalle, sin escribir código, qué recurso utilizaría y cómo lo configuraría para reducir al máximo
la carga de CPU (menor tasa de interrupción) durante la generación de las señales de alarma.

6
Sistemas Electrónicos Digitales Avanzados
CUESTIÓN 2.

Se dispone de un sistema de control de entrada y salida de un aparcamiento basado en el LPC1768 y se desea implementar
un servidor HTTP para poder monitorizar y actuar sobre el sistema de forma remota a través de internet.

El sistema tiene varias variables que se pueden utilizar:


- Coches – es una variable que indica el número de coches que hay en el aparcamiento.
- MaxCoches – Es el número máximo de coches que puede haber en el aparcamiento.
- BarreraEntrada – Indica si la barrera de entrada está abierta (ABIERTA) o cerrada (CERRADA)
- BarreraSalida – Indica si la barrera de salida está abierta (ABIERTA) o cerrada (CERRADA)
- Modo – Indica si el sistema está en modo normal de funcionamiento (AUTOMÁTICO) o está en un modo de control
manual (MANUAL)
Remotamente se visualiza el estado de estas variables y se permite cambiar el número máximo de coches y el
modo de funcionamiento del sistema. Además, se visualizarán las barreras abiertas o cerradas y gráficamente se
representará el porcentaje del parking ocupado cambiando el color en función de la ocupación (verde: menos del
70%, amarillo: del 70% al 100% (sin incluir) y rojo: si está en el 100%).

En la figura pueden verse diferentes visualizaciones del fichero parking.cgi en función del estado de ocupación y
del modo de funcionamiento.

Indique el contenifo del fichero parking.cgi a la que accedería el navegador y el contenido de las funciones cgi_func(…),
cgi_process_data(...), y/o cgi_process_var(...) necesarias.

Nota: Estos son ejemplos de los datos enviados del navegador al servidor:
maxCoches=17
modo=manual

7
Sistemas Electrónicos Digitales Avanzados

8
Sistemas Electrónicos Digitales Avanzados

9
Sistemas Electrónicos Digitales Avanzados

10
Sistemas Electrónicos Digitales Avanzados
ANEXO I (Mapa de memoria LPC1768 y Registros)

11
Sistemas Electrónicos Digitales Avanzados

DAC

12
Sistemas Electrónicos Digitales Avanzados

TIMERs

13
Sistemas Electrónicos Digitales Avanzados

14
Sistemas Electrónicos Digitales Avanzados
ANEXO III (Características sensores HIH4000 y LM35, Vcc=+5V)

15
UNIVERSIDAD DE ALCALÁ
GRADO EN INGENIERÍA EN TECNOLOGÍAS DE
ESCUELA POLITÉCNICA SUPERIOR
DEPARTAMENTO DE ELECTRÓNICA TELECOMUNICACIÓN E INGENIERÍA ELECTRÓNICA
ASIGNATURA SISTEMAS ELECTRÓNICOS DIGITALES AVANZADOS FECHA NOVIEMBRE 2022
APELLIDOS, NOMBRE GRADO

PRUEBA DE EVALUACIÓN INTERMEDIA 1


CUESTIÓN 1

Se propone diseñar un SE basado en microcontrolador LPC1768 (funcionando a 100MHz) para implementar un


sistema de control de temperatura empleando un marcador de representación analógica, construido mediante
un servomotor. Mediante un PC y con ayuda de un programa terminal de comunicaciones se podrán configurar
determinados parámetros del sistema. El sistema permitirá generar dos tipos de señales acústicas de alarma
(tono o mensaje de audio) seleccionables desde un menú. Un potenciómetro permite variar la frecuencia de la
señal de alarma tipo tono. Un display LCD gráfico permitirá mostrar determinados parámetros y, por ejemplo, la
evolución gráfica de la temperatura.

Figura 1. Diagrama de bloques sistema

Descripción del funcionamiento del sistema:

El movimiento del servo (0º-180º) ha de representar el valor de la temperatura entre 0º y 50º. La temperatura
se mide con el sensor analógico LM35. El brillo del LCD se controla automáticamente a partir de la luminosidad
del ambiente medida a través de una LDR que proporciona una variación de resistencia inversamente
proporcional a la luminosidad (1 Mohm en total oscuridad). Considere que existe la variable global tipo_alarma
que permite identificar si la alarma es un tono o un mensaje de audio. En caso de que esté seleccionado el tono,
la frecuencia podrá ajustarse entre 500Hz y 1 KHz.
Sistemas Electrónicos Digitales Avanzados
a) Complete la función de configuración del ADC (incluyendo los comentarios) para las entradas de la LDR, del
sensor de temperatura y del potenciómetro de ajuste de la frecuencia del tono de la alarma considerando que
la frecuencia de muestreo sea la máxima posible. Indique sobre el diagrama de la figura los canales del ADC
utilizados.
Calcule la frecuencia de muestreo de cada canal y el tiempo de conversión.

void init_ADC_sensores(void)
{
LPC_ADC->ADCR= ( << )|
( <<8 )| //
(1<<21)| // PDN=1
(1<<16); //
NVIC_DisableIRQ(ADC_IRQn); //
}

b) Complete la función de configuración de la señal PWM del servo, y de actualización de su posición en función
de la temperatura. Añada los comentarios.
NOTA: Considere que el periodo sea de 12ms, y el tiempo a nivel alto varíe entre 0.5-2.5ms, para un
movimiento de su posición entre 0º y 180º.

void config_pwm_servo(void)
{
//pseudocódigo

}
void set_servo(uint8_t temperatura)
{

2
Sistemas Electrónicos Digitales Avanzados
c) A la vista del diagrama de la figura 1, explique el recurso que utilizaría y como lo configuraría, para generar la
señal PWM que actuaría sobre el brillo del LCD.
c.1) Escriba en pseudocódigo la función que permite modificar el ciclo de trabajo de la señal PWM a partir del
argumento de entrada (float brillo) que toma valores entre 0 y 1, para que el ciclo de trabajo varíe entre el 0 %
y el 100%.
c.2) Indique el valor de la frecuencia de salida de la señal PWM.

d) Escriba en pseudocódigo la función asociada al Timer 2 que realiza la medida de la anchura del pulso en
microsegundos de la señal PWM que controla el servo a partir del diagrama de conexión de la figura1, teniendo
en cuenta que el resultado se almacene en una variable global.
NOTA: Considere el preescaler inicializado (T2PR=24).

3
Sistemas Electrónicos Digitales Avanzados
e) Escriba la función de interrupción del Timer que saca las muestras hacia el DAC para generar la señal de alarma
(tono o voz), y calcule frecuencia máxima de interrupción que soportaría en el peor de los casos. Complete la
declaración del array que almacena las muestras de audio de la señal de alarma.

NOTA1: Considere ya inicializado el array con los valores discretos de un ciclo para la señal de alarma basada en
un tono:

void genera_muestras_ciclo(){
uint16_t i;
for(i=0;i<muestras_ciclo;i++) muestras_tono[i]=(char)(127 + 127*sin(2*pi*i/64))<<8;
}

NOTA2: La señal de alarma de audio se ha de reproducir teniendo en cuenta que se ha grabado con el ADC
durante 3 segundos (Fs=8kHz a 8 bits).
Considere que existe la variable global tipo_alarma y el array buffer_alarm_temp[] con las muestras del
mensaje de audio ya grabadas.

. . . . buffer_alarm_temp[ ]; //

4
Sistemas Electrónicos Digitales Avanzados
f) Explique qué recurso utilizaría y como lo configuraría para reducir la carga de CPU durante la generación de
la señal de alarma.

5
Sistemas Electrónicos Digitales Avanzados

CUESTIÓN 2

Se desea activar remotamente mediante el acceso a un servidor HTTP integrado en un LPC1768, la iluminación
de un jardín de 4 zonas pudiendo activar las zonas de forma individual o encender o apagar todas de una vez.

Suponga que existe una variable global denominada “iluminacion” que contiene la información de las zonas
activadas, de manera que, si el bit de menor peso es 1, está activada la zona 1 y si es cero no está activada, y así
con los 4 siguientes bits:

Zona4 Zona3 Zona2 Zona1

El programa principal se encargará de activar o desactivar las zonas en función del valor de la variable
“iluminacion”

En el ejemplo de página 1 se representa la apariencia de la página web de control cuando está activa la zona 1
y la zona 2 junto con el código HTML correspondiente.

Cuando se pulsa en esta página en la “zona 4” la URL que se genera es:

http://www.seda.uah.es/jardin.html?zona1=on&zona2=on&zona4=on

y se pasa a representar la página ejemplo 2 con su código asociado.

a) Escriba el contenido del fichero jardin.cgi. Complete el código HTML impreso para formar el cgi dejando
claro lo que se añade o se modifica.

b) Escriba las funciones cgi_func(…), cgi_process_var(…) y/o cgi_process_data(…) que sea necesario.

Codigo común a los dos ejemplos de páginas

6
Sistemas Electrónicos Digitales Avanzados
Ejemplo de página 1

Código HTML del ejemplo de página 1

7
Sistemas Electrónicos Digitales Avanzados
Ejemplo de página web 2

Código HTML del ejemplo de página 2

8
Sistemas Electrónicos Digitales Avanzados

9
Sistemas Electrónicos Digitales Avanzados

10
Sistemas Electrónicos Digitales Avanzados

DAC

11
Sistemas Electrónicos Digitales Avanzados

TIMERs

12
Sistemas Electrónicos Digitales Avanzados

13
Sistemas Electrónicos Digitales Avanzados

14
Sistemas Electrónicos Digitales Avanzados

15

También podría gustarte