Escolar Documentos
Profissional Documentos
Cultura Documentos
PROBLEMA 2
Se quiere diseñar un sistema de control de la dosificación de salmuera en un vehículo de mantenimiento de
la vialidad invernal. El objetivo es que ante una alerta por riesgo de helada se esparza la cantidad óptima de
sal que garantice la seguridad para la circulación (se evita la formación de hielo) pero sin despilfarro (se
evitan daños a la infraestructura y al medioambiente).
Para la medida del caudal se ha instalado un caudalímetro digital que proporciona una señal pulsada cuya
frecuencia depende del caudal. La velocidad del vehículo se obtiene a partir de una señal analógica. El
objetivo del microcontrolador es generar continuamente la señal PWM que controla la apertura de la
electroválvula y actualizar el ciclo de trabajo de dicha señal cada 15 segundos en función de la información
del caudalímetro y de la consigna (proporcional a la velocidad).
Datos y especificaciones:
1
SIST. ELECTRÓNICOS Y DE INSTRUMENTACIÓN INDUSTRIAL
Máster in Ingeniería Industrial
Examen Ordinario. Curso 18/19
22 Enero de 2018
RESET
Set-up
Int_externa
Lectura de velocidad
del vehículo
Incrementar
variable
¿transcurridos
15 s? FIN
Si
Actualización de la
señal PWM
Se pide:
1.- Represente, mediante un esquema de bloques, todos los elementos del sistema de control de la
dosificación de salmuera. Indique y justifique a qué pines de la placa Arduino UNO se conecta cada elemento.
2.- Teniendo en cuenta las especificaciones 3, 4 y 5 anteriores, escriba la rutina de configuración (set-up) del
programa. Incluya comentarios que justifiquen cada linea.
3.- Indique qué recurso o periférico del microcontrolador se utiliza para realizar el proceso “Lectura de
velocidad del vehículo”. Escriba la función del entorno Arduino que realiza este proceso. ¿cuánto es y a qué
es debido el tiempo que tarda en ejecutarse esta función? Estime cuantas veces se realiza el proceso
“Lectura de velocidad del vehículo” por cada vez que se realiza el proceso “cálculo del caudal”.
5.- Suponiendo que el proceso “cálculo del ciclo de trabajo de la PWM” almacena el ciclo de trabajo en una
variable denominada valor_DC, escriba el código que realiza el proceso “Actualización de la señal PWM”.
Explique de manera resumida como el microcontrolador genera esta señal.
6.- En una segunda fase, se quiere modificar el programa utilizando el timer 1 para contar los pulsos del
caudalímetro. Modifique para esta solución alternativa: (1) el diagrama de flujo, (2) el esquema de bloques y
(3) la rutina de configuración (como las funciones del entorno Arduino no incluyen la utilización del timer 1
como contador, deberá programarlo a bajo nivel).
2
SIST. ELECTRÓNICOS Y DE INSTRUMENTACIÓN INDUSTRIAL
Máster in Ingeniería Industrial
Examen Ordinario. Curso 18/19
22 Enero de 2018
1.-
Caudalímetro Válvula
pin 2 pin 11
Sensor de
velocidad pin A0
PLACA
ARDUINO UNO
El sensor de velocidad se conecta al pin A0 porque proporciona una señal analógica y ha de conectarse a una
entrada analógica de la placa.
La válvula se conecta al pin 11 porque se controla con una señal tipo PWM que puede generarse en este pin
utilizando las funciones del entorno Arduino.
El caudalímetro se conecta al pin 2 porque es una entrada que puede generar una interrupción externa.
2.-
void setup() {
3
SIST. ELECTRÓNICOS Y DE INSTRUMENTACIÓN INDUSTRIAL
Máster in Ingeniería Industrial
Examen Ordinario. Curso 18/19
22 Enero de 2018
3.- Para leer la velocidad del vehículo a partir del sensor de velocidad, se utiliza el conversor analógico-digital
del microcontrolador. La función que se escribiría en el programa sería:
Velocidad = analogRead(A0);
Según la descripción de esta función, tarda unos 100 microsegundos en ejecutarse, que principalmente se
deben al tiempo de conversión del ADC del microcontrolador.
Según el diagrama de flujo se está continuamente leyendo el sensor de velocidad y comprobando si han
transcurrido 15 segundos para leer el caudal y los demás procesos. Por tanto, se puede estimar el número de
veces como 15 s/100 us = 150.000.
4.- variable se incrementa por cada interrupción externa, es decir, cada vez que llega un pulso del
caudalímetro. La frecuencia máxima de los pulsos es 120 l/min*800pulsos/l = 96.000 pulsos/min, lo que
supone que en 15 segundos variable se incrementa en 24.000 (como máximo). Por tanto, el tipo de dato más
adecuado para esta variable es unsigned int, que ocupa 2 bytes y puede tomar valores de 0 a 65.525.
analogWrite(11, valor_DC);
La función anterior configura un timer (en concreto el timer 2 para el pin 11) para generar en el pin
seleccionado la señal PWM. De esta manera es el periférico del microcontrolador (un timer) el que se
encarga de generar continuamente la señal PWM de periodo y ciclo de trabajo determinados por la
configuración, y queda libre la CPU para el resto de tareas. El detalle de cómo se genera la señal PWM está
descrito en el apartado Fast PWM mode dentro de la descripción de los timers del microcontrolador
(consultar datasheet). A modo general, en este modo de configuración, el registro del timer se incrementa
continuamente en cada periodo de un reloj derivado del reloj interno de 16 MHz (con un preescalado
determinado). En cada overflow el pin de salida se pone a 1. En este modo de funcionamiento también se
hace uso de uno de los registros de comparación del timer, que se carga con un valor que depende del ciclo
de trabajo. Cada vez que el registro del timer se iguala a dicho registro de comparación, el pin de salida se
pone a 0.
6.- El diagrama de flujo es igual al de la figura 2.2 sin la rutina de atención a la interrupción, ya que en este
caso el proceso “cálculo del caudal” utilizará el valor del registro contador del timer 1 (registro TCNT1) en
lugar del valor de la variable para saber el número de pulsos del caudalímetro acumulados en 15 s.
El esquema de bloques es igual con la excepción de que el caudalímetro se ha de conectar al pin 5, que se
corresponde con el pin del microcontrolador que es la entrada de reloj externa al timer 1.