Controladores Por Realimentacion de Estado
Controladores Por Realimentacion de Estado
Controladores Por Realimentacion de Estado
TEMA:
CONTROL POR REALIMENTACION DE ESTADOS
CURSO:
SISTEMAS DE CONTROL DIGITAL
DOCENTE:
ASTOCONDOR VILLAR JACOB
INTEGRANTES:
BASTIDAS SANCHEZ ANGEL ISAAC
HURTADO CHIROQUR DENNIS
VARGAS ALVAREZ ERICKA DE LOS A.
VILCA AGUILAR LIMBER
2023-II
1
CONTROL POR REALIMENTACION DE ESTADOS
Objetivo:
Implementar controladores y observadores lineales mediante la plataforma Arduino.
Descripcion de Sistema
El algoritmo de control/observación se realiza en la plataforma Arduino UNO R3 y una
planta RC-RC, con R1=R2=1 Mohm, y C1=C2=1 uf.
Descripción de IO
2
Las entradas y salidas del sistema están conectadas a los siguientes pines.
Entradas analógicas
• Pin A0. Referencia a seguir, denotado por R en el software y por r(t) en
ladescripción del algoritmo.
• Pin A1. Voltaje en el capacitor 1, denotado por X1 en el software y por x1(t)
enla descripción del algoritmo.
• Pin A2. Voltaje en el capacitor 2, denotado por X2 en el software y por x2(t)
enla descripción del algoritmo.
Salidas analógicas (PWM)
• Pin 10. Señal de control, denotado por U en el software y por ui(t) en
ladescripción del algoritmo.
Entradas discretas
• Pin 2. Entrada de arranque, denotado por SW2 en el software.
• Pin 3. Entrada de paro, denotado por SW3 en el software.
Salidas discretas
• Pin 8. Indicador LED sistema activado, denotado por LED8 en el software.
• Pin 9. Indicador LED sistema desactivado, denotado por LED9 en el software.
I. Modelado
Consideramos al voltajeui (t) que alimenta a la primer malla como la entrada de la
planta RC-RC, y al voltaje en el segundo capacitor Vc2(t) como salida. La descripción
delcircuito es mostrada a continuación.
u
y(t) PROCESO y(t)
RC-C
El modelo dinámico del circuito RC-RC es un sistema de segundo orden que puede
ser representado en espacio de estados de la manera siguiente. Primeramente, se usa
la leyde mallas de Kirchhoff:
por lo tanto
3
y acomodando en forma matricial, se tiene
Considerando la inversa:
donde x1(t) es el voltaje en el primer capacitor (conectado al pin A1), x2(t) el voltaje en
el segundo (conectado al pin A2), u(t) es la entrada a la planta (conectado al pin 10),
y y(t) la salida de la planta (conectado al pin A2).
Donde
4
función de los parámetros del sistema, y las posiciones deseadas para los
valorespropios.
Regulador por retroalimentación de estado
Se considera la ley de control
Donde K=[k1 k2] es tal que (A−B*K) cumple con cierto polinomio característico
deseado. Iniciamos resolviendo el problema de regulación considerando K=△[k1 k2].
Por lo tanto, las siguientes expresiones para el par k1,k2 pueden ser obtenidas:
5
III. PROGRAMACION
plantaCódigo:
/ Entrada-Salida de circuito RC-RC
// Ley de control U = R
// ******************************************************** //
//---------- Muestreo --------// //
// ******************************************************** // unsigned long
TS = 50; // Muestreo TS miliseg //
float Tseg = 0.05; // Muestreo en Tseg segundos //
// ******************************************************** //
// ******************************************************** //
// ---------- Variables globales
// ******************************************************** //
// Tiempo //
unsigned long TS_code = 0; // Tiempo que tarda
programa unsigned long TIC = 0; // Estampa de
tiempo inicio ciclos unsigned long TC = 0; // Faltante
para TS
// ---------- Señales //
float R = 0; // Referencia
float Y = 0; // Salida
float X1 = 0; // Estado 1
float X2 = 0; // Estado 2
float U = 0; // Salida control
int Ui = 0; // Salida control tarjeta
// Otros //
bool Habilitado = 0; // Señal {0,1} para entradas escalón
6
#include <SoftwareSerial.h>
// ******************************************************** //
//---------- Rutinia de inicio----- //
// ******************************************************** //
void setup() {
//--Inicia serial--//
Serial.begin(9600);
// ******************************************************** //
//---------- Rutinia principal --------// //
// ******************************************************** //
void loop() {
proc_entradas(); // Procesamiento de
Entradas control(); // Control
proc_salidas(); // Procesado de
Salidas coms_arduino_ide(); //
Comunicaciones
//coms_python(&R,&Y,&U);
espera();
}
// ******************************************************** //
//---------- Rutinias de IO y control de tiempo ---- //
// ******************************************************** //
//-- Procesado de entradas --//
void proc_entradas(){
// No se ocupa leer X1 (Vc1) porque se estima con observador
X1 = analogRead(pX1)*mX+bX; // Lectura de salida de planta en pin
pX3 X2 = analogRead(pX2)*mX+bX; // Lectura de salida de planta en
pin pX2 R = Habilitado*(analogRead(pR)*mX+bX); // Lectura de
referencia en pin pR, Y = X2;
}
//-- Procesado de salidas --//
void proc_salidas(){
Ui = int(U*mU+bU); // Escalamiento
analogWrite(pU, Ui); // Salida PWM en pin
pU botonesyleds(); // Manejo de IO
discretas
}
7
//-- Memoria {0,1} para entrada escalón --//
void botonesyleds(){
static int n = 0;
if(n >= 1000/TS) n=0; // Señal cuadrada para led
blink else n = n+1;
IV. PRUEBAS
8
REALIZAR LAS PRUEBAS DEL SISTEMAS
9
CONCLUSIONES
• El control óptimo con el algoritmo específicamente funciona mejor que el vector de
retroalimentación de estados por reubicación de polos, sin embargo, no puede llevarlo al
punto de equilibrio total donde todas las variables son nulas, esto se debe básicamente
a que controla óptimamente solo al ángulo θ y no al ángulo φ
por lo que
10