Teoria de Control

November 16, 2023 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Teoria de Control...

Description

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN Y ELECTRÓNICA ÁREA TÉCNICA “ELECTRÓNICA Y TELECOMUNICACIONES” INTEGRANTES: Carol Villavicencio, Karol Quezada, Joffre Ríos DOCENTE RESPONSABLE: Ing. Carlos Calderón Córdova. COMPONENTE: Teoría de Control Automático. Tema •

Control automático de un prototipo gimbal.

Objetivo General: •

Desarrollo de un sistema hardware-software para censar y controlar la estabilidad de la plataforma del gimbal.

Objetivos Específicos: • •

Desarrollo de un prototipo que controle a través de sensores y servomotores una exacta estabilización de la plataforma a través de sensores y servomotores. Manipular los ángulos de los servos para tener una mayor exactitud en el movimiento del gimbal.

Introducción Te ha pasado que al tomar o grabar un video tu mano está en constante movimiento y hace que el video salgo temblándose, o que por lo general la foto salga un poco borrosa porque tu mano se sacudía. Gimbal es la solución a este problema que la mayoría de personas tiene pero que en ocasiones más formales como a los fotógrafos o los amantes de los videos les ocurre muy a menudo. Tal vez esta palabra les suene conocida en especial si eres amante a los drones o a la fotografía les parezca un término más común. Un gimbal es una plataforma motorizada y controlada mediante una placa con varios sensores, generalmente acelerómetros, giroscopios y compás magnético que se encarga mediante el uso de algoritmos de control y PIDs de mantener un objeto, normalmente una cámara estabilizada, de modo que independientemente del movimiento que realice el portador de la misma, ésta quede estable permitiendo tomar buenas capturas. [1] En la actualidad hay muchos tipos de gimbal disponibles. De distintos tamaños y formatos. Principalmente porque hay algunos modelos que están pensados para ser usados con un smartphone, mientras que otros son para usarse con cámaras para rodar cine o para un drone. También son compatibles con cámaras como la GoPro. Podéis ver que tienen muchos usos posibles. Por lo que en función del dispositivo que se vaya a usar, el tamaño y formato del gimbal en cuestión es diferente.[2] El coste de esta tecnología ha sufrido un abaratamiento y miniaturización muy importantes, para ser fácilmente portados en drones y siendo rápidamente adaptables a casi todo tipo de cámaras de acción (gopro) o fotografía.[1] sin embargo los gimbals de menor costo solo se encuentran de dos ejes y no son muy precisos, un gimbal semiprfesional tiene un precio mínimo de 150 dólares a uno profesional que esta de 300 a 400 dólares.

El siguiente proyecto se basa en crear un prototipo gimbal y controlarlo mediante sensores y servomotores, se utilizará acelerómetros, giroscopios y manómetros que serán controlados a través de un arduino generando que los ángulos sean correctos y precisos para que la persona pueda manipular el prototipo de una manera rápida y confiada, realizaremos varios cálculos para obtener la mejor eficiencia y eficacia en el siguiente prototipo, teniendo como modelo los gimbals que están en el mercado.

Planteamiento Haremos una plataforma de estabilización de camara simple o un cardán de bricolaje (gimbal) basado en la orientación de la MPO 6050 en sus puntos de vista del acelerómetro y los datos del giroscopio controlaremos 3 servo motores que mantendrán el nivel de plataforma. Materiales •

• • •

MPU 6050 procesador de movimiento digital 6 ejes  MC5883L manómetro 3 ejes  ADXL345 acelerómetro 3 ejes  L3G4200D giroscopio 3 ejes  BNO055 sensor 9 ejes Arduino NANO 3 Servo motores Base de prototipo Gimbal.

Componentes del circuito •

MPO 6050 procesador de movimiento digital 6 ejes Dispositivo de control de movimiento MPU-6050, 6 ejes, InvenSense El procesador de movimiento I2C de 6 ejes MPU-6050™ con sensor inteligente de InvenSense incorpora un giroscopio de tres ejes y un acelerómetro de tres ejes, junto con un procesador de movimiento digital (DMP), todo en un único sistema en chip. El dispositivo de control de movimiento MEMS cuenta con un giroscopio y un acelerómetro programables, diseñados para un control preciso de movimiento rápido y lento. La unidad de control de movimiento MPU-6050 incorpora algoritmos MotionFusion con acceso también a los sensores externos y magnetómetros mediante el bus I2C maestro auxiliar. Las aplicaciones MPU-6050 incluyen sensores portátiles, tablets y smartphones. La plataforma MotionAppsTM de InvenSense extraerá todos los movimientos asociados y descargará la gestión del sensor del sistema operativo para proporcionar una interfaz de programa de aplicación (API).  Compatible con comunicaciones I2C: hasta 400 kHz  Giroscopio programable por el usuario de escala completa en un rango de ±250, ±500, ±1.000y ±2.000°/s (dps)  Acelerómetro programable por el usuario de escala completa en un rango de ±2 g, ±4 g, ±8 g y ±16 g  Plataforma MotionApps™ compatible con Android, Linux y Window  Dimensiones: 4 mm x 4 mm x 0,9 mm (encapsulado QFN) VLOGIC/VDD: 1,8 V ± 5%  Corriente de funcionamiento del giroscopio y del acelerómetro: 3,8 mA

 Conformidad con RoHS/WEEE  Corriente de alimentación en modo de reposo de chip completo: 5 μA  Unidades de medida inerciales (IMU), Invensense[3] •

Arduino NANO El Arduino Nano es un tablero pequeño, completo y fácil de usar basado en el ATmega328P (Arduino Nano 3.x). Tiene más o menos la misma funcionalidad del Arduino Duemilanove, pero en un paquete diferente. Solo le falta un conector de alimentación de CC y funciona con un cable USB Mini-B en lugar de uno estándar. [4]



3 Servo Motores Servomotor TowerPro MG995 con alto Torque, hasta 15Kg-cm. Robusto, alto rendimiento, compacto, con engranes de Metal, tamaño estándar, incluye accesorios y tornillos para montarlo en cualquier proyecto. [5]

Ideal para proyectos de Electrónica, Robótica... etc.            

Product Model: MG995 Product Size: 40.7 * 19.7 * 42.9mm Product weight: 55g Operating torque: 15KG/cm Reaction speed: 53-62R / M Operating Temperature: -30 ~ +60 ° Deadband settings: 4 microseconds Plug Type: JR, FUTABA General Rotation angle: A maximum of 180 degrees Servo: Servo Operating current: 100mA Using the voltage: 3-7.2V Materials of Construction: Copper metal teeth, coreless motor, double ball bearing  No load operating speed: 0.17 seconds / 60 degrees (4.8V); 0.13 seconds / 60 degrees (6.0V)

DIAGRAMA

+

Setpoint

-

Controlador

Sensor

Actuador

Proceso

+

Angulo de Giro

-

Arduino

Servomotores

Procesador de movimiento digital

Sensor BNO055 En el siguiente diagrama tenemos una variable de setpoint la cual queremos regular que es el ángulo de giro que seguiremos el siguiente proceso: como el controlador de nuestro prototipo tenemos un Arduino UNO, el cual se encargara de controlar los 3 servos motores que serán los actuadores de nuestro prototipo, el proceso estará controlado por un procesador de movimiento digital que tendrá perturbaciones rápidas de giros, el sensor que utilizaremos es un BNO055 en el cual estarán presentes un acelerómetro, manómetro y un giroscopio que nos ayudaran a regular los giros de la gimbal. Controlador El MPU6050 IMU tiene acelerómetro de 3 ejes y giroscopio de 3 ejes integrados en un solo chip. El giroscopio mide la velocidad de rotación o la velocidad de cambio de la posición angular a lo largo del tiempo, a lo largo de los ejes X, Y y Z. Utiliza la tecnología MEMS y el efecto Coriolis para la medición, pero para más detalles, puede consultar mi tutorial particular de cómo funcionan los sensores MEMS . Las salidas del giroscopio están en grados por segundo, por lo que para obtener la posición angular solo necesitamos integrar la velocidad angular. [6]

Por otro lado, el acelerómetro MPU6050 mide la aceleración de la misma manera que se explicó en el video anterior para el sensor del acelerómetro ADXL345. Brevemente, puede medir la aceleración gravitacional a lo largo de los 3 ejes y, mediante algunos cálculos de trigonometría, podemos calcular el ángulo en el que se coloca el sensor. Por lo tanto, si fusionamos o combinamos los datos del acelerómetro y el giroscopio, podemos obtener información muy precisa sobre la orientación del sensor. [7]

La IMU MPU6050 también se denomina dispositivo de seguimiento de movimiento de seis ejes o dispositivo de 6 DoF (seis grados de libertad), debido a sus 6 salidas, o las 3 salidas del acelerómetro y las 3 salidas del giroscopio.

Arduino y MPU6050 Veamos cómo podemos conectar y leer los datos del sensor MPU6050 utilizando el Arduino. Estamos utilizando el protocolo I2C para la comunicación con el Arduino, por lo que necesitamos solo dos cables para conectarlo, más los dos cables para la alimentación.

Código Arduino MPU6050 Aquí está el código Arduino para leer los datos del sensor MPU6050. Debajo del código puedes encontrar una descripción detallada del mismo.

1. #include 2. 3. const int MPU = 0x68 ; // MPU6050 dirección I2C 4. flotar AccX, AccY, AccZ; 5. flotar GyroX, GyroY, GyroZ; 6. flotar accAngleX, accAngleY, gyroAngleX, gyroAngleY, gyroAngleZ; 7. rollo de flotación , inclinación, desvío 8. flotar AccErrorX, AccErrorY, GyroErrorX, GyroErrorY, GyroErrorZ; 9. float elapsedTime, currentTime, previousTime; 10. int c = 0 ; 11. 12. configuración vacía ( ) { 13. De serie. comienzo ( 19200 ) ; 14. Cable. comenzar ( ) ; // Inicializar comunicación 15. Cable. beginTransmission ( MPU ) ; // Iniciar la comunicación con MPU6050 // MPU = 0x68 16. Cable. escribir ( 0x6B ) ; // Habla con el registro 6B 17. Cable. escribir ( 0x00 ) ; // Restablecer - coloca un 0 en el registro 6B 18. Cable. endTransmission ( true ) ; // terminar la transmisión

19. / * 20. // Configurar la sensibilidad del acelerómetro - Rango de escala completa (valor predeterminado +/- 2g) 21. Wire.beginTransmission (MPU); 22. Wire.write (0x1C); // Habla con el registro ACCEL_CONFIG (1C hex) 23. Wire.write (0x10); // Establecer los bits de registro como 00010000 (+/- 8g rango de escala completa) 24. Wire.endTransmission (true); 25. // Configure Gyro Sensitivity - Full Scale Range (valor predeterminado +/- 250deg / s) 26. Wire.beginTransmission (MPU); 27. Wire.write (0x1B); // Habla con el registro GYRO_CONFIG (1B hex) 28. Wire.write (0x10); // Establezca los bits de registro como 00010000 (escala de 1000deg / s) 29. Wire.endTransmission (true); 30. retraso (20); 31. * / 32. // Llame a esta función si necesita obtener los valores de error de IMU para su módulo 33. calcular_IMU_error ( ) ; 34. retraso ( 20 ) ; 35. 36. } 37. 38. bucle de vacío ( ) { 39. // === Leer datos del acelerador === // 40. Cable. beginTransmission ( MPU ) ; 41. Cable. escribir ( 0x3B ) ; // Comenzar con el registro 0x3B (ACCEL_XOUT_H) 42. Cable. endTransmission ( false ) ; 43. Cable. requestFrom ( MPU, 6 , true ) ; // Leer 6 registros en total, cada valor de eje se almacena en 2

registros 44. // Para un rango de + -2g, necesitamos dividir los valores sin procesar por 16384, de acuerdo con la hoja de datos 45. AccX = ( . Wire leer ( )
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF