Beruflich Dokumente
Kultur Dokumente
3. La accin derivativa $K_d$ tiende a suavizar las variaciones en el error. Dndole vueltas a la XBox y la
quedada de Asterisk
Para determinar los mejores valores de cada una de las constantes, lo ideal es realizar un estudio mediante Vocalista en el grupo y mi
la transformada de Laplace y buscar la mejor ubicacin de los polos y los ceros del controlador PID para madre reina de la 3 edad en
que se obtenga el comportamiento deseado. Santa Cruz
Paquetes raw ethernet en
En este caso se ha optado por realizar pruebas empricas con valores bajos e ir probando diferentes Linux
combinaciones. Reproductor MP3 para la XBox
Luces del beln controladas
Implementacin a nivel hardware por Arduino con ciclo da-
noche
En este caso la planta es un motor DC del que vamos a controlar su velocidad mediante la salida PWM de 8
bits (0 a 255) y 5 voltios. La salida PWM la conectamos a la base de un transistor NPN de potencia (en este
caso un BD139) montado en configuracin de emisor comn. Archivo
Ver Archivos
2017
octubre
Implementacin de una
interfaz VGA sobre
FPGA
25/10/17
septiembre
junio
abril
2016
diciembre
noviembre
agosto
abril
marzo
febrero
enero
2015
La lectura de la velocidad angular la hacemos utilizando un disco pintado (mitad blanco y mitad negro) diciembre
conectado al eje de rotacin (para que gire) y un sensor reflexivo de infrarrojos CNY70 (del que se utiliza en octubre
los robots sigue lneas). septiembre
julio
mayo
abril
febrero
enero
2014
diciembre
noviembre
septiembre
agosto
junio
mayo
marzo
enero
2013
diciembre
noviembre
octubre
agosto
julio
mayo
abril
febrero
2012
diciembre
noviembre
octubre
agosto
julio
mayo
Polarizando el fototransistor y el led infrarrojo y acondicionando la seal con una puerta inversora de tipo abril
schmitt, ya tenemos un flanco de subida o de bajada por cada vuelta que da el disco. marzo
2011
diciembre
noviembre
octubre
septiembre
agosto
julio
mayo
febrero
enero
2010
diciembre
agosto
julio
junio
mayo
2009
noviembre
octubre
agosto
junio
mayo
abril
febrero
enero
Implementacin a nivel software
2008
diciembre
Lectura de la velocidad noviembre
septiembre
Para obtener la velocidad de rotacin lo ms eficiente es conectar la salida del inversor schmitt a una agosto
entrada del microcontrolador que permita disparar interrupciones internas en cada flanco de bajada o en junio
cada flanco de subida. El pseudocdigo sera como sigue: mayo
abril
rpm = 0 marzo
anterior_t = 0
febrero
cada vez que haya un flanco de subida hacer: enero
t = microsegundos
2007
incremento = t - anterior_t
rpm = (1 / incremento) * 60000000 diciembre
anterior_t = t noviembre
fin interrupcin
octubre
septiembre
agosto
De esta forma tenemos los rpm a los que va el motor. Ntese que esta implementacin no detecta la junio
velocidad de 0 rpm. Para detectar la velocidad de 0 rpm habra que incluir un timer que, pasado un tiempo mayo
determinado, si no se produce la interrupcin, asuma que el disco se ha parado (rpm = 0). En este caso no abril
se ha implementado esta funcionalidad por simplicidad. marzo
febrero
Implementacin del PID enero
2006
Para implementar el controlador PID en el Arduino (o en cualquier otro microcontrolador) tenemos que diciembre
discretizar la ecuacin diferencial que relaciona u(t) con e(t). Separamos primero dicha ecuacin diferencial noviembre
en partes: octubre
$$u(t)=u_p(t)+u_i(t)+u_d(t)$$ septiembre
Siendo: agosto
$$u_p(t)=K_pe(t)$$ julio
$$u_i(t)=K_i\int_0^t e(\tau)d\tau$$ junio
$$u_d(t)=K_d{de(t) \over dt}$$ mayo
La discretizacin de $u_p(t)$ es trivial: abril
$$u_p[k]=K_pe[k]$$ marzo
La discretizacin de $u_i(t)$ asumiento un perodo de muestreo de $T$ lo suficientemente bajo la podemos febrero
calcular aproximando la integral mediante una suma de reas de rectngulos de base $T$ y altura $e[k]$: enero
$$u_i[k]=K_i\sum_{n=0}^kTe[n]=K_iT\sum_{n=0}^ke[n]$$
2005
De la misma manera, la discretizacin de $u_d(t)$ asumiento un perodo de muestreo $T$ lo diciembre
suficientemente bajo la podemos calcular aproximando la derivada mediante el clculo de la pendiente de noviembre
la recta que une $e[k-1]$ con $e[k]$: octubre
$$u_d[k]=K_d{e[k]-e[k-1] \over T}$$ septiembre
El PID discretizado nos quedara, por tanto, de la siguiente manera: agosto
$$u[k]=K_pe[k]+K_iT\sum_{n=0}^ke[n]+K_d{e[k]-e[k-1] \over T}$$ julio
Esta ecuacin en diferencias finitas s es fcilmente implementable en cualquier sistema. En el caso de junio
Arduino podramos realizar la siguiente implementacin:
float prevError;
Desarrollo DSP
};
Hardware para msica
Soundart Chameleon
void pid_controller_init(struct pid_controller &pid, float delta, float kp,
Roland Fantom XR
float ki, float kd) {
Software para msica
pid.delta = delta;
Hardware para msica
pid.kp = kp; MSX
pid.ki = ki;
Desarrollo para MSX
pid.kd = kd;
SDCC
pid.sum = 0;
Sonido para MSX
pid.prevError = 0; Desarrollo en general
}
Desarrollo Android
Desarrollo Arduino
float pid_controller_run(struct pid_controller &pid, float error) {
float p = pid.kp * error;
Desarrollo embebido
pid.sum += error;
Desarrollo Teensy
float i = pid.ki * pid.delta * pid.sum;
Desarrollo LPC810
float d = pid.kd * (error - pid.prevError) / pid.delta;
Desarrollo STM32
pid.prevError = error;
Desarrollo FPGAs y CPLDs
return p + i + d; Literatura
} Consolas
Atari 2600
Gameboy Advance
Las pruebas empricas realizadas han dado muy buenos resultados para:
XBox
$$K_p=K_i=K_d=0.5$$
Nintendo DS
Con un perodo de muestreo $T=0.01$. La inicializacin, por tanto, quedara as: PIC
Electrnica
void setup() {
...
pid_controller_init(motor_pid_controller, 0.01, 0.5, 0.5, 0.5); Bsqueda
...
} Bsqueda
Enviar
1632.03 rpm
1591.01 rpm ltimos Comentarios
1602.56 rpm
1583.28 rpm Administrator (Avelino Herrera
[ aadir comentario ]
( 1815 visualizaciones )
|[ 0 trackbacks ]
|enlace permanente
Me gusta 11
Tweet| ||| ( 3 / 2642 )