• No se han encontrado resultados

Mecanismo Bola Barra

N/A
N/A
Protected

Academic year: 2021

Share "Mecanismo Bola Barra"

Copied!
6
0
0

Texto completo

(1)

Control Mecatrónico III

Control Mecatrónico III – – Ing. Marcelo J.Q.C. Ing. Marcelo J.Q.C. Julio 6, 2017. Umacollo - Cercado | Arequipa Julio 6, 2017. Umacollo - Cercado | Arequipa

Diseño Y Control de Mecanismo Barra y Bola de Pivote Central con Control

Diseño Y Control de Mecanismo Barra y Bola de Pivote Central con Control

Clásico PID

Clásico PID

M. Díaz, O. Alpaca, D. Medina M. Díaz, O. Alpaca, D. Medina

Universidad Católica de Santa María, PERU Universidad Católica de Santa María, PERU (e-mail:

(e-mail: mariodz6@hotmail.commariodz6@hotmail.com,, orlando996j@gmail.comorlando996j@gmail.com,, dd08497@gmail.comdd08497@gmail.com))

Abstract: Este trabajo describe la implementación de Arduino y Matlab en conjunto. Se debe Abstract: Este trabajo describe la implementación de Arduino y Matlab en conjunto. Se debe instalar una librería en Matlab y código característico de la librería en el Arduino, los cuales son instalar una librería en Matlab y código característico de la librería en el Arduino, los cuales son de naturaleza Open-Source, para implementar la comunicación entre ambas plataformas de de naturaleza Open-Source, para implementar la comunicación entre ambas plataformas de desarrollo. Se implementa como DAQ la salida

desarrollo. Se implementa como DAQ la salida directa de posición a través del directa de posición a través del monitor serial delmonitor serial del entorno de desarrollo de Arduino.

entorno de desarrollo de Arduino.

Finalmente, se combinó los datos como de entrada, tiempo y salida en Ident de Matlab para Finalmente, se combinó los datos como de entrada, tiempo y salida en Ident de Matlab para encontrar la respuesta de la planta, curva de estabilización y función de transferencia en base a encontrar la respuesta de la planta, curva de estabilización y función de transferencia en base a estos resultados obtenidos anteriormente para poder implementar un control PI

estos resultados obtenidos anteriormente para poder implementar un control PI D estable.D estable.

 Keywords:

 Keywords: Matlab, Arduino, Ident, PID, barra-bola, pivote central. Matlab, Arduino, Ident, PID, barra-bola, pivote central.

1.

1. INTRODUCCIÓNINTRODUCCIÓN

El objetivo es controlar la posición de la esfera sobre la El objetivo es controlar la posición de la esfera sobre la  barra.

 barra. El El giro giro de de la la esfera, esfera, debido debido a a la la gravedad, gravedad, estáestá confinado a un canal situado en la parte

confinado a un canal situado en la parte superior de la barrasuperior de la barra que además cumple con la función de ser el elemento que que además cumple con la función de ser el elemento que soporta el sensor que mide la posición de la esfera. El soporta el sensor que mide la posición de la esfera. El sistema barra-esfera se puede ver como la abstracción que sistema barra-esfera se puede ver como la abstracción que duplica el trabajo diario de un mesero con una charola o duplica el trabajo diario de un mesero con una charola o ciertos juegos en donde en una pequeña superficie, con n ciertos juegos en donde en una pequeña superficie, con n depresiones, se trata de posicionar n balines en las depresiones, se trata de posicionar n balines en las depresiones.

depresiones.

En este proyecto se muestra el diseño de dicho sistema, el En este proyecto se muestra el diseño de dicho sistema, el funcionamiento del proyecto y los

funcionamiento del proyecto y los códigos respectivos paracódigos respectivos para el control.

el control. 2.

2. DESCRIPCION DEL PROYECTODESCRIPCION DEL PROYECTO

El proyecto desarrollado es un sistema barra - esfera en El proyecto desarrollado es un sistema barra - esfera en donde la posición de una esfera sobre una barra es donde la posición de una esfera sobre una barra es controlada por la inclinación de la barra. La barra se controlada por la inclinación de la barra. La barra se inclinaba por la acción de un servomotor, el cual tenía inclinaba por la acción de un servomotor, el cual tenía acoplado a su eje la barra;

acoplado a su eje la barra; dicho servomotor se encontrabadicho servomotor se encontraba en el centro de la barra. Así se

en el centro de la barra. Así se controla la inclinación de lacontrola la inclinación de la  barra

 barra por por medio medio del del actuador actuador (servomotor) (servomotor) ee indirectamente se controla la posición de la

indirectamente se controla la posición de la esfera.esfera.

Fig. 1. Esquema principal del mecanismo. Fig. 1. Esquema principal del mecanismo.

Cabe precisar que en ambos extremos se restringieron Cabe precisar que en ambos extremos se restringieron mecánicamente para que la esfera no salga de la barra. Esta mecánicamente para que la esfera no salga de la barra. Esta restricción fue aproximadamente a 4 cm de cada extremo restricción fue aproximadamente a 4 cm de cada extremo debido a que el sensor utilizado no media bien cuando la debido a que el sensor utilizado no media bien cuando la  bola estaba a menos de 4 cm

 bola estaba a menos de 4 cm del sensor.del sensor. 3. 3. PLANOSPLANOS 3.1. 3.1. PlanosPlanos Fig. 2. Planos 3D Fig. 2. Planos 3D Fig.

(2)

Julio 6, 2017. Arequipa 3.2. PROPIEDADES FISICAS Largo (cm) Ancho (cm) Alto (cm) Material Brazo 40.0 4.0 1.5 Aluminio Apoyos 13.5 4.0 1.5 Aluminio Cuerpo 15 2.5 30.0 Aluminio Portador del servomotor 3.5 3.5 9.0 Aluminio Eje 11.0 1.0 1.0 Acero

Cuadro 1. Dimensiones reales

4. FUNCIONAMIENTO DEL PROYECTO 4.1. Diagrama de Flujo

Fig. 5. Diagrama de flujo 4.2. Código en Arduino

long distancia; long tiempo; int pin=11; int triger = 3; int echo = 5; int vcc = 2; int gnd = 4; float error=0; float c=0; float errora=0; float k = 1; float Kp=3;//3 float Ki=0.03;//0.01; float Kd=30;//30;

float P=0; int P_1=0; float pi=0; float PD=0; float PD_1=0; int PID=0; int sp=18; int num=0; void setup () {

Serial.begin(9600); //SERVO

pinMode (pin, OUTPUT); //ULTRASONICO

pinMode (triger, OUTPUT); pinMode (echo, INPUT); //Alimentación ultrasónico pinMode (vcc, OUTPUT); pinMode(gnd,OUTPUT); digitalWrite(vcc,HIGH); digitalWrite(gnd,LOW);} void pulso (int duracion) {

//Funcionamiento Servo duracion=constrain(duracion,1000,2000); digitalWrite(pin,HIGH); delayMicroseconds(duracion); digitalWrite(pin,LOW); delayMicroseconds(20000 - duracion);} void loop () { //ULTRASONICO digitalWrite(triger,LOW); delayMicroseconds(5); digitalWrite(triger,HIGH); delayMicroseconds(10); tiempo=pulseIn (echo, HIGH);

distancia= int(0.017*tiempo); distancia = constrain(distancia,4,40); Serial.println(distancia); c = error-errora; delay(10); //CONTROLADOR PROPORCIONAL errora=error; error=distancia-sp; P=Kp*error; //Rango de error if  (abs(error)>2) { //CONTROLADOR INTEGRAL pi=pi+Ki*error;} else{pi=0;} //CONTROLADOR DERIVATIVO PD=Kd*c; ///CONTROLADOR PID PID = k*(P+PD+pi); //PID = 0;

//1540 represeta a la barra posicionada a 90 grados int y = 1540 + PID;

//Restriccion por parametros de funcionamiento del y = constrain(y,1000,2000); //Condicion de funcionamiento if (abs(error)<2) { pulso (1540);} else { pulso(y); }}

(3)

Julio 6, 2017. Arequipa

4.3. Descripción Del Programa

Primero se crea una función para controlar un servomotor mediante un ancho de pulso de 50 hz, teniendo en cuenta que 1540 microsegundos de pulso en alto representan 90°, es decir cuando la barra se encuentra en posición horizontal.

La siguiente la parte del código sirve para hace medicines con el sensor de ultrasonido para medir la distancia primero se envía un pulso en alto por el pin de trigger por una cierta cantidad de tiempo después se recibe un rebote por el pin echo lo que se obtiene es el tiempo de demora en recibir la señal del rebote. Se conoce que la velocidad del sonido es de 340m/s, convirtiendo eso a cm/s y dividiendo entre 2 y usando el tiempo censado se obtiene la distancia en cm. Básicamente la última parte del código es la aplicación PID donde existe una parte que actúa proporcionalmente al error, otra parte donde actúa acumulativamente en el tiempo que se incurre en el error y otra parte que actúa en  base a la tasa de cambio del error.

4.4. Componentes 4.4.1. Servomotor:

Un servomotor es un motor que permite controlar la posición del eje en un punto determinado, está diseñado de manera que pueda moverse una cantidad de grados y mantener esa posición. Estos servomotores se caracterizan por entregar un mayor par de torsión que un motor DC común. En la imagen podemos ver lo que contiene este servomotor internamente: un motor dc normal el cual se acopla a una caja de engranajes con la finalidad de aumentar el torque y permitir una  posición fija. El circuito electrónico se encarga de manejar el movimiento y posición del motor. Los servomotores poseen 3 cables, uno de alimentación, otro negativo y el cable de control. Además, existen tipos de servomotores:

Fig. 6. Esquema del servomotor

● Servomotores de rango de giro limitado: son el

tipo más común de servomotor. Permiten una rotación de 180 grados, por lo cual son incapaces de completar una vuelta completa.

● Servomotores de rotación continua: se

caracterizan por ser capaces de girar 360 grados, es decir, una rotación completa. Su funcionamiento es similar al de un motor convencional, pero con las características propias de un servo. Esto quiere decir que podemos controlar su posición y velocidad de giro en un momento dado.

Para determinar una posición específica del servomotor se emplea PWM, ya que dependiendo del ancho de pulso el motor alcanzará una  posición determinada.

Fig. 7. Relación de pulso y posición angular

Las señales mostradas deben repetirse en el tiempo para que el motor mantenga una posición fija, en la siguiente imagen se muestra el pulso que debe enviarse al servomotor para mantener una posición de 180, 90 y 0° respectivamente.

Fig. 8. Amplitud del pulso En el proyecto se empleó un servo de 3.5Kg

a) Arduino: Arduino es una plataforma

electrónica de código abierto. Estas placas son capaces de leer entradas, activar un sensor, un botón e incluso activar motores,  prender un led. Todos estos procesos se realizan mandando un conjunto de

(4)

Julio 6, 2017. Arequipa

instrucciones al microcontrolador el cual se encuentra en la placa. El código se escribe en el software Arduino Sotfware (IDE) basado en processing.

En el mercado existen varios tipos de arduino, entre los más comunes se tiene: el arduino nano, arduino uno, arduino Leonardo y arduino mega. En el proyecto se empleó el arduino uno.

Fig. 9. Placa de desarrollo Arduino UNO

b) Sensor ultrasónico:

El sensor HC-SR04 es un sensor ultrasónico de distancia compatible con Arduino. Básicamente, este sensor puede detectar objetos, distancia o nivel en un rango mínimo de 2 cm a un máximo de 400 cm. Se  puede utilizar, por ejemplo, para diferentes tipos de  proyectos como lo son alarmas de proximidad, medir

niveles de agua de un tinaco o cualquier otro objeto que almacene algún tipo de líquidos. Teniendo en cuenta que para que este sensor funcione de manera correcta, se requiere de una superficie lisa y

 perpendicular a la dirección de propagación del sensor.

Fig. 10. Módulo ultrasónico HC-SR04 Características del HC-SR04

· Alimentación de 5-3.3 volts.

· Interfaz de cuatro hilos (vcc, trigger, echo, GND).

· Rango de medición: 2 cm a 400cm. · Corriente de alimentación: 1.5mA. · Frecuencia de pulso: 40Khz.

· Apertura del pulso ultrasónico: 15°. · Señal de disparo: 10us.

· Dimensiones del módulo: 45x20x15mm. El sensor se encuentra ubicado a un extremo del  brazo, se pensó utilizar dos sensores en ambos lados

cada uno, pero existe la posibilidad de conflicto en cuando a recepción de señales cruzadas.

5. CONTROL.

5.1. IDENTIFICACIÓN CON HERRAMIENTA IDENT DE MATLAB.

Código MATLAB

clc, close all;% no le pongas clear all, sino borra el bj22221

%[datos columna Excel ,texto columna excel ]=xlsread('nombre archivo.xlsx',-1) tiempo=xlsread('muestreo.xlsx', 1, 'A4:A1965'); distancia=xlsread('muestreo.xlsx', 1, 'L4:L1965'); entrada=20*ones(1962,1); subplot(1,2,1) plot(tiempo,entrada,'r')

title('DISTANCIA 20cm (distancia, SET POINT)') xlabel('TIEMPO [S]') ylabel('POSICION [CM]') hold on plot(tiempo,distancia,'g') FZ=tf(bj22221); FC=1.18*d2c(FZ) %sys=ss(FC); subplot(1,2,2) step(20*FC)

title('DISTANCIA 20cm (distancia, SET POINT, ESTIMADO)')

xlabel('TIEMPO [S]') ylabel('POSICION [CM]') hold on

plot(tiempo,entrada,'r')

Con el código se grafica los datos reales obtenidos de la  planta, luego se obtiene la función de transferencia que se guarda en la variable bj22221, la función de transferencia se obtiene en términos de z (digital) para pasarlo a forma

(5)

Julio 6, 2017. Arequipa

continua se hace uso de la función: d2c. A dicha función

se le agregó un factor de 1.18 ya que la gráfica no alcanzaba el valor de estabilización se quedaba en 16.1 para compensar y alcanzar el valor real de 19 se agregó dicho factor.

5.2. FUNCION DE TRANSFERENCIA

Fig. 11. Funcion transferencia en tiempo discreto La función de transferencia que se obtiene directo de IDENT-MATLAB está en forma digital es necesario  pasarlo a forma continua y al mismo tiempo multiplicar por una ganancia K para que alcance el valor deseado y se asemeje mucho a los datos reales.

5.3. DATOS IMPORTADOS A MATLAB (SALIDA REAL DEL SISTEMA):

Fig. 12. Grafico de respuesta de salida real

Para la gráfica, la entrada es claramente el set point deseado en este caso 20 con un margen de error absoluto menor a 2, adicionalmente podemos notar que los datos están muy dispersos aveces se pasa el valor de set point y vuelve pero pasado el tiempo de 12 segundos

aproximadamente podemos ver que finalmente el sistema estabiliza en 19 cm (distancia). Para el muestreo respectivo se empleó arduino y un control PID, con un valor de Kp=12, Kd=400 y Ki=0.1.

Se tomaron varias muestras pero la que mejor estabilizaba y por más tiempo era esta, como vemos permanece en 19 cm por más de 5 segundos. Es importante mencionar que la línea roja es la entrada respectiva para la obtención de dicha salida.

5.4. IDENT

Fig. 13. Toolbox de Matlab IDENT

En la gráfica superior podemos observar la interfaz de IDENT-MATLAB, con los datos ingresados al lado izquierdo y el modelo estimado al lado derecho, el cual ya se puede arrastrar al LTI viewer o al workspace de Matlab  para trabajar con la función de transferencia.

5.5. RESPUESTA AL STEP DE LA FUNCIÓN DE TRANSFERENCIA OBTENIDA

(6)

Julio 6, 2017. Arequipa

Si la función de transferencia se obtiene mediante estimación ARMAX se obtiene una función de transferencia de orden 1.

Fig. 15. Respuesta al Step.

Por comparación la que más se parece es la función de orden 4, para resumir, se muestra las dos gráficas juntas (función obtenida y salida real).

Fig. 16. Comparación entre ambas respuestas 6. CONTROL PID

7. IMPLEMENTACIÓN

Construcción del sistema

Se ha empleado aluminio para construir la estructura del sistema que soporta a la barra y al servomotor. Es importante mencionar que nuestro sistema es con  pivote en el medio por lo que un eje debe ir desde el servomotor a la barra. A continuación, el sistema construido.

Fig. 17. Proyecto implementado físicamente.

Prueba de sensores

Para realizar la prueba de los sensores se conecta el sensor ultrasónico al arduino, el cual tiene 4 pines (Trigger, Echo, Vcc y GND), para restringir la medida se empleó la función constrain para que no existan picos (sobresaltos) de lecturas del sensor.

Prueba de servomotor

Se colocó un nivel en el brazo para medir el punto de equilibrio mediante pruebas de toma de datos y relacionando mediante una regla proporcional.

Referencias

Documento similar

Entre otros se pueden destacar los trabajos de Carrica y Lexow (2004); Samper et al. La información de entrada requerida por el código y los datos de salida

Estos datos se refieren al tiempo efectivamente utilizado en el cumplimiento del servicio institucional, desde la salida del lugar de residencia o trabajo habituales o del

Se establecerán dos zonas de entrada al recinto escolar (INFANTIL 1º Y 2º DE PRIMARIA) por la puerta izquierda del centro, y 3º,4º,5º y 6º de PRIMARIA por la puerta

El terminal de entrada/Salida puede programarse para funcionar como una entrada de zona, una salida programable o como un sensor de temperatura baja. 3 teclas de emergencia de un

El regulador digital debe tomar el valor de la entrada al sistema y de la salida de este en un mismo instante de tiempo (muestreo) para calcular el siguiente valor de la señal

También hemos visto como la principal característica de este proceso de racialización es que se hace presente en los libros de texto de una forma dialéctica, al pretender

• Buffer de entrada, BUFFER _en, los cuales secuencian las lecturas.. • Buffer de salida de datos, BUFFER _data, donde poder almacenar los datos ya leídos a la espera de

Hecha la denuncia de esta primera invisibilización se propone la construcción de la comunicación alternativa como objeto de investigación social a través de un trabajo teórico