6. Arduino firmware for PID control

Firmware de Arduino para controladores PID

The hardware platform for implementing the PID and the application to make experiments in real plants is an Arduino UNO board (http://arduino.cc/en/Main/arduinoBoardUno).

When connecting to your computer for the first time, you must install the Arduino USB connection drivers, which are included in the Arduino development environment, which must be installed in order to program the board.

This page includes the source code of the firmware that must be loaded on the Arduino UNO board. To compile and load on the board you have to install the Arduino development Environment (http://arduino.cc/en/Main/Software), and also install the Flexitimer2 library, which can be downloaded from the http://playground.arduino.cc/Main/FlexiTimer2 page.

In the Code the control action is defined as the output PWM of the Arduino pin 9, and the analogue input by the pin A0, while the input of capture and incremental encoder through the pins 2 and 3 (external interrupts).

The firmware developed for the Arduino board includes a periodic interrupt routine associated with a timer, whose period is configurable from a minimum of 1 ms. That routine is the one that implements the periodic sampling and the calculation of the controller. It can be configured in three operating modes: in open loop (for experiments with step input changes), in closed loop with relay feedback (to perform relay feedback experiments for experimental tuning), and finally in closed loop with PID controller (to implement a designed PID controller). The control action is a PWM output whose resolution and frequency are also configurable. The measured output from the process can be selected between three options: analogue input, capture input, and incremental encoder input. In the case of the analogue input, the resolution is 10 bits, while both the capture input and the encoder are implemented by means of the two external interrupt inputs of the Arduino. In the associated interrupt routine the signal period is measured by the timer, or the encoder counter is incremented (or decremented), as appropriate. All parameters are configured by sending messages from the PC via the serial USB port: Start/stop, sampling period, PID parameters, relay parameters, operating mode (open loop, relay or PID), input type, frequency and resolution of the PWM, reference value (in closed loop), input value (in open loop). In addition, each sampling period, the Arduino board sends to the PC through the serial port the values of the input signal and the measured output, so that the application of the PC can display the signals and/or save them in file.

Firmware de la tarjeta Arduino para implementación de controladores PID

La plataforma hardware para implementar el controlador PID y el algoritmo para hacer experimentos en la planta es una tarjeta Arduino UNO (http://arduino.cc/en/Main/arduinoBoardUno).

Al conectarla por primera vez al ordenador, se deben instalar los drivers de la conexión USB de Arduino, que están incluidos en el entorno de desarrollo de Arduino, que debe instalarse para poder programar la tarjeta.

Aquí se incluye el código fuente del firmware que debe cargarse en la tarjeta de Arduino UNO. Para compilarlo y cargarlo en la tarjeta hay que instalar el entorno de desarrollo de Arduino (http://arduino.cc/en/Main/Software), e instalar además la librería Flexitimer2, que se puede descargar de la página http://playground.arduino.cc/Main/FlexiTimer2.

En el código se define la acción de control como la salida PWM del pin 9 de Arduino, y la entrada analógica por el pin A0, así como la entrada de captura y de codificador incremental por los pines 2 y 3 (interrupción externa).

El firmware desarrollado para la tarjeta Arduino incluye una rutina de interrupción periódica asociada a un temporizador, cuyo periodo es configurable desde un mínimo de 1 ms. Esa rutina es la que implementa el muestreo periódico y el cálculo del controlador. Se puede configurar en tres modos de funcionamiento: en bucle abierto (para realizar experimentos con cambios de la entrada en forma de escalón), en bucle cerrado con realimentación por relé (para realizar experimentos de realimentación a relé para el ajuste experimental), y finalmente en bucle cerrado con controlador PID (para implementar un controlador PID diseñado). La acción de control es una salida PWM cuya resolución y frecuencia también son configurables. La salida del proceso puede configurarse entre tres opciones: entrada analógica, entrada de captura, y entrada de codificador incremental. En el caso de la entrada analógica, la resolución es de 10 bits, mientras que tanto la entrada de captura como la del codificador se implementan por medio de las dos entradas de interrupción externa del Arduino. En las interrupciones asociadas se mide el periodo de la señal por medio del temporizador, o se incrementa (o decrementa) el contador del codificador, según corresponda. Todos los parámetros se configuran enviando mensajes desde el PC a través del puerto serie: marcha/paro, periodo de muestreo, parámetros del PID, parámetros del relé, modo de funcionamiento (bucle abierto, relé ó PID), tipo de entrada, frecuencia y resolución del PWM, valor de la referencia (en bucle cerrado), valor de la entrada (en bucle abierto). Además, cada periodo de muestreo, la tarjeta Arduino envía al PC a través del puerto serie los valores de la señal de entrada y de la salida medida, de forma que la aplicación del PC puede visualizar las señales y/o guardarlas en fichero.

FILES DOWNLOAD:

PIDarduino_serial_processing_todo_interrupt_v3.ino (firmware for Arduino board)

Guía de uso interface Arduino (guía de uso en español)

User guide interface Arduino (user guide in english).

RETURN