Arduino.cl – Compra tu Arduino en Línea

Arduino Como un Controlador parte 1

Si bien Arduino es una plataforma ampliamente usada en robótica y en la iniciación a la programación, no cabe duda que puede comportarse como un instrumento para control automático, más aún cuando es posible aplicar tanto estrategias de control utilizadas en la industria, como así también algoritmos de control y algunos protocolos de comunicación ampliamente utilizados. 

Primero utilizaremos el concepto de proceso como el sistema al que aplicaremos un control y que tendrá una o varias entradas y salidas sobre las cuales podemos ejercer algún cambio. Los procesos también pueden ser modelados, llevado a números y expresados de forma sencilla como una función de transferencia, que es la relación entre una entrada y una salida.

La función de transferencia (G) del proceso seria

Esta forma también es aplicada como una aproximación de la función de transferencia de cualquier elemento involucrado con proceso, pero no ahondaremos más en este tema por el momento.

Ahora, las entradas al proceso vienen dadas por la acción de un controlador que tomara como entrada una señal de error entre el valor que queremos y el que realmente existe. La señal de error es una resta entre el valor deseado, set point o referencia y el valor real. Si esto lo llevamos a una representación en bloques tendríamos:

El segmento en rojo es realmente el controlador, el se encarga de comparar y ejercer el control adecuado según el criterio que nosotros hayamos desarrollado. En algunos libros de control automático el controlador es definido como un comparador con ganancia.

El valor real es una señal de feedback, de realimentación de nuestro proceso que nos permite verificar si los cambios hechos por el controlador acercan nuestro proceso al valor deseado, por esto se origina en la salida del bloque de proceso. La señal de control permite cambiar el estado de un elemento para generar una variación en el proceso

Estos son los elementos básicos de un sistema de control y en este caso es comúnmente llamado lazo realimentado, ya que como pueden ver el proceso es corregido en base a su salida. Tiene componentes interesantes que ya deben conocer como son los actuadores, sensores y controlador y algunos tecnicismos para definir la acción. Iremos por parte.

El sensor es el elemento que toma la energía existente en el medio y genera una señal de salida. Transforma una variable física en una señal principalmente eléctrica. Existen sensores para una gran variedad de variables y utilizan diversos principios de funcionamiento. La señal de salida del sensor, en este caso la señal de realimentación, debe ser una señal comprendida por el controlador, si usamos un Arduino, la señal debe estar entre 0v y 5V o en su defecto se debiese utilizar elementos que acomoden la señal a este estándar

El valor deseado es llamado de muchas formas, referencia, set point, punto de consigna y es generalmente definido por nosotros, es el valor al que queremos que llegue el proceso.

La señal de control es la señal de corrección que envía el controlador a un actuador para que modifique su estado y este influya sobre el proceso.

El actuador es el elemento que realiza la acción de corrección sobre el proceso, modifica algo para generar un cambio en el proceso que se traduce en un cambio de la señal de realimentación.

Entre el proceso hay dos conceptos importantes, MV que llamaremos variable manipulada y PV que llamaremos variable de proceso. La variable manipulada es la que se modifica para ejercer un cambio en el proceso, esto se ve reflejado en la variable de proceso o variable controlada.

Ya conoces el lazo de control realimentado, que lo clasificaremos como una estrategia de control (existen diversas estrategias, que varían en función de que se necesite), sin embargo, esta estrategia no sirve de nada si el controlador no piensa, por ello necesita un algoritmo de control que realice una acción con la información disponible.

El más básico de los algoritmos de control es el famoso control on-off o todo-nada, puede que no lo conozcas, pero si has jugado con Arduino, de seguro lo has usado. En este algoritmo realizaremos una acción si estamos por sobre la referencia, y otra si estamos por debajo de ella.

Podemos realizar un experimento sencillo, usaremos un potenciómetro que simulará la temperatura. Cuando estemos por sobre la referencia activaremos un led, que representará la activación de algún relé simulando que algún ventilador esté conectado a él y con esto bajara la temperatura, que posteriormente volverá a subir y se repetirá el ciclo constantemente, ejecutando correcciones mientras exista un error. Intenta visualizar los componentes en el diagrama del lazo de control realimentado.

El circuito es sencillo, solo instalaremos un potenciómetro a la entrada analógica A0 y usaremos el led del pin 13 para ver la activación. El programa lo pueden ver a continuación.

int led =13;                                                        //etiqueta a pin 13

const int STP =5;                                              //Set point = 5

int PV;                                                                 //variable para variable de proceso

void setup() {

  Serial.begin(9600);                                       //Inicio de comunicación serial

  pinMode(led,OUTPUT);                                //Modo de pin etiquetado

}

void loop() {

  PV=analogRead(A0);                                  //asignación de valor a variable PV

  PV=map(PV,0,1023,0,10);                         //mapeo a valor de 0 a 10

  if(PV>STP){                                                     //comparación para valores mayores a 5

    digitalWrite(led,HIGH);                            //acción de activación

  }

  else if (PV<=STP){                                         //comparación para valores menores o iguales a 5

    digitalWrite(led,LOW);                              //acción de desactivación

  }

  //impresion de valores en el plotter

  Serial.print(digitalRead(led));  

  Serial.print(“,”);               

  Serial.print(STP);               

  Serial.print(“,”);               

  Serial.println(PV);              

  delay(100);                      

}

Graficaremos la salida para aclarar aun mas el comportamiento

La linea azul es el led que representa la activacion o desactivacion de algun dispositivo para enfriar.

La linea roja es el set point ajustado a un valor de 5

La linea verde es nuestra PV, simulada con un potenciometro

Como ven solo existe activación y desactivación, On-Off. Cada vez que PV es mayor a 5 se activa la salida, y cada vez que es igual a 5 o menor se desactiva. El programa esta escalado de esta manera para poder ver claramente los 3 parámetros en el gráfico.

Este algoritmo es básico y funciona muy bien con temperatura, ya que esta tiene una inercia única que la hace lenta, sin embargo, en sistemas más rápidos estaríamos activando y desactivando el actuador rápidamente. Una de las soluciones es una modificación del On-Off llamada 2on-off, donde básicamente se establecen 2 set point, uno para activar y otro distinto para desactivar, esto permite a PV moverse en un rango de valores sin generar cambios en el actuador, útil pero oscilatoria si lo que buscas es estabilidad.

Existen una variada cantidad de estrategias y algoritmos de control con las que experimentar, unas simples como la vista y otras más complejas que requieren modelar los sistemas para obtener los parámetros que respondan de buena manera al proceso. ¿Cuál es tu estrategia y algoritmo de control favorito?