Practica6LDSM.docx

November 22, 2018 | Author: Oscar Medellin | Category: Arduino, Electrical Engineering, Manufactured Goods, Technology, Software
Share Embed Donate


Short Description

Download Practica6LDSM.docx...

Description

UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA

Laboratorio de Diseño de Sistemas Mecatrónicos

Práctica #6 Control de velocidad de un servomotor.

M.C. Dante Ferreyra Mendez

Emmanuel Pablo García Muñoz 1594897 Jueves: V4 Brigada: 415 Oscar Eduardo Medellin Cuellar 1598578 Miercoles: V5 Brigada: Brigada: 306 3 06

Ciudad Universitaria San Nicolás de los Garza N.L. a 5 de Mayo del 2017 20 17

ÍNDICE Objetivo

3

Marco Teórico

3

Introducción

6

Desarrollo

7

Material

7

Procedimiento

7

Conclusión

13

Bibliografía

13

2

CONTROL DE VELOCIDAD DE UN SERVOMOTOR. OBJETIVO.

El objetivo de este ejercicio es similar a la práctica anterior; realizar de manera experimental el control de la velocidad en un servomotor y su validación correspondiente. En esta práctica, se realizará un experimento de nueva cuenta con un servomotor. La finalidad en esta ocasión será de controlar la velocidad del eje del servomotor. El sistema es de lazo abierto en el que se utiliza la computadora para alimentar la señal de entrada al dispositivo electromecánico. No se utilizará todavía un encoder para realizar el lazo cerrado.

MARCO TEÓRICO SERVOMOTOR Un Servo es un dispositivo pequeño que tiene un eje de rendimiento controlado. Este puede ser llevado a posiciones angulares específicas al enviar una señal codificada. Con tal de que una señal codificada exista en la línea de entrada, el servo mantendrá la posición angular del engranaje. Cuando la señala codificada cambia, la posición angular de los piñones cambia. En la práctica, se usan servos para posicionar superficies de control como el movimiento de palancas, pequeños ascensores y timones. Ellos también se usan en radio control, títeres, y por supuesto, en robots. Los Servos son sumamente útiles en robótica. Los motores son pequeños, tiene internamente una circuitería de control interna y es sumamente poderoso para su tamaño. Un servo normal o Standard como el HS-300 de Hitec tiene 42 onzas por pulgada o mejor 3kg por cm. De torque que es bastante fuerte para su tamaño. También potencia proporcional para cargas mecánicas. Un servo, por consiguiente, no consume mucha energía. Se muestra la composición interna de un servo motor en el cuadro de abajo. Podrá observar la circuitería de control, el motor, un juego de piñones, y la caja. También puede ver los 3 alambres de conexión externa. Uno es para alimentación Vcc (+5volts), conexión a tierra GND y el alambre blanco es el alambre de control.

Hay tres tipos de servomotores:



Servomotores de CC Servomotores de AC



Servomotores de imanes permanentes o Brushless.



3

FUNCIONAMIENTO DE UN SERVOMOTOR

El servomotor tiene algunos circuitos de control y un potenciómetro (resistencia variable) conectado al eje central. potenciómetro permite a la circuitería de control supervisar el ángulo actual del servomotor. Si el eje está en el ángulo correcto, entonces el motor estará apagado. Si el circuito verifica que el ángulo no es el correcto, el motor girará en la dirección adecuada hasta llegar al ángulo correcto. El eje del servomotor es capaz de llegar a los 180 grados. Normalmente, en algunos llega a los 210 grados, pero varía según el fabricante. Un servomotor normal se usa para controlar un movimiento angular de entre 0° y 180°. La cantidad de voltaje aplicado al motor es proporcional a la distancia que éste necesita viajar. Así, si el eje necesita regresar una distancia grande, el motor regresará a toda velocidad. Si este necesita regresar sólo una pequeña cantidad, el motor correrá a una velocidad más lenta. A esto se le llama control proporcional. CONTROL DE POSICIÓN DE UN SERVOMOTOR

El dispositivo utiliza un circuito de control para realizar la ubicación del motor en un punto, consistente en un controlador proporcional. El punto de referencia o setpoint —que es el valor de posición deseada para el motor — se indica mediante una señal de control cuadrada. El  ancho de pulso de la señal indica el ángulo de posición: una señal con pulsos más anchos (es decir, de mayor duración) ubicará al motor en un ángulo mayor, y viceversa. Inicialmente, un amplificador de error calcula el valor del error de posición, que es la diferencia entre la referencia y la posición en que se encuentra el motor. Un error de posición mayor significa que hay una diferencia mayor entre el valor deseado y el existente, de modo que el motor deberá rotar más rápido para alcanzarlo; uno menor, significa que la posición del motor está cerca de la deseada por el usuario, así que el motor tendrá que rotar más lentamente. Si el servo se encuentra en la posición deseada, el error será cero, y no habrá movimiento. Para que el amplificador de error pueda calcular el error de posición, debe restar dos valores de voltaje analógicos. La señal de control PWM se convierte entonces en un valor analógico de 4

voltaje, mediante un convertidor de ancho de pulso a voltaje. El valor de la posición del motor se obtiene usando un potenciómetro de realimentación acoplado mecánicamente a la caja reductora del eje del motor: cuando el motor rote, el potenciómetro también lo hará, variando el voltaje que se introduce al amplificador de error. Una vez que se ha obtenido el error de posición, éste se amplifica con una ganancia, y posteriormente se aplica a los terminales del motor.

Dependiendo del modelo del servo, la tensión de alimentación puede estar comprendida entre los 4 y 8 voltios. El control de un servo se reduce a indicar su posición mediante una señal cuadrada de voltaje: el ángulo de ubicación del motor depende de la duración del nivel alto de la señal. Cada servo, dependiendo de la marca y modelo utilizado, tiene sus propios márgenes de operación. Por ejemplo, para algunos servos los valores de tiempo de la señal en alto están entre 1 y 2 ms,  que posicionan al motor en ambos extremos de giro (0° y 180°, respectivamente). Los valores de tiempo de alto para ubicar el motor en otras posiciones se hallan mediante una relación completamente lineal: el valor 1,5 ms indica la posición central, y otros valores de duración del pulso dejarían al motor en la posición proporcional a dicha duración.3 Es sencillo notar que, para el caso del motor anteriormente mencionado, la duración del pulso alto para conseguir un ángulo de posición θ estará dado por la fórmula

donde está dado en milisegundos y en grados. Sin embargo, debe tenerse en cuenta que ningún valor —de ángulo o de duración de pulso— puede estar fuera del rango de operación del 5

dispositivo: en efecto, el servo tiene un límite de giro —de modo que no puede girar más de cierto ángulo en un mismo sentido—  debido a la limitación física que impone el potenciómetro del control de posición. Para bloquear el servomotor en una posición, es necesario enviarle continuamente la señal con la posición deseada. De esta forma, el sistema de control seguirá operando, y el servo conservará su posición y se resistirá a fuerzas externas que intenten cambiarlo de posición. Si los pulsos no se envían, el servomotor quedará liberado, y cualquier fuerza externa puede cambiarlo de posición fácilmente. Para el giro a máxima velocidad en el sentido de las agujas del reloj el pulso de la señal sería:

Señal con periodo de 20 ms. Anchura del pulso entre 0.8 a 1.2 ms. Aquí hay un rango de valores porque depende del fabricante del servomotor de rotación continua.

INTRODUCCIÓN

En las prácticas 4 y 5 se explicó el funcionamiento y el control de un servomotor; ahora en esta práctica realizaremos un control de velocidad de dicho motor. Para esto utilizaremos nuevamente el microprocesador. Para realizar el control de velocidad no será algo sencillo de realizar puesto que se necesitará programar algo como control exponencial para ir aumentando sobre las posiciones.

DESARROLLO



Seleccione el microprocesador a utilizar para esta práctica, sustentando las razones de su elección y desarrollo. 6



Seleccione el software y lenguaje de programación del mismo.



Desarrolle el código de programación para que el microprocesador pueda ser usado como interface Desarrolle el instrumento virtual en Labview



Genere las pruebas necesarias para la obtención satisfactoria de la práctica.







Desarrolle un escrito de las problemáticas encontradas en el desarrollo de la misma y sus respectivas soluciones. Genere sus conclusiones tomando en cuenta los puntos anteriores.

MATERIAL



Labview Servo Motor hs422



Transistor 2n2222



1 MOC



2 Resistencias de 1KΩ



Resistencia de 333Ω



Arduino



PROCEDIMIENTO

Para poder cumplir nuestro objetivo utilizamos el microprocesador Atmega328, que tiene incluido el Arduino, elegimos utilizar el arduino por la facilidad y flexibilidad de comunicar arduino con el servomotor con sus librerías así como el manejo de PWM y los periféricos necesarios para nuestra aplicación. Descargando el Software Arduino, de la página oficial de Arduino http://www.arduino.cc/ y solo tuvimos que descargar un complemento para la comunicación de Labview y el programa Arduino. La interfaz Arduino Uno es una plataforma de desarrollo de computación física y está compuesta por una placa con un microcontrolador y con una circuitería que ayudan a tener un control de los valores de entradas y salidas. Con Arduino Uno se pueden configurar las entradas y salidas, ya sean analógicas o digitales, de tal manera que se logren obtener los valores más convenientes, según se requiera. Una característica de Arduino Uno es que se puede energizar a través de la conexión USB o conectando una fuente externa. En esta práctica energizaremos el microcontrolador a través de la conexión USB, ya que contamos con el uso de una computadora.

7

El software que se utilizó en esta práctica es LABVIEW en combinación con Arduino y el lenguaje de programación, con el cual se programó el microcontrolador, es lenguaje C. En el entorno de Labview desarrollamos una VI) para controlar un servo motor, en este caso utilizamos un arduino para facilitar la comunicación. Para lograr la comunicación de Labview con el arduino bajamos un tool kit desde la página de National Instruments. Con ayuda de los comandos explicados en la práctica pasada se logró de nuevo la comunicación correcta del servo con el arduino y estos a su vez con el entorno de Labview. La codificación realizada con el arduino para el funcionamiento del servo se muestra a continuación. /************************************************************ ********************* ** ** LVFA_Firmware - Provides Basic Arduino Sketch For Interfacing With LabVIEW. ** ** Written By: Sam Kristoff - National Instruments ** Written On: November 2010 ** Last Updated: Dec 2011 - Kevin Fort - National Instruments ** ** This File May Be Modified And Re-Distributed Freely. Original File Content ** Written By Sam Kristoff And Available At www.ni.com/arduino. **

8

************************************************************* ********************/ /************************************************************ ********************* ** ** Includes. ** ************************************************************* *******************/ // Standard includes. These should always be included. #include #include #include #include "LabVIEWInterface.h" /************************************************************ ********************* ** setup() ** ** Initialize the Arduino and setup serial communication. ** ** Input: None ** Output: None **************************************************************** *****************/ void setup() { // Initialize Serial Port With The Default Baud Rate syncLV(); // Place your custom setup code here } /************************************************************ ********************* ** loop() ** ** The main loop. This loop runs continuously on the Arduino. It ** receives and processes serial commands from LabVIEW. ** ** Input: None ** Output: None ************************************************************* ********************/ void loop() { // Check for commands from LabVIEW and process them. checkForCommand(); // Place your custom loop code here (this may slow down communication with LabVIEW) if(acqMode==1) { sampleContinously(); }

9

}

Para la implementación del VI, en el panel frontal se colocó un indicador, el cual muestra la velocidad a la cual queremos que gire la flecha del motor, la dirección en que girará la flecha, así como el ángulo a girar, un botón de stop, que detendrá nuestro programa y por ultimo un cuadro de texto el cual nos dirá si se cumplió alguna condición. En el diagrama de bloques del VI se configuró al Arduino para que se conecte con la computadora en el puerto USB 5 y solo conectamos un servomotor en el pin 2 de Arduino. La parte del diagrama de bloques que se localiza dentro de un ciclo While se seguirá ejecutando las veces que se desee hasta que se indique la detención del programa. Para que el programa completo se ejecute, deberá cumplir con las condiciones localizadas en los Case Structure. Si esto no se cumple, el programa no se ejecutará. El While Loop se utilizó para que el programa se repita indefinidamente hasta que se oprima el botón STOP o hasta que se detecte algún error. El ángulo del servomotor será leído para ver en qué posición se encuentra; dicho valor entrará a un caso dependiendo de la dirección del servomotor. Si el servomotor gira hacia adelante, comenzará desde 0° hasta el ángulo al cual se desea llegar y si se cambia la dirección del servomotor, siempre regresará a la posición de 0°, independientemente de la localización en que se encuentre. Cuando el servomotor gire hasta llegar a la posición deseada, se detendrá. La velocidad a la cual gira el servomotor se controla a través de los incrementos en el ángulo hasta llegar al ángulo deseado o a través de decrementos en el ángulo hasta llegar a 0°. Debido a esto, 10

existen casos en los que el ángulo difiere del valor indicado. En caso de que exista algún error, el programa no realizará ninguna función y, automáticamente, finalizará.

11

Como resultado pudimos obtener el funcionamiento del servo así como la retro alimentación de este para poder ubicarlo en el espacio en cualquier comento deseado.

Para poder obtener una respuesta en el momento metimos el valor de un Ángulo en el indicador correspondiente para poder observar mejor, asi como se indicó la velocidad a la cual queríamos que trabajará nuestro motor. 12

El servomotor se conectó a Vcc (+5 VCD), GND y al pin 2 de la comunicación digital. Se realizaron distintas pruebas, las cuales nos indicaron que el servomotor se movía hacia la posición deseada con la velocidad deseada; el movimiento se realiza lenta o rápidamente hasta llegar al ángulo deseado. Al activar el booleano la dirección cambió y, al llegar a la posición deseada, el servomotor regresaba a 0°, donde también se ve afectado por la velocidad. El programa se basa con el retardo, por lo cual, a menor velocidad, mayor tiempo de giro y viceversa.

CONCLUSIÓN Es fundamental controlar la velocidad en cualquier proceso, poder acelerar la velocidad de un motor o de un accionador mecánico puede significar aumentar la productividad en una empresa, o caso contrario, para una proceso que es muy delicado y crítico, es necesario a veces tener un movimiento más suave y preciso, lo que implica no tener una velocidad tan alta, es por ende que controlar la velocidad de este servomotor es importante. Se pudo comprobar con éxito el funcionamiento de nuestra programación, de nuestra VI y de la comunicación con el servo gracias al arduino ya que pudimos ver en tiempo real la comunicación de estos. El control del servo fue bastante suave ya que al momento de moverle en la VI el servo se movía automáticamente y se ubicaba en la posición que nosotros le indicábamos dentro del programa. Se notaba el cambio de la velocidad dependiendo de la cual nosotros la colocáramos en nuestro panel frontal y el movimiento al ángulo que deseábamos también se cumplía con éxito y variando su velocidad.

BIBLIOGRAFÍA https://es.wikipedia.org/wiki/Servomotor http://www.info-ab.uclm.es/labelec/solar/electronica/elementos/servomotor.htm http://www.monografias.com/trabajos60/servo-motores/servo-motores.shtml http://www.control-systems-principles.co.uk/whitepapers/spanishwp/02ServoPaper2SP.pdf  http://www.arduino.cc/en/Main/ArduinoBoardUno

13

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF