pendulo invertido

February 25, 2018 | Author: Alexander Martinez | Category: Arduino, Matlab, Analog Signal, Computer Hardware, Voltage
Share Embed Donate


Short Description

Descripción: pendulo invertido utilizando aruino y matlab...

Description

Diseño de un péndulo invertido por medio de las herramientas Matlab, Arduino y Simulink.

.

IMPLEMENTACION PÉNDULO INVERTIDO POR MEDIO DE LAS HERRAMIENTAS MATLAB, ARDUINO Y SIMULINK

RESUMEN: El diseño de un péndulo invertido es un prototipo típico para control, en el cual se tiene en cuenta controladores PD, PID, entre otros, los cuales se pueden elaborar mediante herramientas de simulación como Arduino, y actualmente con diagramas de bloques en Matlab y Simulink. Estos últimos permiten elaborar diagramas de bloques sin necesidad de elaborar líneas de código para el control del sistema. PALABRAS CLAVE: Péndulo invertido, Matlab, Arduino, Simulink, controlador PD.

1 INTRODUCCIÓN



Figura 2. Potenciometro industrial. Carro de juguete



Figura 3. Carro para el diseño físico. Hardware Arduino UNO.

  

Figura 4. Arduino UNO. Cable UTP. Protoboard pequeña. Una antena de radio.

Este artículo muestra un modelo para un péndulo invertido, con su diagrama de control PD. Para su diseño en software se realiza mediante código en Arduino, y otro modelo por medio de bloques mediante Matlab y Simulink implementado en Arduino UNO.

2 DISEÑO DE CONTROL 2.1 CARACTERÍSTICAS Para realizar el sistema con las características deseadas, se requiere un diseño del controlador que tenga cierta estabilidad en un punto, es decir, un equilibrio, el cual para este modelo que sea en el momento en que el péndulo se encuentra perpendicular a la superficie.

3 DISEÑO FÍSICO Para el péndulo se utilizaron los siguientes materiales:  Un circuito integrado L293D (puente H).



Figura 1. Puente H L293D Un potenciómetro industrial de 5K.

4 DISEÑO EN ARDUINO Para la elaboración del código se tuvo en cuenta el diseño de control del numeral 3. A continuación se presenta el código especificando cada una de las líneas:

1

Diseño de un péndulo invertido por medio de las herramientas Matlab, Arduino y Simulink.

. //Asignación de pines y declaración d e variables

}

}

int sensorPin = A0; //Pin para lectura analógica int Pin2 = 9; //Pin para PWM 1 int Pin1 = 10; //Pin para PWM 2 float e=0; //error float e0=0; //error pasado float pd=0; //variable de control float d=0; //Diferencia entre error pasado y error float val=0; //Valor analógico leído

Como se puede observar, se debe tener en cuenta las salidas de los pines para que se realice la transferencia correcta al Arduino UNO, además tener en cuenta los códigos de lectura y escritura que puedan realizar la conversión analógica del potenciómetro a señal digital. En el punto de estabilización será le referencia, es decir 512 en este caso.

void setup() { // Se declara the ledPin como OUTPUT: pinMode(Pin1, OUTPUT); //PIN1 salida PWM pinMode(Pin2, OUTPUT); //PIN2 salida PWM } void loop() {

5 PREPARAR LA COMUNICACIÓN ENTRE SIMULINK

Para el caso de la condicional en que pd0) { analogWrite(Pin1, pd);//activar pin1 analogWrite(Pin2, 0); //desactivar pin2 } if (pdInstall/Update Support Package 5.2.3. Elija como conseguir el paquete de apoyo desde internet o desde la carpeta

3

Diseño de un péndulo invertido por medio de las herramientas Matlab, Arduino y Simulink.

. 5.2.4. El instalador de la tarjeta confirma que la estas instalando y listas de software que se instalaran.

5.2.7. haga click en Finish.

5.2.5. Revise la información, incluyendo los acuerdos de la licencia y haga click en instalar.

La ayuda muestra las demos apropiados para su Hardware Para encontrar estos demos más tarde, introduzca “doc” en la ventana de comandos de Matlab. En la ventana de ayuda, busque other Demos y pulse ele botn para ver el contenido de la lista. 5.2.6. El instalador muestra una barra de progreso mientras se descarga e instala el software.

6. LIBRERIAS DE BLOQUES DE SIMULINK Se puede abrir la Liberia de bloques para la tarjeta Arduino desde la ventana de comandos de Matlab o desde el buscador de la librería de bloques de Simulink. Los bloques de esta librería proporcionan soporte conectar sistemas periféricos a la tarjeta. Después de la instalación del soporte para su hardware, usted puede abrir la librería de bloques desde la ventana de comandos de Matlab escribiendo “arduinolib”. El software abre la librería de bloques correspondiente. Para abrir la librería de bloques desde simulink introduzca “simulink” en la ventana de comandos de Matab o haga click en el icono en Matlab Una vez pulse el anterior icono haga click en “Target for use with Arduino Hardware”

Para ver los demos de las tarjetas, dejar el Launch target demos checkbox seleccionada

4

Diseño de un péndulo invertido por medio de las herramientas Matlab, Arduino y Simulink.

. SALIDAS PWM

Sample Time: especifique la frecuencia con la que este bloque lee el valor del pin; en segundos. Este valor viene predeterminado con 1 segundo. El valor mínimo es de 0.000001 segundos. Librería de simulink

Los valores más pequeños requieren el procesador para completar el mismo número de tareas en menos tiempo. Lo que puede dar errores en exceso de tareas.

ENTRADA ANALOGICA

Genera una onda PWM en el pin de salida analógica El uso de ancho de pulso (PWM) para cambiar de ciclo de trabajo de la onda cuadrada de salida. Este tipo de salidas permite proporcionar una gama de diferentes niveles de potencia similares a la de una salida analógica. El valor que se envía al bloque determina la anchura de la onda cuadrada, llamado ciclo de trabajo. El rango de valores es de 0 a 255. Mide la tensión de entrada analógica

Enviando el valor máximo. La entrada del bloque produce un ciclo de trabajo del 0% en la salida PWM

Mide la tensión de un pin de la tarjeta relativo a una entrada analógica. El valor que se obtiene a la salida es un valor de 10 bits que va de 0 a 1023

Enviando un valor intermedio a la entrada del bloque se conseguirá a la salida un ciclo de trabajo proporcional a dicha enrada . por ejemplo si se envía un 192 a la entrada del bloque , el ciclo de trabajo que se consigue es del 75% (192/255=0,75)

Si la medida de tensión es cero voltios el bloque dará una salida de valor 0. Si la medida de tensión es la máxima, el bloque dará una salida de 1023. Le valor de la entrada analógica por defecto es de 0 a 5v . para cambiar el valor de voltaje referencia de la entrada analógica se hará click en tool >runo n target Hardware>Options>voltaje source:external

Si el dato a la entrada del bloque esta fuera del rango, como 500 0 -500, se obtendrá en la salida el valor máximo o mínimo respectivamente. La frecuencia de onda cuadrada es de 490Hz La entrada de este bloque hereda el tipo de datos del bloque que se encuentra “aguas arriba” e e internamente la convierte en unit8

Si se simula el modelo sin la tarjeta Arduino este bloque dará 0. Pin number: Introduzca el número del pin a asignar No se asignara el mismo número de pines a múltiples bloques en el mismo modelo. Para Arduino UNO introduzca el número de pines desde 0 a 5

5

Diseño de un péndulo invertido por medio de las herramientas Matlab, Arduino y Simulink.

. 7.

DISEÑO EN MATLAB Y SIMULINK

La señal de entrada constante será una señal tipo escalón cuyo valor tiene que ir de 5 a -5v para asegurarnos que la señal de entrada este comprendida entre este rango se utiliza el bloque saturation”. Este bloque dispone de dos valores, que en este caso serán 255 y -255v. Si la entrada al bloque saturation se encuentra en este rango el valor de entrada no se verá afectado. Sin embargo si la entrada es mayor a 255 este bloque mantendrá la salida del bloque y si la entrada es menor de -255 este bloque mantendrá también la salida. Antes de explicar para que sirve las 2 señales PWM se comenta cómo funciona el bloque switch. El bloque switch que se ve en la anterior ilustración tiene tres patillas. El funcionamiento es el siguiente: a la patilla central le llega un valor y este tiene que cumplir la condición del switch que en este caso es que el valor que le llega sea mayor que 0. Sis cumple esta condición el switch hace pasar a la salida de este lo que haya ene la patilla de arriba, mientras que si la condición no se cumple , es decir que el valor que se introduce por la patilla central es menor que cero se pasa a la salida del switch lo que haya en la patilla inferior Pin9 (entrada puente H 1) Y Pin 10 (entrada puente H2). Se encarga de discernir si el motor gira en un sentido o en otro. Para que el motor gire, una de las dos entradas tiene que tener un valor de 255 y la otra de 0. Por tanto como hay 2 entradas cuando el pin 10 tenga un valor de 255 y el pin 9 un 0 el motor girara en un sentido y si el pin 10 tiene un 0 y el pin 9 un 255 el girara en un sentido contrario. Si ambos están a 255 o a 0 el motor se mantendrá parado. Para conseguir eso se introduce una señal constante en un primer Switch que dependiendo de si esta es positiva o negativa nos pasara un 255 o un 0 respectivamente a la salida PWM. Al segundo Switch le llega la misma entrada pero multiplicada por -1 (invertida) por medio de un bloque Gain.

6

8.

CONCLUSIONES



Para este proyecto se implementaron dos controles (PD-PID) y con pruebas de laboratorio se observó que el PD respondía mucho mejor que el PID.



Cuando se esté implementado la planta se debe tener en consideración. Peso del péndulo, el tipo de potenciómetro lineal (industrial) ya que este permite ser sometido a grandes esfuerzos y no tendremos el inconveniente de estar reemplazando potenciómetros.



Una vez implementado el control en simulink es necesario configurar la tarjeta a utilizar en este caso Arduino Uno, simplemente (tools-prepare to run) y configuramos nuestra tarjeta con el fin que la comunicación entre matlab y arduino sea fluida y no tenga inconvenientes.



Este proyecto puede ser utilizado como guía para la implementación y mejoramiento del péndulo invertido.



El mayor inconveniente de este proyecto es la velocidad del motor ya que al momento de realizar el levantamiento del péndulo cuando se inestabilidad (cuando sale del rango de estabilidad), no lo hace con suficiente rapidez. Para proyectos a futuro este puede ser el punto de partida, garantizar una buena respuesta del motor ante la lectura del potenciómetro.



Como se observa en el documento hay dos formas de implementar el control del péndulo, un método es con código ejecutado directamente en arduino, con este método el sistema responde de una manera más estable su respuesta es mas rápida. Y el otro método es utilizando los bloques de simulink el cual queda como aporte y para su mejoramiento.

Diseño de un péndulo invertido por medio de las herramientas Matlab, Arduino y Simulink.

.

Figura 5. Diagrama de bloques con Matlab y simulink para el diseño del péndulo invertido.

9.

REFERENCIAS

[1] Ogata, Katsuhiko W. (1996). Sistemas de control en tiempo discreto. Segunda Edición. México: Prentice Hall. [2] Rodriguez, O., Cely, H. E., Riaño, J. A. 2011. Diseño e implementación de un péndulo invertido sobre un carro aplicando estrategias de control basado en LMI. Universidad Pedagógica y Tecnológica de Colombia Sede Sogamoso. [3] Sanabria, C., Hernández, O. 2009. Control de un péndulo invertido simple por método de realimentación de estados.

7

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF