PLANTA RLC
1. Descripción General
El circuito RLC está compuesto por una fuente de voltaje Vi, tres resistencias R1, R2 y R3 , una bobina
L y un condensador C. Las resistencias limitan la corriente y disipan energía en forma de calor,
mientras que la bobina y el condensador almacenan energía: el inductor lo hace en forma de campo
magnético cuando circula corriente, y el condensador en forma de campo eléctrico al acumular
carga. El sistema incluye también un módulo DAC (Conversor Digital-Analógico), que convierte las
señales analógicas a digitales, permitiendo que el Arduino procese la información y entregue los
datos del sistema. El esquema del circuito se muestra en la Figura 1.
Figura 1. Planta RLC.
2. Parámetros del Sistema
A continuación se enlistan los parámetros del sistema:
- R1: 1000 Ω
- R2: 220 Ω
- R3: 1000 Ω
- L1: 1000 μH
- C1: 470 μH
3. Obtención de los Datos del Sistema Real
Para obtener los datos del sistema real, es necesario realizar las conexiones entre el Arduino y la
planta. Las conexiones están ilustradas en la Figura 2.
Figura 2. Conexiones Planta – Arduino.
- Código de Arduino en Lazo Abierto
Una vez realizadas las conexiones del sistema, se ejecuta el siguiente código de Arduino para obtener
los datos correspondientes al voltaje del capacitor y la corriente en el inductor.
#include <Arduino.h>
#include <SPI.h>
#define sl Serial
/*
| Arduino | DAC |
|-----------|-------|
| 13 | SCLK |
| 12 | DOUT |
| 11 | DIN |
| 08 | CS |
*/
// Pines
const int csDAC = 8;
const int nodeA = A0;
const int nodeB = A1;
const int DAC_CAL = A2;
// Variables
float vMAX = 0.0; // Voltaje máximo de salida del DAC
float voltOut = 0.0; // Voltaje de salida del DAC
unsigned long sampleStamp = 0;
/* Funciones */
void actuactorOutput(double volt);
void setup()
{
//Setup Serial
[Link](115200); //Conserve este valor para poder tener tiempos bajos de muestreo
//Setup SPI
[Link]();
//Setup PINES
pinMode(csDAC, OUTPUT);
digitalWrite(csDAC, 0x01);
//Setup DAC
float vRead = 0;
/*Este procedimiento es obligatorio para calibrar la salida del DAC*/
for (byte i = 1; i <= 4; i++)
{
vRead += analogRead(DAC_CAL) * (5.0 / 1023.0) * 2.0;
delay(250);
}
vMAX = vRead / 4.0;
//Start
[Link]("\n#Program Start!\n");
[Link]("Ref, Vc, Il, uC");
actuactorOutput(0.0);
delay(1000);
}
void loop()
{
// Marca de tiempo de inicio
voltOut=3;
sampleStamp = micros();
// Voltaje de actuador
actuactorOutput(voltOut);
// Lectura de voltajes
double vA = analogRead(nodeA) * (5.0 / 1023.0);
double vB = analogRead(nodeB) * (5.0 / 1023.0);
double vC = vA;
double iL = (vB - vA) / 220;
// Impresion de datos
[Link](vC, 4);
[Link](", ");
[Link](iL, 5);
[Link](", ");
[Link](voltOut, 4);
[Link](" ");
//Marca de tiempo final
sampleStamp = micros() - sampleStamp;
delayMicroseconds(7e03 - sampleStamp); // Garantiza el tiempo de muestreo
}
void actuactorOutput(double volt)
{
unsigned int bitValue;
bitValue = (volt * (1023.0 / vMAX));
bitValue = (bitValue & 0x3ff) << 2;
// Selecciona el DAC
digitalWrite(csDAC, 0x00);
// Activa la transmision
[Link](SPISettings(20000000, MSBFIRST,
SPI_MODE0));
SPI.transfer16(bitValue);
[Link]();
// Libera el DAC
digitalWrite(csDAC, 0x01);
}
Para obtener los datos desde el Arduino, primero se debe verificar que la placa esté correctamente
conectada y que se haya seleccionado el puerto correspondiente en el entorno de desarrollo. A
continuación, se compila el código y, si no se presentan errores, se procede a cargarlo en la tarjeta
Arduino. Una vez finalizada la carga, se abre el monitor serial y se configura a una velocidad de
115200 baudios. En este monitor se podrán visualizar en tiempo real los datos enviados por el
sistema: el voltaje del capacitor, la corriente del inductor y el voltaje de entrada aplicado a la planta,
tal como se muestra a continuación.
Figura 3. Datos obtenidos de la planta en el arduino.
Una vez se obtienen los datos desde el Arduino, estos deben copiarse y pegarse en un archivo de
Bloc de notas para posteriormente ser exportados a Matlab. Antes de realizar la exportación, es
necesario reemplazar las comas por espacios en el archivo de texto, tal como se muestra a
continuación.
Figura 4. Datos obtenidos de la planta en un archivo txt.
1. Simulación del Sistema: Comparación entre el Sistema Real y la Simulación
El siguiente código de MATLAB permitirá realizar la comparación entre el sistema real y el sistema
en variables de estado que se obtuvo en el análisis.
Una vez obtenido el modelo en variables de estado del sistema y los datos del sistema real, primero
se definen los parámetros y las matrices del sistema en variables de estado.
Figura 5. Parametros y modelo en varibles de estado del sistema.
Para exportar los datos del bloc de notas, debe ir a la barra de herramientas en Home, seleccionar
Import Data y se abrirá una pestaña emergente que le permitirá seleccionar el archivo .txt donde
tiene los datos de la corriente del inductor, el voltaje del capacitor y el voltaje de entrada.
Una vez que los datos se cargan en MATLAB, se puede observar que se presentan como una tabla.
Es necesario cambiar este formato a un vector columna.
Finalmente, una vez que los datos han sido exportados, se procede a importar cada columna al
Workspace de MATLAB. En este caso, únicamente es necesario importar los datos correspondientes
al voltaje en el capacitor y la corriente en el inductor.
Una vez que los datos han sido exportados a MATLAB, se ejecuta el código correspondiente para
realizar la simulación y comparación del sistema RLC. El código utiliza el ode45 para resolver las
ecuaciones diferenciales del sistema y obtener las variables de estado, es decir, el voltaje en el
capacitor y la corriente en el inductor, en función del tiempo.
Posteriormente, se grafican tanto los resultados de la simulación como los datos reales,
representados por los vectores VoltajeLazoAbierto y CorrienteLazoAbierto. Para facilitar la
interpretación, se incluyen leyendas, cuadrículas y etiquetas en los ejes de los gráficos.
Nota: Es fundamental que el vector de tiempo utilizado en el código tenga las mismas dimensiones
que los vectores de datos reales. En este caso, si VoltajeLazoAbierto y CorrienteLazoAbierto son
vectores de tamaño 148×1, entonces el vector de tiempo debe definirse de la siguiente manera:
Una vez se tiene esto en cuenta, se puede ejecutar el siguiente código en MATLAB para simular el
comportamiento del sistema RLC y compararlo con los datos reales.
Figura 6. Codigo de Matlab para compracion sistema real y modelo.
Donde finalmente se obtienen los siguientes resultados, que permiten comparar el comportamiento
simulado del sistema RLC con las mediciones reales, facilitando así el análisis y la validación del
modelo.
Figura 7. Resultados obtenidos.