



Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Encontrar la función de transferencia del motor Encoder mG30
Tipo: Apuntes
1 / 6
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
En oferta
Capón Chicaiza Jonnathan Xavier xavier.capon@ucuenca.edu.ec RESUMEN El presente trabajo tiene como finalidad obtener la simulación de transferencia del motor EMG30, además simular en el programa Simulink, así como controlar su velocidad utilizando el programa Arduino.
- Obtener la función de transferencia del motor EMG30. - Realizar la simulación en Simulink de la función obtenida. - Controlar la velocidad del motor mediante un controlador PI, y realizar la simulación en Proteus.
El motor de corriente continua es una máquina que convierte la energía eléctrica en mecánica, provocando un movimiento rotatorio. Esta máquina de corriente continua es una de las más versátiles en la industria. Su fácil control de posición, paro y velocidad la han convertido en una de las mejores opciones en aplicaciones de control y automatización de procesos. A pesar de esto los motores de corriente continua se siguen utilizando en muchas aplicaciones de potencia (trenes y tranvías) o de precisión (máquinas etc.) La principal característica del motor de corriente continua es la posibilidad de regular la velocidad desde vacío a plena carga. Figura 1. Motor EMG En la figura 1 se muestra un motor de corriente continua EMG30 es de 12V y 170 revoluciones que se caracteriza por incluir un Encoder o codificador de cuadrante que manda un tren de impulsos cuando gira el eje del motor, permitiendo así que un circuito externo pueda saber la velocidad real a la que está girando el eje y cuantas vueltas da. El Encoder está formado por dos sensores de efecto hall que proporcionan un total de 360 pulsos por cada vuelta completa del rotor. El motor cuenta con condensadores internos de filtro que ayudan a minimizar el ruido y los parásitos generados por el motor al girar.
Para determinar su modelo matemático nos basamos en la figura 2, la cual muestro un modelo matemático equivalente del motor. Figura 2. Dinámico de un sistema electromecánico con Motor DC El modelo matemático ha sido basado en la teoría de máquinas eléctricas 5ta edición de Jesús Fraile Mora. Partimos de la siguiente ecuación diferencia: Ra ∗ i ( t ) + La di dt
La tensión de armadura viene dada por: e ( t )= Kb ∗ w ( t ) ecuación 3 Donde: Kb = Constante de la fuerza contra electromotriz El torque mecánico de igual manera se relaciona como: Tm ( t )= Ki ∗ i ( t ) ecuación 4 Donde: Ki = C onstante del motor ( torque − corriente ) Aplicando la transformada de Laplace a cada una de las ecuaciones se tiene que: ecuación 5 V ( s )= La ∗ s ∗ i ( s ) + Ra ∗ i ( s )+ Ea ( s ) ecuación 6 J ∗ s ∗ w ( s )= Tm ( s ) − B ∗ w ( s ) ecuación 7 e ( S )= Kb ∗ w ( s ) ecuación 8 Tm ( s ) = Ki ∗ i ( S ) Reemplazando la ecuación 8 en la ecuación 6 se tiene que: Jm ∗ s ∗ w ( s )= Ki ∗ i ( s )− B ∗ w ( s ) Despejando i(s) se tiene que ecuación 9 i ( s )= ( Jm ∗ s ∗ w^ (^ s^ )+ B ∗ w^ (^ s^ )) ki Reemplazando la ecuación 7 en la ecuación 5 se tiene que: ecuación 10 V ( s )= La ∗ s ∗ i ( s ) + Ra ∗ i ( s )+ Kb ∗ w ( s ) Relacionando la ecuación 9 y la ecuación 10 se tiene: V ( s )= La ∗ s ∗( Jm ∗ s ∗ w ( s ) + B ∗ w ( s ) (^) ) ki
ki Jm ∗ La ∗ s^2 + ( B ∗ La + Ra ∗ Jm ) s + B ∗ Ra + kb ∗ ki En la figura 3 se muestra cada uno de los parámetros del motor EMG30. Figura 3. Parámetros del Motor EMG ecuación 11 Función de transferencia que relaciona la entrada voltaje con la salida velocidad angular del eje en la carga mecánica. W ( s ) V ( s )
19.28 x 1 0 − 6 s 2
A continuación, se realiza la simulación del modelo matemático obtenido en Simulink. En la Figura 4 se puede observar cada uno de los bloques utilizados para la simulación.
lcd.begin(16, 2); } void loop() { lcd.setCursor(0, 0); lcd.print("Count: "); lcd.setCursor(7, 0); lcd.print(counter); if (digitalRead(button) == LOW) { counter = 50; } segundovalor_a= digitalRead(outputA); // Reads the "current" state of the outputA // If the previous and the current state of the outputA are different, that means a Pulse has occured if (segundovalor_a != primervalor_a) { // If the outputB state is different to the outputA state, that means the encoder is rotating clockwise if (digitalRead(outputB) != segundovalor_a) { counter ++; } else { counter --; } if (counter >= 100) { counter = 0; } if (counter < 0) { counter = 99; } } primervalor_a = segundovalor_a; // Updates the previous state of the outputA with the current stat }
Simulación en Proteus En la figura 8 se muestra la simulación realizada en Proteus, la cual consta de un LCD, que nos permita mostrar los pulsos que recibe, además cuenta con el Encoder que nos permitirá observar su funcionamiento. Figura 7. Simulación Encoder Proteus Controlador PI A continuación, se muestra el código a implementar para realizar un control PI, el cual nos permitirá realizar un control continuo de la velocidad del motor, básicamente su función es reducir el error en estado estable y obtener una respuesta rápida ante variaciones de velocidad. // Asignaciones pins const int PIN_INPUT = A0; const int PIN_OUTPUT = 3; // Constantes del controlador double Kp=2, Ki=5, Kd=1; // variables externas del controlador double Input, Output, Setpoint; // variables internas del controlador unsigned long currentTime, previousTime; double elapsedTime; double error, lastError, cumError, rateError; void setup () { Input = analogRead(PIN_INPUT); Setpoint = 100; } void loop () { pidController.Compute(); Input = analogRead(PIN_INPUT); // leer una entrada del controlador Output = computePID(Input); // calcular el controlador Delay (100); analogWrite (PIN_OUTPUT, Output); // escribir la salida del controlador } double computePID double inp) { currentTime = millis (); // obtener el tiempo actual elapsedTime = (double) (currentTime - previousTime); // calcular el tiempo transcurrido error = Setpoint - Input; // determinar el error entre la consigna y la medición cumError += error * elapsedTime; // calcular la integral del error rateError = (error - lastError) / elapsedTime; // calcular la derivada del error double output = kperror + kicumError + kd*rateError; // calcular la salida del PID lastError = error; // almacenar error anterior previousTime = currentTime; // almacenar el tiempo anterior return output;