Você está na página 1de 4

SIST.

ELECTRÓNICOS Y DE INSTRUMENTACIÓN INDUSTRIAL


Máster in Ingeniería Industrial
Examen Ordinario. Curso 18/19
22 Enero de 2018

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).

Figura 2.1. Fotografía de esparcidor de sal

El sistema de control, basado en el microcontrolador de referencia utilizado durante el curso, se encarga de


controlar la apertura de una electroválvula mediante una señal de tipo PWM. El control se realiza en bucle
cerrado, lo que significa que el ciclo de trabajo (DC) de la señal PWM depende de: (1) caudal deseado (o
consigna), que a su vez depende de la velocidad del vehículo, y (2) de la cantidad de salmuera que se esparce
por unidad de tiempo (caudal).

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. Sistema basado en la placa Arduino UNO


2. Caudal máximo = 120 LPM (litros por minuto)
3. Características del caudalímetro: Salida en colector abierto, proporciona 800 pulsos/l
4. Sensor de velocidad lineal: Tensión de 0 a 1,1 V para velocidades de 0 a 120 km/h.
5. Frecuencia de la señal PWM = 490 Hz
6. Resolución requerida en el ciclo de trabajo de 20 pasos.

En la primera fase se diseña un programa con el siguiente diagrama de flujo:

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

Cálculo del caudal

Cálculo del ciclo de


trabajo de la PWM

Actualización de la
señal PWM

Figura 2.2. Diagrama de flujo del programa

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”.

4.- Justifique el tipo de dato y para que se utiliza variable.

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() {

analogReference (INTERNAL1V1); \\Rango del ADC igual a rango de la señal analógica

pinMode (11, OUTPUT); \\salida digital

digitalWrite(11, LOW); \\valor inicial ‘0’ que se asume válvula cerrada


\\(ciclo de trabajo 0%)

pinMode (2, INPUT_PULLUP); \\Entrada digital para el caudalímetro, necesita pullup


\\(colector abierto)

attachInterrupt(digitalPinToInterrupt(2), ISR, RISING); \\interrupción por flanco


\\ (una vez por pulso)

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.

5.- Se asume que la variable valor_DC toma valores de 0 a 255:

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.

La configuración del timer 1 sería:

TCCR1A = B00000000; \\ desconectados los pines de salida asociados


TCCR1B = B00000111; \\ Modo 0 (normal), reloj externo en flanco subida
TIMSK1 = B00000000; \\ Ninguna interrupción habilitada del timer 1

Você também pode gostar