Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en...

175
John Alexander Montoya Osorio Javier Rico Azagra y Montserrat Gil Martínez Escuela Técnica Superior de Ingeniería Industrial Grado en Ingeniería Eléctrica 2015-2016 Título Director/es Facultad Titulación Departamento TRABAJO FIN DE GRADO Curso Académico Diseño y desarrollo de un gimbal con motores brushless Autor/es

Transcript of Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en...

Page 1: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

John Alexander Montoya Osorio

Javier Rico Azagra y Montserrat Gil Martínez

Escuela Técnica Superior de Ingeniería Industrial

Grado en Ingeniería Eléctrica

2015-2016

Título

Director/es

Facultad

Titulación

Departamento

TRABAJO FIN DE GRADO

Curso Académico

Diseño y desarrollo de un gimbal con motores brushless

Autor/es

Page 2: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

© El autor© Universidad de La Rioja, Servicio de Publicaciones,

publicaciones.unirioja.esE-mail: [email protected]

Diseño y desarrollo de un gimbal con motores brushless, trabajo fin de gradode John Alexander Montoya Osorio, dirigido por Javier Rico Azagra y Montserrat Gil

Martínez (publicado por la Universidad de La Rioja), se difunde bajo una LicenciaCreative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported.

Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a los titulares del copyright.

Page 3: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INDUSTRIAL

TRABAJO DE FIN DE GRADO

TITULACIÓN: Grado en Ingeniería Electrónica Industrial y Automática

CURSO: 2015/2016 CONVOCATORIA: JULIO

TÍTULO:

Diseño y desarrollo de un gimbal con motores brushless

AUTOR: John Alexander Montoya Osorio

DIRECTOR/ES: Javier Rico Azagra

Montserrat Gil Martinez

DEPARTAMENTO: Ingeniería Eléctrica

Page 4: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless

ALUMNO: ALEXANDER MONTOYA OSORIO DIRECTORES DE PROYECTO: JAVIER RICO AZAGRA Y MONTSERRAT GIL MARTINEZ CURSO 2015 – 2016

UNIVERSIDAD DE LA RIOJA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA

Page 5: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Resumen El principal objetivo de este proyecto fue desarrollar un gimbal de dos ejes controlado mediante un procesador de arquitectura ARM y en base a medidas tomadas desde acelerómetros y giroscopios. Un gimbal es un sistema de estabilización para cámaras el cual implementa motores eléctricos para corregir movimientos no deseados. El objetivo es realizar tomas de video estables, aunque conseguir esto supone un primer reto. “Bruhsless“ hace referencia a los motores sin escobillas los cuales se explican mas adelante. El resto de proyectos sobre la elaboración de gimbales encontrados, usaban tarjetas ya construidas para el control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema gimbal a un nivel mas profundo. La idea que se persigue es construir un sistema de control para un gimbal sin este tipo de tarjetas comerciales.

Page 6: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Abstract Our goal with this Project was to create a 2 axis brushless gimbal controlled solely by an ARM microprocessor with input from an accelerometer/gyro. A gimbal is a camera stabilization system than uses motors to correct unwanted camera motion. The goal is to create perfectly steady footage, although smoothing out any bumps is a reasonable first benchmark. “Brushless” refers to brushless motor which we will explain more about later. All the other gimbal projects we found are controlled using fabricated gimbal control boards so we wanted to approach the project from a more fundamental level. Our hope was to create brushless gimbal control without this kind of board, but rather using an ARM microcontroller.

Page 7: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless

INDICE GENERAL

ALUMNO: ALEXANDER MONTOYA OSORIO DIRECTORES DE PROYECTO: JAVIER RICO AZAGRA Y MONTSERRAT GIL MARTÍNEZ CURSO 2015 – 2016 UNIVERSIDAD DE LA RIOJA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA

Page 8: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Indice general

Alexander Montoya Osorio 2 Universidad de la Rioja

ÍNDICE GENERAL

Contenido

INDICE GENERAL ........................................................................................................... 3

MEMORIA ....................................................................................................................... 7

1. INTRODUCCIÓN ........................................................................................................ 9

1.1. ANTECEDENTES .......................................................................................................... 9

1.2. OBJETIVOS Y ALCANCE .............................................................................................10

1.3. OBJETIVOS ESPECÍFICOS ...........................................................................................11

1.4. METODOLOGÍA Y PLAN DE TRABAJO ........................................................................12

1.5. ORGANIZACIÓN DEL DOCUMENTO ...........................................................................14

2. DESCRIPCIÓN DEL SISTEMA .................................................................................. 15

2.1. FUNDAMENTOS .........................................................................................................15

2.2. MATERIALES ..............................................................................................................18

3. SISTEMA DE COMUNICACIONES ............................................................................ 19

3.1. PROTOCOLO DE COMUNICACIÓN I2C ......................................................................19

3.2. TRANSFERENCIA DE DATOS A TRAVÉS DEL BUS I2C ..............................................20

3.3. CONDICIÓN DE INICIO Y PARADA (START/STOP) ..............................................23

3.4. PAQUETE DE DIRECCIÓN ...........................................................................................23

3.5. ESCRITURA EN UN DISPOSITIVO ESCLAVO ...............................................................24

3.6. LECTURA DESDE UN DISPOSITIVO ESCLAVO ............................................................25

4. SISTEMA DE ESTIMACIÓN DE ACTITUD ................................................................. 26

4.1. FUNDAMENTOS PARA LA ESTIMACIÓN DE ACTITUD ...............................................26

4.1.1. ÁNGULOS DE EULER .........................................................................................26

4.1.2. CUATERNIOS ......................................................................................................29

4.2. SENSORES INERCIALES DE BAJO COSTE ...................................................................31

4.2.1. GIROSCOPIOS .....................................................................................................32

4.2.2. ACELERÓMETROS..............................................................................................33

4.3. TRATAMIENTO DE DATOS .........................................................................................34

4.3.1. ESTIMACIÓN DE ACTITUD CON ACELERÓMETRO ...........................................34

Page 9: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Indice general

Alexander Montoya Osorio 3 Universidad de la Rioja

4.3.2. ESTIMACIÓN CON GIROSCOPIO .........................................................................39

4.4. ESTIMADOR POR FUSIÓN SENSORIAL ......................................................................43

4.4.1. ESTIMACIÓN CON FILTRO COMPLEMENTARIO ................................................43

4.4.2. ESTIMACIÓN CON FILTRO MADWICK ...............................................................45

5. SISTEMA DE EXCITACIÓN PARA MOTORES BRUSHLESS ........................................ 47

5.1. MOTORES BRUSHLEES ..............................................................................................47

5.1.1. PARTES DE UN BLDC .......................................................................................48

5.1.2. PRINCIPIO DE FUNCIONAMIENTO Y CONTROL ................................................49

5.1.3. DRIVER DE CONTROL ........................................................................................51

5.2. TÉCNICAS DE CONMUTACIÓN PARA BLDC .............................................................52

5.2.1. TÉCNICA DE SEIS PASOS O SIXSTEP. CONMUTACIÓN TRAPEZOIDAL .............53

5.2.2. SPWM. SINUSOIDAL PULSE WIDTH MODULATION ...........................................57

5.2.3. CURVA DE PAR OBTENIDA EN FUNCIÓN DEL MÉTODO DE CONMUTACIÓN ...61

6. SISTEMA DE CONTROL .......................................................................................... 63

6.1. ESTIMACIÓN DE LA FUNCIÓN DE TRANSFERENCIA .................................................65

6.2. EXPERIMENTO EN LAZO CERRADO MEDIANTE ENCODER INCREMENTAL .............65

6.3. EXPERIMENTO EN LAZO CERRADO MEDIANTE UNIDAD INERCIAL DE MEDIDA ....68

6.4. COMPARACIÓN ENTRE PLANTAS ..............................................................................70

6.5. DISEÑO DEL CONTROLADOR.....................................................................................72

7. DESCRIPCIÓN DEL HARDWARE EMPLEADO .......................................................... 74

7.1. TARJETA DE DESARROLLO ........................................................................................74

7.2. IMU (MPU-6050) .................................................................................................76

7.3. INVERSOR L6234 .....................................................................................................78

7.4. MOTOR GIMBAL .........................................................................................................78

7.5. PCB ..............................................................................................................................78

8. CONCLUSIONES ..................................................................................................... 80

ANEXOS ......................................................................................................................... 81

1. LIBRERIAS E IMPLEMENTACION DEL SOFTWARE8ERROR! BOOKMARK NOT

DEFINED.

1.1. LIBRERÍA TIMER ........................................... 8ERROR! BOOKMARK NOT DEFINED.

1.2. LIBRERÍA I2C ................................................ 8ERROR! BOOKMARK NOT DEFINED.

1.3. LIBRERÍA PWM E IMPLEMENTACION DEL SPWM8ERROR! BOOKMARK NOT

DEFINED.

1.4. LIBRERÍA PLL .............................................. 8ERROR! BOOKMARK NOT DEFINED.

casadelocos
Sello
casadelocos
Sello
casadelocos
Sello
casadelocos
Sello
casadelocos
Sello
casadelocos
Sello
casadelocos
Sello
casadelocos
Sello
casadelocos
Sello
casadelocos
Sello
casadelocos
Sello
Page 10: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Indice general

Alexander Montoya Osorio 4 Universidad de la Rioja

1.5. PROGRAMA PRINCIPAL. ............................... 8ERROR! BOOKMARK NOT DEFINED.

2. CODIGO ................................................................ ERROR! BOOKMARK NOT DEFINED.

2.1. FICHERO PWM.H ........................................... ERROR! BOOKMARK NOT DEFINED.

2.2. CODIGO TIMERS ........................................... ERROR! BOOKMARK NOT DEFINED.

2.3. CODIGO I2C ..................................................... ERROR! BOOKMARK NOT DEFINED.

2.4. CODIGO PRINCIPAL .......................................... ERROR! BOOKMARK NOT DEFINED.

2.5. CODIGO PLL .................................................... ERROR! BOOKMARK NOT DEFINED.

PLANOS ..................................................................................................................... 117

1. PLANO NUMERO UNO. ESQUEMA ELÉCTRICO .................................................... 119

2. PLANO NUMERO DOS. CAPA INFERIOR DEL PCB .............................................. 120

3. PLANO NUMERO TRES. CAPA SUPERIOR DEL PCB ............................................ 121

4. PLANO NUMERO CUATRO. UBICACIÓN DE LOS COMPONENTES ......................... 122

PLIEGO DE CONDICIONES ...................................................................................... 123

1. DISPOSICIONES GENERALES .............................................................................. 125

1.1. OBJETO .................................................................................................................... 125

1.2. PROPIEDAD INTELECTUAL .................................................................................... 125

1.3. CONDICIONES GENERALES ..................................................................................... 126

1.4. NORMAS LEYES Y REGLAMENTOS ......................................................................... 126

2. DEFINICIÓN Y ALCANCE ..................................................................................... 128

2.1. OBJETO DEL PLIEGO DE CONDICIONES ................................................................. 128

2.2. DOCUMENTOS QUE DEFINEN EL PROYECTO ......................................................... 128

2.3. COMPATIBILIDAD ENTRE DOCUMENTOS .............................................................. 129

3. ESPECIFICACIÓN TÉCNICA DE LOS COMPONENTES ............................................ 130

3.1. PCB ......................................................................................................................... 130

3.2. TARJETA ........................................................... ERROR! BOOKMARK NOT DEFINED.

3.3. REGULADOR ..................................................... ERROR! BOOKMARK NOT DEFINED.

3.4. L6432 .......................................................... ERROR! BOOKMARK NOT DEFINED.5

3.5. IMU ......................................................................................................................... 136

casadelocos
Sello
casadelocos
Sello
casadelocos
Sello
casadelocos
Sello
Page 11: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Indice general

Alexander Montoya Osorio 5 Universidad de la Rioja

3.6. MOTORES ................................................................................................................ 137

4. CONEXIÓN DE LOS COMPONENTES CON LA TARJETA .......................................... 138

5. CALIBRACIÓN Y MODIFICACIÓN DE PARÁMETROS SOFTWARE ......................... 139

6. CONDICIONES / ESPECIFICACIONES DE OPERACIÓN ......................................... 143

7. CONDICIONES ECONÓMICAS .............................................................................. 144

7.1. ERRORES EN EL PROYECTO ......................................................................... 144

7.2. LIQUIDACIÓN ..................................................................................................... 144

7.3. DISPOSICIÓN ...................................................................................................... 145

ESTADO DE LAS MEDICIONES ............................................................................... 146

1. ESTADO DE LAS MEDICIONES ............................................................................. 148

1.1. MÓDULOS ELECTRÓNICOS: .................................................................................... 148

1.2. ELEMENTOS MECANICOS: ...................................................................................... 149

1.3. PCB: ........................................................................................................................ 149

1.4. CABLEADO: ............................................................................................................. 150

1.5. RECURSOS HUMANOS:............................................................................................ 150

PRESUPUESTO ......................................................................................................... 151

1. PRESUPUESTO ............................................... 15ERROR! BOOKMARK NOT DEFINED.

2. CUADRO DE PRECIOS ..................................... 15ERROR! BOOKMARK NOT DEFINED.

3. DESGLOSE DEL PRESUPUESTO EN SUBAPARTADOS15ERROR! BOOKMARK NOT

DEFINED.

4. PRESUPUESTO GLOBAL ................................. 15ERROR! BOOKMARK NOT DEFINED.

casadelocos
Sello
casadelocos
Sello
Page 12: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless

Memoria

ALUMNO: ALEXANDER MONTOYA OSORIO DIRECTORES DE PROYECTO: JAVIER RICO AZAGRA Y MONTSERRAT GIL MARTINEZ CURSO 2015 – 2016 UNIVERSIDAD DE LA RIOJA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA

Page 13: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 2 Universidad de la Rioja

ÍNDICE DE LA MEMORIA

1. NTRODUCCIÓN ......................................................................................................... 4

1.1. ANTECEDENTES .......................................................................................................... 4

1.2. OBJETIVOS Y ALCANCE ............................................................................................... 5

1.3. OBJETIVOS ESPECÍFICOS ............................................................................................. 6

1.4. METODOLOGÍA Y PLAN DE TRABAJO .......................................................................... 7

1.5. ORGANIZACIÓN DEL DOCUMENTO ............................................................................. 9

2. SCRIPCIÓN DEL SISTEMA ....................................................................................... 10

2.1. FUNDAMENTOS .........................................................................................................10

2.2. MATERIALES ..............................................................................................................12

3. SISTEMA DE COMUNICACIONES ............................................................................ 13

3.1. PROTOCOLO DE COMUNICACIÓN I2C ......................................................................13

3.2. TRANSFERENCIA DE DATOS A TRAVÉS DEL BUS I2C ..............................................14

3.3. CONDICIÓN DE INICIO Y PARADA (START/STOP) ..............................................17

3.4. PAQUETE DE DIRECCIÓN ...........................................................................................17

3.5. ESCRITURA EN UN DISPOSITIVO ESCLAVO ...............................................................18

3.6. LECTURA DESDE UN DISPOSITIVO ESCLAVO ............................................................19

4. SISTEMA DE ESTIMACIÓN DE ACTITUD ................................................................. 21

4.1. FUNDAMENTOS PARA LA ESTIMACIÓN DE ACTITUD ...............................................21

4.1.1. ÁNGULOS DE EULER .........................................................................................21

4.1.2. CUATERNIOS ......................................................................................................24

4.2. SENSORES INERCIALES DE BAJO COSTE ...................................................................26

4.2.1. GIROSCOPIOS .....................................................................................................27

4.2.2. ACELERÓMETROS..............................................................................................28

4.3. TRATAMIENTO DE DATOS .........................................................................................29

4.3.1. ESTIMACIÓN DE ACTITUD CON ACELERÓMETRO ...........................................29

4.3.2. ESTIMACIÓN CON GIROSCOPIO .........................................................................34

4.4. ESTIMADOR POR FUSIÓN SENSORIAL ......................................................................38

4.4.1. ESTIMACIÓN CON FILTRO COMPLEMENTARIO ................................................39

4.4.2. ESTIMACIÓN CON FILTRO MADWICK ...............................................................41

5. SISTEMA DE EXCITACIÓN PARA MOTORES BRUSHLESS ........................................ 43

5.1. MOTORES BRUSHLEES ..............................................................................................43

5.1.1. PARTES DE UN BLDC .......................................................................................44

Page 14: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 3 Universidad de la Rioja

5.1.2. PRINCIPIO DE FUNCIONAMIENTO Y CONTROL ................................................45

5.1.3. DRIVER DE CONTROL ........................................................................................47

5.2. TÉCNICAS DE CONMUTACIÓN PARA BLDC .............................................................48

5.2.1. TÉCNICA DE SEIS PASOS O SIXSTEP. CONMUTACIÓN TRAPEZOIDAL .............49

5.2.2. SPWM. SINUSOIDAL PULSE WIDTH MODULATION ...........................................53

5.2.3. CURVA DE PAR OBTENIDA EN FUNCIÓN DEL MÉTODO DE CONMUTACIÓN ...58

6. SISTEMA DE CONTROL .......................................................................................... 60

6.1. ESTIMACIÓN DE LA FUNCIÓN DE TRANSFERENCIA .................................................62

6.2. EXPERIMENTO EN LAZO CERRADO MEDIANTE ENCODER INCREMENTAL .............62

6.3. EXPERIMENTO EN LAZO CERRADO MEDIANTE UNIDAD INERCIAL DE MEDIDA ....65

6.4. COMPARACIÓN ENTRE PLANTAS ..............................................................................67

6.5. DISEÑO DEL CONTROLADOR.....................................................................................69

7. DESCRIPCIÓN DEL HARDWARE EMPLEADO .......................................................... 71

7.1. TARJETA DE DESARROLLO ........................................................................................71

7.2. IMU (MPU-6050) .................................................................................................73

7.3. INVERSOR L6234 .....................................................................................................74

7.4. MOTOR GIMBAL .........................................................................................................75

7.5. PCB ..............................................................................................................................75

8. CONCLUSIONES ..................................................................................................... 77

Page 15: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 4 Universidad de la Rioja

1. NTRODUCCIÓN

El presente documento titulado “Diseño y desarrollo de un gimbal con motores brushless”, ha sido realizado por el alumno D. John Alexander Montoya Osorio, con el fin de superar el Trabajo Fin de Grado y con él obtener el título de Grado en Ingeniería Electrónica Industrial y Automática por la Universidad de La Rioja. Para la realización del mismo se han seguido las indicaciones de D. Javier Rico Azagra y Dña. Montserrat Gil Martínez, que han actuado como directores del proyecto.

Las áreas científico técnicas en las que se enmarca este trabajo son,

principalmente, el Área de Ingeniería de Sistemas y Automática, y el de Tecnología Electrónica

1.1. ANTECEDENTES

El propósito del proyecto es construir un sistema de estabilización de alta calidad para cámaras de video usando motores brushless, estos dispositivos se conocen comercialmente como Gimbal. Las principales ventajas de usar motores brushless en lugar de otro motor se debe a que un BLDC (Brushless DC motor) carece de engranajes, es fácil de instalar, pesa poco y presenta una dinámica mucho más veloz que otro tipo de motores. Sin embargo para desarrollar un sistema de estas características es necesario implementar algoritmos de conmutación complejos, puesto que un BLDC debe ser electrónicamente conmutado.

Un gimbales un soporte que permite la rotación de un objeto alrededor de un eje. Si se montan tres gimbales de manera que sus ejes formen un sistema ortogonal, este puede ser usado para mantener la orientación de un objeto independientemente de las rotaciones que describa la estructura que soporta el gimbal.

Dentro de las numerosas aplicaciones que se le da actualmente a un gimbal, cabe destacar el gran uso que le ha dado la industria cinematográfica ya que resulta ideal para suprimir la vibración que sufre la cámara durante la grabación de video. Actualmente su coste de producción es bajo debido que los componentes cada vez son más baratos y eficientes.

En la última década se ha popularizado el uso de gimbal sobre todo por el auge de vehículos aéreos no tripulados, este hecho ha promovido el desarrollo de tarjetas controladoras exclusivamente diseñadas para controlar un gimbal que bien puede ser de 2 o 3 ejes. Estos dispositivos se conoce como: BGC (Brushless

Page 16: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 5 Universidad de la Rioja

Gimbal Controller) y están disponibles en el mercado. Todas ellas presentan la misma topología y solo se diferencian en el número de ejes.

A lo largo de este documento se presenta el desarrollo integro de un sistema

gimbal de dos ejes. Las partes en las que se subdivide este proyecto abarcan el diseño tanto a nivel mecánico (estructura) como de la parte de electrónica de potencia y de control.

Para su implementación se ha empleado un microprocesador de

arquitectura Cortex ARM, una unidad inercial de medida o IMU y dos motores brushless.

1.2. OBJETIVOS Y ALCANCE

La conclusión del proyecto que en este documento se propone, implica la aplicación práctica de conceptos y conocimientos adquiridos durante la carrera en diversas de las asignaturas del Grado en Ingeniería Electrónica. En este trabajo se documenta el diseño de un sistema de control de posición para dos motores brushless usando una Unidad Inercial de Medida o IMU por sus siglas en inglés, como sensor. Con el fin de darle una utilidad práctica a este tipo de control se va a diseñar un BGC o Brushless Gimbal Controller haciendo uso de una técnica de conmutación conocida como SPWM (Sinusoidal Pulse Width Modulation). Mediante esta técnica se pretende controlar al BLDC mediante una señal trifásica de la misma manera que se hace con un motor trifásico convencional, sin embargo y debido a que un motor brushless deber ser electrónicamente conmutado, se debe modular una señal sinusoidal mediante señales PWM para excitar cada una de las bobinas del motor. Una de las técnicas de conmutación más habituales para un BLDC se conoce como 6 step o 6 pasos. Sin embargo esta técnica resulta ineficaz e insuficiente para el control de posición basado en motores brushless debido a él rizado en el par de salida y a la poca precisión obtenida.

Por otra parte, la elaboración de un gimbal basado en una unidad inercial de medida supone el desarrollo de una librería en código C que implemente el protocolo de comunicación I2C, ya que el sensor se comunica a través de este Bus. Posteriormente será necesario aplicar un procedimiento de filtrado a las medidas leías para mitigar problemas de ruido y el drift generado por los propios sensores.

La integración de todo el sistema supone la selección de un hardware y

software acorde a los requerimientos del sistema. Para el desarrollo del proyecto será necesario integrar los siguientes elementos: un microprocesador, una unidad inercial de medida, drivers de potencia para la conmutación de los motores, motores, algoritmos de control, algoritmos de conmutación, filtros digitales, modulación de señales, protocolos de comunicación y también implica el diseño de un PCB que lo integre todo en la misma placa. Esta descripción demuestra

Page 17: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 6 Universidad de la Rioja

claramente que para llevar a cabo el proyecto es necesario abarcar un amplio rango de campos y materias para conducirlos hacia un mismo fin.

El propósito final y en la línea de los anteriores párrafos, es el de concluir un

proyecto que implique una aplicación directa y real de los conocimientos que se van recolectando en varios áreas del rama durante el curso de esta carrera.

1.3. OBJETIVOS ESPECÍFICOS

A continuación se describen los objetivos específicos del Trabajo de Fin de Grado.

• Objetivo 1: Desarrollo de un sistema de comunicaciones I2C para que el

microcontrolador genere el protocolo y posibilite la transferencia de

datos entre la CPU y el módulo de sensores a través del bus I2C.

• Objetivo 2: Desarrollo de un sistema de estimación que permita obtener

la actitud y orientación de la cámara a partir de los sensores de bajo

coste integrados en una unidad inercial de medida compuesta por

acelerómetros y giroscopios.

• Objetivo 3: Desarrollo de un sistema de excitación para un motor

brushless que no implemente sensores de tipo Hall.

• Objetivo 4: Desarrollo de un sistema de control de posición para

motores brushless que emplee para la realimentación la información

obtenida mediante los acelerómetros y los giroscopios.

• Objetivo 5: Diseño y construcción de una placa de circuito impreso para

la implementación del diseño en el sistema real. Esta debe contener la

electrónica de potencia, el microcontrolador, las conexiones del bus I2C,

las conexiones para el motor y la alimentación del todo el sistema.

• Objetivo 6: Diseño y construcción de una estructura mecánica sobre la

cual montar todo el sistema.

Page 18: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 7 Universidad de la Rioja

1.4. METODOLOGÍA Y PLAN DE TRABAJO

Se describen las tareas realizadas y orientadas a la consecución de los objetivos específicos del trabajo fin de grado. Dichas tareas representan a las etapas en las que se fue dividendo el proyecto. A continuación se enumeran las tares:

1. Investigación sobre técnicas de conmutación para motores brushless. Durante

esta fase se comprenden los principios físicos en los que se basa el

funcionamiento de un motor brushless, con el fin de encontrar una técnica

que permita la elaboración de un sistema preciso y de alto rendimiento.

2. Implementación de la técnica de conmutación SPWM. Una vez elegida la

técnica a usar, será necesario implementarla dentro del microprocesador.

3. Construcción del primer prototipo.

4. Desarrollo de filtros digitales para el acondicionamiento de las medidas.

5. Implementación de un modelo matemático basado en cuaternios para la

estimación de la orientación.

6. Desarrollo de un sistema de control de posición en lazo cerrado.

7. Ejecución de pruebas reales y análisis de resultados.

8. Construcción del soporte del gimbal.

9. Integración del sistema.

10. Redacción de documentos.

En las siguientes tablas se presenta una distribución temporal de las etapas,

en ellas cada columna representa una semana:

Page 19: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 8 Universidad de la Rioja

Primer semestre del año 2015

AÑO 2015

ENERO FEBRERO MARZO ABRIL MAYO JUNIO

T1

T2

T3

T4

T5

T6 T7 T8 T9 T10

1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

Segundo semestre del año 2015

AÑO 2015

JULIO AGOSTO SETIEMBRE OCTUBRE NOVIEMBRE DICIEMBRE

T1 T2

T3

T4 T5

T6

T7

T8 T9 T10

1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

Page 20: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 9 Universidad de la Rioja

Primer semestre del año 2016

AÑO 2016

ENERO FEBRERO MARZO ABRIL MAYO JUNIO

T1 T2

T3 T4

T5 T6

T7 T8

T9

T10

1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

1.5. ORGANIZACIÓN DEL DOCUMENTO

Page 21: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 10 Universidad de la Rioja

2. SCRIPCIÓN DEL SISTEMA

2.1. FUNDAMENTOS

Un gimbal de dos ejes está compuesto por una estructura mecánica que

Ilustración 2-1. Estrutura del gimbal

alberga dos motores situados de forma que puedan aplicar rotaciones, en

ejes independientes, sobre una estructura en la que se fija la cámara encargada de la captura de imágenes. En la figura 2-1 aparece una representación 3D del gimbal una vez terminado.

El sistema de control que gobierna cada uno de los motores es el encargado

de actuar sobre ellos de forma que la base del gimbal conserve una determinada orientación. En las siguientes figuras se representa el gimbal en dos posiciones diferentes. Véase como en ambos casos el giro combinado de los dos motores produce que la base sobre la que se ubica la cámara se mantenga en una posición fija. De este modo su orientación permanece inalterada pese al movimiento exterior del sistema.

Esta característica es especialmente útil cuando se desea realizar una

captura de imágenes empleando un UAV multirotor , ya que este tipo de equipos deben girar en sobre los ejes x e y para lograr su desplazamiento. Por lo tanto, en ausencia de gimbal los movimientos del UAV producen giros en la cámara, perdiendo el encuadre deseado.

Page 22: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 11 Universidad de la Rioja

Ilustración 2-2. Rotacion del gimbal alrededor el eje del motor 1

Ilustración 2-3. Rotacion del gimbal alrededor el eje del motor 2

Para lograr la compensación de los giros aplicado en la estructura que soporta la cámara, es necesario conocer en todo momento la orientación de la misma con respecto de un sistema de referencias inercial. Para ello se emplean sensores de bajo coste situados en la base del soporte de la cámara. Tradicionalmente se emplean como sensores unidades de medida inercial, por tratarse de equipos de bajo coste con precisión adecuada. No obstante, el empleo de estos sensores de bajo coste repercute en un mayor esfuerzo de diseño, ya que las medidas arrogadas por estos deben ser procesadas para inferir a partir de ellas la orientación de la cámara.

Conocida la posición de la cámara, un sistema de control será el encargado

de determinar cuál es el giro necesario en cada uno de los ejes, y por lo tanto la excitación necesaria en cada uno de los motores. Para lograr el cometido anterior se emplean dos lazos de control SISO, que buscan en todo momento conservar el ángulo en cada uno de los ejes.

Por último, las acciones de control generadas por los dos lazos de control

son traducidas en señales de excitación para los motores BLDC. Es decir, cada una de las señales es procesada dando lugar a una lógica de conmutación de las fases del motor.

Page 23: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 12 Universidad de la Rioja

2.2. MATERIALES

Para el desarrollo del prototipo se han empleado los siguientes elementos principales:

Los materiales usados para este proyecto se enumeran a continuación: 1. Tarjeta de desarrollo 2. Acelerómetros y giroscopios (IMU) 3. 2 motores brushless 4. Estructura de aluminio 5. Batería 6. Regulador de tensión 5 V 7. PCB 8. Componentes eléctricos pasivos

En la figura 2-4 se representan un esquema general del sistema en el que se

muestran los principales componentes con el fin de que se pueda intuir el funcionamiento del equipo.

Ilustración 2-4. Componentes del gimbal

Page 24: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 13 Universidad de la Rioja

3. SISTEMA DE COMUNICACIONES

A continuación se detallan todos los aspectos que conciernen al sistema de comunicaciones empleado para establecer un enlace entre el sistema microcontrolador y la unidad de medida inercial (IMU).

Téngase en cuenta que las comunicaciones representan una parte

importante del presente proyecto, dado que los sensores empleados para estimar la orientación son fundamentales para el desempeño del sistema. Las pérdidas de información entre el sensor y el procesador pueden dar lugar a comportamiento erráticos, incluso desestabilizar el sistema, y por lo tanto se consideran inasumibles.

Se ha optado por emplear el protocolo de comunicaciónI2C., conocido

como: Inter-Integrated Circuit. Todos los procesos de lectura de datos desde los diferentes sensores (acelerómetros y giróscopos) se debe llevar a cabo siguiendo este protocolo. La CPU se encarga de consultar periódicamente las medidas de acelerómetros y giroscopios para así estimar la orientación de la base del gimbal.

El bus I2C facilita la comunicación entre microcontroladores, memorias y

otros dispositivos con cierto nivel de "inteligencia", sólo requiere de dos líneas de señal y un común o masa. Fue diseñado a este efecto por Philips y permite el intercambio de información entre muchos dispositivos a una velocidad aceptable, de unos 100 Kbits por segundo, aunque hay casos especiales en los que se alcanzan los 3,4 MHz.

A continuación se muestran los fundamentos de comunicación empleados.

El código desarrollado se ha omitido en la memoria por considerarse demasiado extenso. Sin embargo, en los anexos del documento se incluyen las librerías desarrolladas para establecer la comunicación entre los sensores y la unidad de proceso.

3.1. PROTOCOLO DE COMUNICACIÓN I2C

El uso del bus I2C por numerosas empresas dedicadas a la elaboración de periféricos para microprocesadores han hecho de este bus una de las principales soluciones para la comunicación en sistemas embebidos ya que la mayoría de componentes electrónicos tales como: sensores, ADC’s, drivers para motores eléctricos y otros tipos de dispositivos, ofrecen esta alternativa de comunicación.

La principal característica de I²C es que utiliza dos líneas para transmitir la información: una para los datos y otra para la señal de reloj. También es necesaria una tercera línea, pero esta sólo es la referencia (masa).

Page 25: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 14 Universidad de la Rioja

Descripción de las señales:

• SCL (SystemClock) es la línea de los pulsos de reloj que sincronizan el sistema.

• SDA (System Data) es la línea por la que se mueven los datos entre los

dispositivos.

• GND (Masa) común de la interconexión entre todos los dispositivos

"enganchados" al bus.

Las líneas SDA y SCL para un dispositivo conectado al bus deben ser del tipo drenaje abierto, es decir, un estado similar al de colector abierto, pero asociadas a un transistor de efecto de campo (o FET). Se deben polarizar en estado alto (conectando a la alimentación por medio de resistores "pull-up") lo que define una estructura de bus que permite conectar en paralelo múltiples entradas y salidas.

Ilustración 3-1. Conexión de varios dispositivos al bus I2C

La figura 3-1 es suficientemente autoexplicativa. Las dos líneas del bus están en un nivel lógico alto cuando están inactivas. En principio, el número de dispositivos que se puede conectar al bus no tiene límites, aunque hay que observar que la capacidad máxima sumada de todos los dispositivos no supere los 400 pF. El valor de los resistores de polarización no es muy crítico, y puede ir desde 1K8 (1.800 ohms) a 47K (47.000 ohms). Un valor menor de resistencia incrementa el consumo de los integrados pero disminuye la sensibilidad al ruido y mejora el tiempo de los flancos de subida y bajada de las señales.

3.2. TRANSFERENCIA DE DATOS A TRAVÉS DEL BUS I2C

Habiendo varios dispositivos conectados sobre el bus, es lógico que para establecer una comunicación a través de él se deba respetar un protocolo. Digamos, en primer lugar, lo más importante: existen dispositivos maestros y dispositivos esclavos. Sólo los dispositivos maestros pueden iniciar una comunicación.

Page 26: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 15 Universidad de la Rioja

Ilustración 3-2. Un dispositivo actuando como maestro

Cuando el bus esta libre las dos líneas permanecen en estado alto para

iniciar una comunicación el master debe generar una condición de START. El primer byte que se transmite luego de la condición de inicio contiene siete bits que componen la dirección del dispositivo que se desea seleccionar, y un octavo bit que corresponde a la operación que se quiere realizar con él (lectura o escritura).

Todas las transferencias son de 9 bits, los 8 primeros contienen información

y el último corresponde al bit de ACK o bit de reconocimiento mediante el cual se verifica que la transferencia se ha realizado con éxito o no.

Si el dispositivo cuya dirección corresponde a la que se indica en los siete bits está presente en el bus, éste contesta con un bit en bajo, ubicado inmediatamente luego del octavo bit que ha enviado el dispositivo maestro. Este bit de reconocimiento le indica al dispositivo maestro que el esclavo reconoce la solicitud y está en condiciones de comunicarse. Aquí la comunicación se establece en firme y comienza el intercambio de información entre los dispositivos.

Si el bit de lectura/escritura (R/W) fue puesto en esta comunicación a nivel

lógico bajo (escritura), el dispositivo maestro envía datos al dispositivo esclavo. Esto se mantiene mientras continúe recibiendo señales de reconocimiento, y el contacto concluye cuando se hayan transmitido todos los datos y se genere la condición de STOP. En el caso contrario, cuando el bit de lectura/escritura estaba a nivel lógico alto (lectura), el dispositivo maestro genera pulsos de reloj para que el dispositivo esclavo pueda enviar los datos. Luego de cada byte recibido el dispositivo maestro (quien está recibiendo los datos) genera un pulso de reconocimiento o ACK.

El dispositivo maestro puede dejar libre el bus generando una condición

de parada o STOP. Definición de términos:

• Maestro (Master): Dispositivo que determina los tiempos y la

dirección del tráfico en el bus. Es el único que aplica los pulsos de

reloj en la línea SCL. Cuando se conectan varios dispositivos

maestros a un mismo bus la configuración obtenida se denomina

"multi-maestro".

Page 27: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 16 Universidad de la Rioja

• Esclavo (Slave): Todo dispositivo conectado al bus que no tiene la

capacidad de generar pulsos de reloj. Los dispositivos esclavos

reciben señales de comando y de reloj generados desde el maestro.

• Formato de Datos (Data Format): La transmisión de un dato a

través de este bus consiste de 8 bits de dato (1 byte). A cada byte

transmitido al bus le sigue un noveno pulso de reloj durante el cual

el dispositivo receptor del byte debe generar un pulso de

reconocimiento.

• Bus libre (Bus Free): Estado en el que ambas líneas (SDA y SCL)

están inactivas, presentando un estado lógico alto. Es el único

momento en que un dispositivo maestro puede comenzar a hacer

uso del bus.

• Comienzo (START): Se produce cuando un dispositivo maestro

ocupa el bus, generando la condición. La línea de datos (SDA) toma

un estado bajo mientras que la línea de reloj (SCL) permanece alta

• Parada (Stop): Un dispositivo maestro puede generar esta

condición, dejando libre el bus. La línea de datos y la de reloj toman

un estado lógico alto.

• Dato válido (Valid Data): Situación presente cuando un dato

presente en la línea SDA es estable al tiempo que la línea SCL está a

nivel lógico alto.

• Reconocimiento (Acknowledge): El pulso de reconocimiento,

conocido como ACK (del inglés Acknowledge), se logra colocando la

línea de datos a un nivel lógico bajo durante el transcurso del noveno

pulso de reloj.

• Dirección (Address): Todo dispositivo diseñado para funcionar en

este bus posee su propia y única dirección de acceso, preestablecida

por el fabricante. Hay dispositivos que permiten definir

externamente parte de la dirección de acceso, lo que habilita que se

pueda conectar en un mismo bus un conjunto de dispositivos del

mismo tipo, sin problemas de identificación. La dirección 00 es la

denominada "de acceso general"; a ésta responden todos los

dispositivos conectados al bus.

• Lectura/Escritura (Bit R/W): Cada dispositivo tiene una dirección

de 7 bits. El octavo bit (el menos significativo) que se envía durante

la operación de direccionamiento, completando el byte, indica el tipo

de operación a realizar. Si este bit es alto el dispositivo maestro lee

Page 28: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 17 Universidad de la Rioja

información proveniente de un dispositivo esclavo. Si este bit es

bajo, el dispositivo maestro escribe información en un dispositivo

esclavo.

3.3. CONDICIÓN DE INICIO Y PARADA (START/STOP)

La condición inicial, de bus libre, es cuando ambas señales están en estado lógico alto. En este estado cualquier dispositivo maestro puede ocuparlo, estableciendo la condición de inicio (START). Esta condición se presenta cuando un dispositivo maestro pone en estado bajo la línea de datos (SDA), pero dejando en alto la línea de reloj (SCL). Esta condición se ilustra en la figura 3-3

Ilustración 3-3. Condición de START

Por el contrario, cuando se desea finalizar una transmisión se debe generar

una condición de STOP que consiste en generar un flanco de subida en la linea SDA mientras la línea SCL está a nivel alto.

Ilustración 3-4. Condición de STOP

3.4. PAQUETE DE DIRECCIÓN

Un paquete de dirección consiste en la dirección de un esclavo y la operación de lectura (SLA+R) o escritura (SLA+W) a realizar. El MSB del byte de dirección se transmite primero. De todas las direcciones posibles para un esclavo solo la dirección 0000 000 está reservada para una llamada general que se lleva a cabo cuando el master desea enviar un mensaje a todos los esclavos al mismo tiempo.

Page 29: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 18 Universidad de la Rioja

Ilustración 3-5. Paquete de dirección

Todos los paquetes de direcciones en el bus tienen 9 bits de longitud, de ellos 7 bits codifican una dirección, 1 bit de operación (R/W) y el bit de reconocimiento (acknowledge bit). Si el bit R/W es activado, una operación de lectura se llevara a cabo, de lo contrario se lleva a cabo una operación de escritura (bit a cero). Cuando un esclavo reconoce que ha sido direccionado debería responder poniendo a nivel bajo la línea SDA durante el ciclo de reconocimiento (acknowledge cycle o noveno bit). Si el esclavo direccionado está ocupado o por algún otro motivo no puede atender la llamada del maestro, la línea SDA deberá dejarse a nivel alto en el ACK clock cycle. El master puede entonces transmitir una condición de STOP o REAPETED START (volver a enviar la condición de START) para iniciar de nuevo una transmisión.

3.5. ESCRITURA EN UN DISPOSITIVO ESCLAVO

Habiendo direccionado ya el dispositivo esclavo, lo que debe hacer ahora el maestro es enviar la ubicación interna o número de registro desde el que desea leer o al que va a escribir. La cantidad depende, obviamente, de qué dispositivo es y de cuántos registros internos posee. Algunos dispositivos muy simples no tienen ninguno, pero la mayoría sí los poseen.

Después de una condición START la dirección del esclavo es transmitida. Esta dirección contiene 7 bits seguidos por un octavo bit denominado bit de dirección que nos indica si la transferencia actual es de lectura (bit a 1) o de escritura (bit a 0). Una transferencia es siempre terminada por una condición de STOP generada por el maestro, sin embargo, un maestro puede iniciar una comunicación con otro dispositivo en el bus generando una nueva condición de START y dirigirse a otro esclavo sin la necesidad de generar primero una condición de STOP. La transferencia de datos sigue el formato mostrado en la figura 3-6.

Ilustración 3-6. Transmisión de una trama completa de datos

Page 30: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 19 Universidad de la Rioja

Todas las transacciones requieren ciclo de reloj de reconocimiento

comúnmente conocido como acknowledge bit, generado por el maestro. Durante el ciclo de reconocimiento el transmisor (el cual puede ser el maestro o esclavo) libera la línea SDA. Para reconocer la transacción, el receptor debe poner a nivel bajo la SDA durante el ciclo de acknowledge.

La secuencia de escritura sobre un dispositivo esclavo se puede resumir en los siguientes pasos:

1. Enviar una secuencia de inicio.

2. Enviar la dirección de dispositivo con el bit de lectura/escritura en

bajo.

3. Enviar el número de registro interno en el que se desea escribir.

4. Enviar el byte de dato[Opcionalmente, enviar más bytes de dato].

5. Enviar la secuencia de parada.

En los anexos de este documento aparece el diagrama de flujo en el cual se ilustran las operaciones que deben llevarse a cabo para realizar operaciones de escritura sobre el bus I2C haciendo uso de los registros del microcontrolador TM4C123GLX.

3.6. LECTURA DESDE UN DISPOSITIVO ESCLAVO

Esta operación es algo más complicada, pero no demasiado. Antes de leer datos desde el dispositivo esclavo, primero se le debe informar desde cuál de sus direcciones internas se va a leer. De manera que una lectura desde un dispositivo esclavo en realidad comienza con una operación de escritura en él. Es igual a cuando se desea escribir en él: se envía la secuencia de inicio, la dirección de dispositivo con el bit de lectura/escritura en bajo y el registro interno desde el que se desea leer. Ahora se envía otra secuencia de inicio nuevamente con la dirección de dispositivo, pero esta vez con el bit de lectura/escritura en alto. Luego se leen todos los bytes necesarios y se termina la transacción con una secuencia de parada.

Secuencia de lectura desde un dispositivo esclavo

1. Enviar una secuencia de inicio. 2. Enviar la dirección de dispositivo con el bit de lectura/escritura en

bajo. 3. Enviar la dirección interna del registro. 4. Enviar una secuencia de inicio (inicio reiterado). 5. Enviar la dirección de dispositivo con el bit de lectura/escritura en

alto. 6. Leer un byte de dato. 7. Enviar la secuencia de parada.

Page 31: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 20 Universidad de la Rioja

En los anexos de este documento aparece el diagrama de flujo en el cual se

ilustran las operaciones que deben llevarse a cabo para realizar operaciones de lectura sobre el bus I2C haciendo uso de los registros del microcontrolador TM4C123GLX

Page 32: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 21 Universidad de la Rioja

4. SISTEMA DE ESTIMACIÓN DE ACTITUD

Como se ha descrito en capítulos anteriores, para el desarrollo del gimbal es necesario conocer en todo momento la orientación de la cámara en un sistema de referencia anclado a la base de la estructura. Para ello se emplean sensores inerciales de bajo coste: acelerómetros, giroscopios y magnetómetros. A partir de las medidas de estos sensores se puede estimar con precisión la actitud y orientación con respecto al sistema de referencias inercial.

Esta estimación no es sencilla, prueba de ello son los numerosos trabajos

publicados en la literatura científica en los últimos años. En ellos puede comprobarse como el proceso de estimación no es arbitrario.

El presente capítulo describe el sistema de estimación de actitud y

orientación desarrollado. En él se enuncian los fundamentos teóricos necesarios para entender el problema abordado, se describen los sensores empleados, y se muestran los resultados obtenidos mediante el empleo de diferentes estrategias de estimación.

4.1. FUNDAMENTOS PARA LA ESTIMACIÓN DE ACTITUD

El propósito final del estabilizador de cámara es conservar la actitud de esta en el espacio de un sistema de referencia anclado a la base de la estructura del gimbal. Para mantener esta orientación en necesario disponer de una herramienta matemática que nos permita determinar el la orientación del equipo.

Para representa la orientación existen dos alternativas: usar ángulos de

Euler (pitch, roll y ya) o cuaternios. A continuación se muestra una descripción de estas alternativas, sus ventajas e inconvenientes.

4.1.1. ÁNGULOS DE EULER

Los ángulos de Euler constituyen un conjunto de tres coordenadas angulares que sirven para especificar la orientación de un sistema de referencia de ejes ortogonales, normalmente móvil, respecto a otro sistema de referencia de ejes ortogonales normalmente fijos, usando una combinación de tres rotaciones sobre diferentes ejes. Si todas las rotaciones son escritas en términos de matrices de rotación D, C y B, entonces una rotación general A puede ser descrita como A = BCD

Por convenio se usan distintos ejes de coordenadas para describir la

orientación del sensor incluyendo el sistema de referencia inercial, el marco V1, V2 y el S.R B anclado y alineando con los ejes del sensor. Los ejes del S.R inercial están

Page 33: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 22 Universidad de la Rioja

fijos en tierra y los S.R V1 y V2 se usan por conveniencia cuando se ilustra la secuencia de operación para pasar del S.R inercial hacia el S.R del sensor.

Las rotaciones dadas por los ángulos de Euler (ф,θ,ψ), son:

Ilustración 4-1. Anguos de Euler

Como se muestra en la figura 4-1, el ángulo de yaw representa una rotación

sobre el eje Z alineado con el S.R inercial y el eje X e Y son rotados los grados que indique el ya. El nuevo S.R girado ya grados se llama el S.R V1. La orientación de V1 después de la rotación se muestra en la figura 4-2. El nuevo S.R V1 aparece mostrado en rojo.

Ilustración 4-2. Angulo yaw

𝑹𝑰𝒗𝟏 𝝍 =

𝒄𝒐𝒔(𝝍) 𝒔𝒊𝒏(𝝍) 𝟎−𝒔𝒊𝒏(𝝍) 𝒄𝒐𝒔(𝝍) 𝟎

𝟎 𝟎 𝟏

El pitch representa una rotación sobre el eje Y del S.R V1 un ángulo θ como

se muestra en la figura 4-3. Es importante darse cuenta de que ángulo de pitch no es una rotación sobre el eje y del S.R inercial.

Page 34: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 23 Universidad de la Rioja

Ilustración 4-3. Angulo de pitch

𝑹𝒗𝟏𝒗𝟐 𝜽 =

𝒄𝒐𝒔(𝜽) 𝟎 −𝒔𝒊𝒏(𝜽)𝟎 𝟏 𝟎

𝒔𝒊𝒏(𝜽) 𝟎 𝒄𝒐𝒔(𝜽)

El S.R B es el sistema de coordenadas que está alineado con el sensor. El S.R

B se obtiene a través de una rotación sobre el eje X del S.R V2 el ángulo ф.

Ilustración 4-4. Angulo de roll

𝑹𝒗𝟐𝑩 𝝓 =

𝟏 𝟎 𝟎𝟎 𝒄𝒐𝒔(𝝓) 𝒔𝒊𝒏(𝝓)𝟎 −𝒔𝒊𝒏(𝝓) 𝒄𝒐𝒔(𝝓)

La matriz de rotación que nos traslada de S.R inercial hasta el S.R del objeto

viene dada por :

𝑹𝑰𝑩(𝝓, 𝜽, 𝝍) = 𝑹𝒗𝟐

𝑩 𝝓 𝑹𝒗𝟏𝒗𝟐 𝜽 𝑹𝑰

𝒗𝟏 𝝍 La principal desventaja del empleo de ángulos de Euler como sistema de

representación de orientación es el gimbal lock, o fenómeno de bloqueo de ejes. El gimbal lock ocurre cuando la orientación del sensor no puede ser representada inequívocamente usando ángulos de Euler. La orientación exacta en la cual el gimbal lock ocurre depende del orden de las rotaciones usadas. Si se conserva el

Page 35: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 24 Universidad de la Rioja

orden seguido anteriormente para las rotaciones, el gimbal lock ocurre cuando el ángulo de pitch es de 90º grados. Cuando se produce esta situación, dos de los ejes se alinean y se pierde un grado de libertad para las rotaciones. Este fenómeno se ilustra en las figuras 4-5 y 4-6.

Ilustración 4-5. Ejes desalineados

Ilustración 4-6. Gimbal lock

Este es el principal problema de usar ángulos de Euler para la

representación de la orientación y solo se puede solucionar utilizando un método diferente de representación como pueden ser el de los cuaternios. No obstante equipos que trabajan con giros en pitch inferiores a 90º, pueden emplear este tipo de sistemas de representación.

4.1.2. CUATERNIOS

Los cuaternios proporcionan una técnica alternativa de medida que no sufre

el gimbal lock. Su principal desventaja radica en que son menos intuitivos que los ángulos de Euler y la matemática puede ser más complicada.

Page 36: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 25 Universidad de la Rioja

Un cuaternio es un vector de 4 elementos que puede ser usado para

codificar cualquier rotación en un sistema de coordenadas en 3 dimensiones. Técnicamente un cuaternio está compuesto de un elemento real y tres elementos complejos, y pueden ser usados para mucho más que rotaciones. En este apartado se proporciona la información necesaria para usarlos para representar orientaciones espaciales por lo que se ignoraran los detalles teóricos.

Al contrario que los ángulos de Euler, para estimar la orientación solo se necesitan el S.R inercial y el S.R anclado al cuerpo del sensor.

Vamos a definir el vector qib como el quaternio unitario que codifica la

rotación desde el S.R inercial hasta el S.R anclado al cuerpo que gira:

qib a b c d T

Donde T indica el operador transpuesta. Los elementos b, c y d son la parte

vectorial y puede ser visto como el vector alrededor cual debe ser llevada a cabo la rotación. El elemento a representa la parte escalar y especifica la cantidad de rotación que deber ser llevada a cabo alrededor de la parte vectorial.

Específicamente si θ es el ángulo de rotación y Vx VyVz T

es el vector unitario que

representa el eje de rotación, los elementos del quaternio se definen como :

𝑎 = 𝒄𝒐𝒔 𝟎.𝟓𝜽

𝑏 = 𝑽𝒙𝒔𝒊𝒏(𝟎.𝟓𝜽)

𝑐 = 𝑽𝒚 𝒔𝒊𝒏 𝟎. 𝟓𝜽

𝑑 = 𝑽𝒛 𝒔𝒊𝒏 𝟎. 𝟓𝜽

Rotaciones en 3D con cuaternios El cuaternio anterior puede ser usado para rotar cualesquier vector de tres

elementos desde el sistema de referencia inercial hasta el sistema anclado al sensor o S.R B usando la siguiente operación:

VB = qib

0VI qi

b −1

Esto significa que un vector puedo ser rotado tratándolo como un cuaterno

con parte real igual a cero y multiplicándolo por el cuaternio de orientación y su inversa.

La multiplicación de dos cuaternios se ilustra a continuación:

Page 37: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 26 Universidad de la Rioja

Si

q1 = a1b1c1d1 T

q2 = a2b2c2d2

T El producto de q1q2 viene dado por:

q1q2 =

a1a2 −b1b2

a1b2 +b1a2

−c1c2 −d1d2

+c1d2 −d1c2

a1c2 −b1d2

a1d2 +b1c2

+c1a2 +d1b2

−c1b2 +d1a2

Para rotar un vector desde el S.R del objeto al S.R inercial se requiere

efectuar una multiplicación de dos cuaternios tales como los anteriormente definidos. Alternativamente, el cuaternio de orientación puede ser usado para construir una matriz de rotación de3x3 y llevar a cabo la rotación en una simple operación. La matriz de rotación desde el sistema inercial hasta el sistema del objeto se define como:

𝑹𝒊𝒃 𝒒𝒊

𝒃 = 𝑎2 + 𝑏2 − 𝑐2 − 𝑑2 2𝑏𝑐 − 2𝑎𝑑 2𝑏𝑑 + 2𝑎𝑐

2𝑏𝑐 + 2𝑎𝑑 𝑎2 − 𝑏2 + 𝑐2 − 𝑑2 2𝑐𝑑 − 2𝑎𝑏2𝑏𝑑 − 2𝑎𝑐 2𝑐𝑑 + 2𝑎𝑏 𝑎2 − 𝑏2 − 𝑐2 + 𝑑2

Por lo tanto la rotación del sistema inercial al sistema del cuerpo puede ser

llevada a cabo usando la matriz de multiplicación:

VB = Rib qi

b VI

Las ecuaciones para convertir un cuaternio de orientación en los

correspondientes ángulos de Euler son:

ϕθψ =

atan2(2 ab + cd , 1 − 2(b2 + c2))arcsin(2(ac − db))

atan2(2 ad + bc , 1 − 2(c2 + d2))

4.2. SENSORES INERCIALES DE BAJO COSTE

Como se describe en este capítulo, para llevar a cabo la estimación de la actitud y orientación se emplean una IMU (unidad de medida inercial), que consta de un giróscopo y un acelerómetro. A continuación se muestra una descripción de los mismos.

Page 38: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 27 Universidad de la Rioja

4.2.1. GIROSCOPIOS

Los giroscopios, o girómetros, son dispositivos que miden o el movimiento de rotación. Son pequeños sensores, de bajo costo que sirven para medir la velocidad angular. La mayoría de los sensores actuales de pequeño tamaño, como los que se utilizan en modelos de helicópteros y robots, están basados en circuitos integrados cuya "alma" son pequeñísmaslengüetas vibratorias, construidas directamente sobre el chip de silicio. Su detección se basa en que las piezas cerámicas en vibración son sujetas a una distorsión que se produce por el efecto Coriolis (son cambios en la velocidad angular).

Ilustración 4-7. Giroscopo mecanico

Ilustración 4-8. Giroscopio comercial

Un giroscopio MEMS (Microelectro Mechanical system ) de 3 ejes , similar a

la que se muestra en la figura 5-8, puede medir la rotación en torno a tres ejes : X, Y , y Z . Algunos giroscopios vienen en variedades de eje simple y doble, pero el giroscopio de tres ejes en un solo chip son cada vez más pequeño, menos costoso y más populares. Los giroscopios son sensores capaces de ofrecer velocidades angulares entorno a un eje, sin embargo los datos que pueda proporcionar están sujetos a fenómenos eléctricos y mecánicos que van a falsear la verdadera velocidad que se lee de cada sensor. En particular, los giroscopios suelen presentar una componente continua o bias que además suele ser dinámica, esto quiere decir

Page 39: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 28 Universidad de la Rioja

que la medida que tomemos de los sensores va a tener siempre un valor de offset que falseara la muestra. Afortunadamente existen técnicas de procesamiento de datos que nos permiten disminuir este offset y se basan en aplicar un filtro que elimine las bajas frecuencias de las medidas y así poder disponer de datos un poco mejores puesto que eliminar la componente continua de estas medidas va a ser una tarea muy compleja.

Aunque los giroscopios funcionan mal a bajas frecuencias, no sucede lo

mismo para las altas frecuencias. Dicho de otra manera, cuando los giroscopios giran a baja velocidad o están prácticamente parados, suelen presentar un ruido de baja frecuencia que los hace de poco fiables para obtener medidas precisas empleadas en la estimación de ángulos de giro. Sin embargo, cuando estas velocidades de giro aumentan, las medidas resultan muy fiables y de hecho esto por este motivo son ampliamente usados en sistemas que precisen el conocimiento de la aptitud de un sistema.

4.2.2. ACELERÓMETROS

Los acelerómetros son dispositivos que miden la aceleración, que es la tasa de cambio de la velocidad de un objeto. Esto se mide en metros por segundo al cuadrado (m/s²) o en las fuerzas G (g). La sola fuerza de la gravedad corresponde aproximadamente con 9,8 m/s², pero este valor fluctúa ligeramente con la altitud. Los acelerómetros son útiles para detectar las vibraciones en los sistemas o para aplicaciones que requieran el conocimiento de la orientación.

Generalmente, los acelerómetros contienen placas capacitivas

internamente. Algunos de estos son fijos, mientras que otros están unidos a resortes minúsculos que se mueven internamente conforme las fuerzas de aceleración actúan sobre el sensor. Como estas placas se mueven en relación el uno al otro, la capacitancia entre ellos cambia. A partir de estos cambios en la capacitancia, puede estimarse la aceleración.

Ilustración 4-9. Acelerómetro

Page 40: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 29 Universidad de la Rioja

Ilustración 4-10. . Acelerometro comercial

Debido a que se puede conocer la dirección hacia donde apunta la fuerza de

gravedad en todo momento, es posible estimar la orientación usando simplemente un acelerómetro de 3 ejes. Sin embargo este tipo de sensores también está sujeto a fenómenos físicos que harán que las lecturas tomadas estén contaminadas con ruido de alta frecuencia. Para solucionar este inconveniente basta con hacer pasar los datos de las aceleraciones medidas por un filtro paso-bajo.

Llegados a este punto se puede concluir que hace falta un tratamiento

adecuado de los datos obtenidos de los giroscopios y acelerómetros para obtener una estimación fiable. Estos ajustes en las medidas se detallan en el siguiente apartado. No obstante, en él se demostrara como el empleo de un único instrumento de mediada resulta ineficiente si se desea una precisión razonable, dado que los dos instrumentos de medida presentan problemas en su funcionamiento.

4.3. TRATAMIENTO DE DATOS

En este apartado se presentan una serie de experimentos en los que se puede comprender la necesidad de aplicar un tratamiento de datos a la información recogida de los acelerómetros y giroscopios. El objetivo final es aplicar estrategias de filtrado que permitan mejorar la información, que posteriormente será empleada para el cálculo del ángulo girado en torno a uno de los ejes.

4.3.1. ESTIMACIÓN DE ACTITUD CON ACELERÓMETRO

Un acelerómetro puede medir la aceleración gravitacional terrestre y por lo tanto proporcionar un marco de referencia absoluto a partir del cual sea posible estimar la orientación del sensor. Sin embargo los acelerómetros se ven sujetos altos niveles de ruido, por ejemplo, las aceleraciones debidas al movimiento del sensor corromperán las medidas tomadas acerca de la dirección de la fuerza de gravedad terrestre.

Page 41: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 30 Universidad de la Rioja

Estimación de actitud mediante acelerómetros

Determinar el ángulo mediante los acelerómetros resulta bastante sencillo

si suponemos que el sensor gira sobre su propio eje y la aceleración vista por los acelerómetros solo es el producto de la fuerza de gravedad. En estas condiciones, basta con calcular el arco cuya tangente es el cociente de dos aceleraciones. En la figura 4-12 aparece representada la situación en la que el eje Z del sensor está alineado con la fuerza gravitatoria. Cuando se produce un giro sobre el eje Y, la aceleración de la gravedad pasa a estar desalineada con respecto a los ejes del sensor y es entonces posible calcular en ángulo girado. Ver figura 4-13 en la que se ilustra esta última situación.

Ilustración 4-11. Eje Z del sensor alineado con la gravedad

Ilustración 4-12. Eje Z del sensor forma un ángulo con la gravedad

Page 42: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 31 Universidad de la Rioja

En este apartado se propone el cálculo alrededor del eje Y en base a las

medidas debidas a la aceleración de la gravedad en los ejes X y Z atendiendo a la ecuación:

𝜽𝒚 = 𝐚𝐭𝐚𝐧 𝒂𝒙

𝒂𝒛

Filtro paso-bajo aplicado a los acelerómetros Aunque el cálculo es sencillo, no resulta muy adecuado llevarlo a cabo sin

aplicar antes un filtro paso-bajo a las aceleraciones recogidas para que elimine el ruido de alta frecuencia procedente de los acelerómetros. La ecuación en el dominio de la frecuencia para el filtro paso-bajo que se aplica en este experimento aparece en siguiente.

𝐆 𝐬 =𝟏

𝟎. 𝟏𝐬 + 𝟏

En la figura 4-14 aparece el diagrama de Bode del filtro. Según el diagrama

de las señales cuya frecuencia sea inferior a la de corte (10 rad/s en este caso) pasaran sin ser atenuadas, por el contrario las frecuencias superiores a 10 rad/s se van a ver atenuadas.

Ilustración 4-13. Diagrama de bode de un filtro paso-bajo

-40

-30

-20

-10

0

Magnitude (

dB

)

10-1

100

101

102

103

-90

-45

0

Phase (

deg)

Bode Diagram

Frequency (rad/s)

Page 43: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 32 Universidad de la Rioja

Ejecución y análisis de los resultados del experimento 1

Este experimento tiene como propósito identificar y visualizar las

diferencias en los resultados obtenidos cuando se usan los datos antes y después de ser filtrados para el cálculo del ángulo de giro.

En la figura 4-15 se muestran los resultados del primer experimento. La

línea verde corresponde al ángulo calculado cuando no se aplica el filtro a los datos, por otra parte la línea azul representa el ángulo estimado con los datos que si han sido filtrados.

Ilustración 4-14. Resultados del primero experimento

Como se puede ver en la gráfica, la línea verde presenta una serie de

oscilaciones debidas a la vibración del mismo, sin embargo, los datos de la línea azul que si han sido filtrados no presentan tales oscilaciones. Se puede concluir entonces que el filtro funciona puesto que se ha conseguido eliminar el ruido electrónico de alta frecuencia.

En las figuras 4-16 y 4-17 aparece el análisis espectral de cada una de las

señales. En la primera se observa como la señal que no ha sido filtrada presenta magnitudes significativas para las frecuencias altas, sin embargo en la segunda figura se ve claramente como después de aplicar el filtro, las componentes de alta frecuencia han sido eliminadas.

0 1 2 3 4 5 6-60

-40

-20

0

20

40

60

80

100

X: 1.24

Y: 27.24

An

gulo

( g

rad

os )

Tiempo ( seg )

Exp1. Angulo estimado con acelerometros

Datos Filtrados (DF)

Datos No Filtrados (DNF)

Page 44: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 33 Universidad de la Rioja

Ilustración 4-15. FFT de los datos antes de ser filtrados

Ilustración 4-16. . FFT de los datos después de ser filtrados

Page 45: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 34 Universidad de la Rioja

4.3.2. ESTIMACIÓN CON GIROSCOPIO

Un giroscopio es capaz de medir velocidades angulares, si se conocen las

condiciones iníciales pueden ser integradas a lo largo del tiempo para determinar la inclinación del sensor. Los giróscopos de precisión como pueden ser los anillos laser son demasiado caros para la mayoría de aplicaciones y por lo tanto los sistemas MEMS (Micro ElectricalMechanicalSystem) suelen usarse en la mayoría de aplicaciones debido a que son más baratos aunque menos precisos. La integración del error existente en las medidas efectuadas por un giroscopio nos llevan a una acumulación del error en la orientación calculada. Por lo tanto, los giroscopios por si solos no pueden proporcionar una mediad absoluta de la orientación.

En este apartado se realiza una serie de experimentos con el fin de

comprender y visualizar los efectos negativos que producen las componentes de baja frecuencia en la estimación del ángulo a partir de las medidas del giroscopio. Análisis del giroscopio en reposo

Los giroscopios siempre presentan un offset a bajas frecuencias, al

integrarlo se desencadena una acumulación de errores que crece y crece con el tiempo falseando por lo tanto la medida y haciéndola poco útil para cualesquier aplicación real.

En la figura 4-18 aparecen las lecturas del giroscopio mientras este

permanece en reposo, en ella se puede ver que la velocidad angular leída ronda los -0.68 °/s cuando en realidad debería ser cero, por lo tanto la integración sucesiva de estos valores para la estimación del ángulo, conlleva la acumulación de un error que se crece y crece con el tiempo.

Ilustración 4-17. Datos recogidos con giroscopio en reposo

0 1 2 3 4 5 6 7-0.74

-0.72

-0.7

-0.68

-0.66

-0.64

-0.62

X: 1.8

Y: -0.6256

Muestras

Vel. A

ngula

r (

º/s )

Tiempo ( seg )

Page 46: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 35 Universidad de la Rioja

Tras realizar un análisis frecuencia a la señal anterior se logra distinguir que efectivamente existe una componente a bajas frecuencias. Ver figura 4-19.

Ilustración 4-18. Componentes de baja frecuencia en los giroscopios

Filtro paso-alto aplicado a los giroscopios Para eliminar en la medida de lo posible estas componentes de baja

frecuencia se usa un filtro paso-alto de primer orden. Un filtro de estas características atenúa las frecuencias que están por debajo de su frecuencia de corte y deja pasar las frecuencias que estén por encima. En filtro paso-alto usado para este experimento tiene como ecuación:

G s =0.1s

0.1s + 1

La frecuencia de corte para este filtro es de 10 rad/s o 1.6 Hz, lo que

significa que las componentes que oscilen a menor frecuencia van a ser atenuadas mientras que las frecuencias por encima de 10 rad/s pueden pasar sin ver modificada su magnitud.

Un filtro con estas características atenúa el gran medida las bajas

frecuencias, por lo que resulta ser el filtro ideal para remover las componentes continuas de las medidas tomadas de los giroscopios.

En la figura 4-20 se presenta el diagrama de bode para este filtro

0 5 10 15 20 25 30 35 40 45 500

50

100

150

200

250

300

350

400

450

500

X: 0.1429

Y: 477.2

FFT Magnitude

Freq ( Hz )

Page 47: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 36 Universidad de la Rioja

Ilustración 4-19. Diagrama de bode de un filtro paso-alto

Tras aplicar el filtro anterior se realizan dos experimentos cuyos resultados

se muestran muestra en las siguientes figuras. En la figura 4-21 aparece la comparación entre los ángulos estimados antes

y después del tratamiento de los datos mientras el sensor permanece en reposo. Bajo esta situación es de esperar que ángulo medido sea siempre cero puesto que no existe movimiento, sin embargo en la gráfica se observa que si no se filtran las medidas el ángulo crece con el tiempo debido a la integración del error.

Ilustración 4-20. Estimación del ángulo girado mediante giroscopio

-50

-40

-30

-20

-10

0

Magnitude (

dB

)

10-1

100

101

102

103

0

30

60

90

Phase (

deg)

Bode Diagram

Frequency (rad/s)

0 1 2 3 4 5 6-18

-16

-14

-12

-10

-8

-6

-4

-2

0

Exp2. Angulo estimado con giroscopio

Angulo

( g

rados )

Tiempo ( seg )

Datos Filtrados (DF)

Datos No Filtrados (DNF)

Page 48: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 37 Universidad de la Rioja

En la figura 4-22 aparecen los resultados del mismo experimento pero esta

vez el sensor gira entorno a uno de los ejes. Como se puede ver en la gráfica azul no existe acumulación error; a partir de los 4 segundos el sensor se deja en reposo y se observa que el ángulo no varía, sin embargo en la grafía verde se ve claramente como el ángulo sigue variando a lo largo del tiempo debido a que en la señal existe una componente continua que no ha sido eliminada.

Ilustración 4-21. Estimación del ángulo girado mediante acelerómetro

El análisis frecuencial para estas dos señales se representa en las figuras 4-

23 y 4-24. Cuando no se filtran los datos, el diagrama presenta componentes de baja frecuencia de mucha magnitud. Cuando se filtran los datos estas componentes casi desaparecen por completo.

0 1 2 3 4 5 6-80

-60

-40

-20

0

20

40

Exp3. Angulo estimado con giroscopio

An

gulo

( g

rad

os )

Tiempo ( seg )

Datos Filtrados (DF)

Datos No Filtrados (DNF)

Page 49: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 38 Universidad de la Rioja

Ilustración 4-22. FFT de las medidas de un acelerómetro

Ilustración 4-23. FFT de las medidas de un acelerómetro una vez filtradas

4.4. ESTIMADOR POR FUSIÓN SENSORIAL

Vistos los inconvenientes encontrados al usar giroscopios y acelerómetros para la estimación de ángulos de giro, surge la idea de usar la medición obtenida por el giroscopio para tiempos cortos y realizar la corrección de la deriva con la medición realizada por el acelerómetro en tiempos largos, debido a que esta última medición tiende a ser la aceleración de la gravedad para periodos largos.

0 5 10 15 20 25 30 35 40 45 500

2000

4000

6000

8000

10000

12000

Exp3. Analisis frecuencial

Freq ( Hz )

Angulo No Filtrado

0 5 10 15 20 25 30 35 40 45 500

500

1000

1500

2000

2500

3000

3500

4000

Exp3. Analisis en frecuencia

Freq ( Hz )

Angulo Filtrado

Page 50: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 39 Universidad de la Rioja

Para llevar a cabo este proceso de fusión sensorial suelen emplearse diferentes alternativas. Las más comunes emplean filtros complementarios, filtros complementarios explícitos o filtros de Kalman. En este trabajo se presentan dos opciones de estimación. Por un lado un filtro complementario, y por el otro el filtro propuesto por Madwick, que corresponde un filtro complementario explicito que emplea una ley recursiva para llevar a cabo la corrección.

4.4.1. ESTIMACIÓN CON FILTRO COMPLEMENTARIO

El filtro complementario resulta sencillo de tratar matemáticamente y en

razón de su baja complejidad de implementación consume pocos recursos computacionales. La idea básica del filtro complementario es combinar la salida del acelerómetro y del giroscopio para obtener una buena estimación del ángulo de orientación de la plataforma, compensando la deriva del giróscopo con la baja dinámica del acelerómetro. El filtro complementario propuesto es el que se muestra en la figura 4-25.

Ilustración 4-24. Fusion sensorial

Donde theta_a es el ángulo medido por el acelerómetro cuya señal esta

corrompida por ruidos de alta frecuencia proveniente de las vibraciones, theta_g es el ángulo medido con el giroscopio, afectado por la deriva y theta el ángulo estimado.

Las funciones de transferencia del filtro deben ser elegidas de acuerdo a

𝑯𝒂 𝒔 𝑮 𝒔 + 𝑯𝒈 𝒔 𝟏 − 𝑮 𝒔 = 𝟏

En donde 𝑯𝒂 y 𝑯𝒈representan las funciones de transferencia del

acelerómetro y el giroscopio respectivamente. Suponemos que las funciones de transferencia de los sensores son iguales a

1. Esto es 𝑯𝒂 = 𝟏 = 𝑯𝒈.

La función de transferencia elegida para G es un filtro pasa-bajo de primer

orden. Lo cual hace que la estimación en baja frecuencia dependa de la medición del acelerómetro.

𝑮(𝒔) =𝜶

𝒔 + 𝜶

Page 51: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 40 Universidad de la Rioja

Y la función de transferencia para 1 – G:

𝟏 − 𝑮(𝒔) =𝒔

𝒔 + 𝜶

Este filtro nos permite hacer que las componentes de alta frecuencia de la

medición estimada dominadas por el aporte de las mediciones provenientes del giroscopio.

Si ambas mediciones son ideales, la función de transferencia total del filtro

resulta: 𝜽 (𝒔)

𝜽(𝒔)= 𝑮(𝒔) + 𝟏 − 𝑮 𝒔 = 𝟏

Y por lo tanto hace que:

𝜽 𝒔 = 𝜽(𝒔)

Ensayo del filtro complementario Tras la implementación el filtro complementario se efectúa un nuevo

experimento para determinar el ángulo. Los resultados del experimento se reflejan en figura 4-64. Se aprecia como la gráfica de color verde (ángulo sin filtrado) acumula un error a medida que pasa el tiempo aunque se ve que parte de cero puesto que cuando el sensor esta inmóvil el ángulo sigue variando. En la gráfica azul se aplica el filtro complementario a la estimación de los datos dando como resultadoun estimación mucho más fiable y acertada.

Ilustración 4-25. Resultados del filtro complementario

0 1 2 3 4 5 6-60

-40

-20

0

20

40

60

80

100

Exp5. Angulo estimado con filtro complementario

An

gulo

( g

rad

os )

Tiempo ( seg )

Angulo Giro

Angulo Acc

Angulo Filtro Complementario

Page 52: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 41 Universidad de la Rioja

4.4.2. ESTIMACIÓN CON FILTRO MADWICK

A continuación se presenta el filtro desarrollado por Sebastian Madgwick. Los principios matemáticos que conforman el filtro se omiten puesto que sobrepasa el propósito de este documento debido a su carga teórica. Si se desea saber más acerca de este filtro existen referencias en el apartado de bibliografía.

Este apartado introduce un nuevo filtro de orientación que es aplicable a

una IMU y soluciona los problemas de carga computacional y estimación de parámetros asociados al filtro Kalman y mejora el rendimiento del filtro complementario. Este filtro incorpora dos funcionalidades, la primera de ellas es que utiliza una fusión sensorial parecida a la del filtro complementario para solucionar los problemas del ruido y las derivas. La segunda tiene que ver con la estimación de la orientación ya que el filtro proporciona un algoritmo que la calcula haciendo uso de una matemática basada en cuaternios.

Como ya se ha dicho este filtro emplea una representación de la orientación

mediante cuaternios por lo que se resuelve el problema de las singularidades asociadas a la representación mediante ángulos de Euler.

La figura 4-27 muestra la representación en un diagrama de bloques de la

implementación del filtro para un IMU convencional.

Ilustración 4-26. Diagrama de bloques del filtro Madwick

Este filtro requiere solo de un parámetro 𝜷ajustable que puede ser

estimado teniendo en cuenta las características observables para cada uno de los sistemas en el que se implemente. Mediante este parámetro es posible ajustar la relevancia que tienen los acelerómetros o giroscopios a la hora de aplicar la fusión sensorial. Si el parámetro 𝜷 = 𝟎, esto significa que la estimación de la orientación se lleva a cabo exclusivamente a partir los giroscopios; si por el contrario el valor es distinto de cero, existirá una fusión sensorial que hace que los resultados en la estimación de la orientación sean más exactos.

Page 53: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 42 Universidad de la Rioja

Para este proyecto se escogió 𝜷 = 𝟎. 𝟏tras realizar varios experimentos se llego a la conclusión de que este valor era el más adecuado.

En el artículo original escrito por el propio Sebastian Madgwick se incluye el

código fuente en lenguaje C que implementa el filtro que se muestra en la figura.

Page 54: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 43 Universidad de la Rioja

5. SISTEMA DE EXCITACIÓN PARA MOTORES BRUSHLESS

A continuación se muestra el funcionamiento del sistema de excitación para motores brushless. Este sistema corresponde con otro de los apartados críticos del proyecto, ya que una lógica de conmutación deficiente degrada el comportamiento del sistema.

Téngase en cuenta que la conmutación de motores BLDC, tradicionalmente

se ha realizado empleando sensores de efecto hall que permiten conocer la posición del rotor. En este caso se emplean motores sensorless, hecho que complica en gran medida la lógica encargada de realizar la conmutación de las fases del motor.

Para que el lector pueda comprender el funcionamiento de este sistema, se

presenta una descripción del funcionamiento de un motor BLDC y las lógicas de excitación más frecuentes.

5.1. MOTORES BRUSHLEES

Los motores de imanes permanentes y sin escobillas o BLDC (Brushless DC)están remplazando a los motores convencionales que usan escobillas en numerosas aplicaciones, ya que estos ofrecen una significativa eficiencia energética, bajo ruido acústico y más fiabilidad por nombrar solo unas pocas ventajas.

Un motor BLDC es capaz de proporcionar grandes cantidades de par a lo

largo de un amplio rango de velocidades. Los motores BLDC derivan de los motores convencionales de corriente continua, por esto comparten la misma curva de par-velocidad. La gran diferencia que existe entre ellos radica en que los BLDC no usan escobillas, por lo que deben ser electrónicamente conmutados.

Ilustración 5-1. Motor brushless (BLDC)

Page 55: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 44 Universidad de la Rioja

5.1.1. PARTES DE UN BLDC

Los motores BLDC son motores síncronos, esto indica que el campo magnético producido por el estator y el campo magnético producido por el rotor gira a la misma frecuencia. Un motor BLDC no experimenta el fenómeno de deslizamiento o slip que normalmente se observa en motores con escobillas.

Están construidos con un rotor de imanes permanentes y bobinas de cobre

enrolladas a los polos del estator. En la figura 5-2 se muestra un motor brushless desmontado.

Ilustración 5-2. Estator y rotor de un BLDC

El estator de un BLDC es la parte estática del motor y está compuesto normalmente por laminaciones de acero a las que se arrollan bobinas colocadas axialmente a lo largo de la periferia interna. Los bobinados de un motor brushless están distribuidos a lo largo del estator en múltiples fases.

Un BLDC consta normalmente de tres fases conectadas en estrella en uno de

sus extremos. En el estator representado en la figura 5-4 a sus tres bobinados.

Ilustración 5-3. Bobinado de un BLDC

Ilustración 5-4.Conexión en estrella de un BLDC

Page 56: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 45 Universidad de la Rioja

En el rotor (la parte del motor que gira) se incrustan imanes permanentes

de neodimio. El numero de imanes adheridos al rotor determina el numero de conmutaciones que han de ocurrir para el motor gire una vuelta completa. Los imanes se van colocando uno seguido del otro y alternando su polaridad tal y como se muestra en la figura 5-6.

Ilustración 5-5.Imanes permanentes de un BLDC

Ilustración 5-6. Rotor

Los imanes de ferrita han sido usados tradicionalmente para construir

imanes permanentes. Sin embargo y debido al avance tecnológico, los imanes construidos con tierras raras han ganado popularidad debido a que generan campos magnéticos más fuertes y con un volumen más reducido que el de un imán convencional de ferrita.

5.1.2. PRINCIPIO DE FUNCIONAMIENTO Y CONTROL

El funcionamiento de un motor brushless está basado en la interacción

entre dos campos magnéticos, uno lo producen las bobinas arrolladas en el estator y el segundo lo producen los imanes permanentes alojados en el rotor.

Page 57: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 46 Universidad de la Rioja

ara ilustrar el funcionamiento vamos a suponer que una de las bobinas del estator esta energizada tal y como aparece en la figura 5-8.

Ilustración 5-7. Campo magnético generado por las bobinas del estator

Ilustración 5-8. Par de fuerzas generado entre el rotor y el estator

Cuando se hace circular corriente a través de la bobina se genera un campo

magnético que interacciona con los imanes del rotor produciendo de esta manera una fuerza de atracción entre los polos magnéticos del rotor y del estator. Sin embargo a medida que el rotor gira el par de giro va disminuyendo hasta que llega un momento en el que se anula cuando los polos magnéticos se alinean produciendo que el rotor deje de girar, por ello se debe energizar la siguiente bobina si se desea generar de nuevo un par de giro que continúe con el movimiento. Si el proceso se va repitiendo de manera adecuada se consigue hacer girar el rotor como si de un motor paso a paso se tratara.

Para ser controlados de manera adecuada, los motores brushless requieren

de un circuito inversor que genere la secuencia adecuada de conmutación para que el motor gire en uno de los dos sentidos. El orden en el que deben sucederse las conmutaciones se determina a partir de algún tipo de sensor que nos permita conocer la posición real del motor.

Page 58: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 47 Universidad de la Rioja

Un sistema de control para motores brushless convencional suele utilizar

tres sensores tipo Hall alojados dentro de la propia estructura del motor y sirven para conocer la posición exacta del rotor. En función de las tres señales obtenidas de los sensores Hall se genera un patrón de conmutaciones para que el motor gire en algún sentido. En la figura 5-9 aparece representado un sistema convencional de control para un BLDC, el sistema está compuesto por un circuito inversor, tres sensores Hall y una unidad de procesamiento que es la encargada de generar las conmutaciones.

Ilustración 5-9. Sistema de control basado en sensores Hall

Generalmente, los drivers usados para el control de un BLCD usan uno o

más sensores que aporten información acerca de la posición del rotor. Tal implementación incrementa el coste debido al uso de sensores, cableado e implementación en el motor. Además, muchos sensores no pueden ser usados puesto que deben ir alojados dentro de la estructura del propio BLCD.

En este proyecto la posición exacta del rotor no se estima mediante

sensores Hall, en cambio una unidad inercial de medida (IMU) será usada para tal fin.

5.1.3. DRIVER DE CONTROL

Para excitar las bobinas de un motor brushless se usa un circuito inversor trifásico basado en transistores. Los inversores, o convertidores CC-CA, son un circuito utilizado para convertir corriente continua en corriente alterna. Un inversor tiene como función la de cambiar un voltaje CC de entrada en un voltaje CA simétrico a la salida, procurando que este posea la magnitud y frecuencia deseada por el usuario.

Los inversores trifásicos son utilizados para la alimentación de cargas

trifásicas que requieran corriente alterna. Algunas de las aplicaciones de estos inversores son las siguientes:

Page 59: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 48 Universidad de la Rioja

- Fuentes de tensión alterna trifásica sin interrupciones - Puesta en marcha de motores de corriente alterna trifásicos - Conexión de fuentes que producen energía en continua con las cargas

trifásicas (paneles fotovoltaicos). El circuito de la figura 5-10 aparece un motor trifásico alimentado desde un

inversor por una fuente de corriente continua. El circuito inversor está compuesto por 6 transistores y 6 diodos.

Ilustración 5-10. Circuito inversor con diodos en antiparalelo

Además de los transistores el circuito inversor debe implementar diodos en

antiparalelo para permitir que la corriente por las bobinas del motor no se interrumpa puesto que si esto ocurre, se generarían picos muy altos de tensión terminales del circuito.

Debido a la topología del circuito inversor es posible ir energizando

independientemente cada una de las bobinas del estator y generar una secuencia de conmutación adecuada que haga girar el campo magnético y a su vez este arrastre al rotor.

5.2. TÉCNICAS DE CONMUTACIÓN PARA BLDC

Mediante la conmutación se logran ir cambiando las corrientes de cada una de las fases en el momento adecuado de tal manera que se genere un par de rotación.

Las técnicas de control para motores brushless se pueden clasificar según el

algoritmo de conmutación implementado. Las más utilizadas actualmente son: • Conmutación trapezoidal (también llamada 6- steps mode o basada en

sensores hall), • Conmutación sinusoidal y

Page 60: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 49 Universidad de la Rioja

• Control vectorial (Field Oriented Control). Estas técnicas tienen básicamente como objetivo estimar la excitación

óptima para cada una de las fases del motor y se diferencian principalmente por su complejidad de implementación, que se traduce en un incremento de prestaciones.

5.2.1. TÉCNICA DE SEIS PASOS O SIXSTEP. CONMUTACIÓN TRAPEZOIDAL

Uno de los métodos más simples de control de motores brushless es el

llamado conmutación trapezoidal o 6-steps.En este esquema se controla la corriente que circula por los terminales del motor, excitando un par simultáneamente y manteniendo el tercer terminal desconectado tal y como se muestra en la figura 5-11.

Ilustración 5-11. Conmutación de las bobinas del motor

Sucesivamente se va alternando el par de terminales a excitar hasta

completar las seis combinaciones posibles y de manera que tras cada conmutación el sentido de giro se conserve.

Las 6 conmutaciones deben ejecutarse atendiendo a la secuencia

especificada en la tabla 1. El esquema de conmutación de los transistores del circuito inversor para un ciclo completo, aparece en las representado en la secuencia que se muestra a continuación.

Tabla 1 Paso Bobina A Bobina B Bobina C 1 Vdc No conectada 0 V 2 No conectada Vdc 0 V 3 0 V Vdc No conectada 4 O V No conectada Vdc 5 No conectada 0 V Vdc 6 Vdc 0 V No conectada

Page 61: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 50 Universidad de la Rioja

Page 62: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 51 Universidad de la Rioja

Ilustración 5-12. Técnica de 6 pasos

Page 63: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 52 Universidad de la Rioja

El par de giro que se genera con este esquema de conmutación presentan

bruscas variaciones a medida que se van sucediendo las conmutaciones durante un ciclo eléctrico completo. El método de conmutación de 6 pasos introduce un rizado del par que hará que el rotor vibre a medida que va girando. En la figura 5-13 se ilustrar el par de rizado que genera la conmutación a 6 pasos.

Ilustración 5-13. Par de rizado obtenido mediante conmutación 6 step

Por otra parte, el ángulo girado tras cada conmutación depende del número de par de polos que hay en el rotor. Como ejemplo se dirá que para los motores usados en este proyecto es necesario completar 7 ciclos eléctricos para dar una vuelta entera puesto que el rotor tiene 7 pares de polos, con esta disposición el ángulo girado por cada conmutación resultaría:

7 𝑐𝑖𝑐𝑙𝑜𝑠 ∗ 6𝑝𝑎𝑠𝑜𝑠

𝑐𝑖𝑐𝑙𝑜= 42 𝑝𝑎𝑠𝑜𝑠

𝜃𝑔𝑖𝑟𝑎𝑑𝑜 =360 𝑔𝑟𝑎𝑑𝑜𝑠

42 𝑝𝑎𝑠𝑜𝑠= 8.57 𝑔𝑟𝑎𝑑𝑜𝑠 𝑝𝑜𝑟 𝑝𝑎𝑠𝑜

Con una resolución de giro en el motor de 8.57 grados por conmutación

resulta imposible implementar un control de posición óptimo para el funcionamiento de un gimbal.

Tanto el rizado del par como la poca resolución de giro hacen que esta

técnica resulte ineficiente para usarla en un gimbal real en donde es necesario corregir ángulos de giro muy pequeños de decimas o incluso centésimas de grado. Debido a estos inconvenientes se presenta necesario el uso de un método que minimice estos efectos como bien puede ser el SPWM el cual se explica en el siguiente apartado.

Page 64: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 53 Universidad de la Rioja

5.2.2. SPWM. SINUSOIDAL PULSE WIDTH MODULATION

El rizado en el par de salida que se obtiene al aplicar la técnica de

conmutación de 6 pasos se produce debido a que solo dos de las tres bobinas de cada motor están energizadas en todo momento y esto produce una caída brusca de las corrientes y con ello del par. Para solucionar este problema se puede usar la técnica de conmutación conocida como SPWM.

La gran diferencia que existe entre el método de 6 pasos y el SPWM radica

en que para el SPWM las tres fases del motor están energizadas a la vez. Esto permite un control más preciso de las corrientes en el motor y por lo tanto del par.

La técnica de modulación sinusoidal de ancho de pulso persigue la

generación de una tensión sinodal trifásica equilibrada mediante la modulación de una señal PWM en cada una de las salidas del inversor. Cuando se genera una tensión de estas características se consigue reducir significativamente el rizado del par gracias a que la corriente absorbida por el motor presenta un rango de oscilación estrecho a lo largo de cada ciclo eléctrico y de tal manera, el par, que depende de la magnitud de la corriente, presentara oscilaciones en un rango más estrecho de valores en comparación con la técnica de modulación de 6 pasos. En las figura 5-14 se ha representado la forma de onda de la corriente absorbida por una carga trifásica equilibrada cuando está alimentada por un sistema de tensión trifásico equilibrado, a lo largo de un ciclo eléctrico.

Page 65: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 54 Universidad de la Rioja

Ilustración 5-14. Reducción del par de rizado mediante SPWM

Lo que se obtiene con este patrón de corriente es producir una salida de par de mayor valor y que presenta un menor rango de oscilación en comparación al par obtenido cuando se conmuta con la técnica de 6 pasos.

Una de las ventajas de usar señales PWM es que si la tensión continua de

bus es más grande que las tensiones requeridas por el motor, este puede ser controlado limitando el porcentaje del ancho de pulso de señal.

Para modular una señal sinusoidal mediante PWM existen varias formas, una de las más sencillas resulta de la comparación entre dos formas de onda, la señal de referencia o señal a modular (señal modulada) se compara con una señal de acarreo triangular de alta frecuencia (señal de acarreo). El resultado de esta comparación se usa para generar una señal cuadrada la cual es una representación modulada de la onda original. En el caso de la técnica SPWM, lo que se persigue reproducir una señal sinusoidal mediante la modulación de una señal cuadrada.

En la figura 5-15 se ilustra la técnica de modulación SPWM

Page 66: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 55 Universidad de la Rioja

Ilustración 5-15. Modulación de una sinusoide mediante onda triangular

La señal cuadrada que resulta contiene una réplica de la forma de onda deseada en sus componentes de baja frecuencia y para este caso la onda resultante esta constituida por 9 tramos. Si se aplicara esta señal a una carga inductiva como lo es el motor, la corriente obtenida presenta la forma de onda mostrada en la figura 5-16.

Ilustración 5-16. Puente inversor

Page 67: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 56 Universidad de la Rioja

Ilustración 5-17. Corriente obtenida mediante el uso de la técnica SPWM

El número de tramos de la señal modulada esta directamente relacionada

con la resolución de giro que se puede alcanzar mediante esta técnica, pues como bien se ha mencionado en el apartado anterior, se necesitan completar 7 ciclos eléctricos por lo que si se usara la señal modulada de la figura 5-16, el ángulo girado por cada tramo es:

7 𝑐𝑖𝑐𝑙𝑜𝑠 ∗ 9𝑝𝑎𝑠𝑜𝑠

𝑐𝑖𝑐𝑙𝑜= 63 𝑝𝑎𝑠𝑜𝑠

𝜃𝑔𝑖𝑟𝑎𝑑𝑜 =360 𝑔𝑟𝑎𝑑𝑜𝑠

63 𝑝𝑎𝑠𝑜𝑠= 5.7 𝑔𝑟𝑎𝑑𝑜𝑠 𝑝𝑜𝑟 𝑝𝑎𝑠𝑜

5.7 grados de precisión continua siendo un valor bastante malo, sin

embargo se puede incrementar la precisión simplemente aumentado la frecuencia de la señal de acarreo, de tal manera que a mayor frecuencia, el número de tramos en los que se divide la señal de referencia es mayor también. En base a esto la señal modulada en este proyecto se ha dividido en 540 tramos por lo que la resolución alcanzada de giro resulta ser:

7 𝑐𝑖𝑐𝑙𝑜𝑠 ∗ 540𝑝𝑎𝑠𝑜𝑠

𝑐𝑖𝑐𝑙𝑜= 3780 𝑝𝑎𝑠𝑜𝑠

𝜃𝑔𝑖𝑟𝑎𝑑𝑜 =360 𝑔𝑟𝑎𝑑𝑜𝑠

3780 𝑝𝑎𝑠𝑜𝑠= 0.095 𝑔𝑟𝑎𝑑𝑜𝑠 𝑝𝑜𝑟 𝑝𝑎𝑠𝑜

En la figura 5-18 se muestra una señal sinusoidal modulada en 48 tramos.

La corriente aplicada a la carga también esta representada. Con una señal de acarreo a la frecuencia adecuada las componentes de alta

frecuencia no se propagan significativamente en la red debido a la presencia de elementos inductivos. Sin embargo cuanto mayor es la frecuencia de acarreo, mayor es número de conmutaciones por periodo, lo que incrementa la perdida de potencia en los interruptores. Las frecuencias típicas de conmutación suelen ser de 2 a 15 kHz. También es recomendable que en sistemas trifásicos las tres formas de onda sean simétric

Page 68: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 57 Universidad de la Rioja

Ilustración 5-18. Sinusoide dividida en 48 tramos

La conmutación sinusoidal soluciona los problemas de eficiencia que presenta la conmutación a 6 pasos. Sin embargo, presenta problemas a altas velocidades de rotación del motor.

A mayor velocidad de rotación, mayor error y por lo tanto mayor

desalineación entre el vector de corrientes y la dirección de cuadratura del rotor. Este hecho provoca una progresiva disminución del par motor (ver Figura 5-50).

Para mantener el par constante se necesita aumentarla corriente que circula por el motor provocando una disminución de la eficiencia.

Este deterioro de la eficiencia aumenta al incrementarse la velocidad hasta

llegar a un punto en el que el desfase entre el vector de corrientes y la dirección de cuadratura puede llegar a 90º produciendo un par motor completamente nulo.

Page 69: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 58 Universidad de la Rioja

Ilustración 5-19. Curva de par/velocidad de un BLDC

5.2.3. CURVA DE PAR OBTENIDA EN FUNCIÓN DEL MÉTODO DE CONMUTACIÓN

Durante la fase de desarrollo de la técnica de conmutación se consultaron muchos documentos aplicados al control de posición de motores brushless. En uno de estos documentos aparecen recogidos varios experimentos del par registrado en un motor BLDC según se conmuta con la técnica de seis pasos o la técnica de SPWM. En cada uno de los experimentos se aparece representada la velocidad y el par obtenido en función del tiempo.

A continuación se presentan los resultados de los cuales se pueden sacar

interesantes conclusiones acerca del comportamiento del motor según la técnica de conmutación usada.

Ilustración 5-21. Par y velocidad con conmutación 6 step

En la figura 5-21 aparecen los resultados obtenidos mediante la conmutación de 6 pasos. Se observa que el la magnitud del rizado en el par es de

Ilustración 5-20. Par y velocidad con conmutación a 6 pasos

Page 70: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 59 Universidad de la Rioja

0.15Nm. Por el contrario en la figura 5-22 en la que se implementa el SPWM, la magnitud del rizado es de 0.08Nm.

Ilustración 5-22. Par y velocidad con conmutación SPWM

Se puede concluir gracias a estos experimentos que la técnica de conmutación SPWM no solo reduce el rizado en el par de salida sino que también aumenta el rendimiento en la transferencia de energía debido al que el valor RMS de la corriente es mayor.

Page 71: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 60 Universidad de la Rioja

6. SISTEMA DE CONTROL

En este apartado se describe el sistema de control empleado para garantizar que los ángulos en cada uno de los ejes sean los adecuados. En él se explican los procedimientos empleados, la metodología y la implementación de los controladores. Las rotaciones en los dos ejes (Pitch y Roll) se realizan siguiendo el criterio mostrado en la figura 6-1.

Ilustración 6-1. Ejes de referencia para el Gimbal

Desde el punto de vista de un sistema de control, un gimbal consiste en el

control de posición para dos motores brushless en este caso, y que están dispuestos sobre dos ejes independientes.

El eje Z del sensor se monta de manera que este alineado con la dirección de la fuerza de gravedad tal y como aparece representado en la figura 6-2. Los controladores de ambos motores deben en todo momento corregir cualesquier alteración en los ángulos de roll y pitch con el fin de conservar la orientación de la base.

Page 72: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 61 Universidad de la Rioja

Ilustración 6-2. Alineamiento del sensor con la dirección de la gravedad

Cuando se realiza un sistema de control de posición es necesario disponer

de un sensor para poder medirla y cerrar el lazo de control. Para medir la posición de un motor existen diversas alternativas y una de las más comunes es hacer uso de un encoder, sin embargo para este caso, como ya se ha descrito, se emplean los datos inferidos por el sistema de estimación de orientación. Independientemente del sistema utilizado para estimar los ángulos de roll y pitch el esquema de control sigue la estructura de control que se representa en las figuras 6-3 y 6-4.

Ilustración 6-3. Diagrama de control para el ángulo Roll

Ilustración 6-4. Diagrama de control para el ángulo Pitch

Page 73: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 62 Universidad de la Rioja

A lo largo de este apartado se explican los procedimientos llevados a cabo para determinar la planta del sistema, el diseño y validación del controlador. Todas las estimaciones y comprobaciones se han efectuado con Matlab.

6.1. ESTIMACIÓN DE LA FUNCIÓN DE TRANSFERENCIA

Lo primero que debemos conocer es la planta del sistema a controlar y para dicha tarea se hace uso de la herramienta ident que ofrece el programa Matlab. Mediante la herramienta ideen es posible determinar el modelo de la planta a partir de datos reales obtenidos en experimentos de identificación. Los datos han sido recogidos tras realizar varios experimentos con el motor real, en cada experimento se somete al sistema a una entrada escalón y se recoge el ángulo girado mediante dos tipos de sensor, un encoder incrementa e IMU.

Si se disponen de los datos de entrada y salida se puede estimar una planta cuya dinámica se aproxime a la dinámica real.

Para que la ident resulte una herramienta de valor se deben conocer de

antemano las características del sistema si se desea realizar una buena estimación de la planta ya que ha de seleccionarse un modelo (número de polos y ceros) en base a la cual se va a realizar una estimación.

Para este proyecto se supone que la planta debe presentar un integrador y

un polo real debido a que se trata de un sistema de control de posición, por lo que se ha elegido el siguiente modelo:

𝐺 =𝐾𝑝

𝑠 ∗ (1 + 𝑡𝑝1 ∗ 𝑠)

6.2. EXPERIMENTO EN LAZO CERRADO MEDIANTE

ENCODER INCREMENTAL

El primer experimento consiste en inyectar al sistema con una señal de referencia de 50 grados, realimentar con ganancia unitaria y posteriormente recoger los datos de la señal de error y de la variable de control que en este caso serán los grados girados por el motor. En la figura 6-5 aparece el resultado del experimento.

Page 74: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 63 Universidad de la Rioja

Ilustración 6-5. Representación de la posición y la acción de control I

En este experimento se observa la posición angular del motor y el valor de

la acción de control a largo del tiempo. Mediante el empleo de la herramienta ident de Matlab, y tras llevar a cabo la

estimación en base al modelo de la ecuación, se obtuvieron los siguientes resultados:

𝑮 =𝟑𝟎𝟐.𝟏𝟏

𝒔 ∗ (𝟏 + 𝟎. 𝟎𝟗𝟗𝟏𝟕𝟒 ∗ 𝒔)

En la figura 6-6 se comparan los datos obtenidos con el experimento real

(en negro) con la respuesta que se obtendría si se aplica la misma señal de referencia al modelo de la ecuación anterior (en rojo). Como se puede ver el comportamiento es bastante similar, de hecho la ident calcula que su estimación se aproxima en un 79.43 % al modelo real.

0 0.5 1 1.5 2 2.5 3 3.5 4 4.50

10

20

30

40

50

60

X: 1.62

Y: 50.4

Variable y accion de control

Gra

dos

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5-0.5

0

0.5

1

1.5

2

2.5

Tiempo

Accio

n d

e c

ontr

ol

Page 75: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 64 Universidad de la Rioja

Ilustración 6-6. Comparación ente el modelo real el modelo estimado

Una vez se ha tiene un modelo de planta aproximad es hora de corroborar

que el modelo es lo bastante aproximado para que permita el diseño de un controlador que mejore el comportamiento del sistema. Para ello se procedió a repetir el experimento con un nuevo controlador y al mismo tiempo se realizó una simulación que incluía la nueva planta y el mismo controlador para comparar las respuestas real y simulada.

Ilustración 6-7. puesta real del sistema

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-10

0

10

20

30

40

50

60

Time

Measured and simulated model output

50 100 150 200 250 300 350

0

5

10

15

20

25

30

Page 76: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 65 Universidad de la Rioja

Ilustración 6-8. Respuesta esperada del sistema

A continuación se presentan las respuestas tras el experimento

En la figura de la izquierda se observa el experimento real para el cual se

inyecta una señal de referencia de 30 grados. En la figura de la derecha aparece la simulación del mismo experimento y se puede ver que las dinámicas son bastante similares.

Es necesario saber que en el experimento real cada 200 muestras

representan 1 segundo por lo que atendiendo a la figura se puede determinar que la respuesta alcanza el estado estacionario entorno a la muestra 135 o lo que es lo mismo 0.675 segundos. La simulación por su parte da un tiempo de establecimiento de 0.617.

Atendiendo a la dinámica observada y a los tiempos de establecimiento se

puede concluir que el modelo aproximado es válido.

6.3. EXPERIMENTO EN LAZO CERRADO MEDIANTE

UNIDAD INERCIAL DE MEDIDA

En este apartado se repiten los mismos experimentos que en el apartado anterior en el que se determinaba la planta del sistema pero esta vez usaremos la unidad inercial de medida como sensor.

Step Response

Time (seconds)

Am

plit

ude

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.90

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

System: Closed Loop r to y

I/O: r to y

Settling time (seconds): 0.617

Page 77: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 66 Universidad de la Rioja

En primer lugar sometemos al sistema a una entrada de referencia de 30 grados y posteriormente recogeremos los datos obtenidos de la acción de control y la respuesta obtenida. La Figura 5-19 muestra los resultados obtenidos.

Ilustración 6-9. Representación de la posición y la acción de control II

Tras estimar un nuevo modelo de la planta, la ident de Matlab determina que la planta es:

𝑮 =𝟐𝟗𝟕.𝟏𝟐

𝒔 ∗ (𝟏 + 𝟎. 𝟎𝟑𝟕𝟏𝟔𝟗 ∗ 𝒔)

La estimación que se obtiene de la planta se aproxima al modelo real en un

90.07 %. En la figura 6-10 se puede ver una comparación entre la respuesta real (en negro) y la respuesta obtenida si se aplica el modelo de la ecuación 5.15 (en granate).

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

10

20

30

40

Gra

do

s

Variable y accion de control

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-0.2

0

0.2

0.4

0.6

0.8

Tiempo

Acc. co

ntr

ol

Page 78: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 67 Universidad de la Rioja

Ilustración 6-10. Comparación ente el modelo real el modelo estimado

6.4. COMPARACIÓN ENTRE PLANTAS

En los apartados anteriores se realizaron experimentos para determinar la planta del motor mediante dos sensores de posición diferentes. Tras analizar los resultados se determinó que el modelo obtenido mediante la IMU se aproxima mejor al modelo real. Para corroborar esta afirmación se realizó un nuevo experimento con un escalón de 50 y se comparó la respuesta real con la dinámica obtenida si se aplicara la misma señal de referencia a los modelos estimados. Posteriormente se pudo ver que el segundo modelo se aproxima mejor a las respuestas reales del sistema tal y como puede apreciarse en la figura 6-11 en la que aparecen los resultados de la comparación.

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

5

10

15

20

25

30

35

40

Time

Measured and simulated model output

Page 79: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 68 Universidad de la Rioja

Ilustración 6-11. Comparación entre plantas

𝑮𝟏 =𝟐𝟗𝟕.𝟏𝟐

𝒔 ∗ (𝟏 + 𝟎. 𝟎𝟑𝟕𝟏𝟔𝟗 ∗ 𝒔)𝟖𝟖. 𝟒𝟎𝟒𝟓 % 𝒅𝒆 𝒂𝒑𝒓𝒐𝒙.

𝐺2 =302.11

𝑠 ∗ (1 + 0.099174 ∗ 𝑠) 81.8566 % 𝑑𝑒 𝑎𝑝𝑟𝑜𝑥

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-10

0

10

20

30

40

50

60

Time

Measured and simulated model output

Page 80: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 69 Universidad de la Rioja

6.5. DISEÑO DEL CONTROLADOR

En un gimbal, el control de la posición ha de ser preciso, rápido y estable. En un sistema gimbal se hace necesario disponer de un controlador lo

bastante rápido para poder corregir cualquier desviación del ángulo para cada uno de los ejes. Para este propósito se diseñó mediante el lugar de las raíces un controlador PID.

Ilustración 6-12. Lugar de las raíces para la planta del motor

En la figura 6-12 se observa el lugar de las raíces del conjunto controlador-planta.

El controlador resultante es:

𝑪 = 𝟎. 𝟎𝟎𝟏𝟑𝟐𝟑𝟑(𝟏 + 𝟐𝟎 ∗ 𝒔)

𝒔 ∗ (𝟏 + 𝟎. 𝟎𝟏𝟐 ∗ 𝒔)Ecuacion 5.16

10-3

10-2

10-1

100

101

102

103

104

-270

-225

-180

-135

-90

P.M.: 68.8 deg

Freq: 7.54 rad/s

Frequency (rad/s)

Phase (

deg)

-150

-100

-50

0

50

100

150

G.M.: 22.9 dB

Freq: 47.3 rad/s

Stable loop

Open-Loop Bode Editor for Open Loop 1(OL1)

Magnitu

de (

dB

)

-160 -140 -120 -100 -80 -60 -40 -20 0 20-100

-80

-60

-40

-20

0

20

40

60

80

100

Root Locus Editor for Open Loop 1(OL1)

Real Axis

Imag A

xis

Page 81: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 70 Universidad de la Rioja

Ilustración 6-13. Respuesta obtenía tras aplicar el controlador

Ilustración 6-14. Respuesta esperada tras aplicar el filtro

0 50 100 150 200 250 300

0

5

10

15

20

25

30

Step Response

Time (seconds)

Am

plit

ude

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9-0.2

0

0.2

0.4

0.6

0.8

1

1.2

System: Closed Loop r to y

I/O: r to y

Settling time (seconds): 0.284

Page 82: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 71 Universidad de la Rioja

7. DESCRIPCIÓN DEL HARDWARE EMPLEADO

En esta capitulo se presentan todos los componentes hardware que componen este proyecto.

7.1. TARJETA DE DESARROLLO

Ilustración 7-1. EK-TM4C123GXL

La elección de esta tarjeta como plataforma de desarrollo fue motivada por

dos razones: la primera es que ya se había trabajado con ella en las clases de sistemas embebidos y por otra parte, esta tarjeta implementa un microprocesador con la suficiente potencia de cálculo y los periféricos adecuados para el desarrollo de un gimbal como lo son los módulos de PWM que implementa y que serán de gran utilidad para generar las señales de control para los driver de potencia.

La tarjeta de desarrollo que se emplea para este proyecto es la EK-

TM4C123GXL. Esta tarjeta forma parte de una serie de módulos de evaluación desarrollados por la empresa Texas Instruments y en ellos implementan algunos de sus principales microcontroladores. El EK-TM4C123GXL está basado en un núcleo ARM Cortex-M4 de 32 bits y en particular implementa un microcontrolador TM4C123GH6PM que puede alcanzar una velocidad de 80 MHz e incluyen diferentes tipos de periféricos para el control de motores, módulos de comunicación serie, ADCs entre otros.

Hay numerosa documentación y herramientas software que facilitan el

desarrollo de nuevas aplicaciones además de ejemplos de uso para cada uno de los periféricos que implementa, lo que convierte este tipo de tarjetas en una solución óptima y rápida para el desarrollo de sistemas embebidos.

Page 83: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 72 Universidad de la Rioja

En la siguiente lista se resumen las principales características del microprocesador TM4C123GXL:

• Núcleo ARM Cortex-M4 con unidad de como flotante

• Velocidad máxima de la CPU 80 MHz

• 256-KB Flash

• 32-KB RAM and 2-KB EEPROM

• 2 ADCs de 12 bits que pueden alcanzar hasta 1 MSPS

• 2 Controladores CAN

• Hasta 40 salidas de PWM.

• Comunicaciones seria: 8 UARTs, 6 I2Cs, 4 SPI/SSI

• 43 GPIO pines.

Ilustración 7-2. Características modulo EK-TM4C123GXL

Page 84: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 73 Universidad de la Rioja

7.2. IMU (MPU-6050)

El MPU-6050 integra 3 acelerómetros, 3 giroscopios y 3 magnetómetros para cada uno de los ejes de referencia e implementa dos protocolos de comunicación: I2C y SPI.

Ilustración 7-3. Unidad Inercial de Medida

El MPU-9150 incorpora 6 conversares analógico-digital (ADCs) de 16 bits

para digitalizar las salidas de los giroscopios y acelerómetros. La sensibilidad de cada uno de los sensores se puede configurar. Los valores de sensibilidad para los giroscopios están entre los 250 y 2000 grados/s y desde los 2g hasta 16g para los acelerómetros.

Integra también una memoria FIFO on-chip de 1024 bytes que almacena las

medidas y ayuda al ahorro de energía ya que el dispositivo puede ser puesto en modo de bajo consumo y seguir tomando muestras desde los sensores.

El protocolo de comunicación usado en este proyecto fue el I2C debido a

que resulta un protocolo fácil de implementar en un micro y además se pueden transmitir datos con una velocidad máxima de 400 kbits/s.

Page 85: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 74 Universidad de la Rioja

7.3. INVERSOR L6234

Ilustración 7-4. Driver de control L6234

El L6234 implementa un circuito de potencia diseñado para gobernar un

motor brushless. Básicamente consta de un circuito inversor con diodos en antiparalelo y un circuito lógico para el control de corriente en cada rama del inversor.

Las tensiones de trabajo están entre los 7 y 52 V y soporta picos de corriente de 5 A. Las entradas lógicas son compatibles con los niveles de tensión TTL.

En la figura 6-5 se muestra el diagrama del dispositivo.

Ilustración 7-5. ircuito externo requerido por el L6234

Page 86: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 75 Universidad de la Rioja

7.4. MOTOR GIMBAL

Ilustración 7-6. Motor brushless EMAX GB2806

El motor usado es el EMAX GB2806, el bobinado de este motor está

diseñado especialmente para formar parte de un gimbal ya que el bobinado de estos difiere de los convencionales motores BLDC usados en drones.

Este motor entrega el par necesario para mover masas que no superen los

300 – 400 gramos, según su hoja de características. Además del par él, motor es de un tamaño reducido y resulto ser muy apropiado y eficiente.

7.5. PCB

Para integrar todo el sistema gimbal se diseño un PCB en el cual se implemento toda la electrónica de potencia y de control. La placa ha sido diseñada con el fin de que encaje directamente sobre la tarjeta de desarrollo para que abarque el menor espacio posible.

El diseño del circuito ha sido realizado mediante KiCad por ser este un

software gratuito y bastante completo para el diseño de PCBs. La placa se hizo mediante insoladora y revelado químico, este hecho

condicionó en gran medida el grosor mínimo de las pistas, siendo el mínimo de 0.8 mm. Si se diseñan pistas con un grosor menor a 0.8 mm se corre el riesgo de que el acido usado para revelar la placa degrade la pista hasta cortarla totalmente. El tamaño de la placa viene condicionado también por la dimensión de los componentes usados.

Page 87: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 76 Universidad de la Rioja

En la figuras 7-7 y 7-8 aparece el una captura del layout del PCB una vez se

ha concluido el trazado de las pistas y vías.

Ilustración 7-7. Layout capa superior del PCB

Ilustración 7-8. Layout capa inferior del PCB

Page 88: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 77 Universidad de la Rioja

8. CONCLUSIONES

Debido a la complejidad y naturaleza del proyecto, es de esperar que existan numerosas vías de mejora en cada una de las partes que lo componen.

Por un lado el buen comportamiento el gimbal viene determinado

principalmente por el método de excitación elegido para conmutar las bobinas de motor y a la precisión alcanzada cuando se estima la actitud del sistema. Por ello es en estos dos puntos donde se focalizo la mayor parte de esfuerzo y supuso una gran búsqueda de información.

Los métodos y procedimientos elegidos para el desarrollo de un sistema de

estimación de actitud es un factor clave para el buen desempeño del gimbal puesto que existen diferentes maneras de llevar a cabo la estimación de la actitud y la precisión alcanzada esta íntimamente ligada a la complejidad del algoritmo que lleve a cabo esta labor.

Problemas encontrados durante el desarrollo del proyecto:

• Técnicas de conmutación: existen varios métodos para la

conmutación de un BLCD, la elección de un método en particular

viene determinada por la precisión que se quiera alcanzar, sin

embargo la implementación de algoritmos mas preciso supondrá el

aumento de la complejidad de esta tarea. Para este proyecto se

alcanzo una resolución de 0.1 grado gracias a uso del SPWM aunque

para ellos fue necesario invertir una gran cantidad de tiempo en su

desarrollo.

Por otra parte, existe un método mas sofisticado que el SPWM

llamado SVPWM (Space Vector PWM) cuya aplicación supondría una

mejora de lo que ya se tiene y establece una vía investigación para el

futuro.

• Elección del driver para el motor brushless: este es un punto que

genero muchas dudas ya que existen gran numero de dispositivos en

el mercado y cada uno de ellos es adecuado para un tipo de tarea en

particular. Para este proyecto se tomo la decisión de incorporar el

mismo driver que implementa la gran mayoría de fabricantes del

controladoras para gimbal.

Page 89: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 78 Universidad de la Rioja

Vías de continuación: Las partes que pueden ser mejoradas se listan a continuación:

• Se puede construir un gimbal de 3 ejes usando los mismos

procedimientos para este proyecto. Para llevar a cabo esto seria

necesario añadir un driver para el nuevo eje.

• El tamaño del PCB se puede reducir si se usan componentes SMD en lugar

de los Through Hole que se usaron aquí.

• El controlador que se implementa se puede mejorar, sin embargo

será necesario hallar una mejor manera de obtener el modelo

matemático del motor. Una vez realizada esta tarea se podría utilizar

como punto de partida para el desarrollo de un algoritmos de control

mas robusto.

Page 90: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Memoria

Alexander Montoya Osorio 79 Universidad de la Rioja

Page 91: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless

ANEXOS

ALUMNO: ALEXANDER MONTOYA OSORIO DIRECTORES DE PROYECTO: JAVIER RICO AZAGRA Y MONTSERRAT GIL MARTINEZ CURSO 2015 – 2016 UNIVERSIDAD DE LA RIOJA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA

Page 92: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 2 Universidad de la Rioja

ÍNDICE DE ANEXOS

1. LIBRERIAS E IMPLEMENTACION DEL SOFTWARE .................................................... 3

1.1. LIBRERÍA TIMER .......................................................................................................... 3

1.2. LIBRERÍA I2C ............................................................................................................... 5

1.3. LIBRERÍA PWM E IMPLEMENTACION DEL SPWM ...................................................... 6

1.4. LIBRERÍA PLL ............................................................................................................. 7

1.5. PROGRAMA PRINCIPAL. .............................................................................................. 7

2. CODIGO ................................................................................................................. 11

2.1. FICHERO PWM.H .....................................................................................................11

2.2. CODIGO TIMERS .....................................................................................................18

2.3. CÓDIGO I2C ...............................................................................................................22

2.4. CODIGO PRINCIPAL ....................................................................................................27

2.5. CODIGO PLL ..............................................................................................................36

Page 93: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 3 Universidad de la Rioja

1. LIBRERIAS E IMPLEMENTACION DEL SOFTWARE

En este capitulo se describen las librerías que ha sido necesario generar para llevar a cabo las diversas tareas asociadas al control de posición de los motores. Entre tales tareas se contempla por poner un ejemplo, el uso del protocolo de comunicación I2C para la transferencia de datos entre el microprocesador y la unidad de sensores. Este requerimiento exige la elaboración o uso de alguna librería que implemente el protocolo y que proporcione las funciones apropiadas para tal fin. Las librerías están directamente asociadas a la programación y manipulación de los módulos hardware que intervienen en el funcionamiento del Gimbal. A continuación se listan los módulos hardware empleados del microcontrolador TM4C123GXL:

• Modulo PWM: usado para generar 6 señales de PWM

• Modulo I2C: este modulo se encarga de gestionar el protocolo I2C durante

la comunicación.

• Módulos TIMER: estos se emplean para la generación de interrupciones

periódicas. En total se utilizan 3 interrupciones para este proyecto.

A parte de las librerías existen dentro del código una serie de algoritmos y funciones que llevan a cabo la modulación de las señales de PWM, filtrado y tratamiento de datos y por último la estimación de la orientación. En este apartado se detalla la estructura, composición, función de cada uno de las porciones de código que implementa el Gimbal.

1.1. LIBRERÍA TIMER

La librería usada para generar interrupciones implica la programación de 3 módulos Timer del microprocesador TM4C123GHPZ. La metodología empleada durante la programación de cada uno de los Timer implica conocer el funcionamiento del modulo y los registros asociados.

Aunque el modulo Timer que implementa el microprocesador puede ser

programado para cumplir con un amplio número de tareas, en este documento solo se describe la programación de los módulos TIMER0, TIMER1 y TIMER2 para que estos generen interrupciones periódicas. Las tareas periódicas que se deben

Page 94: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 4 Universidad de la Rioja

ejecutar incluyen la toma de muestras de los sensores a una frecuencia determinada y la modulación de la señales PWM.

El fichero que incluye la implementación de esta librería se llama: timers.cy

el código puede ser consultado el los ANEXOS. Funciones de la librería timer.c :

• void Timer0A_Init(void(*task)(void), uint32_t period)

• void Timer1A_Init(void(*task)(void), uint32_t period)

• void Timer2A_Init(void(*task)(void), uint32_t period)

void TimerXA_Init(void(*task)(void), uint32_t period) Esta función inicializa el timerX para que este genere interrupciones de manera periódica y a una frecuencia establecida por el parámetro period Parámetro Descripción uint32_t period Indica el periodo de tiempo que transcurre entre

cada interrupción y se corresponde con el numero de ciclos de reloj necesarios para incrementar el valor de un contador desde cero hasta el valor de period.

void(*task)(void) Es un puntero a la función que se va a ejecutar cada vez que se produzca la interrupción.

• void Timer0A_Handler(void)

• void Timer1A_Handler(void)

• void Timer2A_Handler(void)

void TimerXA_Handler(void) Esta función corresponde con el manejador de interrupciones para cada uno de los Timer, se ejecuta cada vez que se produce la interrupción del y dentro de ella se ejecuta la función apuntada por el puntero *task. Esta función se ejecuta por primera vez al inicializar el Timer correspondiente y no requiere ningún parámetro como argumento de la funcion. Parámetro Descripción ninguno

Page 95: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 5 Universidad de la Rioja

1.2. LIBRERÍA I2C

Esta librería incluye tres funciones, una función sirve para inicializar los módulos I2C del mircroprocesador TM4C123GP6Z y las otras dos se usan para enviar y recibir datos mediante el protocolo I2C.

La librería I2C contiene las siguientes funciones:

• void I2C0_Init()

void I2C0_Init(void) esta función inicializa el modulo I2C0, lo configura y habilita la salida de las señales por los pines PB2 y PB3.

Parámetro Descripción ninguno

• unsigned long writeMD(unsigned char addr, unsigned char addrReg,

unsigned char data)

unsigned long writeMD(unsigned char addr, unsigned char addrReg, unsigned char data) Esta función envía un byte de datos por el bus I2C a la dirección indicada en addr Parámetro Descripción unsigned char addr addr contiene la dirección del dispositivo en el

que se quiere acceder

unsigned char addrReg

dirección del registro interno del dispositivo I2C

unsigned char data Byte de datos a transmitir

• unsigned long readMD(unsigned char addr,unsigned char regAddr,

unsigned char numbytes, unsigned char *databuff)

Page 96: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 6 Universidad de la Rioja

unsigned long readMD(unsigned char addr,unsigned char regAddr, unsigned char numbytes, unsigned char *databuff) Esta función lee la cantidad de bytes indicada en numbytes y los almacena en una matriz Parámetro Descripción unsigned char addr addr contiene la dirección del dispositivo en el

que se quiere acceder

unsigned char addrReg

dirección del registro interno del dispositivo I2C

unsigned char numbytes

Byte de datos a transmitir

unsigned char *databuff

Puntero al array en donde se almacenan los bytes leídos

1.3. LIBRERÍA PWM E IMPLEMENTACION DEL SPWM

La librería PWM incluye tres funciones de las cuales una se usa para configurar el modulo PMW1 del microprocesador TM4C123GP6Z y las dos funciones restante modulan una señal trifásica manipulando los registros del modulo de manera síncrona.

La funciones de la librería PWM son:

• void PWM1_Init(uint16_t period)

void PWM1_Init(uint16_t period) Esta función inicializa el modulo PWM1 para que este genere 6 salidas de PWM a una frecuencia determinada a través de los pines: PF0, PF2,PF3,PD0,PD1 y PA6. Parámetro Descripción uint16_t period Con el valor de indicado en period se calcula la

frecuncia de conmutación de la señal PWM

Page 97: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 7 Universidad de la Rioja

• void SPWM_Modulation1(int8_t increment)

• void SPWM_Modulation2(int8_t increment)

void SPWM_ModulationX(int8_t increment) Esta función genera una señal trifásica en los pines PF0, PF2 y PF3, si X = 1 Esta función genera una señal trifásica en los pines PDO,PD1 y PA6, si X =0 Parámetro Descripción int8_t increment Incremente puede tomar el valor de cero o uno

y determina la dirección de avance de las señales moduladas para hacer mover el motor

1.4. LIBRERÍA PLL

Esta librería incluye una sola función. En ella se configura la frecuencia del reloj del sistema y puede ser modificada si se modifica el valor del parámetro SISDIV2 que aparece en el fichero: PLL.h

• void PLL_Init(void)

void PLL_Init(void) Esta función establece la frecuencia del reloj del sistema

Parámetro Descripción ninguno

1.5. PROGRAMA PRINCIPAL.

El fichero main.c incluye el código principal del proyecto en el cual definen las funciones y los algoritmos necesarios para implementar el Gimbal propuesto en este Trabajo de Fin de Grado. El contenido de este fichero puede ser consultado en los ANEXOS.

Page 98: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 8 Universidad de la Rioja

En el programa principal se definen 8 funciones, tres de ellas se usan para generar las tres interrupciones en las que se basa el funcionamiento del Gimbal y el resto constituye un conjunto de funciones que llevan a cabo las tareas de tratamiento de datos y manipulación de las señales PWM.

A continuación de detallan las funciones que aparecen definidas en el

fichero main.c:

• void EnableInterrupts(void):

void EnableInterrupts(void) Esta función habilita la generación global de las interrupciones

Parámetro Descripción ninguno

• void WaitForInterrupt(void):

void WaitForInterrupt (void) Cuando se ejecuta esta función el programa entra en un bucle infinito del cual solo sale cuando se genera una interrupción Parámetro Descripción ninguno

• void func(double freq)

• void func2(double freq2)

void func(double freq) void func2(double freq2) Estas dos funciones manipulan los registros del TIMER0 y TIMER1 y son usadas para variar la frecuencia de las señales moduladas. En base al valor de freq/freq2, se calcula el numero de ciclos de reloj necesarios para generar una sinusoide a la frecuencia deseada. Parámetro Descripción freq, freq2 El valor asignado a freq/freq2 corresponde con

la velocidad de giro del motor en revoluciones/segundo.

Page 99: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 9 Universidad de la Rioja

• void Calibrate_Gyros()

void Calibrate_Gyros() Esta función sirve para calcular el drift que presentan los giroscopios con el fin de extraer esta componente de las medidas. Solo se ejecuta una vez al arrancar la aplicación. Parámetro Descripción ninguno

• void filterUpdate(float w_x, float w_y, float w_z, float a_x, float a_y,

float a_z)

void filterUpdate(float w_x, float w_y, float w_z, float a_x, float a_y, float a_z) Esta función implementa el filtro Madwick y se ejecuta periódicamente después de cada tomada de datos. Los parámetros que se le pasan corresponden con las aceleraciones y velocidades medidas por los sensores. Dentro de esta función se lleva a cabo el tratamiento de datos y el calculo del cuaternio de orientación. Parametro Descripción w_x, w_y, w_z Velocidad angular de cada uno de los

giroscopios a_x, a_y, a_z Aceleración de cada uno de los acelerómetros

• void OutputSineWave(void)

• void OutputSineWave2(void)

void OutputSineWave(void) void OutputSineWave2(void) Estas dos funciones se ejecutan cada que se produce una interrupción que bien puede ser del TIMER0 O TIMER1. Al mismo tiempo dentro de ellas se ejecutan los funciones que modulan las señales PWM con las que se hacen girar los motores Parámetro Descripción ninguno

Page 100: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 10 Universidad de la Rioja

• void PeriodTask(void)

void PeriodTask(void) Esta función se ejecuta de manera periódica a la frecuencia del sistema, dentro de ella se lleva a cabo la toma de datos y el cálculo de la acción de control.

Parámetro Descripción ninguno

• int main(void)

int main(void) Esta es la función principal, se ejecuta al iniciar el micro y dentro de ella se configura la frecuencia del reloj de, sistema, el modulo I2C, el modulo PWM, los módulos TIMER y también se ajusta la sensibilidad de los sensores. Una vez se han configurado todos los dispositivos, el programa entra en un bucle infinito definido en esta función y del que solo puede salir cuando se produzca una interrupción.

Parámetro Descripción ninguno

Page 101: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 11 Universidad de la Rioja

2. CODIGO

2.1. FICHERO PWM.H

// Fichero: PWM.h // Alexander Montoya // 01-07-2016 void PWM1_Init(uint16_t period); // Cambio del ancho de pulso void SPWM_Modulation1(int8_t increment); void SPWM_Modulation2(int8_t increment); Fichero PWM.c: // Fichero: PWM.c // Alexander Montoya // 01-07-2016 /* ********************************************************* ********************************************************* ** En esta librería se definen las 3 funciones que ** ** son necesarias para la generación de 6 señales ** ** PWM usando el modulo PWM del mircroprocesador ** ** TM4C123G6PZ. Una de las funciones inicializa y ** ** configuran el modulo y las otras dos se usan para ** ** cambiar el ancho de pulso de las señales PWM ** ** ** ********************************************************* ********************************************************* */ // // Ficheros a incluir // #include <stdint.h> #include "PWM.h" #include <math.h>

Page 102: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 12 Universidad de la Rioja

// // Definición de punteros a los registros del modulo // #define PWM1_ENABLE_R (*((volatile uint32_t *)0x40029008)) #define PWM1_CTL_R (*((volatile uint32_t *)0x40029000)) #define PWM1_SYNC_R (*((volatile uint32_t *)0x40029004)) #define PWM1_0_CTL_R (*((volatile uint32_t *)0x40029040)) #define PWM1_0_LOAD_R (*((volatile uint32_t *)0x40029050)) #define PWM1_0_CMPA_R (*((volatile uint32_t *)0x40029058)) #define PWM1_0_CMPB_R (*((volatile uint32_t *)0x4002905C)) #define PWM1_0_GENA_R (*((volatile uint32_t *)0x40029060)) #define PWM1_0_GENB_R (*((volatile uint32_t *)0x40029064)) #define PWM1_1_CTL_R (*((volatile uint32_t *)0x40029080)) #define PWM1_1_LOAD_R (*((volatile uint32_t *)0x40029090)) #define PWM1_1_CMPA_R (*((volatile uint32_t *)0x40029098)) #define PWM1_1_GENA_R (*((volatile uint32_t *)0x400290A0)) #define PWM1_2_CTL_R (*((volatile uint32_t *)0x400290C0)) #define PWM1_2_LOAD_R (*((volatile uint32_t *)0x400290D0)) #define PWM1_2_CMPA_R (*((volatile uint32_t *)0x400290D8)) #define PWM1_2_CMPB_R (*((volatile uint32_t *)0x400290DC)) #define PWM1_2_GENA_R (*((volatile uint32_t *)0x400290E0)) #define PWM1_2_GENB_R (*((volatile uint32_t *)0x400290E4)) #define PWM1_3_CTL_R (*((volatile uint32_t *)0x40029100)) #define PWM1_3_LOAD_R (*((volatile uint32_t *)0x40029110)) #define PWM1_3_CMPA_R (*((volatile uint32_t *)0x40029118)) #define PWM1_3_CMPB_R (*((volatile uint32_t *)0x4002911C)) #define PWM1_3_GENA_R (*((volatile uint32_t *)0x40029120)) #define PWM1_3_GENB_R (*((volatile uint32_t *)0x40029124)) #define GPIO_PORTA_AFSEL_R (*((volatile uint32_t *)0x40004420)) #define GPIO_PORTA_ODR_R (*((volatile uint32_t *)0x4000450C)) #define GPIO_PORTA_DEN_R (*((volatile uint32_t *)0x4000451C)) #define GPIO_PORTA_AMSEL_R (*((volatile uint32_t *)0x40004528)) #define GPIO_PORTA_PCTL_R (*((volatile uint32_t *)0x4000452C)) #define GPIO_PORTD_AFSEL_R (*((volatile uint32_t *)0x40007420)) #define GPIO_PORTD_ODR_R (*((volatile uint32_t *)0x4000750C)) #define GPIO_PORTD_DEN_R (*((volatile uint32_t *)0x4000751C)) #define GPIO_PORTD_AMSEL_R (*((volatile uint32_t *)0x40007528)) #define GPIO_PORTD_PCTL_R (*((volatile uint32_t *)0x4000752C))

Page 103: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 13 Universidad de la Rioja

#define GPIO_PORTF_AFSEL_R (*((volatile uint32_t *)0x40025420)) #define GPIO_PORTF_ODR_R (*((volatile uint32_t *)0x4002550C)) #define GPIO_PORTF_DEN_R (*((volatile uint32_t *)0x4002551C)) #define GPIO_PORTF_AMSEL_R (*((volatile uint32_t *)0x40025528)) #define GPIO_PORTF_PCTL_R (*((volatile uint32_t *)0x4002552C)) #define GPIO_PORTF_LOCK_R (*((volatile uint32_t *)0x40025520)) #define GPIO_PORTF_CR_R (*((volatile uint32_t *)0x40025524)) #define SYSCTL_RCGCGPIO_R (*((volatile uint32_t *)0x400FE608)) #define SYSCTL_RCGCPWM_R (*((volatile uint32_t *)0x400FE640)) #define SYSCTL_PRGPIO_R (*((volatile uint32_t *)0x400FEA08)) #define SYSCTL_PRPWM_R (*((volatile uint32_t *)0x400FEA40)) #define STEPS 540 #define PI 3.14159265358979323846 uint16_t Wave2[1000]; //***************** PWM1_Init ************************ // Esta función inicializa el modulo PWM1 para // que este genere 6 salidas de PWM a una // frecuencia determinada a través de los pines: PF0, // PF2,PF3,PD0,PD1 y PA6. // Entradas: - period -> este valor determina // la frecuencia de conmutación de las // señales PWM // Salidas : NULL //***************** PWM1_Init ************************ void PWM1_Init(uint16_t period){ // Calculo de los 50 valores de la señal a modular for (int i=0;i<=(STEPS-1);i++) Wave2[i]= 10+ (0.5*(2/(sqrt(3))*sin(i*2*PI/STEPS) + 1/(3*sqrt(3))*sin(i*2*3*PI/STEPS))+0.5)*600 ; // Se proporciona una señal de reloj a los modulos PWM1 SYSCTL_RCGCPWM_R |= 0x00000002;

Page 104: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 14 Universidad de la Rioja

// Espera mientras se termina la anterior instrucción while((SYSCTL_PRPWM_R&0x00000002)==0){}; // Se activa el reloj para los puertos A/D/F SYSCTL_RCGCGPIO_R |= 0x00000029; // Espera mientras se termina la anterior instrucción while((SYSCTL_PRGPIO_R&0x00000029)==0){}; GPIO_PORTF_LOCK_R |= 0x4C4F434B; GPIO_PORTF_CR_R |= 0x01; GPIO_PORTF_AFSEL_R |= 0x0D; // Habilita funcionalidad alternativa para los pines PF0/PF2/PF3 GPIO_PORTF_ODR_R &= ~0x0D; // Deshabilita salida a colector abierto para los pines PF0/PF2/PF3 GPIO_PORTF_DEN_R |= 0x0D; // Habilita función digital en los pines PF0/PF2/PF3 GPIO_PORTF_AMSEL_R &= ~0x0D; // Deshabilita función analógica en los pines PF0/PF2/PF3 GPIO_PORTA_AFSEL_R |= 0x40; // Habilita funcionalidad alternativa para los pines PA6 GPIO_PORTA_ODR_R &= ~0x40; // Deshabilita salida a colector abierto para los pines PA6 GPIO_PORTA_DEN_R |= 0x40; // Habilita función digital en los pines PA6 GPIO_PORTA_AMSEL_R &= ~0x40; // Deshabilita función analógica en los pines PA6 GPIO_PORTD_AFSEL_R |= 0x03; // Habilita funcionalidad alternativa para los pines PD0/PD1 GPIO_PORTD_ODR_R &= ~0x03; // Deshabilita salida a colector abierto para los pines PD0/PD1 GPIO_PORTD_DEN_R |= 0x03; // Habilita función digital en los pines PD0/PD1 GPIO_PORTD_AMSEL_R &= ~0x03; // Deshabilita función analógica en los pines PD0/PD1 GPIO_PORTF_PCTL_R = (GPIO_PORTF_PCTL_R&0xFFFF00F0)+0x00005505; // Configura PF0/2/3 para soportar señales de PWM GPIO_PORTD_PCTL_R = (GPIO_PORTD_PCTL_R&0xFFFFFF00)+0x00000055; // Configura PD0/1 para soportar señales de PWM GPIO_PORTA_PCTL_R = (GPIO_PORTA_PCTL_R&0xF0FFFFFF)+0x05000000; // Configura PA6 para soportar señales de PWM

Page 105: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 15 Universidad de la Rioja

// Configuración de los generadores PWM1_0_CTL_R |= 0x32; PWM1_1_CTL_R |= 0x12; PWM1_2_CTL_R |= 0x12; PWM1_3_CTL_R |= 0x32; PWM1_0_GENB_R = 0xB00; PWM1_0_GENA_R = 0x0B0; PWM1_1_GENA_R = 0x0B0; PWM1_2_GENA_R = 0x0B0; PWM1_3_GENA_R = 0x0B0; PWM1_3_GENB_R = 0xB00; // Se configura la frecuencia de conmutación PWM1_0_LOAD_R = period - 1; PWM1_1_LOAD_R = period - 1; PWM1_2_LOAD_R = period - 1; PWM1_3_LOAD_R = period - 1; // Se definen un ancho de pulso para cada una de las señales PWM1_0_CMPB_R = 200 -1; PWM1_0_CMPA_R = 100 - 1; PWM1_1_CMPA_R = 50 - 1; PWM1_3_CMPB_R = 200 - 1; PWM1_2_CMPA_R = 100 - 1; PWM1_3_CMPA_R = 50 - 1; // Se habilitan todos los generadores PWM1_0_CTL_R |= 0x01;// Arranca el generador 0 PWM1_1_CTL_R |= 0x01;// Arranca el generador 1 PWM1_2_CTL_R |= 0x01;// Arranca el generador 2 PWM1_3_CTL_R |= 0x01;// Arranca el generador 3 PWM1_ENABLE_R |= 0xD7;// enable PWM1 Generator 0/1/2/3 } //*************** SPWM_Modulation1 ***************** // Esta función genera una señal trifásica de // de ancho de pulso variable. // Entradas: - increment -> indica la dirección de // avance de la sinusoide. // Salidas : NULL //*************** SPWM_Modulation1 ***************** uint8_t ft=1;

Page 106: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 16 Universidad de la Rioja

void SPWM_Modulation1(int8_t increment){ static int16_t index = 0; static int16_t index_2 = 180; static int16_t index_3 = 360; index = index + increment; if (index > STEPS-1) index = 0; if (index < 0) index = STEPS-1; index_2 = index_2 + increment; if (index_2 > STEPS-1) index_2 = 0; if (index_2 < 0) index_2 = STEPS-1; index_3 = index_3 + increment; if (index_3 > STEPS-1) index_3 = 0; if (index_3 < 0) index_3 = STEPS-1; if (ft){ft=0; PWM1_SYNC_R |= 0x0C;} PWM1_2_CMPA_R = Wave2[index]; // cambio de ancho de pulso en la señal PWM1_3_CMPA_R = Wave2[index_2]; // cambio de ancho de pulso en la señal PWM1_3_CMPB_R = Wave2[index_3]; // cambio de ancho de pulso en la señal PWM1_CTL_R |= 0x0C; } //************* PWM_Modulation2 ********************** // Esta función genera una señal trifásica de // de ancho de pulso variable. // Entradas: - increment -> indica la dirección de // avance de la sinusoide. // Salidas : NULL //************* PWM_Modulation2 ********************** uint8_t ft2=1; void SPWM_Modulation2(int8_t increment){ static int16_t index = 0; static int16_t index_2 = 180; static int16_t index_3 = 360;

Page 107: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 17 Universidad de la Rioja

index = index + increment; if (index > STEPS-1) index = 0; if (index < 0) index = STEPS-1; index_2 = index_2 + increment; if (index_2 > STEPS-1) index_2 = 0; if (index_2 < 0) index_2 = STEPS-1; index_3 = index_3 + increment; if (index_3 > STEPS-1) index_3 = 0; if (index_3 < 0) index_3 = STEPS-1; if (ft2){ft2=0; PWM1_SYNC_R |= 0x03;} PWM1_0_CMPB_R = Wave2[index]; //cambio de ancho de pulso en la señal PWM1_0_CMPA_R = Wave2[index_2]; //cambio de ancho de pulso en la señal PWM1_1_CMPA_R = Wave2[index_3]; //cambio de ancho de pulso en la señal PWM1_CTL_R |= 0x03; }

Page 108: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 18 Universidad de la Rioja

2.2. CODIGO TIMERS

Fichero Timers.h: // Fichero: Timers.h // Alexander Montoya // 01-07-2016 #ifndef __TIMER0AINTS_H__ // do not include more than once #define __TIMER0AINTS_H__ void Timer2A_Init(void(*task)(void), uint32_t period); void Timer1A_Init(void(*task)(void), uint32_t period); void Timer0A_Init(void(*task)(void), uint32_t period); #endif // __TIMER0AINTS_H__ Fichero Timers.c: // Fichero: Timers.h // Alexander Montoya // 01-07-2016 /* ********************************************************* ********************************************************* ** En esta librería se definen las definen las ** ** funciones usadas para generar interrupciones ** ** periódicas a una frecuencia particular haciendo ** ** uso de los módulos Timer del microporcesador ** ** TM4C123G6PZ ** ********************************************************* ********************************************************* */ #include <stdint.h> #include "tm4c123gh6pm.h" void (*PeriodicTask)(void); // user function

Page 109: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 19 Universidad de la Rioja

void (*PeriodicTask2)(void); // user function void (*PeriodicTask3)(void); // user function // ***************** Timer2A_Init **************** // Activa las interrupciones del TIMER2 para // ejecutar tareas periódicas // Entrada: - task -> puntero a una funcion definida por el usuario // - period en unidades (1/clockfreq), 32 bits // Salidas: NULL // ***************** Timer2A_Init **************** void Timer2A_Init(void(*task)(void), uint32_t period){ uint32_t P = period; SYSCTL_RCGCTIMER_R |= 0x04; // 0) activa TIMER2A PeriodicTask = task; // funcion de usuario TIMER2_CTL_R = 0x00000000; // 1) Deshabilita Timer2A durante la configuración TIMER2_CFG_R = 0x00000000; // 2) configura Timer2A a modo 32-bit TIMER2_TAMR_R = 0x00000002; // 3) configuración en modo periódico y cuenta descendente TIMER2_TAILR_R = P -1; // 4) valor de recarga TIMER2_TAPR_R = 0; // 5) bus clock resolution TIMER2_ICR_R = 0x00000001; // 6) borra bandera TIMER2A timeout TIMER2_IMR_R = 0x00000001; // 7) generación de interrupción modo timeout NVIC_PRI5_R = (NVIC_PRI5_R&0x00FFFFFF)|0x30000000; // 8) prioridad 3 NVIC_EN0_R = 1<<23; // 9) habilita la rutina de interrupción en el vector de interrupciones TIMER2_CTL_R = 0x00000001; // 10) habilita el TIMER2A } // ***************** Timer2A_Handler **************** // Función que se ejecuta cada que se produce // una interrupción por parte del Timer2 // ejecutar tareas periódicas // Entrada: NULL // Salidas: NULL // ***************** Timer2A_Handler **************** void Timer2A_Handler(void){ TIMER2_ICR_R = TIMER_ICR_TATOCINT;// borra bandera (*PeriodicTask)(); // ejecuta la función de usuario } // ***************** Timer1A_Init **************** // Activa las interrupciones del TIMER1 para // ejecutar tareas periódicas // Entrada: - task -> puntero a una función definida por el usuario // - period en unidades (1/clockfreq), 32 bits // Salidas: NULL

Page 110: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 20 Universidad de la Rioja

// ***************** Timer1A_Init **************** void Timer1A_Init(void(*task)(void), uint32_t period){ uint32_t P = period; SYSCTL_RCGCTIMER_R |= 0x02; // 0) activa TIMER1A PeriodicTask2 = task; // función de usuario TIMER1_CTL_R = 0x00000000; // 1) Deshabilita Timer1A durante la configuración TIMER1_CFG_R = 0x00000000; // 2) configura Timer2A a modo 32-bit TIMER1_TAMR_R = 0x00000002; // 3) configuración en modo periódico y cuenta descendente TIMER1_TAILR_R = P -1; // 4) valor de recarga TIMER1_TAPR_R = 0; // 5) bus clock resolution TIMER1_ICR_R = 0x00000001; // 6) borra bandera TIMER1A timeout TIMER1_IMR_R = 0x00000001; // 7) generación de interrupción modo timeout NVIC_PRI5_R = (NVIC_PRI5_R&0xFFFF00FF)|0x00008000; // 8) priority 8 NVIC_EN0_R = 1<<21; // 9) habilita la rutina de interrupción en el vector de interrupciones TIMER1_CTL_R = 0x00000001; // 10) habilita el TIMER1A } // ***************** Timer1A_Handler **************** // Función que se ejecuta cada que se produce // una interrupción por parte del Timer2 // ejecutar tareas periódicas // Entrada: NULL // Salidas: NULL // ***************** Timer1A_Handler **************** void Timer1A_Handler(void){ TIMER1_ICR_R = TIMER_ICR_TATOCINT;// acknowledge timer1A timeout (*PeriodicTask2)(); // execute user task } // ***************** Timer0A_Init **************** // Activa las interrupciones del TIMER0 para // ejecutar tareas periódicas // Entrada: - task -> puntero a una función definida por el usuario // - period en unidades (1/clockfreq), 32 bits // Salidas: NULL // ***************** Timer0A_Init **************** void Timer0A_Init(void(*task)(void), uint32_t period){ SYSCTL_RCGCTIMER_R |= 0x01; // 0) activa TIMER0A PeriodicTask3 = task; // función de usuario

Page 111: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 21 Universidad de la Rioja

TIMER0_CTL_R = 0x00000000; // 1) Deshabilita Timer0A durante la configuración TIMER0_CFG_R = 0x00000000; // 2) configura Timer0A a modo 32-bit TIMER0_TAMR_R = 0x00000002; // 3) configuración en modo periódico y cuenta descendente TIMER0_TAILR_R = period-1; // 4) valor de recarga TIMER0_TAPR_R = 0; // 5) bus clock resolution TIMER0_ICR_R = 0x00000001; // 6) borra bandera TIMER0A timeout TIMER0_IMR_R = 0x00000001; // 7) generación de interrupción modo timeout NVIC_PRI4_R = (NVIC_PRI4_R&0x00FFFFFF)|0x80000000; // 8) priority 4 NVIC_EN0_R = 1<<19; // 9) habilita la rutina de interrupción en el vector de interrupciones TIMER0_CTL_R = 0x00000001; // 10) habilita el TIMER0A } // ***************** Timer0A_Handler **************** // Función que se ejecuta cada que se produce // Una interrupción por parte del Timer0 // ejecutar tareas periódicas // Entrada: NULL // Salidas: NULL // ***************** Timer0A_Handler **************** void Timer0A_Handler(void){ TIMER0_ICR_R = TIMER_ICR_TATOCINT; // borra bandera (*PeriodicTask3)(); // ejecuta función de usuario 3 }

Page 112: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 22 Universidad de la Rioja

2.3. CÓDIGO I2C

Fichero I2C.h: // Fichero : I2C.h // Alexander Montoya Osorio // 01/06/2016 #ifndef I2C_H #define I2C_H void I2C0_Init(void); unsigned long writeMD(unsigned char addr, unsigned char addrReg, unsigned char data); unsigned long readMD(unsigned char addr,unsigned char regAddr, unsigned char numbytes, unsigned char *databuff); #endif

Fichero I2C.c: // Fichero : I2C.c // Alexander Montoya Osorio // 01/06/2016 /* ********************************************************* ********************************************************* ** En esta librería se definen las funciones ** ** necesarias para inicializar el modulo ** ** I2C0 del microprocesador TM4C123G6PZ y usarlo ** ** para llevar a cabo transferencias de datos ** ** entre el micro y la IMU ** ** ** ********************************************************* ********************************************************* */ // // Ficheros a incluir // #include "I2C.h" #include <stdint.h> #include "tm4c123gh6pm.h"

Page 113: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 23 Universidad de la Rioja

// // Definición de procedimientos // #define SLA_W(address) (address << 1) #define SLA_R(address) ((address << 1) + 0x01) // // Definición de etiquetas // #define I2C_MCS_ACK 0x00000008 // Data Acknowledge Enable #define I2C_MCS_DATACK 0x00000008 // Acknowledge Data #define I2C_MCS_ADRACK 0x00000004 // Acknowledge Address #define I2C_MCS_STOP 0x00000004 // Generate STOP #define I2C_MCS_START 0x00000002 // Generate START #define I2C_MCS_ERROR 0x00000002 // Error #define I2C_MCS_RUN 0x00000001 // I2C Master Enable #define I2C_MCS_BUSY 0x00000001 // I2C Busy #define I2C_MCR_MFE 0x00000010 // I2C Master Function Enable //********************** I2C0_Init ******************** // Esta función inicializa el modulo cero de I2C // y lo configura para su uso con una velocidad de // 100 Kbit/s. También configura los pines PB2,3 // de tal manera que PB2 contiene la señal de reloj // (SCL) y PB3 la señal de datos (SDA). // Entradas: NULL // Salidas : NULL //********************** I2C0_Init ******************** void I2C0_Init() { SYSCTL_RCGCI2C_R |= 0x0001; // 1) Activa el modulo I2CO SYSCTL_RCGCGPIO_R |= 0x0002; // 2) Activa el puerto B while((SYSCTL_PRGPIO_R&0x0002) == 0){};// ready? Bucle de espera mientras se activa el puerto GPIO_PORTB_AFSEL_R |= 0x0C; // 3) Habilita la funcionalidad alternativa // para os pines PB2,3 para ser usados GPIO_PORTB_ODR_R |= 0x08; // 4) Habilita PB3 como salida a colector abierto GPIO_PORTB_DEN_R |= 0x0C; // 5) Habilita PB2,3 como pines de etrada/salida digital // 6) configura PB2,3 como señales I2C

Page 114: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 24 Universidad de la Rioja

GPIO_PORTB_PCTL_R = (GPIO_PORTB_PCTL_R&0xFFFF00FF)+0x00003300; GPIO_PORTB_AMSEL_R &= ~0x0C; // 7) Deshabilita funcionalidad analógica para PB2,3 I2C0_MTPR_R = 2; // 8) Establece un velocidad de comunicación de 100 Kbit/s I2C0_MCR_R = I2C_MCR_MFE; // 9) Habilita el modulo I2C para su uso } //******************** writeMD ************************* // Esta función envía por el bus I2C un byte de // datos al dispositivo apuntado por la dirección // indicada en addr. // Entradas: - addr -> dirección dispositivo I2C // - regAddr -> dirección del único registro al que se quiere acceder // - data -> dato a ser enviado // Salidas : NULL //******************** writeMD ************************* unsigned long writeMD(unsigned char addr, unsigned char addrReg, unsigned char data) // write { // Añade bit de escritura I2C0_MSA_R = SLA_W(addr); // Pone el dato en el registro de salida I2C0_MDR_R = addrReg; // Espera mientras el bus esta ocupado while (I2C0_MCS_R & I2C_MCS_BUSY){}; // Genera una condición de START en el bus y envia el dato I2C0_MCS_R = I2C_MCS_START|I2C_MCS_RUN; // Espera mientras el bus esta ocupado while (I2C0_MCS_R & I2C_MCS_BUSY){}; // Se comprueba que no ha ocurrido ningún error durante la transferencia if((I2C0_MCS_R&(I2C_MCS_DATACK|I2C_MCS_ADRACK|I2C_MCS_ERROR)) != 0){ I2C0_MCS_R = (0| I2C_MCS_STOP|I2C_MCS_RUN); return (I2C0_MCS_R&(I2C_MCS_DATACK|I2C_MCS_ADRACK|I2C_MCS_ERROR)); } // Se pone un nuevo dato en el registro de salida I2C0_MDR_R = data;

Page 115: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 25 Universidad de la Rioja

// Se genera una condición de START y se envía el nuevo dato I2C0_MCS_R = I2C_MCS_STOP|I2C_MCS_RUN // Espera mientras el bus esta ocupado while (I2C0_MCS_R & I2C_MCS_BUSY){}; // Devuelve cero si no hubieron errores return (I2C0_MCS_R&(I2C_MCS_DATACK|I2C_MCS_ADRACK|I2C_MCS_ERROR)); } //********************** readMD *********************** // Esta función devuelve en un array los bytes de // datos recibidos por el bus I2C del dispositivo // cuya dirección esta contenida en addr. // Entradas: - addr -> dirección dispositivo I2C // - regAddr -> dirección del el primer registro a leer // - nunbytes -> numero de bytes a leer // - *databuff -> puntero a un array de bytes // Salidas : NULL //********************** readMD *********************** unsigned long readMD(unsigned char addr,unsigned char regAddr, unsigned char numbytes, unsigned char *databuff) { // Añade bit de escritura I2C0_MSA_R = SLA_W(addr); // Pone el dato en el registro de salida I2C0_MDR_R = regAddr; // Espera mientras el bus esta ocupado while (I2C0_MCS_R & I2C_MCS_BUSY){}; // Genera una condición de START en el bus y envía el dato I2C0_MCS_R = I2C_MCS_START|I2C_MCS_RUN; // Espera mientras el bus esta ocupado while (I2C0_MCS_R & I2C_MCS_BUSY){}; // Añade bit de lectura I2C0_MSA_R = SLA_R(addr); // Genera una condición de START en el bus y se prepara el modulo para validar dato recibido I2C0_MCS_R = I2C_MCS_START|I2C_MCS_RUN|I2C_MCS_ACK;

Page 116: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 26 Universidad de la Rioja

// Si hubieron errores durante la recepción se genera una condición de STOP y se abandona la función if((I2C0_MCS_R&(I2C_MCS_ADRACK|I2C_MCS_ERROR)) != 0){ I2C0_MCS_R = (0 | I2C_MCS_STOP |I2C_MCS_RUN); return (I2C0_MCS_R&(I2C_MCS_DATACK|I2C_MCS_ADRACK|I2C_MCS_ERROR)); } // Bucle para recibir la cantidad de datos indicada en numbytes int i = 0; for(i=0;i<numbytes;i++) { if (i==0) databuff[i] = I2C0_MDR_R; // Se almacena el dato leido I2C0_MCS_R = I2C_MCS_ACK | I2C_MCS_RUN; // Genera señal ACK // Espera mientras la transmisión se lleva a cabo while(I2C0_MCS_R&I2C_MCS_BUSY){}; if((I2C0_MCS_R&(I2C_MCS_ADRACK|I2C_MCS_ERROR)) != 0) { I2C0_MCS_R = (0 | I2C_MCS_STOP | I2C_MCS_RUN); // Devuelve informe de errores si hubo algun error return (I2C0_MCS_R&(I2C_MCS_DATACK|I2C_MCS_ADRACK|I2C_MCS_ERROR)); } databuff[i] = I2C0_MDR_R; // Put data in the data register } // Se almacena el dato leído I2C0_MCS_R = I2C_MCS_STOP | I2C_MCS_RUN; // Espera mientras la transmisión se lleva a cabo while(I2C0_MCS_R&I2C_MCS_BUSY){}; return 0; }

Page 117: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 27 Universidad de la Rioja

2.4. CODIGO PRINCIPAL

Fichero gimbal.c: // Fichero: gimbal.c // Alexander Montoya Osorio // 01/06/2016 /* ********************************************************* ********************************************************* ** Este es el programa principal que se ejecuta ** al arrancar el gimbal. Se debe garantizar la inclusión ** de todos los ficheros necesario. El reloj del sistema ** se configura a 50 Mhz y la frecuencia de muestreo ** se establece en 200 Hz ********************************************************* ********************************************************* */ // // Ficheros a incluir // #include "tm4c123gh6pm.h" #include <stdint.h> #include "PLL.h" #include "Timer0A.h" #include <stdio.h> #include <stdlib.h> // C99 variable types #include <math.h> #include "PWM.h" #include "I2C.h" // // Constantes del sistema // #define deltat 1.0f/500.0f // sampling period in seconds (shown as 1 ms) #define gyroMeasError 3.14159265358979f * (5.0f / 180.0f) // gyroscope measurement error in rad/s (shown as 5 deg/s)

Page 118: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 28 Universidad de la Rioja

#define beta 0.1f #define Fs 500 #define FS 50000000/Fs #define SCALE_GYRO 16.4 #define SCALE_ACC 16384 #define PI 3.14159265358979323846 // // Funciones del sistema // void DisableInterrupts(void); // Disable interrupts void EnableInterrupts(void); // Enable interrupts long StartCritical (void); // previous I bit, disable interrupts void EndCritical(long sr); // restore I bit to previous value void WaitForInterrupt(void); // low power mode // // Acción de control para cada uno de los motores // void func(double freq); void func2(double freq2); // // Calibración de los giros // void Calibrate_Gyros(void); // // Variables globales del sistema // float a_x1, a_y1, a_z1; // medidas de los acelerómetros en m/s^2 int16_t ia_x, ia_y, ia_z; // medidas del acelerómetro float w_x1, w_y1, w_z1; // medidas de los giroscopios en º/s int16_t iw_x, iw_y, iw_z; float SEq_1 = 1.0f, SEq_2 = 0.0f, SEq_3 = 0.0f, SEq_4 = 0.0f; // estimated orientation quaternion elements with initial conditions float eR,eP; float errorR;

Page 119: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 29 Universidad de la Rioja

float errorP; uint8_t datArray[14]; float yaw,roll,pitch; float AngleIn = 0 ; float AngleRef = 0; float AngleOut = 0 ; int count = 1; int8_t increment = 0; int8_t increment2 = 0; float ref=0; float GYRO_XOUT_OFFSET_1000SUM,GYRO_YOUT_OFFSET_1000SUM,GYRO_ZOUT_OFFSET_1000SUM; float GYRO_XOUT_OFFSET,GYRO_YOUT_OFFSET,GYRO_ZOUT_OFFSET; //***************** filterUpdate ************************ // Esta función implementa el filtro Madwick. En ella // se acondicionan las medidas y se calcula el cuaternio // de orientación. // Entradas: - w_x, w_y, w_z -> velocidad angular en cada eje // - a_x, a_y, a_z -> aceleración lineal en cada eje // Salidas : NULL //***************** filterUpdate ************************ void filterUpdate(float w_x, float w_y, float w_z, float a_x, float a_y, float a_z) { // Local system variables float norm; // vector norm float SEqDot_omega_1, SEqDot_omega_2, SEqDot_omega_3, SEqDot_omega_4; // quaternion derrivative from gyroscopes elements float f_1, f_2, f_3; // objective function elements float J_11or24, J_12or23, J_13or22, J_14or21, J_32, J_33; // objective function Jacobian elements float SEqHatDot_1, SEqHatDot_2, SEqHatDot_3, SEqHatDot_4; // estimated direction of the gyroscope error // Axulirary variables to avoid reapeated calcualtions float halfSEq_1 = 0.5f * SEq_1; float halfSEq_2 = 0.5f * SEq_2; float halfSEq_3 = 0.5f * SEq_3; float halfSEq_4 = 0.5f * SEq_4;

Page 120: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 30 Universidad de la Rioja

float twoSEq_1 = 2.0f * SEq_1; float twoSEq_2 = 2.0f * SEq_2; float twoSEq_3 = 2.0f * SEq_3; // Normalise the accelerometer measurement norm = sqrt(a_x * a_x + a_y * a_y + a_z * a_z); a_x /= norm; a_y /= norm; a_z /= norm; // Compute the objective function and Jacobian f_1 = twoSEq_2 * SEq_4 - twoSEq_1 * SEq_3 - a_x; f_2 = twoSEq_1 * SEq_2 + twoSEq_3 * SEq_4 - a_y; f_3 = 1.0f - twoSEq_2 * SEq_2 - twoSEq_3 * SEq_3 - a_z; J_11or24 = twoSEq_3; // J_11 negated in matrix multiplication J_12or23 = 2.0f * SEq_4; J_13or22 = twoSEq_1; // J_12 negated in matrix multiplication J_14or21 = twoSEq_2; J_32 = 2.0f * J_14or21; // negated in matrix multiplication J_33 = 2.0f * J_11or24; // negated in matrix multiplication // Compute the gradient (matrix multiplication) SEqHatDot_1 = J_14or21 * f_2 - J_11or24 * f_1; SEqHatDot_2 = J_12or23 * f_1 + J_13or22 * f_2 - J_32 * f_3; SEqHatDot_3 = J_12or23 * f_2 - J_33 * f_3 - J_13or22 * f_1; SEqHatDot_4 = J_14or21 * f_1 + J_11or24 * f_2; // Normalise the gradient norm = sqrt(SEqHatDot_1 * SEqHatDot_1 + SEqHatDot_2 * SEqHatDot_2 + SEqHatDot_3 * SEqHatDot_3 + SEqHatDot_4 * SEqHatDot_4); SEqHatDot_1 /= norm; SEqHatDot_2 /= norm; SEqHatDot_3 /= norm; SEqHatDot_4 /= norm; // Compute the quaternion derrivative measured by gyroscopes SEqDot_omega_1 = -halfSEq_2 * w_x - halfSEq_3 * w_y - halfSEq_4 * w_z; SEqDot_omega_2 = halfSEq_1 * w_x + halfSEq_3 * w_z - halfSEq_4 * w_y; SEqDot_omega_3 = halfSEq_1 * w_y - halfSEq_2 * w_z + halfSEq_4 * w_x; SEqDot_omega_4 = halfSEq_1 * w_z + halfSEq_2 * w_y - halfSEq_3 * w_x; // Compute then integrate the estimated quaternion derrivative SEq_1 += (SEqDot_omega_1 - (beta * SEqHatDot_1)) * deltat; SEq_2 += (SEqDot_omega_2 - (beta * SEqHatDot_2)) * deltat; SEq_3 += (SEqDot_omega_3 - (beta * SEqHatDot_3)) * deltat; SEq_4 += (SEqDot_omega_4 - (beta * SEqHatDot_4)) * deltat; // Normalise quaternion norm = sqrt(SEq_1 * SEq_1 + SEq_2 * SEq_2 + SEq_3 * SEq_3 + SEq_4 * SEq_4); SEq_1 /= norm; SEq_2 /= norm; SEq_3 /= norm; SEq_4 /= norm; }

Page 121: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 31 Universidad de la Rioja

// // Avance sinuoide trifasica para el Roll // void OutputSineWave(void) { SPWM_Modulation1(increment); func(errorR); } // // Avance sinuoide trifasica para el Pitch // void OutputSineWave2(void) { SPWM_Modulation2((increment2); func2(errorP); } float u,u_m1,u_m2,u_m3; float e,e_m1,e_m2,e_m3; float u2,u2_m1,u2_m2,u2_m3; float eP,e2_m1,e2_m2,e2_m3; //***************** PeriodTask ************************ // Esta función inicializa se ejecuta periódicamente // y en ella se realiza el muestreo de los sensores // y se implementan los controladores // Entradas: NULL // Salidas : NULL //***************** PeriodTask ************************ void PeriodTask(void){ // // Lectura de datos // unsigned long leido = readMD(0x68,0x3B,0x14,datArray);

Page 122: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 32 Universidad de la Rioja

iw_x = ((datArray[8] << 8) + datArray[9]); // Gyro X iw_y = ((datArray[10] << 8) + datArray[11]); // Gyro Y iw_z = ((datArray[12] << 8) + datArray[13]); // Gyro Z ia_x = ((datArray[0] << 8) + datArray[1]); // Acel X ia_y = ((datArray[2] << 8) + datArray[3]); // Acel Y ia_z = ((datArray[4] << 8) + datArray[5]); // Acel Z // // Eliminar bias de los giros // w_x1 = iw_x - GYRO_XOUT_OFFSET; w_y1 = iw_y - GYRO_YOUT_OFFSET; w_z1 = iw_z - GYRO_ZOUT_OFFSET; // // Cambio de unidades a rad/s // w_x1 = -w_x1*PI/180; w_y1 = -w_y1*PI/180; w_z1= w_z1*PI/180; a_x1 = ia_x; a_y1 = ia_y; a_z1 = -ia_z; // // Aplicación filtro Madwick // filterUpdate(w_x1/SCALE_GYRO,w_y1/SCALE_GYRO,w_z1/SCALE_GYRO,a_x1/SCALE_ACC,a_y1/SCALE_ACC,a_z1/SCALE_ACC); // // Calculo de angulos Roll, Pitch y Yaw // roll = atan2(2*SEq_1*SEq_2+2*SEq_3*SEq_4,1-2*SEq_2*SEq_2-2*SEq_3*SEq_3)*180/PI; pitch = asin(2*SEq_1*SEq_3 - 2*SEq_4*SEq_2)*180/PI; yaw = atan2(2*SEq_1*SEq_4 - 2*SEq_3*SEq_2 ,1-2*SEq_3*SEq_3-2*SEq_4*SEq_4)*180/PI; // // Calculo del error // eR = ref - roll;

Page 123: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 33 Universidad de la Rioja

eP = ref - pitch; // // Calculo accion de control // u = 0.004564*eR + 0.00001141*e_m1 - 0.004563*e_m2 + 1.655*u_m1 - 0.6552*u_m2 ; // pid Roll u2 = 0.004564*eP + 0.00001141*e2_m1 - 0.004563*e2_m2 + 1.655*u2_m1 - 0.6552*u2_m2 ; // pid Pitch u_m3 = u_m2; u_m2 = u_m1; u_m1 = u; e_m3 = e_m2; e_m2 = e_m1; e_m1 = eR; u2_m3 = u2_m2; u2_m2 = u2_m1; u2_m1 = u2; e2_m3 = e2_m2; e2_m2 = e2_m1; e2_m1 = eP; errorP = u2; errorR = u; } //******************* main ************************ // Esta función inicializa inicializa todos // los módulos del micro que se van a usar, configura // los sensores y entra un bucle infinito del que solo // saldrá si se produce una interrupción // Entradas: NULL // Salidas : NULL //******************* main ************************ int main(void){ // // Configura reloj del sistema // PLL_Init():

Page 124: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 34 Universidad de la Rioja

// // Inicialización del modulo I2C0 // I2C0_Init(); // // Configuración IMU // writeMD(0x68,0x1A,0x06); // Activamos filtro interno de la IMU writeMD(0x68,0x1B,0x18); // Gyro scale to 2000 º/s writeMD(0x68,0x1C,0x00); // Acel scale to 2g writeMD(0x68,0x6B,0x02); // Sleep disable // // Calibración de sensores // Calibrate_Gyros(); // // Inicialización modulo PWM1 // PWM1_Init(1300); // // Inicialización de los Timer // Timer0A_Init(&OutputSineWave2, 190476); Timer1A_Init(&OutputSineWave, 190476); Timer2A_Init(&PeriodTask, FS); EnableInterrupts(); while(1){ WaitForInterrupt(); } return 0; } //******************* func ************************ // Esta función reprograma el TIMER1 para // generar interrupciones periódicas a distintas // frecuencias. Las interrupciones se usan para ir // desplazar las ondas sinusoidales a la frecuencia // pasada como parámetro

Page 125: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 35 Universidad de la Rioja

// Entradas: - freq -> frecuencia en rev/s a la que // se quiere hace girar el motor // Salidas : NULL //******************* func ************************ void func(double freq) { if (freq == 0) increment = 0; else{ uint32_t P; double vel = (1/(freq*3780))*50000000; P = fabs(vel); if (P > 1322751) P = 1322751; if (P < 1128) P = 1128; if (freq > 0) increment = 1; if (freq < 0) increment = -1; TIMER1_TAILR_R = P -1; // 4) reload value } } //******************* func2 ************************ // Esta función reprograma el TIMER2 para // generar interrupciones periódicas a distintas // frecuencias. Las interrupciones se usan para ir // desplazar las ondas sinusoidales a la frecuencia // pasada como parámetro // Entradas: - freq -> frecuencia en rev/s a la que // se quiere hace girar el motor // Salidas : NULL //******************* func2 ************************ void func2(double freq2){ if (freq2 == 0) increment2 = 0; else{ uint32_t P; double vel = (1/(freq2*3780))*50000000;

Page 126: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 36 Universidad de la Rioja

P = fabs(vel); if (P > 1322751) P = 1322751; if (P < 1128) P = 1128; if (freq2 > 0) increment2 = 1; if (freq2 < 0) increment2 = -1; TIMER0_TAILR_R = P -1; // 4) reload value } } //***************** Calibrate_Gyros ********************** // Esta función calcula el valor de drif // de los acelerómetros al inicializar el Gimbal // para ajustar su calibración // Salidas : NULL //***************** Calibrate_Gyros ********************** void Calibrate_Gyros() { int x = 0; for(x = 0; x<1000; x++) { readMD(0x68,0x43,0x06,datArray); // Acc iw_x = ((datArray[0] << 8) + datArray[1]); // Gyro X iw_y = ((datArray[2] << 8) + datArray[3]); // Gyro Y iw_z = ((datArray[4] << 8) + datArray[5]); // Gyro Z GYRO_XOUT_OFFSET_1000SUM += iw_x; GYRO_YOUT_OFFSET_1000SUM += iw_y; GYRO_ZOUT_OFFSET_1000SUM += iw_z; } GYRO_XOUT_OFFSET = GYRO_XOUT_OFFSET_1000SUM/1000; GYRO_YOUT_OFFSET = GYRO_YOUT_OFFSET_1000SUM/1000; GYRO_ZOUT_OFFSET = GYRO_ZOUT_OFFSET_1000SUM/1000; }

2.5. CODIGO PLL

Fichero PLL.h:

Page 127: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 37 Universidad de la Rioja

// Fichero: PLL.h // Alexander Montoya Osorio // 01/06/2016 // El #define SYSDIV2 inicializa el //PLL a la deseada frecuencia. #define SYSDIV2 7 // bus frequency is 400MHz/(SYSDIV2+1) = 400MHz/(7+1) = 50 MHz // confitura el sistema para funcionar con el reloj del PLL void PLL_Init(void); /* SYSDIV2 Divisor Clock (MHz) 0 1 reserved 1 2 reserved 2 3 reserved 3 4 reserved 4 5 80.000 5 6 66.667 6 7 reserved 7 8 50.000 8 9 44.444 9 10 40.000 10 11 36.364 11 12 33.333 12 13 30.769 13 14 28.571 14 15 26.667 15 16 25.000 16 17 23.529 17 18 22.222 18 19 21.053 19 20 20.000 20 21 19.048 21 22 18.182 22 23 17.391 23 24 16.667 24 25 16.000 25 26 15.385 26 27 14.815 27 28 14.286 28 29 13.793 29 30 13.333 30 31 12.903 31 32 12.500

Page 128: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 38 Universidad de la Rioja

32 33 12.121 33 34 11.765 34 35 11.429 35 36 11.111 36 37 10.811 37 38 10.526 38 39 10.256 39 40 10.000 40 41 9.756 41 42 9.524 42 43 9.302 43 44 9.091 44 45 8.889 45 46 8.696 46 47 8.511 47 48 8.333 48 49 8.163 49 50 8.000 50 51 7.843 51 52 7.692 52 53 7.547 53 54 7.407 54 55 7.273 55 56 7.143 56 57 7.018 57 58 6.897 58 59 6.780 59 60 6.667 60 61 6.557 61 62 6.452 62 63 6.349 63 64 6.250 64 65 6.154 65 66 6.061 66 67 5.970 67 68 5.882 68 69 5.797 69 70 5.714 70 71 5.634 71 72 5.556 72 73 5.479 73 74 5.405 74 75 5.333 75 76 5.263 76 77 5.195 77 78 5.128 78 79 5.063 79 80 5.000 80 81 4.938

Page 129: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 39 Universidad de la Rioja

81 82 4.878 82 83 4.819 83 84 4.762 84 85 4.706 85 86 4.651 86 87 4.598 87 88 4.545 88 89 4.494 89 90 4.444 90 91 4.396 91 92 4.348 92 93 4.301 93 94 4.255 94 95 4.211 95 96 4.167 96 97 4.124 97 98 4.082 98 99 4.040 99 100 4.000 100 101 3.960 101 102 3.922 102 103 3.883 103 104 3.846 104 105 3.810 105 106 3.774 106 107 3.738 107 108 3.704 108 109 3.670 109 110 3.636 110 111 3.604 111 112 3.571 112 113 3.540 113 114 3.509 114 115 3.478 115 116 3.448 116 117 3.419 117 118 3.390 118 119 3.361 119 120 3.333 120 121 3.306 121 122 3.279 122 123 3.252 123 124 3.226 124 125 3.200 125 126 3.175 126 127 3.150 127 128 3.125 */

Page 130: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 40 Universidad de la Rioja

Fichero PLL.c : // Fichero: PLL.c // Alexander Montoya Osorio // 01/06/2016 /* ********************************************************* ********************************************************* ** En esta librería se define una función para ** ** inicializar el reloj del sistema a una frecuencia ** ** determinada por el usuario haciendo uso del PLL ** ** ** ********************************************************* ********************************************************* */ #include "PLL.h" // The #define statement SYSDIV2 in PLL.h // initializes the PLL to the desired frequency. // bus frequency is 400MHz/(SYSDIV2+1) = 400MHz/(7+1) = 50 MHz // see the table at the end of this file #define SYSCTL_RIS_R (*((volatile unsigned long *)0x400FE050)) #define SYSCTL_RIS_PLLLRIS 0x00000040 // PLL Lock Raw Interrupt Status #define SYSCTL_RCC_R (*((volatile unsigned long *)0x400FE060)) #define SYSCTL_RCC_XTAL_M 0x000007C0 // Crystal Value #define SYSCTL_RCC_XTAL_6MHZ 0x000002C0 // 6 MHz Crystal #define SYSCTL_RCC_XTAL_8MHZ 0x00000380 // 8 MHz Crystal #define SYSCTL_RCC_XTAL_16MHZ 0x00000540 // 16 MHz Crystal #define SYSCTL_RCC2_R (*((volatile unsigned long *)0x400FE070)) #define SYSCTL_RCC2_USERCC2 0x80000000 // Use RCC2 #define SYSCTL_RCC2_DIV400 0x40000000 // Divide PLL as 400 MHz vs. 200 // MHz #define SYSCTL_RCC2_SYSDIV2_M 0x1F800000 // System Clock Divisor 2 #define SYSCTL_RCC2_SYSDIV2LSB 0x00400000 // Additional LSB for SYSDIV2 #define SYSCTL_RCC2_PWRDN2 0x00002000 // Power-Down PLL 2 #define SYSCTL_RCC2_BYPASS2 0x00000800 // PLL Bypass 2 #define SYSCTL_RCC2_OSCSRC2_M 0x00000070 // Oscillator Source 2 #define SYSCTL_RCC2_OSCSRC2_MO 0x00000000 // MOSC // configure the system to get its clock from the PLL void PLL_Init(void){ // 0) configure the system to use RCC2 for advanced features // such as 400 MHz PLL and non-integer System Clock Divisor

Page 131: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless ANEXOS

Alexander Montoya Osorio 41 Universidad de la Rioja

SYSCTL_RCC2_R |= SYSCTL_RCC2_USERCC2; // 1) bypass PLL while initializing SYSCTL_RCC2_R |= SYSCTL_RCC2_BYPASS2; // 2) select the crystal value and oscillator source SYSCTL_RCC_R &= ~SYSCTL_RCC_XTAL_M; // clear XTAL field SYSCTL_RCC_R += SYSCTL_RCC_XTAL_16MHZ;// configure for 16 MHz crystal SYSCTL_RCC2_R &= ~SYSCTL_RCC2_OSCSRC2_M;// clear oscillator source field SYSCTL_RCC2_R += SYSCTL_RCC2_OSCSRC2_MO;// configure for main oscillator source // 3) activate PLL by clearing PWRDN SYSCTL_RCC2_R &= ~SYSCTL_RCC2_PWRDN2; // 4) set the desired system divider and the system divider least significant bit SYSCTL_RCC2_R |= SYSCTL_RCC2_DIV400; // use 400 MHz PLL SYSCTL_RCC2_R = (SYSCTL_RCC2_R&~0x1FC00000) // clear system clock divider field + (SYSDIV2<<22); // configure for 80 MHz clock // 5) wait for the PLL to lock by polling PLLLRIS while((SYSCTL_RIS_R&SYSCTL_RIS_PLLLRIS)==0){}; // 6) enable use of PLL by clearing BYPASS SYSCTL_RCC2_R &= ~SYSCTL_RCC2_BYPASS2; }

Page 132: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless

Planos

ALUMNO: ALEXANDER MONTOYA OSORIO DIRECTORES DE PROYECTO: JAVIER RICO AZAGRA Y MONTSERRAT GIL MARTINEZ CURSO 2015 – 2016 UNIVERSIDAD DE LA RIOJA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA

Page 133: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Planos

Alexander Montoya Osorio 2 Universidad de la Rioja

ÍNDICE DE PLANOS

1. PLANO NUMERO UNO. ESQUEMA ELÉCTRICO .......................................................... 3

2. PLANO NUMERO DOS. CAPA INFERIOR PCB ........................................................... 4

3. PLANO NUMERO TRES. CAPA.SUPERIOR PCB ........................................................ 5

4. PLANO NUMERO CUATRO. UBICACIÓN DE LOS COMPONENETES ............................. 6

Page 134: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

1 2 3 4 5 6

1 2 3 4 5 6

A

B

C

D

A

B

C

D

Date: 2016-06-26KiCad E.D.A. kicad 4.0.2-stable

Rev: Size: A4Id: 1/1

Title: Esquema electrico del PCBFile: PCB.schSheet: /UNIVERSIDAD DE LA RIOJA

C1

C

C2

C

VCC

PWR_FLAG PWR_FLAG

GND VCC

C6

C

C4

C

D1D

D2

D

ENABLE

ENABLE

ENABLE

PWM1 PWM2

PWM3

12

P4

CO

NN

_01X

02

VCC

GND

GND

12345678910

20

111213141516171819

J2-J4

CO

NN

_02X

10PWM2

PWM3

PWM1

PWM4

PWM5

PWM6

ENABLE

C12

CP

1 2 3

P3

CONN_01X03

GND

GN

D

GND GND

OUT11

IN12

EN13

Vs4

GND5

GND6

Vs7

EN38

IN39

OUT310

OUT2 20

VREF 11VCP 12

VBOOT 13SENSE2 14

GND 15GND 16

SENSE1 17EN2 18IN2 19

L6234_1

C8

C

C9

C

C7

C

D3D

D4

D

VCC

ENABLE

ENABLE

ENABLE

PWM4 PWM6

PWM5

C10

CP

C3

CP

1 2 3

P2

CONN_01X03

GND

GN

D

GND

GND GND

1 2 3

P5

CONN_01X03

GND

+V

BU

S

12345678910

20

111213141516171819

J3-J1

CO

NN

_02X

10

ENABLE

GND

GND

OUT11

IN12

EN13

Vs4

GND5

GND6

Vs7

EN38

IN39

OUT310

OUT2 20

VREF 11VCP 12

VBOOT 13SENSE2 14

GND 15GND 16

SENSE1 17EN2 18IN2 19

L6234_2

VI1

GN

D2

VO 3

U1

7805

1234

P1

CONN_01X04

+VBUS

Etapa de potencia para el control de motores

Conectores tarjeta e IMU Etapa de alimentacion

Page 135: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

1 2 3 4

1 2 3 4

A

B

C

D

E

F

A

B

C

D

E

F

Date: 2016-07-06KiCad E.D.A. pcbnew 4.0.2-stable

Rev: 1.0Size: A4Id: 1/1

Title: Capa inferior del PCB File: noname3.kicad_pcbSheet: UNIVERSIDAD DE LA RIOJA

Page 136: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

1 2 3 4

1 2 3 4

A

B

C

D

E

F

A

B

C

D

E

F

Date: 2016-07-06KiCad E.D.A. pcbnew 4.0.2-stable

Rev: 1.0Size: A4Id: 1/1

Title: Capa superior del PCB File: noname3.kicad_pcbSheet: UNIVERSIDAD DE LA RIOJA

Page 137: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema
Page 138: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless

Pliego de condiciones

ALUMNO: ALEXANDER MONTOYA OSORIO DIRECTORES DE PROYECTO: JAVIER RICO AZAGRA Y MONTSERRAT GIL MARTINEZ CURSO 2015 – 2016 UNIVERSIDAD DE LA RIOJA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA

Page 139: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 2 Universidad de la Rioja

ÍNDICE DEL PLIEGO DE CONDICIONES

1. DISPOSICIONES GENERALES .................................................................................... 3

1.1. OBJETO ......................................................................................................................... 3

1.2. PROPIEDAD INTELECTUAL ......................................................................................... 3

1.3. CONDICIONES GENERALES .......................................................................................... 4

1.4. NORMAS LEYES Y REGLAMENTOS .............................................................................. 4

2. DEFINICIÓN Y ALCANCE ........................................................................................... 6

2.1. OBJETO DEL PLIEGO DE CONDICIONES ...................................................................... 6

2.2. DOCUMENTOS QUE DEFINEN EL PROYECTO .............................................................. 6

2.3. COMPATIBILIDAD ENTRE DOCUMENTOS ................................................................... 7

3. ESPECIFICACIÓN TÉCNICA DE LOS COMPONENTES .................................................. 8

3.1. PCB .............................................................................................................................. 8

3.2. TARJETA .....................................................................................................................10

3.3. REGULADOR ...............................................................................................................12

3.1. L6432 .......................................................................................................................14

3.2. IMU ............................................................................................................................16

3.3. MOTORES ...................................................................................................................17

4. CONEXIÓN DE LOS COMPONENTES CON LA TARJETA ............................................. 18

5. CALIBRACIÓN Y MODIFICACIÓN DE PARÁMETROS SOFTWARE ............................ 19

6. CONDICIONES / ESPECIFICACIONES DE OPERACIÓN ............................................ 23

7. CONDICIONES ECONÓMICAS ................................................................................. 24

7.1. ERRORES EN EL PROYECTO ............................................................................24

7.2. LIQUIDACIÓN ........................................................................................................24

7.3. DISPOSICIÓN .........................................................................................................25

Page 140: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 3 Universidad de la Rioja

1. DISPOSICIONES GENERALES

1.1. OBJETO

El objeto del presente proyecto titulado “Diseño y desarrollo de un gimbal con motores brushless”es la Culminación con éxito los estudios de

Grado en Ingeniería Electrónica Industrial y Automática,y está enmarcado bajo la designación "Trabajo de Fin de Grado".

El autor del presente trabajo ha cursado los estudios en la Universidad de

La Rioja, cumpliendo con las directrices especificadas por dicho centro en la normativa del trabajo fin de grado en vigor en el curso 2015/2016.

En este documento se exponen todas las condiciones técnicas de montaje,

especificaciones a cumplir por los elementos y materiales comerciales que se deben considerar a la hora de llevar a cabo la realización del proyecto.

En caso de no realizarse las condiciones tal como se presenta en este

documento, el proyectista no se responsabilizará de los posibles fallos y averías propias del funcionamiento, repercutiendo todo el peso del problema sobre terceras personas.

Todas las modificaciones de las que pueda ser susceptible el proyecto,

deberán ser aprobadas por el ingeniero o proyectista.

1.2. PROPIEDAD INTELECTUAL

Según el artículo 12 del reglamento de PFC de la ESCUELA TÉCNICA SUPERIOR de Ingeniería Industrial de La Rioja, aprobado por el Consejo de Gobierno del 15 de Abril de 2005, "Podrá ser consultada la copia de la biblioteca si el autor y el Director de Proyecto Fin de Carrera así lo autorizan por escrito".

Page 141: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 4 Universidad de la Rioja

1.3. CONDICIONES GENERALES

Este proyecto se ajusta en su desarrollo a los reglamentos y disposiciones electrónicas vigentes. Atendiendo a esto una vez se haya aprobado por el Ministerio de Industria, tendrá carácter de obligado cumplimiento.

Una vez realizado el proyecto, se podrán realizar diversas modificaciones

siempre bajo la supervisión del ingeniero o proyectista. En caso de efectuarse alguna modificación, el correspondiente proyecto

modificado se considera como parte integrante del proyecto definitivo y como tal, sujeto a las condiciones y especificaciones aprobadas por el ministerio.

La empresa adjudicataria suscribirá contrato ante notario donde se hará

constar, a parte de los términos legales obligatorios, plazos de entrega y la conformidad con la sanción cuyo incumplimiento pueda acarrear.

1.4. NORMAS LEYES Y REGLAMENTOS

La realización del proyecto se regirá por la Ordenanza General de Seguridad e Higiene en el Trabajo del 7 de abril de 1970 y posteriores actualizaciones. Así mismo, se regirá por el Reglamento Electrotécnico de Baja Tensión, en el que se tendrán en cuenta las siguientes normas:

• UNE 20-514-82: Reglas de seguridad para los aparatos electrónicos

• UNE 157001:2002: sobre criterios generales para la elaboración de

proyectos, que establece las consideraciones generales que permitan

precisar las características que deben satisfacer los proyectos de productos

obras y edificios, instalaciones, servicios o software, para que sean

conformes al fin que están destinados.

• ISO/IEC 25000: conocida como SQuaRE (System and Software

QualityRequirements and Evaluation), es una familia de normas que tiene

por objetivo la creación de un marco de trabajo común para evaluar la

calidad del producto software.

• ISO/IEC 25001 Planning and Management: establece los requisitos y

orientaciones para gestionar la evaluación y especificación de los

requisitos del producto software.

Page 142: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 5 Universidad de la Rioja

Este proyecto debido a sus características se encuentra recogido, dentro del reglamento electrónico de baja tensión:

“Se calificará como instalación eléctrica de baja tensión, todo conjunto de

aparatos y circuitos asociados en previsión de un fin particular, producción, conversión, transformación, distribución o utilización de la energía eléctrica cuyas tensiones nominales sean iguales o inferiores a 1000 V para corriente alterna y 1500 V para corrientes continuas”.

Page 143: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 6 Universidad de la Rioja

2. DEFINICIÓN Y ALCANCE

2.1. OBJETO DEL PLIEGO DE CONDICIONES

El presente pliego regirá en unión de las disposiciones que con carácter general y particular se indican, y tiene por objeto la ordenación de las condiciones técnico-facultativas que han de regir en la ejecución del presente Proyecto.

Se considerarán sujetas a las condiciones de este Pliego, todos los trabajos

cuyas características y presupuestos, se adjuntan en las partes correspondientes del presente Proyecto. Se incluyen por tanto en este concepto los trabajos de programación para el estabilizador, así como la configuración de datos y algoritmos.

Si en el transcurso de los trabajos se hiciera necesario ejecutar cualquier

clase de modificación o instalaciones que no se encuentren descritas en este Pliego de Condiciones, el Adjudicatario estará obligado a realizarlas con estricta sujeción a las órdenes que, al efecto, reciba del proyectista, y en cualquier caso, con arreglo a las reglas del buen arte constructivo.

El Ingeniero tendrá plenas atribuciones para sancionar la idoneidad de los

sistemas empleados, los cuales estarán expuestos para su aprobación de forma que, a su juicio, los dispositivos que resulten defectuosas total o parcialmente, deberán ser retirados o sustituidos, sin que ello dé derecho a ningún tipo de reclamación por parte del Adjudicatario.

2.2. DOCUMENTOS QUE DEFINEN EL PROYECTO

El presente Pliego, conjuntamente con la Memoria, mediciones, presupuesto, forman el presente proyecto. Los planos constituyen los documentos que definen el proyecto en forma geométrica y cuantitativa.

Los documentos que definen el proyecto y que la propiedad entregue al

Contratista, pueden tener carácter contractual o meramente informativo. Son documentos contractuales los Planos, Pliego de Condiciones,

Mediciones y Presupuestos Parcial y Total, que se incluyen en el presente Proyecto.

Page 144: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 7 Universidad de la Rioja

Los datos incluidos en la memoria y Anexos, así como la justificación de precios tienen carácter meramente Informativo.

Cualquier cambio en el planteamiento del sistema que implique un cambio

sustancial respecto de lo proyectado deberá ponerse en conocimiento de la Dirección Técnica para que lo apruebe, si procede, y redacte el oportuno proyecto reformado.

2.3. COMPATIBILIDAD ENTRE DOCUMENTOS

En caso de incompatibilidad o contradicción entre los Planos y el Pliego, prevalecerá lo escrito en este último documento. Lo mencionado en el Pliego de Prescripciones Técnicas Particulares y omitido en los planos o viceversa, habrá de ser considerado como si estuviese expuesto en ambos documentos, siempre que la unidad de estudio este definida en uno u otro documento y figure en el Presupuesto.

Page 145: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 8 Universidad de la Rioja

3. ESPECIFICACIÓN TÉCNICA DE LOS COMPONENTES

3.1. PCB

Toda la electrónica de potencia y de control se integra en un circuito impreso, de este salen las tres fases de cada motor y a él llegan los datos de los sensores y la tensión de la batería.

La fabricación del circuito se lleva a cabo mediante el empleo de una

insoladora, y revelado químico en el laboratorio de la Universidad de La Rioja. Las dimensiones del PCB vienen determinadas por el tamaño de los

componentes discretos usados para su construcción, por la tarjeta y en particular por el tamaño de los condensadores, dado que se emplearon los disponibles en el laboratorio de la universidad. Hay que añadir que todos los componentes empleados son de tipo trueholl, por lo que si quiere reducir el tamaño de la placa, estos pueden ser sustituidos por componentes smd, lo que significaría una reducción significativa.

En la figura 1-1 se puede apreciar el tamaño del PCB y la ubicación de los

componentes

Ilustración 3-1. Disposición de los componentes en la PCB

Page 146: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 9 Universidad de la Rioja

Por otra parte y debido a que la fabricación del PCB se hace de forma manual, el grosor de las pistas, vías y diámetro de los orificios debe ser tal que facilite la tarea de soldar todos los componentes. En la siguiente lista aparecen los grosores de línea y de las vías del PCB:

• Señales de control y tensión de alimentación 5V : 0.8 mm de

grosor

• Bus de tensión 9V : 1.2 mm de grosor

• Vías : 1.mm de diámetro y 0.8mm de orificio

La lista de componentes empleados se muestra en la Tabla 1.

Tabla 1

Componente Valor Distancia entre pines

Descripcion

P2,P5 -- 0.1” Conectores tipo macho de tres pines en ángulo para los motores

P4 -- 0.3” Conector batería

P1 -- 0.1” Conector de alimentación y datos para la IMU

P3 -- 0.1” Conector de alimentación para la tarjeta de desarrollo

D1,D2,D3,D4 -- 0.3” Diodos 1N4148.

C9,C6 10 nF 0.2” Condensador cerámico

C10,C12 1 µF 0.2” Condensador electrolítico

C4, C7 0.22 µF 0.6” Condensador cerámico

C8 0.1 µF 0.4” Condensador cerámico

C3 100 µF 0.2” Condensador electrolítico

J3-J1, J4-J2 -- 0.1” Conectores de 20 pines. Dos hileras de 10 para cada uno.

L6234_1, L6234_2 -- 0.1” Driver de potencia para el control de los motores

7805 -- 0.1” Regulador de tensión de salida a 5V

Tabla 1. Listado de componentes de la PCB

Page 147: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 10 Universidad de la Rioja

3.2. TARJETA

Tarjeta de desarrollo: la tensión de alimentación para la tarjeta debe estar en el rango de 4.75 voltios a 5.25 voltios. Valores de tensión fuera de este rango están desaconsejados por el propio fabricante. En este proyecto la alimentación de la tarjeta se hace médiate un cable USB conectado al PC, sin embargo cualquier tipo de cargador USB que entregue 5 voltios puede ser usado como fuente de alimentación alternativa.

Ilustración 3-2. Componentes del módulo EK-TM4C123GXL

El módulo de evaluación EK-TM4C123GLX incluye las siguientes características:

• Microcontrador TM4C123GH6PMZ

• Motion control PWM

• Conectores USB micro-A y micro-B para su programación y

depurado

• Un led RGB de uso general

• Dos botones de uso general

• On-board ICDI

• Switch de selección de alimentación

• Boton de Reset

• Dos conectores de 20 pines

Page 148: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 11 Universidad de la Rioja

Especificaciones técnicas del módulo:

Parámetro Valor

Tensión de alimentación De 4,7 a 5,25 voltios de continua desde uno de las siguientes fuentes:

• Debugger (ICDI) USB Micro-B conectado a

un PC

• USB Micro-B puesto host

Dimensiones 2.0 in x 2.25 in x 0.425 in Salida de corriente de corto circuito • 3.3 Voltios (300 mA)

• 5.0 Voltios ( 323 mA)

Dimensiones de la tarjeta:

Ilustración 3-3. Dimensiones del modulo EK-TM4C123GXL

Page 149: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 12 Universidad de la Rioja

3.3. REGULADOR

LM7805 (regulador de tensión): la tensión de entrada debe estar entre 7 y

25 V. Para este proyecto se alimenta el circuito desde la batería a una tensión de 11.1 V.

Ilustración 3-4. Regulador de tensión L7805

Ilustración 3-5.Circuito típico de aplicación

Valores máximos de operación:

Símbolo Parámetro Valor Unidad

Vi Entrada de tensión para Vo= 5 a 18 V

35 V

Io Salida de corriente Limitado internamente

Pd Disipacion de potencia Limitado internamente

Top Temperatura de operación -55 a 150 C

Page 150: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 13 Universidad de la Rioja

Dimensiones del componente:

Ilustración 3-6. Dimensiones L7805

Parametro Dimensión en mm

A 4.40

E 10

e 2.4

L30 28.9

L 13

Page 151: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 14 Universidad de la Rioja

3.1. L6432

El L6234 es un triple puente de transistores, y es usado para excitar las bobinas del motor.

Ilustración 3-7. L6432

Descripcion de los pines

Número del pin Nombre Función 1, 20, 10 OUT1, OUT2, OUT3 Salidas de los tres canales 2, 19, 9 IN1, IN2, IN2 Entrada lógica de los canales 1, 2 y 3.

Un nivel alto en algúna entrada habilita el paso de corriente del transitor superior del puente.

3, 18, 8 EN1, EN2, EN3 Habilita los canales 1,2 y 3. Un nivel alto habilita el canal.

4,7 Vs Tension de alimentación 14, 17 SENSE2, SENSE1 Salidas de corriente para la toma de

medidas 11 Vref Voltaje interno de referencia 12 VCP Bootstrasposcillator 13 VBOOT Sobrevoltaje de entrada para el

control de sol transitores superiores de cada rama

5, 6, 15, 16 GND Termina común de masa

Page 152: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 15 Universidad de la Rioja

Condiciones recomendadas de operación:

Dimesiones del componente:

Ilustración 3-8. dimensiones L6432

Simbolo Parámetro Valor Unidad

Vs Tensión de alimentacion 7 a 42 V

Vod Voltaje diferencial pico (entre alguna de las 3 salidas de tension)

52 V

Iout Corriente DC de salida 2.5 A

Vsense Voltaje de medida -1 a 1 V

Tj Rango de temperatura para la unión -40 a 125 C

Parámetro Dimension en mm

D 24.8

E 8.8

e 2.54

F 7.1

L 3.3

Page 153: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 16 Universidad de la Rioja

3.2. IMU

La unidad inercial de medida está basada en el MPU 6050, esta a su vez contempla numerosas funcionalidades y características de operación y programación. Debido a la multitud de características que se podrían enumerar, en este apartado se presentan las características principales del módulo y de sus sensores.

Ilustración 3-9. IMU

Principales características de los giroscopios:

• Salida digital para las medidas de velocidad angular en los

ejes X,Y y Z con rangos de escala programables entre ±250,

±500, ± 1000 y ±2000 °/seg.

• Implementa ADC’s de 16 bits para el almacenamiento de las

medidas.

• Filtro paso-bajo digital programable.

Principales características de los acelerómetros:

• Salida digital para las medidas de aceleración en los ejes X,Y y

Z con rangos de escala programables entre ±2g, ±4g, ± 8g y

±16g.

• Implementa ADC’s de 16 bits para el almacenamiento de las

medidas.

• Interrupciones programadas por el usuario

Características adicionales:

• Bus I2C auxiliar para leer data desde sensores externos.

• 1024 byte de memoria FIFO para la reducción del consumo.

• Filtros programables por el usuario para acelerómetros y

giroscopios.

Page 154: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 17 Universidad de la Rioja

Características eléctricas y otras especificaciones:

Parámetros Rango VDD. Alimentación 2.375 V a 3.465V Frecuencia de com. I2C 100Khz a 400Khz Temperaturas max de operacion -40 a +85 °C Direcciones I2C 1101000

3.3. MOTORES

Ilustración 3-10. Motor

Dimensión y principales características: Parámetro Valor KV 100 Peso 55 g Dist. Entre tornillos 16*19 mm Métrica M3 Estructura 12N14P Alimentación 3S Li-Poly Dimensiones estator 28*6 mm

Page 155: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 18 Universidad de la Rioja

4. CONEXIÓN DE LOS COMPONENTES CON LA TARJETA

El gimbal al ser un dispositivo que incorpora elementos mecánicos y electrónicos, corre el riesgo de que el mal funcionamiento de alguna de sus partes por leve que sea; influya notablemente en el comportamiento global.

En el posible caso de que un tornillo se afloje debido al uso, generaría un

patrón de vibraciones que el controlador intentara corregir en el mejor de los casos, si se da el caso de que el controlador no sea lo suficiente rápido para mitigar la perturbación.

Otra posible fuente de falla lo puede generar el mal/deficiente estado de las

conexiones en las líneas de I2C usadas para la comunicación con los sensores puesto que una mala/errónea comunicación entre el microprocesador y la IMU hará que el Gimbal se inestabilice para jamás volver a controlarse sino se reinicia todo el sistema.

En la gráfica 9-6 aparecen los pines usados de la tarjeta, en total se usaron

12 pines, 3 de los cuales fueron soldados a la propia tarjeta para poder conectada al PCB sin necesidad de ser alimentada mediante el puerto mini USB. Los tres pines mencionados aparecen dentro del recuadro verde de la gráfica. De los 9 pines restantes se usaron 6 para las señales de pwm, 2 pines para las líneas de comunicación y otra para alimentar la IMU y al mismo tiempo habilitar el funcionamiento de los driver’s de potencia. En la gráfica se muestra la disposición de los pines usados para la interacción con los demás componentes.

Ilustración 4-1. Conexión entre la tarjeta y los elementos

Si se desea cambiar la distribución de los pines por algún motivo en particular, se debe modificar el código del gimbal.

Page 156: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 19 Universidad de la Rioja

5. CALIBRACIÓN Y MODIFICACIÓN DE PARÁMETROS

SOFTWARE

El gimbal al estar basado en sistema de control de una variable real, es de esperar que cualesquier tipo de perturbación altere el buen desempeño del sistema. Para reducir/eliminar cierto tipo de perturbación “controlada” como puede ser el ruido introducido por los sensores es necesario la implementación de filtros. El filtro que se usa para este proyecto lleva el nombre de Filtro Madwick y permite su configuración mediante 2 parámetros (En el apartado 5.3.6 se explica este su funcionamiento). Además de los parámetros del filtro existen otros valores que pueden ser modificados y que afectan al buen/mal funcionamiento de todo el conjunto.

En este apartado se agrupan todos los parámetros que pueden ser

modificados y se explica cómo su variación afecta al comportamiento global.

• PID

La ecuación en tiempo discreto que se usa para implementar el controlador

está compuesta por cinco sumas y cinco multiplicaciones. Los coeficientes

de la ecuación definen el comportamiento de un sistema basado en leyes

físicas por lo tanto alteración de algún coeficiente por leve que sea este,

puede conllevar a que el sistema sea inestable. Es por ello que se

recomienda no alterar ninguno de estos valores sino se tiene conocimiento

de lo que se hace, de lo contrario el sistema se vuelve inestable y empieza a

retorcer los cables hasta el punto de llegar a romperlos.

• Frecuencia de muestreo

La velocidad a que se recogen los datos y se calcula la orden de control

puede modificar, sin embargo no se garantiza el buen funcionamiento del

Gimbal si se superan los 500 Hz debido a que existe una limitación en la

velocidad máxima usada durante la comunicación mediante el protocolo

I2C. El parámetro aparece dentro del código del fichero main.c(disponible

en los anexos) y su nombre dentro del programa es: “Fs”. Dentro del código

esta variable aparece como un define al inicio del fichero y es ahí donde

debe modificarse.El valor que se le dé a la Fs se relaciona con la unidad de

hertzios.

Por ultimo cabe comentar que la ecuación que implementa el controlador

está basada en una aproximación matemática en la que la frecuencia de

muestreo es uno de sus parámetros, por lo tanto cuando se modifica la

Page 157: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 20 Universidad de la Rioja

frecuencia del sistema las ecuaciones dejan de representar la ecuación

original puede que el sistema no funcione como se espera.

• Sensibilidad acc/gyro . Escala

La sensibilidad de los acelerómetros y giróscopos de la IMU pueden variar

entre los ±2g y ±16g para los acelerómetros y ±250 °/s y ±2000 °/s para los

giróscopos. Para este proyecto se consideró que una sensibilidad de ±2g

para los acelerómetros y ±2000 °/s para los giroscopios era la adecuada. En

base a esto a los datos recogidos se les debe aplicar una escala para que se

adapten a las unidades que se estén manejando.

Las tabla XXX y XXX muestran los valores de escala posibles y que deben ser

cambiados dentro del código en las variables SCALE_GYRO y

SCALE_ACCpara que las modificaciones de la sensibilidad tengan efecto a

efectos de cálculo. Las variables aparecen definidos dentro del código

main.c que se encuentra disponible en el apartado de ANEXOS.

Ilustración 5-1. Sesibilidad d los acelerómetros

Ilustración 5-2.Sesibilidad d los giroscopios

• Parámetro β

Debido a que el filtro usado en este proyecto para la estimación de la

orientación basa su funcionamiento en la fusión sensorial acelerómetros y

giróscopos, existe un parámetro que afecta al comportamiento del filtro

Madwick implementado para el tratamiento de datos y la estimación de la

orientación. En función de su valor el filtro pondera de manera diferente los

cálculos obtenidos en base a los giroscopios o acelerómetros. El parámetro

se llama beta y está dentro del fichero main.c. Los valores para este

parámetro deben estar en el rango de 0 a 1 según se precise. Cuando se

Page 158: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 21 Universidad de la Rioja

modifica este valor el filtro cambia su comportamiento en régimen

permante por lo que afecta de forma directa a la estimación de la

orientación de tal manera que para valores cercanos a cero, se calcula la

orientación teniendo en cuenta solo los giróscopos y para valores

superiores, se hace una ponderación entre los cálculos obtenidos por ambos

sensores.

• Modulación de onda implementada. SPWM

Para este proyecto se usa un método de conmutación conocido como

Sinusoidal PWM o SPWM para el control de los motores que consiste en la

modulación de una onda sinusoidal a partir de una onda cuadrada. Para

alcanzar este propósito se requiere el almacenamiento de una serie de

valores dentro de un array y que se corresponde con los valores discretos

de una onda sinusoidal.En la figura 5-3 se muestra el proceso de

discretización de una señal sinusoidal.

Ilustración 5-3, Discretizacion de una sinusoide

Cuando el Gimbal se inicia, se lleva a cabo el cálculo de los 540 valores de

una onda senoidal, la forma de onda puede cambiarse si se modifica la

ecuación dentro del código. La ecuación aparece definida dentro del fichero

“PWM.c” y se calcula dentro de la función: “PWM1A_Init(uint16_t period)

y los valores se almacenan dentro del vector denominado: Wave2[540],

que aparece definida dentro del mismo fichero que la función.

• Inicialización de los módulos de generación de PWM

La frecuencia de conmutación de las señales de PWM suele estar entre los

valores de 10 a15 kHz, sin embargo para esta aplicación se seleccionaron

valores por encima de los 30 Khz como se verámás adelante en este

apartado.

Por otra parte,existe dentro del códig ouna función definida como:

“PWM1A_Init(uint16_t period) “, que inicializa los módulos de PWM en

base al valor de period. Este valor es igual al número de ciclos de reloj

necesarios para incrementar un contador hasta ese valor partiendo desde

Page 159: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 22 Universidad de la Rioja

cero, según esto se puede afirmar que si se calcula el producto entre el

periodo de la señal de reloj y el valor dado a la variable period, nos dará

como resultado el periodo de conmutación de la señal PWM.

En la versión del software presentada con este proyecto y adjunta en los

ANEXOS, se inicializan los módulos PWM con un valor de 1300, según esto

la frecuencia de conmutación será:

𝑝𝑒𝑟𝑖𝑜𝑑𝑜 𝑐𝑜𝑛𝑚𝑢𝑡𝑎𝑐𝑖𝑜𝑛 = 1300 ∗ 𝑃𝑒𝑟𝑖𝑜𝑑𝑜 𝑠𝑒ñ𝑎𝑙 𝑑𝑒 𝑟𝑒𝑙𝑜𝑗 𝑃𝑒𝑟𝑖𝑜𝑑𝑜 𝑠𝑒ñ𝑎𝑙 𝑑𝑒 𝑟𝑒𝑙𝑜𝑗 = 20 𝑛𝑠

𝑝𝑒𝑟𝑖𝑜𝑑𝑜 𝑐𝑜𝑛𝑚𝑢𝑡𝑎𝑐𝑖𝑜𝑛 = 1300 ∗ 20 = 26 µ𝑠

𝑓𝑟𝑒𝑐. 𝑐𝑜𝑛𝑚𝑢𝑡𝑎𝑐𝑖𝑜𝑛 =1

0.000026𝑠= 38.461 𝐾ℎ𝑧

• Calibración del Gimbal

Cuando se arranca el sistema el microprocesador realiza una calibración de

los sensores por lo que estos deberían estar inmóviles durante este proceso

para que la calibración sea precisa.

Si el sistema no se calibra satisfactoriamente la primera vez que se

arranque, se debe hacer un reset general mediante el botón de la tarjeta de

desarrollo.

Page 160: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 23 Universidad de la Rioja

6. CONDICIONES / ESPECIFICACIONES DE OPERACIÓN

La estructura del gimbal no debería estar nunca de manera que los ejes de los motores estén alineados. Tal disposiciónhará que la estimación de los ángulos de Roll y Pitch sea incorrecta por que se produce una singularidad matemática dentro del modelo usado para la estimación. Por este motivo se debe prestar atención en para evitar que se alineen los ejes.

Los motores del Gimbal han sido diseñados para funcionar con baterías tipo

LiPo de 3 celdas, por lo que el uso de cualesquier otro tipo de batería no garantiza el correcto funcionamiento del sistema ya que una tensión de alimentación indebida puede producir calentamiento de los motores y una tensión muy baja puede suponer una pérdida del par de giro.

Las conexiones entre todos los elementos deben estar garantizadas para

que el Gimbal funcione bien. Cabe resaltar que un fallo en las comunicaciones va a suponer que el sistema se comporte de manera indeterminada.

Page 161: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 24 Universidad de la Rioja

7. CONDICIONES ECONÓMICAS

7.1. ERRORES EN EL PROYECTO

En el caso de existir errores de diseño se dará cuenta al proyectista para dar con la solución al problema.

Además se prohibirá el uso de la aplicación por posibles daños que pueda

ocasionar hasta que el error se vea subsanado.

7.2. LIQUIDACIÓN

Terminada la elaboración del proyecto se procederá a la liquidación, donde se incluyen los importes correspondientes a la elaboración del proyecto.

En el caso de que surgiera alguna posible modificación aprobada por la dirección del proyecto el contratante será el encargado de abonar este importe íntegramente.

Al suscribir el contrato el contratante deberá abonar al adjudicatario el 60%

del total del presupuesto. Tras la entrega e instalación de la aeronave se deberá realizar un nuevo abono del 20% del total del presupuesto, que será condición necesaria para continuar con el proceso de diseño necesario para el control del UAV. En caso de no realizar el abono el proyectista queda exento de todos los deberes sus contractuales.

El 20% se quedará como garantía durante los 6 primeros meses a partir de

la fecha de puesta en marcha del montaje final. Si transcurrido este periodo de tiempo no se han advertido evidencias de defecto, se abonara la cantidad pendiente de entrega, y a partir de ese momento, se consideran completamente concluidos los compromisos entre las dos partes, a excepción del periodo de garantía que cubre lo citado anteriormente.

Page 162: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Pliego de condiciones

Alexander Montoya Osorio 25 Universidad de la Rioja

7.3. DISPOSICIÓN

Las dos partes contratantes, dirección técnica y empresa, ratifican el contenido del siguiente pliego de condiciones, el cual tiene igual validez, a todos los efectos, que una estructura publica, prometiendo fiel cumplimiento.

En Logroño a 4 de Julio de 2016 Fdo. Alexander Montoya Osorio.

Page 163: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless

Estado de las mediciones

ALUMNO: ALEXANDER MONTOYA OSORIO DIRECTORES DE PROYECTO: JAVIER RICO AZAGRA Y MONTSERRAT GIL MARTINEZ CURSO 2015 – 2016 UNIVERSIDAD DE LA RIOJA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA

Page 164: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Estado de las mediciones

Alexander Montoya Osorio 2 Universidad de la Rioja

ÍNDICE

1. ESTADO DE LAS MEDICIONES ................................................................................... 3

1.1. MÓDULOS ELECTRÓNICOS: ......................................................................................... 3

1.2. ELEMENTOS MECANICOS: ........................................................................................... 4

1.3. PCB: ............................................................................................................................. 4

1.4. CABLEADO: .................................................................................................................. 5

1.5. RECURSOS HUMANOS:................................................................................................. 5

Page 165: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Estado de las mediciones

Alexander Montoya Osorio 3 Universidad de la Rioja

1. ESTADO DE LAS MEDICIONES

En este apartado se listan en diferentes grupos la totalidad de los

componentes usados para la construcción del Gimbal. En cada lista aparece la referencia, nombre, unidades usadas y unidades en las que se mide la propiedad del elemento. Las referencias usadas corresponden con las de planos en caso de que este exista.

Los 5 grupos en los que se incluyen todos los componentes son: • Módulos electrónicos

• PCB

• Cableado

• Elementos mecánicos

• Recursos humanos

A continuación se desarrolla cada uno los grupos.

1.1. MÓDULOS ELECTRÓNICOS:

Dentro de este grupo se incluyen los elementos de control y senseo

Móduloselectrónicos

Referencia Unidad Unidades Nombre del elemento

EK-TM4C123GLX unidades 1 LauchPadEvaluation Kit

L6234 unidades 2 Driver para motor trifásico

MPU unidades 1 Unidad Inercial de medida

Batería unidades 1 Fuente de tensión

Page 166: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Estado de las mediciones

Alexander Montoya Osorio 4 Universidad de la Rioja

1.2. ELEMENTOS MECANICOS:

Elementos mecanicos

Referencia Unidad Unidades Nombre del elemento

EMAX-GB2806 unidades 2 Motor bruhsless

Estructura metálica unidades 1 Estructura Gimbal

Tornillo M3 unidades 8 Tornillo motor-estructura

1.3. PCB:

La referencia a cada elemento corresponde con la notación usada en los planos del PCB. PCB

Referencia Unidad Unidades Nombre del elemento

PCB unidades 1 Circuito impreso diseñado

C1 unidades 1 Condensador cerámico 0,33µF/50V

C6 Y C9 unidades 2 Condensadorcerámico 10nF/25V

C4 y C7 unidades 2 Condensador cerámico 0,22µF/50V

C2 y C8 unidades 2 Condensadorcerámico 0,1µF/25V

C10 y C12 unidades 2 Condensador electrolítico 1µF

C3 unidades 1 Condensador electrolítico 100µF

D1, D2, D3 y D4 unidades 4 Diodo 1N4148

L6234_1 y L6234_2 unidades 2 Conector DIP20

J3-J1 y J2-J4 unidades 2 Conector hembra 20 pines. 2x10

P5 unidades 1 Conector hembra 3 pines

7805L unidades 1 Regulador de tensión

P4 unidades 1 Conector batería

P1 unidades 1 Conector IMU

P2 y P3 unidades 2 Conector motor

Page 167: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Estado de las mediciones

Alexander Montoya Osorio 5 Universidad de la Rioja

1.4. CABLEADO:

Cableado

Referencia Unidad Unidades Nombre del elemento

Cable IMU

1 Cable de alimentación sensor y bus I2C

Cable motor 1

1 Cable motor

Cable motor 2

1 Cable motor

1.5. RECURSOS HUMANOS:

Recursos humanos

Referencia Unidad Unidades Nombre del elemento

RH1 Horas 150 Investigaciónde técnicas de conmutación para motores BLDC

RH2 Horas 150 Investigación en tratamiento de datos

RH3 Horas 300 Programación

RH4 Horas 30 Diseño PCB

RH5 Horas 20 Diseño estructura mecánica

RH6 Horas 90 Redacción del documento

Page 168: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless

Presupuesto

ALUMNO: ALEXANDER MONTOYA OSORIO DIRECTORES DE PROYECTO: JAVIER RICO AZAGRA Y MONTSERRAT GIL MARTINEZ CURSO 2015 – 2016 UNIVERSIDAD DE LA RIOJA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA

Page 169: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Presupuesto

Alexander Montoya Osorio 2 Universidad de la Rioja

ÍNDICE DEL PRESUPUESTO

1. PRESUPUESTO ......................................................................................................... 3

2. CUADRO DE PRECIOS ............................................................................................... 4

3. DESGLOSE DEL PRESUPUESTO EN SUBAPARTADOS ................................................. 6

4. PRESUPUESTO GLOBAL ........................................................................................... 8

Page 170: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Presupuesto

Alexander Montoya Osorio 3 Universidad de la Rioja

1. PRESUPUESTO

Se parte de la información recogida en el Estado de las mediciones para realizar el presupuesto.

Para el cálculo se presupone para una sola unidad Gimbal, por lo que los

precios que aparecen para cada unidad corresponden con el precio normal de mercado para un usuario común.

El presupuesto se divide en tres apartados

• Cuadro de precios. Aquí aparece el precio unitario para cada componente.

• Desglose del presupuesto en sub-apartados. Donde se presupuesta cada una de

las partidas, incluyendo ya las unidades de cada componente.

• Presupuesto global impuestos incluidos. Donde se suman los apartados

anteriores y se incluyen tasas e impuestos.

El presupuesto se desglosara en los mismos apartados que en el Estado de las mediciones:

• Módulos electrónicos

• PCB

• Cableado

• Elementos mecánicos

• Recursos humanos

Page 171: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Presupuesto

Alexander Montoya Osorio 4 Universidad de la Rioja

2. CUADRO DE PRECIOS

En este apartado se incluyen los precios de cada uno de los componentes. Cuadro de precios de los móduloselectrónicos

Moduloselectronicos

Referencia Unidad Nombre del elemento Precio/Ud

EK-TM4C123GLX unidades LauchPadEvaluation Kit 13 €

L6234 unidades Driver para motor trifásico 5,84 €

MPU unidades Unidad Inercial de medida 3,91 €

Batería unidades Fuente de tensión 10,46 €

Cuadro de precios PCB

PCB

Referencia Unidad Nombre del elemento Precio/Ud

PCB unidades Circuito impreso diseñado 10 €

C1 unidades Condensador cerámico 0,33µF/50V 0,181 €

C6 Y C9 unidades Condensador cerámico 10nF/25V 0,187 €

C4 y C7 unidades Condensador cerámico 0,22µF/50V 0,124 €

C2 y C8 unidades Condensador cerámico 0,1µF/25V 0,154 €

C10 y C12 unidades Condensador electrolítico 1µF 0,136 €

C3 unidades Condensador electrolítico 100µF 0,152 €

D1, D2, D3 y D4 unidades Diodo 1N4148 0,300 €

L6234_1 y L6234_2 unidades Conector DIP20 0,500 €

J3-J1 y J2-J4 unidades Conector hembra 20 pines. 2x10 2,500 €

P5 unidades Conector hembra 3 pines 0,500 €

7805L unidades Regulador de tensión 1,950 €

P4 unidades Conector batería 0,320 €

P1 unidades Conector IMU 0,320 €

P2 y P3 unidades Conector motor 0,320 €

Cuadro de precios PCB

Cableado Referencia Unidad Nombre del elemento Precio/Ud

Cable IMU

Cable de alimentación sensor y bus I2C 0,50 €

Cable motor 1

Cable motor 0,50 €

Cable motor 2

Cable motor 0,50 €

Page 172: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Presupuesto

Alexander Montoya Osorio 5 Universidad de la Rioja

Cuadro de precios elementos mecánicos

Elementos mecanicos

Precio/Ud

Referencia Unidad Nombre del elemento EMAX-GB2806 unidades Motor bruhsless 15 €

Estructura metálica unidades Estructura Gimbal 3 €

Tornillo M3 unidades Tornillo motor-estructura 0,01 €

Cuadro de precios Recursos humanos

Recursos humanos Referencia Unidad Nombre del elemento Precio/Ud

RH1 Horas Investigación técnicas de conmutación para motores BLDC

30 €

RH2 Horas Investigación en tratamiento de datos 30 €

RH3 Horas Programación 30 €

RH4 Horas Diseño PCB 30 €

RH5 Horas Diseño estructura 30 €

RH6 Horas Redacción documento 30 €

Page 173: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Presupuesto

Alexander Montoya Osorio 6 Universidad de la Rioja

3. DESGLOSE DEL PRESUPUESTO EN SUBAPARTADOS

Presupuesto móduloselectrónicos:

Móduloselectrónicos

Referencia Unidad Unidades Nombre del elemento Precio/Ud Subtotal

EK-TM4C123GLX Ud 1 LauchPadEvaluation Kit 13 € 13,00 €

L6234 Ud 2 Driver para motor trifasico 5,84 € 11,68 €

MPU Ud 1 Unidad Inercial de medida 3,91 € 3,91 €

Batería Ud 1 Fuente de tensión 10,46 € 10,46 €

Subtotal 39,05 €

Presupuesto cableado:

Presupuesto PCB:

Cableado Referencia Unidad Unidades Nombre del elemento Precio/Ud Sub Total

Cable IMU Ud 1 Cable de alimentación sensor y bus I2C 0,50 € 0,50 €

Cable motor 1 Ud 1 Cable motor 0,50 € 0,50 €

Cable motor 2 Ud 1 Cable motor 0,50 € 0,50 €

Subtotal 1,50 €

PCB Referencia Unidad Unidades Nombre del elemento Precio/Ud Subtotal

PCB Ud 1 Circuito impreso diseñado 10 € 10,000 €

C1 Ud 1 Condensador cerámico 0,33µF/50V 0,181 € 0,181 €

C6 Y C9 Ud 2 Condensadorcerámico 10nF/25V 0,187 € 0,374 €

C4 y C7 Ud 2 Condensador cerámico 0,22µF/50V 0,124 € 0,248 €

C2 y C8 Ud 2 Condensadorcerámico 0,1µF/25V 0,154 € 0,308 €

C10 y C12 Ud 2 Condensador electrolítico 1µF 0,136 € 0,272 €

C3 Ud 1 Condensador electrolítico 100µF 0,152 € 0,152 €

D1, D2, D3 y D4 Ud 4 Diodo 1N4148 0,300 € 1,200 €

L6234_1 y L6234_2 Ud 2 Conector DIP20 0,500 € 1,000 €

J3-J1 y J2-J4 Ud 2 Conector hembra 20 pines. 2x10 2,500 € 5,000 €

P5 Ud 1 Conector hembra 3 pines 0,500 € 0,500 €

7805L Ud 1 Regulador de tensión 1,950 € 1,950 €

Page 174: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Presupuesto

Alexander Montoya Osorio 7 Universidad de la Rioja

Presupuesto Elementos mecánicos:

Presupuesto Recursos humanos:

P4 Ud 1 Conector batería 0,320 € 0,320 €

P1 Ud 1 Conector IMU 0,320 € 0,320 €

P2 y P3 Ud 2 Conector motor 0,320 € 0,640 €

Subtotal 22,465 €

Elementos mecanicos Referencia Unidad Unidades Nombre del elemento Precio/Ud Sub Total

EMAX-GB2806 Ud 2 Motor bruhsless 15 € 30,00 €

Estructura metálica Ud 1 Estructura Gimbal 3 € 3,00 €

Tornillo M3 Ud 8 Tornillo motor-estructura 0,01 € 0,04 €

Subtotal 33,04 €

Recursos humanos Referencia Unidad Unidades Nombre del elemento Precio/Ud Sub Total

RH1 Horas 250 Investigaciontécnicas de conmutación para motores BLDC

30 € 7.500 €

RH2 Horas 150 Investigación en tratamiento de datos 30 €

4.500 €

RH3 Horas 300 Programación 30 € 9.000 €

RH4 Horas 40 Diseño PCB 30 € 1.200 €

RH5 Horas 20 Diseño estructura 30 € 600 €

RH6 Horas 90 Redacción documento 30 € 2.700 €

Subtotal 25.500 €

Page 175: Diseño y desarrollo de un gimbal con motores brushless · control de un gimbal, por esta razón en este documento se presenta una primera aproximación para el desarrollo de un sistema

Diseño y desarrollo de un gimbal con motores brushless Presupuesto

Alexander Montoya Osorio 8 Universidad de la Rioja

4. PRESUPUESTO GLOBAL

Con los presupuestos parciales calculados, se realiza el presupuesto total.

Resumen general del presupuesto 1 Móduloselectrónicos 0,1526 %

39,05 €

2 PCB 0,0878 %

22,465 €

3 Cableado 0,0059 %

1,50 €

4 Elementos mecánicos 0,1291 %

33,04 €

5 Recursos humanos 99,6247 %

25.500 €

Presupuesto de ejecución material

25.596,06 €

Gastos generales 13%

3.327,49 €

Beneficio Industrial 6%

1.535,76 €

Suma______________________________________ 30.459,31 €

Impuestos añadidos IVA 21%

6.396,45 €

TOTAL CON IMPUESTOS

36.855,76 €

El valor total del presupuesto del proyecto, impuestos incluidos, asciende a

la cantidad de TREINTAISEIS MIL OCHOCIENTOS CINCUENTA Y CINCO EUROS CON SETENTAISEIS CENTIMOS.

En Logroño a 4 de Julio de 2016 Fdo. Alexander Montoya Osorio.