You are on page 1of 175

TRABAJO FIN DE GRADO

Ttulo

Diseo y desarrollo de un gimbal con motores brushless

Autor/es

John Alexander Montoya Osorio

Director/es

Javier Rico Azagra y Montserrat Gil Martnez

Facultad

Escuela Tcnica Superior de Ingeniera Industrial


Titulacin

Grado en Ingeniera Elctrica

Departamento

Curso Acadmico

2015-2016
Diseo y desarrollo de un gimbal con motores brushless, trabajo fin de grado
de John Alexander Montoya Osorio, dirigido por Javier Rico Azagra y Montserrat Gil
Martnez (publicado por la Universidad de La Rioja), se difunde bajo una Licencia
Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported.
Permisos que vayan ms all de lo cubierto por esta licencia pueden solicitarse a los
titulares del copyright.

El autor
Universidad de La Rioja, Servicio de Publicaciones,
publicaciones.unirioja.es
E-mail: publicaciones@unirioja.es
ESCUELA TCNICA SUPERIOR DE INGENIERA INDUSTRIAL

TRABAJO DE FIN DE GRADO

TITULACIN: Grado en
Ingeniera Electrnica Industrial y Automtica

CURSO: 2015/2016 CONVOCATORIA: JULIO

TTULO:
Diseo y desarrollo de un gimbal con motores brushless

AUTOR: John Alexander Montoya Osorio

DIRECTOR/ES: Javier Rico Azagra


Montserrat Gil Martinez

DEPARTAMENTO: Ingeniera Elctrica


Diseo 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 INGENIERA ELCTRICA
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 acelermetros y giroscopios. Un gimbal es un sistema de
estabilizacin para cmaras el cual implementa motores elctricos 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
elaboracin de gimbales encontrados, usaban tarjetas ya construidas para el
control de un gimbal, por esta razn en este documento se presenta una primera
aproximacin 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.
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.
Diseo y desarrollo de un gimbal
con motores brushless

INDICE GENERAL

ALUMNO: ALEXANDER MONTOYA OSORIO


DIRECTORES DE PROYECTO: JAVIER RICO AZAGRA Y MONTSERRAT GIL
MARTNEZ
CURSO 2015 2016
UNIVERSIDAD DE LA RIOJA
DEPARTAMENTO DE INGENIERA ELCTRICA
Diseo y desarrollo de un gimbal con motores brushless
Indice general

NDICE GENERAL

Contenido

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

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

1. INTRODUCCIN ........................................................................................................9

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


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

1.3. OBJETIVOS ESPECFICOS ...........................................................................................11


1.4. METODOLOGA Y PLAN DE TRABAJO ........................................................................12
1.5. ORGANIZACIN DEL DOCUMENTO ...........................................................................14

2. DESCRIPCIN DEL SISTEMA .................................................................................. 15

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


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

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

3.1. PROTOCOLO DE COMUNICACIN I2C ......................................................................19


3.2. TRANSFERENCIA DE DATOS A TRAVS DEL BUS I2C ..............................................20
3.3. CONDICIN DE INICIO Y PARADA (START/STOP) ..............................................23
3.4. PAQUETE DE DIRECCIN...........................................................................................23
3.5. ESCRITURA EN UN DISPOSITIVO ESCLAVO ...............................................................24
3.6. LECTURA DESDE UN DISPOSITIVO ESCLAVO ............................................................25

4. SISTEMA DE ESTIMACIN DE ACTITUD ................................................................. 26

4.1. FUNDAMENTOS PARA LA ESTIMACIN 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. ACELERMETROS..............................................................................................33
4.3. TRATAMIENTO DE DATOS .........................................................................................34
4.3.1. ESTIMACIN DE ACTITUD CON ACELERMETRO ...........................................34

Alexander Montoya Osorio 2


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Indice general
4.3.2. ESTIMACIN CON GIROSCOPIO.........................................................................39
4.4. ESTIMADOR POR FUSIN SENSORIAL ......................................................................43
4.4.1. ESTIMACIN CON FILTRO COMPLEMENTARIO ................................................43
4.4.2. ESTIMACIN CON FILTRO MADWICK ...............................................................45

5. SISTEMA DE EXCITACIN 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. TCNICAS DE CONMUTACIN PARA BLDC .............................................................52
5.2.1. TCNICA DE SEIS PASOS O SIXSTEP. CONMUTACIN TRAPEZOIDAL .............53
5.2.2. SPWM. SINUSOIDAL PULSE WIDTH MODULATION...........................................57
5.2.3. CURVA DE PAR OBTENIDA EN FUNCIN DEL MTODO DE CONMUTACIN ...61

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

6.1. ESTIMACIN DE LA FUNCIN 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. COMPARACIN ENTRE PLANTAS ..............................................................................70
6.5. DISEO DEL CONTROLADOR.....................................................................................72

7. DESCRIPCIN 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. LIBRERA TIMER ........................................... 8ERROR! BOOKMARK NOT DEFINED.


1.2. LIBRERA I2C ................................................ 8ERROR! BOOKMARK NOT DEFINED.
1.3. LIBRERA PWM E IMPLEMENTACION DEL SPWM8ERROR! BOOKMARK NOT
DEFINED.

1.4. LIBRERA PLL .............................................. 8ERROR! BOOKMARK NOT DEFINED.

Alexander Montoya Osorio 3


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Indice general
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 ELCTRICO .................................................... 119

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

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

4. PLANO NUMERO CUATRO. UBICACIN 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. DEFINICIN 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. ESPECIFICACIN TCNICA 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

Alexander Montoya Osorio 4


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Indice general
3.6. MOTORES ................................................................................................................ 137

4. CONEXIN DE LOS COMPONENTES CON LA TARJETA .......................................... 138

5. CALIBRACIN Y MODIFICACIN DE PARMETROS SOFTWARE ......................... 139

6. CONDICIONES / ESPECIFICACIONES DE OPERACIN ......................................... 143

7. CONDICIONES ECONMICAS .............................................................................. 144

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


7.2. LIQUIDACIN ..................................................................................................... 144
7.3. DISPOSICIN ...................................................................................................... 145

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

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

1.1. MDULOS ELECTRNICOS: .................................................................................... 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.

Alexander Montoya Osorio 5


Universidad de la Rioja
Diseo 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 INGENIERA ELCTRICA
Diseo y desarrollo de un gimbal con motores brushless
Memoria

NDICE DE LA MEMORIA
1. NTRODUCCIN ......................................................................................................... 4

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


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

1.3. OBJETIVOS ESPECFICOS ............................................................................................. 6


1.4. METODOLOGA Y PLAN DE TRABAJO .......................................................................... 7
1.5. ORGANIZACIN DEL DOCUMENTO ............................................................................. 9

2. SCRIPCIN DEL SISTEMA ....................................................................................... 10

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


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

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

3.1. PROTOCOLO DE COMUNICACIN I2C ......................................................................13


3.2. TRANSFERENCIA DE DATOS A TRAVS DEL BUS I2C ..............................................14
3.3. CONDICIN DE INICIO Y PARADA (START/STOP) ..............................................17
3.4. PAQUETE DE DIRECCIN...........................................................................................17
3.5. ESCRITURA EN UN DISPOSITIVO ESCLAVO ...............................................................18
3.6. LECTURA DESDE UN DISPOSITIVO ESCLAVO ............................................................19

4. SISTEMA DE ESTIMACIN DE ACTITUD ................................................................. 21

4.1. FUNDAMENTOS PARA LA ESTIMACIN 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. ACELERMETROS..............................................................................................28
4.3. TRATAMIENTO DE DATOS .........................................................................................29
4.3.1. ESTIMACIN DE ACTITUD CON ACELERMETRO ...........................................29
4.3.2. ESTIMACIN CON GIROSCOPIO.........................................................................34
4.4. ESTIMADOR POR FUSIN SENSORIAL ......................................................................38
4.4.1. ESTIMACIN CON FILTRO COMPLEMENTARIO ................................................39
4.4.2. ESTIMACIN CON FILTRO MADWICK ...............................................................41

5. SISTEMA DE EXCITACIN PARA MOTORES BRUSHLESS ........................................ 43

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


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

Alexander Montoya Osorio 2


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
5.1.2. PRINCIPIO DE FUNCIONAMIENTO Y CONTROL ................................................45
5.1.3. DRIVER DE CONTROL ........................................................................................47
5.2. TCNICAS DE CONMUTACIN PARA BLDC .............................................................48
5.2.1. TCNICA DE SEIS PASOS O SIXSTEP. CONMUTACIN TRAPEZOIDAL .............49
5.2.2. SPWM. SINUSOIDAL PULSE WIDTH MODULATION...........................................53
5.2.3. CURVA DE PAR OBTENIDA EN FUNCIN DEL MTODO DE CONMUTACIN ...58

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

6.1. ESTIMACIN DE LA FUNCIN 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. COMPARACIN ENTRE PLANTAS ..............................................................................67
6.5. DISEO DEL CONTROLADOR.....................................................................................69

7. DESCRIPCIN 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

Alexander Montoya Osorio 3


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

1. NTRODUCCIN

El presente documento titulado Diseo 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 ttulo de
Grado en Ingeniera Electrnica Industrial y Automtica por la Universidad de La
Rioja. Para la realizacin del mismo se han seguido las indicaciones de D. Javier
Rico Azagra y Da. Montserrat Gil Martnez, que han actuado como directores del
proyecto.

Las reas cientfico tcnicas en las que se enmarca este trabajo son,
principalmente, el rea de Ingeniera de Sistemas y Automtica, y el de Tecnologa
Electrnica

1.1. ANTECEDENTES

El propsito del proyecto es construir un sistema de estabilizacin de alta


calidad para cmaras 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 fcil de instalar, pesa poco y presenta una dinmica
mucho ms veloz que otro tipo de motores. Sin embargo para desarrollar un
sistema de estas caractersticas es necesario implementar algoritmos de
conmutacin complejos, puesto que un BLDC debe ser electrnicamente
conmutado.

Un gimbales un soporte que permite la rotacin 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 orientacin 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 cinematogrfica ya que
resulta ideal para suprimir la vibracin que sufre la cmara durante la grabacin
de video. Actualmente su coste de produccin es bajo debido que los componentes
cada vez son ms baratos y eficientes.

En la ltima dcada se ha popularizado el uso de gimbal sobre todo por el


auge de vehculos areos no tripulados, este hecho ha promovido el desarrollo de
tarjetas controladoras exclusivamente diseadas para controlar un gimbal que
bien puede ser de 2 o 3 ejes. Estos dispositivos se conoce como: BGC (Brushless

Alexander Montoya Osorio 4


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
Gimbal Controller) y estn disponibles en el mercado. Todas ellas presentan la
misma topologa y solo se diferencian en el nmero 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
diseo tanto a nivel mecnico (estructura) como de la parte de electrnica de
potencia y de control.

Para su implementacin 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 conclusin del proyecto que en este documento se propone, implica la


aplicacin prctica de conceptos y conocimientos adquiridos durante la carrera en
diversas de las asignaturas del Grado en Ingeniera Electrnica. En este trabajo se
documenta el diseo de un sistema de control de posicin para dos motores
brushless usando una Unidad Inercial de Medida o IMU por sus siglas en ingls,
como sensor. Con el fin de darle una utilidad prctica a este tipo de control se va a
disear un BGC o Brushless Gimbal Controller haciendo uso de una tcnica de
conmutacin conocida como SPWM (Sinusoidal Pulse Width Modulation). Mediante
esta tcnica se pretende controlar al BLDC mediante una seal trifsica de la
misma manera que se hace con un motor trifsico convencional, sin embargo y
debido a que un motor brushless deber ser electrnicamente conmutado, se debe
modular una seal sinusoidal mediante seales PWM para excitar cada una de las
bobinas del motor. Una de las tcnicas de conmutacin ms habituales para un
BLDC se conoce como 6 step o 6 pasos. Sin embargo esta tcnica resulta ineficaz e
insuficiente para el control de posicin basado en motores brushless debido a l
rizado en el par de salida y a la poca precisin obtenida.

Por otra parte, la elaboracin de un gimbal basado en una unidad inercial de


medida supone el desarrollo de una librera en cdigo C que implemente el
protocolo de comunicacin I2C, ya que el sensor se comunica a travs de este Bus.
Posteriormente ser necesario aplicar un procedimiento de filtrado a las medidas
leas para mitigar problemas de ruido y el drift generado por los propios sensores.

La integracin de todo el sistema supone la seleccin 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 conmutacin de los motores,
motores, algoritmos de control, algoritmos de conmutacin, filtros digitales,
modulacin de seales, protocolos de comunicacin y tambin implica el diseo de
un PCB que lo integre todo en la misma placa. Esta descripcin demuestra

Alexander Montoya Osorio 5


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
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 propsito final y en la lnea de los anteriores prrafos, es el de concluir un


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

1.3. OBJETIVOS ESPECFICOS

A continuacin se describen los objetivos especficos 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 mdulo de sensores a travs del bus I2C.

Objetivo 2: Desarrollo de un sistema de estimacin que permita obtener


la actitud y orientacin de la cmara a partir de los sensores de bajo
coste integrados en una unidad inercial de medida compuesta por
acelermetros y giroscopios.

Objetivo 3: Desarrollo de un sistema de excitacin para un motor


brushless que no implemente sensores de tipo Hall.

Objetivo 4: Desarrollo de un sistema de control de posicin para


motores brushless que emplee para la realimentacin la informacin
obtenida mediante los acelermetros y los giroscopios.

Objetivo 5: Diseo y construccin de una placa de circuito impreso para


la implementacin del diseo en el sistema real. Esta debe contener la
electrnica de potencia, el microcontrolador, las conexiones del bus I2C,
las conexiones para el motor y la alimentacin del todo el sistema.

Objetivo 6: Diseo y construccin de una estructura mecnica sobre la


cual montar todo el sistema.

Alexander Montoya Osorio 6


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

1.4. METODOLOGA Y PLAN DE TRABAJO

Se describen las tareas realizadas y orientadas a la consecucin de los


objetivos especficos del trabajo fin de grado. Dichas tareas representan a las
etapas en las que se fue dividendo el proyecto. A continuacin se enumeran las
tares:

1. Investigacin sobre tcnicas de conmutacin para motores brushless. Durante


esta fase se comprenden los principios fsicos en los que se basa el
funcionamiento de un motor brushless, con el fin de encontrar una tcnica
que permita la elaboracin de un sistema preciso y de alto rendimiento.

2. Implementacin de la tcnica de conmutacin SPWM. Una vez elegida la


tcnica a usar, ser necesario implementarla dentro del microprocesador.

3. Construccin del primer prototipo.

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

5. Implementacin de un modelo matemtico basado en cuaternios para la


estimacin de la orientacin.

6. Desarrollo de un sistema de control de posicin en lazo cerrado.

7. Ejecucin de pruebas reales y anlisis de resultados.

8. Construccin del soporte del gimbal.

9. Integracin del sistema.

10. Redaccin de documentos.

En las siguientes tablas se presenta una distribucin temporal de las etapas,


en ellas cada columna representa una semana:

Alexander Montoya Osorio 7


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
Primer semestre del ao 2015

AO 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 ao 2015

AO 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

Alexander Montoya Osorio 8


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
Primer semestre del ao 2016

AO 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. ORGANIZACIN DEL DOCUMENTO

Alexander Montoya Osorio 9


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

2. SCRIPCIN DEL SISTEMA

2.1. FUNDAMENTOS

Un gimbal de dos ejes est compuesto por una estructura mecnica que

Ilustracin 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 cmara encargada de
la captura de imgenes. En la figura 2-1 aparece una representacin 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
orientacin. En las siguientes figuras se representa el gimbal en dos posiciones
diferentes. Vase como en ambos casos el giro combinado de los dos motores
produce que la base sobre la que se ubica la cmara se mantenga en una posicin
fija. De este modo su orientacin permanece inalterada pese al movimiento
exterior del sistema.

Esta caracterstica es especialmente til cuando se desea realizar una


captura de imgenes 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 cmara, perdiendo el encuadre deseado.

Alexander Montoya Osorio 10


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 2-2. Rotacion del gimbal alrededor el eje del motor 1

Ilustracin 2-3. Rotacion del gimbal alrededor el eje del motor 2

Para lograr la compensacin de los giros aplicado en la estructura que


soporta la cmara, es necesario conocer en todo momento la orientacin 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 cmara.
Tradicionalmente se emplean como sensores unidades de medida inercial, por
tratarse de equipos de bajo coste con precisin adecuada. No obstante, el empleo
de estos sensores de bajo coste repercute en un mayor esfuerzo de diseo, ya que
las medidas arrogadas por estos deben ser procesadas para inferir a partir de ellas
la orientacin de la cmara.

Conocida la posicin de la cmara, un sistema de control ser el encargado


de determinar cul es el giro necesario en cada uno de los ejes, y por lo tanto la
excitacin 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 seales de excitacin para los motores BLDC. Es decir, cada una
de las seales es procesada dando lugar a una lgica de conmutacin de las fases
del motor.

Alexander Montoya Osorio 11


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

2.2. MATERIALES

Para el desarrollo del prototipo se han empleado los siguientes elementos


principales:

Los materiales usados para este proyecto se enumeran a continuacin:


1. Tarjeta de desarrollo
2. Acelermetros y giroscopios (IMU)
3. 2 motores brushless
4. Estructura de aluminio
5. Batera
6. Regulador de tensin 5 V
7. PCB
8. Componentes elctricos 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.

Ilustracin 2-4. Componentes del gimbal

Alexander Montoya Osorio 12


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

3. SISTEMA DE COMUNICACIONES

A continuacin 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).

Tngase en cuenta que las comunicaciones representan una parte


importante del presente proyecto, dado que los sensores empleados para estimar
la orientacin son fundamentales para el desempeo del sistema. Las prdidas de
informacin entre el sensor y el procesador pueden dar lugar a comportamiento
errticos, incluso desestabilizar el sistema, y por lo tanto se consideran
inasumibles.

Se ha optado por emplear el protocolo de comunicacinI2C., conocido


como: Inter-Integrated Circuit. Todos los procesos de lectura de datos desde los
diferentes sensores (acelermetros y girscopos) se debe llevar a cabo siguiendo
este protocolo. La CPU se encarga de consultar peridicamente las medidas de
acelermetros y giroscopios para as estimar la orientacin de la base del gimbal.

El bus I2C facilita la comunicacin entre microcontroladores, memorias y


otros dispositivos con cierto nivel de "inteligencia", slo requiere de dos lneas de
seal y un comn o masa. Fue diseado a este efecto por Philips y permite el
intercambio de informacin 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 continuacin se muestran los fundamentos de comunicacin empleados.


El cdigo desarrollado se ha omitido en la memoria por considerarse demasiado
extenso. Sin embargo, en los anexos del documento se incluyen las libreras
desarrolladas para establecer la comunicacin entre los sensores y la unidad de
proceso.

3.1. PROTOCOLO DE COMUNICACIN I2C

El uso del bus I2C por numerosas empresas dedicadas a la elaboracin de


perifricos para microprocesadores han hecho de este bus una de las principales
soluciones para la comunicacin en sistemas embebidos ya que la mayora de
componentes electrnicos tales como: sensores, ADCs, drivers para motores
elctricos y otros tipos de dispositivos, ofrecen esta alternativa de comunicacin.
La principal caracterstica de IC es que utiliza dos lneas para transmitir la
informacin: una para los datos y otra para la seal de reloj. Tambin es necesaria
una tercera lnea, pero esta slo es la referencia (masa).

Alexander Montoya Osorio 13


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Descripcin de las seales:

SCL (SystemClock) es la lnea de los pulsos de reloj que sincronizan el sistema.


SDA (System Data) es la lnea por la que se mueven los datos entre los
dispositivos.
GND (Masa) comn de la interconexin entre todos los dispositivos
"enganchados" al bus.

Las lneas 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 alimentacin por medio de resistores "pull-up") lo que define una
estructura de bus que permite conectar en paralelo mltiples entradas y salidas.

Ilustracin 3-1. Conexin de varios dispositivos al bus I2C

La figura 3-1 es suficientemente autoexplicativa. Las dos lneas del bus


estn en un nivel lgico alto cuando estn inactivas. En principio, el nmero de
dispositivos que se puede conectar al bus no tiene lmites, aunque hay que
observar que la capacidad mxima sumada de todos los dispositivos no supere los
400 pF. El valor de los resistores de polarizacin no es muy crtico, 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 seales.

3.2. TRANSFERENCIA DE DATOS A TRAVS DEL BUS I2C

Habiendo varios dispositivos conectados sobre el bus, es lgico que para


establecer una comunicacin a travs de l se deba respetar un protocolo.
Digamos, en primer lugar, lo ms importante: existen dispositivos maestros y
dispositivos esclavos. Slo los dispositivos maestros pueden iniciar una
comunicacin.

Alexander Montoya Osorio 14


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 3-2. Un dispositivo actuando como maestro

Cuando el bus esta libre las dos lneas permanecen en estado alto para
iniciar una comunicacin el master debe generar una condicin de START. El
primer byte que se transmite luego de la condicin de inicio contiene siete bits que
componen la direccin del dispositivo que se desea seleccionar, y un octavo bit que
corresponde a la operacin que se quiere realizar con l (lectura o escritura).

Todas las transferencias son de 9 bits, los 8 primeros contienen informacin


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 direccin 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 comunicacin se establece
en firme y comienza el intercambio de informacin entre los dispositivos.

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


lgico bajo (escritura), el dispositivo maestro enva datos al dispositivo esclavo.
Esto se mantiene mientras contine recibiendo seales de reconocimiento, y el
contacto concluye cuando se hayan transmitido todos los datos y se genere la
condicin de STOP. En el caso contrario, cuando el bit de lectura/escritura estaba a
nivel lgico 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 condicin


de parada o STOP.

Definicin de trminos:

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


direccin del trfico en el bus. Es el nico que aplica los pulsos de
reloj en la lnea SCL. Cuando se conectan varios dispositivos
maestros a un mismo bus la configuracin obtenida se denomina
"multi-maestro".

Alexander Montoya Osorio 15


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
Esclavo (Slave): Todo dispositivo conectado al bus que no tiene la
capacidad de generar pulsos de reloj. Los dispositivos esclavos
reciben seales de comando y de reloj generados desde el maestro.

Formato de Datos (Data Format): La transmisin de un dato a


travs 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 lneas (SDA y SCL)
estn inactivas, presentando un estado lgico 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 condicin. La lnea de datos (SDA) toma
un estado bajo mientras que la lnea de reloj (SCL) permanece alta

Parada (Stop): Un dispositivo maestro puede generar esta


condicin, dejando libre el bus. La lnea de datos y la de reloj toman
un estado lgico alto.

Dato vlido (Valid Data): Situacin presente cuando un dato


presente en la lnea SDA es estable al tiempo que la lnea SCL est a
nivel lgico alto.

Reconocimiento (Acknowledge): El pulso de reconocimiento,


conocido como ACK (del ingls Acknowledge), se logra colocando la
lnea de datos a un nivel lgico bajo durante el transcurso del noveno
pulso de reloj.

Direccin (Address): Todo dispositivo diseado para funcionar en


este bus posee su propia y nica direccin de acceso, preestablecida
por el fabricante. Hay dispositivos que permiten definir
externamente parte de la direccin de acceso, lo que habilita que se
pueda conectar en un mismo bus un conjunto de dispositivos del
mismo tipo, sin problemas de identificacin. La direccin 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 direccin


de 7 bits. El octavo bit (el menos significativo) que se enva durante
la operacin de direccionamiento, completando el byte, indica el tipo
de operacin a realizar. Si este bit es alto el dispositivo maestro lee

Alexander Montoya Osorio 16


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
informacin proveniente de un dispositivo esclavo. Si este bit es
bajo, el dispositivo maestro escribe informacin en un dispositivo
esclavo.

3.3. CONDICIN DE INICIO Y PARADA (START/STOP)

La condicin inicial, de bus libre, es cuando ambas seales estn en estado


lgico alto. En este estado cualquier dispositivo maestro puede ocuparlo,
estableciendo la condicin de inicio (START). Esta condicin se presenta cuando
un dispositivo maestro pone en estado bajo la lnea de datos (SDA), pero dejando
en alto la lnea de reloj (SCL). Esta condicin se ilustra en la figura 3-3

Ilustracin 3-3. Condicin de START

Por el contrario, cuando se desea finalizar una transmisin se debe generar


una condicin de STOP que consiste en generar un flanco de subida en la linea SDA
mientras la lnea SCL est a nivel alto.

Ilustracin 3-4. Condicin de STOP

3.4. PAQUETE DE DIRECCIN

Un paquete de direccin consiste en la direccin de un esclavo y la


operacin de lectura (SLA+R) o escritura (SLA+W) a realizar. El MSB del byte de
direccin se transmite primero. De todas las direcciones posibles para un esclavo
solo la direccin 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.

Alexander Montoya Osorio 17


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 3-5. Paquete de direccin

Todos los paquetes de direcciones en el bus tienen 9 bits de longitud, de


ellos 7 bits codifican una direccin, 1 bit de operacin (R/W) y el bit de
reconocimiento (acknowledge bit). Si el bit R/W es activado, una operacin de
lectura se llevara a cabo, de lo contrario se lleva a cabo una operacin de escritura
(bit a cero). Cuando un esclavo reconoce que ha sido direccionado debera
responder poniendo a nivel bajo la lnea SDA durante el ciclo de reconocimiento
(acknowledge cycle o noveno bit). Si el esclavo direccionado est ocupado o por
algn otro motivo no puede atender la llamada del maestro, la lnea SDA deber
dejarse a nivel alto en el ACK clock cycle. El master puede entonces transmitir una
condicin de STOP o REAPETED START (volver a enviar la condicin de START)
para iniciar de nuevo una transmisin.

3.5. ESCRITURA EN UN DISPOSITIVO ESCLAVO

Habiendo direccionado ya el dispositivo esclavo, lo que debe hacer ahora el


maestro es enviar la ubicacin interna o nmero de registro desde el que desea
leer o al que va a escribir. La cantidad depende, obviamente, de qu dispositivo es
y de cuntos registros internos posee. Algunos dispositivos muy simples no tienen
ninguno, pero la mayora s los poseen.

Despus de una condicin START la direccin del esclavo es transmitida.


Esta direccin contiene 7 bits seguidos por un octavo bit denominado bit de
direccin 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 condicin de
STOP generada por el maestro, sin embargo, un maestro puede iniciar una
comunicacin con otro dispositivo en el bus generando una nueva condicin de
START y dirigirse a otro esclavo sin la necesidad de generar primero una condicin
de STOP. La transferencia de datos sigue el formato mostrado en la figura 3-6.

Ilustracin 3-6. Transmisin de una trama completa de datos

Alexander Montoya Osorio 18


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Todas las transacciones requieren ciclo de reloj de reconocimiento


comnmente 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 lnea SDA. Para reconocer la transaccin, 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 direccin de dispositivo con el bit de lectura/escritura en
bajo.
3. Enviar el nmero de registro interno en el que se desea escribir.
4. Enviar el byte de dato[Opcionalmente, enviar ms 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 operacin es algo ms complicada, pero no demasiado. Antes de leer


datos desde el dispositivo esclavo, primero se le debe informar desde cul de sus
direcciones internas se va a leer. De manera que una lectura desde un dispositivo
esclavo en realidad comienza con una operacin de escritura en l. Es igual a
cuando se desea escribir en l: se enva la secuencia de inicio, la direccin de
dispositivo con el bit de lectura/escritura en bajo y el registro interno desde el que
se desea leer. Ahora se enva otra secuencia de inicio nuevamente con la direccin
de dispositivo, pero esta vez con el bit de lectura/escritura en alto. Luego se leen
todos los bytes necesarios y se termina la transaccin con una secuencia de parada.

Secuencia de lectura desde un dispositivo esclavo

1. Enviar una secuencia de inicio.


2. Enviar la direccin de dispositivo con el bit de lectura/escritura en
bajo.
3. Enviar la direccin interna del registro.
4. Enviar una secuencia de inicio (inicio reiterado).
5. Enviar la direccin de dispositivo con el bit de lectura/escritura en
alto.
6. Leer un byte de dato.
7. Enviar la secuencia de parada.

Alexander Montoya Osorio 19


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

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

Alexander Montoya Osorio 20


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

4. SISTEMA DE ESTIMACIN DE ACTITUD

Como se ha descrito en captulos anteriores, para el desarrollo del gimbal es


necesario conocer en todo momento la orientacin de la cmara en un sistema de
referencia anclado a la base de la estructura. Para ello se emplean sensores
inerciales de bajo coste: acelermetros, giroscopios y magnetmetros. A partir de
las medidas de estos sensores se puede estimar con precisin la actitud y
orientacin con respecto al sistema de referencias inercial.

Esta estimacin no es sencilla, prueba de ello son los numerosos trabajos


publicados en la literatura cientfica en los ltimos aos. En ellos puede
comprobarse como el proceso de estimacin no es arbitrario.

El presente captulo describe el sistema de estimacin de actitud y


orientacin desarrollado. En l se enuncian los fundamentos tericos necesarios
para entender el problema abordado, se describen los sensores empleados, y se
muestran los resultados obtenidos mediante el empleo de diferentes estrategias de
estimacin.

4.1. FUNDAMENTOS PARA LA ESTIMACIN DE ACTITUD

El propsito final del estabilizador de cmara 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 orientacin en necesario disponer de una herramienta
matemtica que nos permita determinar el la orientacin del equipo.

Para representa la orientacin existen dos alternativas: usar ngulos de


Euler (pitch, roll y ya) o cuaternios. A continuacin se muestra una descripcin 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 orientacin de un sistema de referencia de
ejes ortogonales, normalmente mvil, respecto a otro sistema de referencia de ejes
ortogonales normalmente fijos, usando una combinacin de tres rotaciones sobre
diferentes ejes. Si todas las rotaciones son escritas en trminos de matrices de
rotacin D, C y B, entonces una rotacin general A puede ser descrita como A = BCD

Por convenio se usan distintos ejes de coordenadas para describir la


orientacin 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 estn

Alexander Montoya Osorio 21


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
fijos en tierra y los S.R V1 y V2 se usan por conveniencia cuando se ilustra la
secuencia de operacin para pasar del S.R inercial hacia el S.R del sensor.

Las rotaciones dadas por los ngulos de Euler (,,), son:

Ilustracin 4-1. Anguos de Euler

Como se muestra en la figura 4-1, el ngulo de yaw representa una rotacin


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 orientacin de V1
despus de la rotacin se muestra en la figura 4-2. El nuevo S.R V1 aparece
mostrado en rojo.

Ilustracin 4-2. Angulo yaw

() ()

= () ()

El pitch representa una rotacin 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 rotacin sobre el eje y del S.R inercial.

Alexander Montoya Osorio 22


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 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 travs de una rotacin sobre el eje X del S.R V2 el ngulo .

Ilustracin 4-4. Angulo de roll



= () ()
() ()

La matriz de rotacin 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


representacin de orientacin es el gimbal lock, o fenmeno de bloqueo de ejes. El
gimbal lock ocurre cuando la orientacin del sensor no puede ser representada
inequvocamente usando ngulos de Euler. La orientacin exacta en la cual el
gimbal lock ocurre depende del orden de las rotaciones usadas. Si se conserva el

Alexander Montoya Osorio 23


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
orden seguido anteriormente para las rotaciones, el gimbal lock ocurre cuando el
ngulo de pitch es de 90 grados. Cuando se produce esta situacin, dos de los ejes
se alinean y se pierde un grado de libertad para las rotaciones. Este fenmeno se
ilustra en las figuras 4-5 y 4-6.

Ilustracin 4-5. Ejes desalineados

Ilustracin 4-6. Gimbal lock

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


representacin de la orientacin y solo se puede solucionar utilizando un mtodo
diferente de representacin 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 representacin.

4.1.2. CUATERNIOS

Los cuaternios proporcionan una tcnica 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 matemtica puede ser ms complicada.

Alexander Montoya Osorio 24


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

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


codificar cualquier rotacin en un sistema de coordenadas en 3 dimensiones.
Tcnicamente un cuaternio est compuesto de un elemento real y tres elementos
complejos, y pueden ser usados para mucho ms que rotaciones. En este apartado
se proporciona la informacin necesaria para usarlos para representar
orientaciones espaciales por lo que se ignoraran los detalles tericos.
Al contrario que los ngulos de Euler, para estimar la orientacin solo se
necesitan el S.R inercial y el S.R anclado al cuerpo del sensor.

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


rotacin desde el S.R inercial hasta el S.R anclado al cuerpo que gira:

qbi 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
rotacin. El elemento a representa la parte escalar y especifica la cantidad de
rotacin que deber ser llevada a cabo alrededor de la parte vectorial.
T
Especficamente si es el ngulo de rotacin y Vx Vy Vz es el vector unitario que
representa el eje de rotacin, 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 operacin:

0 1
VB = qbi qbi
VI

Esto significa que un vector puedo ser rotado tratndolo como un cuaterno
con parte real igual a cero y multiplicndolo por el cuaternio de orientacin y su
inversa.

La multiplicacin de dos cuaternios se ilustra a continuacin:

Alexander Montoya Osorio 25


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
Si

T
q1 = a1 b1 c1 d1

T
q 2 = a2 b2 c2 d2

El producto de q1 q 2 viene dado por:

a1 a 2 b1 b2 c1 c2 d1 d2
a1 b 2 +b1 a2 +c1 d2 d1 c2
q1 q 2 =
a1 c2 b1 d2 +c1 a2 +d1 b2
a1 d2 +b1 c2 c1 b2 +d1 a2

Para rotar un vector desde el S.R del objeto al S.R inercial se requiere
efectuar una multiplicacin de dos cuaternios tales como los anteriormente
definidos. Alternativamente, el cuaternio de orientacin puede ser usado para
construir una matriz de rotacin de3x3 y llevar a cabo la rotacin en una simple
operacin. La matriz de rotacin 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 rotacin del sistema inercial al sistema del cuerpo puede ser
llevada a cabo usando la matriz de multiplicacin:

VB = Rbi qbi VI

Las ecuaciones para convertir un cuaternio de orientacin en los


correspondientes ngulos de Euler son:

atan2(2 ab + cd , 1 2(b2 + c 2 ))
= arcsin(2(ac db))
atan2(2 ad + bc , 1 2(c 2 + d2 ))

4.2. SENSORES INERCIALES DE BAJO COSTE

Como se describe en este captulo, para llevar a cabo la estimacin de la


actitud y orientacin se emplean una IMU (unidad de medida inercial), que consta
de un girscopo y un acelermetro. A continuacin se muestra una descripcin de
los mismos.

Alexander Montoya Osorio 26


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
4.2.1. GIROSCOPIOS
Los giroscopios, o girmetros, son dispositivos que miden o el movimiento
de rotacin. Son pequeos sensores, de bajo costo que sirven para medir la
velocidad angular. La mayora de los sensores actuales de pequeo tamao, como
los que se utilizan en modelos de helicpteros y robots, estn basados en circuitos
integrados cuya "alma" son pequesmaslengetas vibratorias, construidas
directamente sobre el chip de silicio. Su deteccin se basa en que las piezas
cermicas en vibracin son sujetas a una distorsin que se produce por el efecto
Coriolis (son cambios en la velocidad angular).

Ilustracin 4-7. Giroscopo mecanico

Ilustracin 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 rotacin 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 ms pequeo, menos costoso y
ms populares. Los giroscopios son sensores capaces de ofrecer velocidades
angulares entorno a un eje, sin embargo los datos que pueda proporcionar estn
sujetos a fenmenos elctricos y mecnicos 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 adems suele ser dinmica, esto quiere decir

Alexander Montoya Osorio 27


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
que la medida que tomemos de los sensores va a tener siempre un valor de offset
que falseara la muestra. Afortunadamente existen tcnicas 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 estn prcticamente parados, suelen presentar un ruido de
baja frecuencia que los hace de poco fiables para obtener medidas precisas
empleadas en la estimacin 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. ACELERMETROS
Los acelermetros son dispositivos que miden la aceleracin, 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 flucta ligeramente con la altitud.
Los acelermetros son tiles para detectar las vibraciones en los sistemas o para
aplicaciones que requieran el conocimiento de la orientacin.

Generalmente, los acelermetros contienen placas capacitivas


internamente. Algunos de estos son fijos, mientras que otros estn unidos a
resortes minsculos que se mueven internamente conforme las fuerzas de
aceleracin actan sobre el sensor. Como estas placas se mueven en relacin el uno
al otro, la capacitancia entre ellos cambia. A partir de estos cambios en la
capacitancia, puede estimarse la aceleracin.

Ilustracin 4-9. Acelermetro

Alexander Montoya Osorio 28


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 4-10. . Acelerometro comercial

Debido a que se puede conocer la direccin hacia donde apunta la fuerza de


gravedad en todo momento, es posible estimar la orientacin usando simplemente
un acelermetro de 3 ejes. Sin embargo este tipo de sensores tambin est sujeto a
fenmenos fsicos que harn que las lecturas tomadas estn 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 acelermetros para obtener
una estimacin 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 precisin 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
informacin recogida de los acelermetros y giroscopios. El objetivo final es
aplicar estrategias de filtrado que permitan mejorar la informacin, que
posteriormente ser empleada para el clculo del ngulo girado en torno a uno de
los ejes.

4.3.1. ESTIMACIN DE ACTITUD CON ACELERMETRO

Un acelermetro puede medir la aceleracin gravitacional terrestre y por lo


tanto proporcionar un marco de referencia absoluto a partir del cual sea posible
estimar la orientacin del sensor. Sin embargo los acelermetros se ven sujetos
altos niveles de ruido, por ejemplo, las aceleraciones debidas al movimiento del
sensor corrompern las medidas tomadas acerca de la direccin de la fuerza de
gravedad terrestre.

Alexander Montoya Osorio 29


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Estimacin de actitud mediante acelermetros

Determinar el ngulo mediante los acelermetros resulta bastante sencillo


si suponemos que el sensor gira sobre su propio eje y la aceleracin vista por los
acelermetros 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 situacin en la que el eje Z del sensor est
alineado con la fuerza gravitatoria. Cuando se produce un giro sobre el eje Y, la
aceleracin 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 situacin.

Ilustracin 4-11. Eje Z del sensor alineado con la gravedad

Ilustracin 4-12. Eje Z del sensor forma un ngulo con la gravedad

Alexander Montoya Osorio 30


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

En este apartado se propone el clculo alrededor del eje Y en base a las


medidas debidas a la aceleracin de la gravedad en los ejes X y Z atendiendo a la
ecuacin:

Filtro paso-bajo aplicado a los acelermetros

Aunque el clculo 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 acelermetros. La ecuacin 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. Segn el diagrama


de las seales 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.

Bode Diagram
0
Magnitude (dB)

-10

-20

-30

-40
0
Phase (deg)

-45

-90
-1 0 1 2 3
10 10 10 10 10
Frequency (rad/s)
Ilustracin 4-13. Diagrama de bode de un filtro paso-bajo

Alexander Montoya Osorio 31


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ejecucin y anlisis de los resultados del experimento 1

Este experimento tiene como propsito identificar y visualizar las


diferencias en los resultados obtenidos cuando se usan los datos antes y despus
de ser filtrados para el clculo del ngulo de giro.

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


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

Exp1. Angulo estimado con acelerometros


100

80 Datos Filtrados (DF)


Datos No Filtrados (DNF)

60

40
Angulo ( grados )

X: 1.24
Y: 27.24

20

-20

-40

-60
0 1 2 3 4 5 6
Tiempo ( seg )
Ilustracin 4-14. Resultados del primero experimento

Como se puede ver en la grfica, la lnea verde presenta una serie de


oscilaciones debidas a la vibracin del mismo, sin embargo, los datos de la lnea
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
electrnico de alta frecuencia.

En las figuras 4-16 y 4-17 aparece el anlisis espectral de cada una de las
seales. En la primera se observa como la seal que no ha sido filtrada presenta
magnitudes significativas para las frecuencias altas, sin embargo en la segunda
figura se ve claramente como despus de aplicar el filtro, las componentes de alta
frecuencia han sido eliminadas.

Alexander Montoya Osorio 32


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 4-15. FFT de los datos antes de ser filtrados

Ilustracin 4-16. . FFT de los datos despus de ser filtrados

Alexander Montoya Osorio 33


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
4.3.2. ESTIMACIN CON GIROSCOPIO

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


condiciones inciales pueden ser integradas a lo largo del tiempo para determinar
la inclinacin del sensor. Los girscopos de precisin como pueden ser los anillos
laser son demasiado caros para la mayora de aplicaciones y por lo tanto los
sistemas MEMS (Micro ElectricalMechanicalSystem) suelen usarse en la mayora
de aplicaciones debido a que son ms baratos aunque menos precisos. La
integracin del error existente en las medidas efectuadas por un giroscopio nos
llevan a una acumulacin del error en la orientacin calculada. Por lo tanto, los
giroscopios por si solos no pueden proporcionar una mediad absoluta de la
orientacin.

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 estimacin del ngulo a partir de las medidas del giroscopio.

Anlisis del giroscopio en reposo

Los giroscopios siempre presentan un offset a bajas frecuencias, al


integrarlo se desencadena una acumulacin de errores que crece y crece con el
tiempo falseando por lo tanto la medida y hacindola poco til para cualesquier
aplicacin 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 leda ronda los
-0.68 /s cuando en realidad debera ser cero, por lo tanto la integracin sucesiva
de estos valores para la estimacin del ngulo, conlleva la acumulacin de un error
que se crece y crece con el tiempo.
Muestras
-0.62

X: 1.8
Y: -0.6256

-0.64

-0.66
Vel. Angular ( /s )

-0.68

-0.7

-0.72

-0.74
0 1 2 3 4 5 6 7
Tiempo ( seg )

Ilustracin 4-17. Datos recogidos con giroscopio en reposo

Alexander Montoya Osorio 34


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
Tras realizar un anlisis frecuencia a la seal anterior se logra distinguir
que efectivamente existe una componente a bajas frecuencias. Ver figura 4-19.

FFT Magnitude
500

450 X: 0.1429
Y: 477.2

400

350

300

250

200

150

100

50

0
0 5 10 15 20 25 30 35 40 45 50
Freq ( Hz )

Ilustracin 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
caractersticas atena las frecuencias que estn por debajo de su frecuencia de
corte y deja pasar las frecuencias que estn por encima. En filtro paso-alto usado
para este experimento tiene como ecuacin:

0.1s
G s =
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 caractersticas atena 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

Alexander Montoya Osorio 35


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Bode Diagram
0

Magnitude (dB) -10

-20

-30

-40

-50
90
Phase (deg)

60

30

0
-1 0 1 2 3
10 10 10 10 10
Frequency (rad/s)
Ilustracin 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 comparacin entre los ngulos estimados antes


y despus del tratamiento de los datos mientras el sensor permanece en reposo.
Bajo esta situacin es de esperar que ngulo medido sea siempre cero puesto que
no existe movimiento, sin embargo en la grfica se observa que si no se filtran las
medidas el ngulo crece con el tiempo debido a la integracin del error.
Exp2. Angulo estimado con giroscopio
0

-2

-4 Datos Filtrados (DF)


Datos No Filtrados (DNF)
-6
Angulo ( grados )

-8

-10

-12

-14

-16

-18
0 1 2 3 4 5 6
Tiempo ( seg )

Ilustracin 4-20. Estimacin del ngulo girado mediante giroscopio

Alexander Montoya Osorio 36


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

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 grfica azul no
existe acumulacin error; a partir de los 4 segundos el sensor se deja en reposo y
se observa que el ngulo no vara, sin embargo en la grafa verde se ve claramente
como el ngulo sigue variando a lo largo del tiempo debido a que en la seal existe
una componente continua que no ha sido eliminada.
Exp3. Angulo estimado con giroscopio
40

Datos Filtrados (DF)


Datos No Filtrados (DNF)
20

0
Angulo ( grados )

-20

-40

-60

-80
0 1 2 3 4 5 6
Tiempo ( seg )
Ilustracin 4-21. Estimacin del ngulo girado mediante acelermetro

El anlisis frecuencial para estas dos seales 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.

Alexander Montoya Osorio 37


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria Exp . Analisis frecuencial
3
12000

10000 Angulo No Filtrado

8000

6000

4000

2000

0
0 5 10 15 20 25 30 35 40 45 50
Freq ( Hz )
Ilustracin 4-22. FFT de las medidas de un acelermetro
Exp3. Analisis en frecuencia
4000

3500 Angulo Filtrado

3000

2500

2000

1500

1000

500

0
0 5 10 15 20 25 30 35 40 45 50
Freq ( Hz )
Ilustracin 4-23. FFT de las medidas de un acelermetro una vez filtradas

4.4. ESTIMADOR POR FUSIN SENSORIAL

Vistos los inconvenientes encontrados al usar giroscopios y acelermetros


para la estimacin de ngulos de giro, surge la idea de usar la medicin obtenida
por el giroscopio para tiempos cortos y realizar la correccin de la deriva con la
medicin realizada por el acelermetro en tiempos largos, debido a que esta ltima
medicin tiende a ser la aceleracin de la gravedad para periodos largos.

Alexander Montoya Osorio 38


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
Para llevar a cabo este proceso de fusin sensorial suelen emplearse
diferentes alternativas. Las ms comunes emplean filtros complementarios, filtros
complementarios explcitos o filtros de Kalman. En este trabajo se presentan dos
opciones de estimacin. 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 correccin.

4.4.1. ESTIMACIN CON FILTRO COMPLEMENTARIO

El filtro complementario resulta sencillo de tratar matemticamente y en


razn de su baja complejidad de implementacin consume pocos recursos
computacionales. La idea bsica del filtro complementario es combinar la salida
del acelermetro y del giroscopio para obtener una buena estimacin del ngulo
de orientacin de la plataforma, compensando la deriva del girscopo con la baja
dinmica del acelermetro. El filtro complementario propuesto es el que se
muestra en la figura 4-25.

Ilustracin 4-24. Fusion sensorial

Donde theta_a es el ngulo medido por el acelermetro cuya seal 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


acelermetro y el giroscopio respectivamente.

Suponemos que las funciones de transferencia de los sensores son iguales a


1. Esto es = = .

La funcin de transferencia elegida para G es un filtro pasa-bajo de primer


orden. Lo cual hace que la estimacin en baja frecuencia dependa de la medicin
del acelermetro.


() =
+

Alexander Montoya Osorio 39


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
Y la funcin de transferencia para 1 G:


() =
+

Este filtro nos permite hacer que las componentes de alta frecuencia de la
medicin estimada dominadas por el aporte de las mediciones provenientes del
giroscopio.

Si ambas mediciones son ideales, la funcin de transferencia total del filtro


resulta:
()
= () + =
()

Y por lo tanto hace que:

= ()

Ensayo del filtro complementario

Tras la implementacin el filtro complementario se efecta un nuevo


experimento para determinar el ngulo. Los resultados del experimento se reflejan
en figura 4-64. Se aprecia como la grfica 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 inmvil el ngulo sigue variando. En la grfica
azul se aplica el filtro complementario a la estimacin de los datos dando como
resultadoun estimacin mucho ms fiable y acertada.
Exp5. Angulo estimado con filtro complementario
100

80

Angulo Giro
60
Angulo Acc
Angulo Filtro Complementario
40
Angulo ( grados )

20

-20

-40

-60
0 1 2 3 4 5 6
Tiempo ( seg )

Ilustracin 4-25. Resultados del filtro complementario

Alexander Montoya Osorio 40


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
4.4.2. ESTIMACIN CON FILTRO MADWICK
A continuacin se presenta el filtro desarrollado por Sebastian Madgwick.
Los principios matemticos que conforman el filtro se omiten puesto que
sobrepasa el propsito de este documento debido a su carga terica. Si se desea
saber ms acerca de este filtro existen referencias en el apartado de bibliografa.

Este apartado introduce un nuevo filtro de orientacin que es aplicable a


una IMU y soluciona los problemas de carga computacional y estimacin de
parmetros asociados al filtro Kalman y mejora el rendimiento del filtro
complementario. Este filtro incorpora dos funcionalidades, la primera de ellas es
que utiliza una fusin sensorial parecida a la del filtro complementario para
solucionar los problemas del ruido y las derivas. La segunda tiene que ver con la
estimacin de la orientacin ya que el filtro proporciona un algoritmo que la
calcula haciendo uso de una matemtica basada en cuaternios.

Como ya se ha dicho este filtro emplea una representacin de la orientacin


mediante cuaternios por lo que se resuelve el problema de las singularidades
asociadas a la representacin mediante ngulos de Euler.

La figura 4-27 muestra la representacin en un diagrama de bloques de la


implementacin del filtro para un IMU convencional.

Ilustracin 4-26. Diagrama de bloques del filtro Madwick

Este filtro requiere solo de un parmetro ajustable que puede ser


estimado teniendo en cuenta las caractersticas observables para cada uno de los
sistemas en el que se implemente. Mediante este parmetro es posible ajustar la
relevancia que tienen los acelermetros o giroscopios a la hora de aplicar la fusin
sensorial. Si el parmetro = , esto significa que la estimacin de la orientacin
se lleva a cabo exclusivamente a partir los giroscopios; si por el contrario el valor
es distinto de cero, existir una fusin sensorial que hace que los resultados en la
estimacin de la orientacin sean ms exactos.

Alexander Montoya Osorio 41


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
Para este proyecto se escogi = . tras realizar varios experimentos se
llego a la conclusin de que este valor era el ms adecuado.

En el artculo original escrito por el propio Sebastian Madgwick se incluye el


cdigo fuente en lenguaje C que implementa el filtro que se muestra en la figura.

Alexander Montoya Osorio 42


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

5. SISTEMA DE EXCITACIN PARA MOTORES BRUSHLESS

A continuacin se muestra el funcionamiento del sistema de excitacin para


motores brushless. Este sistema corresponde con otro de los apartados crticos del
proyecto, ya que una lgica de conmutacin deficiente degrada el comportamiento
del sistema.

Tngase en cuenta que la conmutacin de motores BLDC, tradicionalmente


se ha realizado empleando sensores de efecto hall que permiten conocer la
posicin del rotor. En este caso se emplean motores sensorless, hecho que complica
en gran medida la lgica encargada de realizar la conmutacin de las fases del
motor.

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


presenta una descripcin del funcionamiento de un motor BLDC y las lgicas de
excitacin ms frecuentes.

5.1. MOTORES BRUSHLEES

Los motores de imanes permanentes y sin escobillas o BLDC (Brushless


DC)estn remplazando a los motores convencionales que usan escobillas en
numerosas aplicaciones, ya que estos ofrecen una significativa eficiencia
energtica, bajo ruido acstico y ms 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 electrnicamente conmutados.

Ilustracin 5-1. Motor brushless (BLDC)

Alexander Montoya Osorio 43


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
5.1.1. PARTES DE UN BLDC
Los motores BLDC son motores sncronos, esto indica que el campo
magntico producido por el estator y el campo magntico producido por el rotor
gira a la misma frecuencia. Un motor BLDC no experimenta el fenmeno de
deslizamiento o slip que normalmente se observa en motores con escobillas.

Estn 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.

Ilustracin 5-2. Estator y rotor de un BLDC

El estator de un BLDC es la parte esttica 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
estn distribuidos a lo largo del estator en mltiples 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.

Ilustracin 5-3. Bobinado de un BLDC

Ilustracin 5-4.Conexin en estrella de un BLDC

Alexander Montoya Osorio 44


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

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.

Ilustracin 5-5.Imanes permanentes de un BLDC

Ilustracin 5-6. Rotor

Los imanes de ferrita han sido usados tradicionalmente para construir


imanes permanentes. Sin embargo y debido al avance tecnolgico, los imanes
construidos con tierras raras han ganado popularidad debido a que generan
campos magnticos ms fuertes y con un volumen ms reducido que el de un imn
convencional de ferrita.

5.1.2. PRINCIPIO DE FUNCIONAMIENTO Y CONTROL

El funcionamiento de un motor brushless est basado en la interaccin


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

Alexander Montoya Osorio 45


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
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.

Ilustracin 5-7. Campo magntico generado por las bobinas del estator

Ilustracin 5-8. Par de fuerzas generado entre el rotor y el estator

Cuando se hace circular corriente a travs de la bobina se genera un campo


magntico que interacciona con los imanes del rotor produciendo de esta manera
una fuerza de atraccin entre los polos magnticos 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 magnticos 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 contine 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 conmutacin 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 algn tipo de sensor que nos permita
conocer la posicin real del motor.

Alexander Montoya Osorio 46


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

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 posicin exacta del rotor. En funcin de las tres seales obtenidas
de los sensores Hall se genera un patrn de conmutaciones para que el motor gire
en algn 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.

Ilustracin 5-9. Sistema de control basado en sensores Hall

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


ms sensores que aporten informacin acerca de la posicin del rotor. Tal
implementacin incrementa el coste debido al uso de sensores, cableado e
implementacin en el motor. Adems, muchos sensores no pueden ser usados
puesto que deben ir alojados dentro de la estructura del propio BLCD.

En este proyecto la posicin 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
trifsico basado en transistores. Los inversores, o convertidores CC-CA, son un
circuito utilizado para convertir corriente continua en corriente alterna. Un
inversor tiene como funcin la de cambiar un voltaje CC de entrada en un voltaje
CA simtrico a la salida, procurando que este posea la magnitud y frecuencia
deseada por el usuario.

Los inversores trifsicos son utilizados para la alimentacin de cargas


trifsicas que requieran corriente alterna. Algunas de las aplicaciones de estos
inversores son las siguientes:

Alexander Montoya Osorio 47


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

- Fuentes de tensin alterna trifsica sin interrupciones


- Puesta en marcha de motores de corriente alterna trifsicos
- Conexin de fuentes que producen energa en continua con las cargas
trifsicas (paneles fotovoltaicos).

El circuito de la figura 5-10 aparece un motor trifsico alimentado desde un


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

Ilustracin 5-10. Circuito inversor con diodos en antiparalelo

Adems 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 generaran picos muy altos de tensin
terminales del circuito.

Debido a la topologa del circuito inversor es posible ir energizando


independientemente cada una de las bobinas del estator y generar una secuencia
de conmutacin adecuada que haga girar el campo magntico y a su vez este
arrastre al rotor.

5.2. TCNICAS DE CONMUTACIN PARA BLDC

Mediante la conmutacin 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
rotacin.

Las tcnicas de control para motores brushless se pueden clasificar segn el


algoritmo de conmutacin implementado. Las ms utilizadas actualmente son:

Conmutacin trapezoidal (tambin llamada 6- steps mode o basada en


sensores hall),
Conmutacin sinusoidal y

Alexander Montoya Osorio 48


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
Control vectorial (Field Oriented Control).

Estas tcnicas tienen bsicamente como objetivo estimar la excitacin


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

5.2.1. TCNICA DE SEIS PASOS O SIXSTEP. CONMUTACIN TRAPEZOIDAL

Uno de los mtodos ms simples de control de motores brushless es el


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

Ilustracin 5-11. Conmutacin 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 conmutacin
el sentido de giro se conserve.

Las 6 conmutaciones deben ejecutarse atendiendo a la secuencia


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

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

Alexander Montoya Osorio 49


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Alexander Montoya Osorio 50


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 5-12. Tcnica de 6 pasos

Alexander Montoya Osorio 51


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

El par de giro que se genera con este esquema de conmutacin presentan


bruscas variaciones a medida que se van sucediendo las conmutaciones durante un
ciclo elctrico completo. El mtodo de conmutacin 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 conmutacin a 6 pasos.

Ilustracin 5-13. Par de rizado obtenido mediante conmutacin 6 step

Por otra parte, el ngulo girado tras cada conmutacin depende del nmero
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 elctricos para dar una
vuelta entera puesto que el rotor tiene 7 pares de polos, con esta disposicin el
ngulo girado por cada conmutacin resultara:

7 6 = 42

360
= = 8.57
42

Con una resolucin de giro en el motor de 8.57 grados por conmutacin


resulta imposible implementar un control de posicin ptimo para el
funcionamiento de un gimbal.

Tanto el rizado del par como la poca resolucin de giro hacen que esta
tcnica resulte ineficiente para usarla en un gimbal real en donde es necesario
corregir ngulos de giro muy pequeos de decimas o incluso centsimas de grado.
Debido a estos inconvenientes se presenta necesario el uso de un mtodo que
minimice estos efectos como bien puede ser el SPWM el cual se explica en el
siguiente apartado.

Alexander Montoya Osorio 52


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

5.2.2. SPWM. SINUSOIDAL PULSE WIDTH MODULATION

El rizado en el par de salida que se obtiene al aplicar la tcnica de


conmutacin de 6 pasos se produce debido a que solo dos de las tres bobinas de
cada motor estn energizadas en todo momento y esto produce una cada brusca
de las corrientes y con ello del par. Para solucionar este problema se puede usar la
tcnica de conmutacin conocida como SPWM.

La gran diferencia que existe entre el mtodo de 6 pasos y el SPWM radica


en que para el SPWM las tres fases del motor estn energizadas a la vez. Esto
permite un control ms preciso de las corrientes en el motor y por lo tanto del par.

La tcnica de modulacin sinusoidal de ancho de pulso persigue la


generacin de una tensin sinodal trifsica equilibrada mediante la modulacin de
una seal PWM en cada una de las salidas del inversor. Cuando se genera una
tensin de estas caractersticas se consigue reducir significativamente el rizado del
par gracias a que la corriente absorbida por el motor presenta un rango de
oscilacin estrecho a lo largo de cada ciclo elctrico y de tal manera, el par, que
depende de la magnitud de la corriente, presentara oscilaciones en un rango ms
estrecho de valores en comparacin con la tcnica de modulacin de 6 pasos. En
las figura 5-14 se ha representado la forma de onda de la corriente absorbida por
una carga trifsica equilibrada cuando est alimentada por un sistema de tensin
trifsico equilibrado, a lo largo de un ciclo elctrico.

Alexander Montoya Osorio 53


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 5-14. Reduccin del par de rizado mediante SPWM

Lo que se obtiene con este patrn de corriente es producir una salida de par
de mayor valor y que presenta un menor rango de oscilacin en comparacin al
par obtenido cuando se conmuta con la tcnica de 6 pasos.

Una de las ventajas de usar seales PWM es que si la tensin continua de


bus es ms grande que las tensiones requeridas por el motor, este puede ser
controlado limitando el porcentaje del ancho de pulso de seal.

Para modular una seal sinusoidal mediante PWM existen varias formas,
una de las ms sencillas resulta de la comparacin entre dos formas de onda, la
seal de referencia o seal a modular (seal modulada) se compara con una seal
de acarreo triangular de alta frecuencia (seal de acarreo). El resultado de esta
comparacin se usa para generar una seal cuadrada la cual es una representacin
modulada de la onda original. En el caso de la tcnica SPWM, lo que se persigue
reproducir una seal sinusoidal mediante la modulacin de una seal cuadrada.

En la figura 5-15 se ilustra la tcnica de modulacin SPWM

Alexander Montoya Osorio 54


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 5-15. Modulacin de una sinusoide mediante onda triangular

La seal cuadrada que resulta contiene una rplica 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 seal a una carga inductiva como
lo es el motor, la corriente obtenida presenta la forma de onda mostrada en la
figura 5-16.

Ilustracin 5-16. Puente inversor

Alexander Montoya Osorio 55


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 5-17. Corriente obtenida mediante el uso de la tcnica SPWM

El nmero de tramos de la seal modulada esta directamente relacionada


con la resolucin de giro que se puede alcanzar mediante esta tcnica, pues como
bien se ha mencionado en el apartado anterior, se necesitan completar 7 ciclos
elctricos por lo que si se usara la seal modulada de la figura 5-16, el ngulo
girado por cada tramo es:


7 9 = 63

360
= = 5.7
63

5.7 grados de precisin continua siendo un valor bastante malo, sin


embargo se puede incrementar la precisin simplemente aumentado la frecuencia
de la seal de acarreo, de tal manera que a mayor frecuencia, el nmero de tramos
en los que se divide la seal de referencia es mayor tambin. En base a esto la seal
modulada en este proyecto se ha dividido en 540 tramos por lo que la resolucin
alcanzada de giro resulta ser:


7 540 = 3780

360
= = 0.095
3780

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


La corriente aplicada a la carga tambin esta representada.

Con una seal 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 nmero de conmutaciones por periodo, lo que incrementa la perdida de
potencia en los interruptores. Las frecuencias tpicas de conmutacin suelen ser de
2 a 15 kHz. Tambin es recomendable que en sistemas trifsicos las tres formas de
onda sean simtric

Alexander Montoya Osorio 56


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 5-18. Sinusoide dividida en 48 tramos

La conmutacin sinusoidal soluciona los problemas de eficiencia que


presenta la conmutacin a 6 pasos. Sin embargo, presenta problemas a altas
velocidades de rotacin del motor.

A mayor velocidad de rotacin, mayor error y por lo tanto mayor


desalineacin entre el vector de corrientes y la direccin de cuadratura del rotor.
Este hecho provoca una progresiva disminucin del par motor (ver Figura 5-50).

Para mantener el par constante se necesita aumentarla corriente que circula


por el motor provocando una disminucin 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 direccin de
cuadratura puede llegar a 90 produciendo un par motor completamente nulo.

Alexander Montoya Osorio 57


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 5-19. Curva de par/velocidad de un BLDC

5.2.3. CURVA DE PAR OBTENIDA EN FUNCIN DEL MTODO DE CONMUTACIN


Durante la fase de desarrollo de la tcnica de conmutacin se consultaron
muchos documentos aplicados al control de posicin de motores brushless. En uno
de estos documentos aparecen recogidos varios experimentos del par registrado
en un motor BLDC segn se conmuta con la tcnica de seis pasos o la tcnica de
SPWM. En cada uno de los experimentos se aparece representada la velocidad y el
par obtenido en funcin del tiempo.

A continuacin se presentan los resultados de los cuales se pueden sacar


interesantes conclusiones acerca del comportamiento del motor segn la tcnica
de conmutacin usada.

Ilustracin 5-20.Ilustracin
Par y velocidad
5-21. con
Par conmutacin a 6conmutacin
y velocidad con pasos 6 step

En la figura 5-21 aparecen los resultados obtenidos mediante la


conmutacin de 6 pasos. Se observa que el la magnitud del rizado en el par es de

Alexander Montoya Osorio 58


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
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.

Ilustracin 5-22. Par y velocidad con conmutacin SPWM

Se puede concluir gracias a estos experimentos que la tcnica de


conmutacin SPWM no solo reduce el rizado en el par de salida sino que tambin
aumenta el rendimiento en la transferencia de energa debido al que el valor RMS
de la corriente es mayor.

Alexander Montoya Osorio 59


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

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 metodologa y la implementacin de los
controladores. Las rotaciones en los dos ejes (Pitch y Roll) se realizan siguiendo el
criterio mostrado en la figura 6-1.

Ilustracin 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 posicin para dos motores brushless en este caso, y que estn dispuestos
sobre dos ejes independientes.

El eje Z del sensor se monta de manera que este alineado con la direccin 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
alteracin en los ngulos de roll y pitch con el fin de conservar la orientacin de la
base.

Alexander Montoya Osorio 60


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Ilustracin 6-2. Alineamiento del sensor con la direccin de la gravedad

Cuando se realiza un sistema de control de posicin es necesario disponer


de un sensor para poder medirla y cerrar el lazo de control. Para medir la posicin
de un motor existen diversas alternativas y una de las ms 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 estimacin de orientacin. 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.

Ilustracin 6-3. Diagrama de control para el ngulo Roll

Ilustracin 6-4. Diagrama de control para el ngulo Pitch

Alexander Montoya Osorio 61


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
A lo largo de este apartado se explican los procedimientos llevados a cabo
para determinar la planta del sistema, el diseo y validacin del controlador. Todas
las estimaciones y comprobaciones se han efectuado con Matlab.

6.1. ESTIMACIN DE LA FUNCIN 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 identificacin. Los datos han
sido recogidos tras realizar varios experimentos con el motor real, en cada
experimento se somete al sistema a una entrada escaln 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 dinmica se aproxime a la dinmica real.

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


antemano las caractersticas del sistema si se desea realizar una buena estimacin
de la planta ya que ha de seleccionarse un modelo (nmero de polos y ceros) en
base a la cual se va a realizar una estimacin.

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 posicin, 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 seal de


referencia de 50 grados, realimentar con ganancia unitaria y posteriormente
recoger los datos de la seal de error y de la variable de control que en este caso
sern los grados girados por el motor. En la figura 6-5 aparece el resultado del
experimento.

Alexander Montoya Osorio 62


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Variable y accion de control


60

50
X: 1.62
Grados
40 Y: 50.4

30

20

10

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5

2.5

2
Accion de control

1.5

0.5

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

Ilustracin 6-5. Representacin de la posicin y la accin de control I

En este experimento se observa la posicin angular del motor y el valor de


la accin de control a largo del tiempo.

Mediante el empleo de la herramienta ident de Matlab, y tras llevar a cabo la


estimacin en base al modelo de la ecuacin, 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 obtendra si se aplica la misma seal de
referencia al modelo de la ecuacin anterior (en rojo). Como se puede ver el
comportamiento es bastante similar, de hecho la ident calcula que su estimacin se
aproxima en un 79.43 % al modelo real.

Alexander Montoya Osorio 63


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Measured and simulated model output


60

50

40

30

20

10

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

Ilustracin 6-6. Comparacin 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 diseo 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
simulacin que inclua la nueva planta y el mismo controlador para comparar las
respuestas real y simulada.

30

25

20

15

10

50 100 150 200 250 300 350

Ilustracin 6-7. puesta real del sistema

Alexander Montoya Osorio 64


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Step Response
1

System: Closed Loop r to y


0.9 I/O: r to y
Settling time (seconds): 0.617

0.8

0.7

0.6

Amplitude 0.5

0.4

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

Time (seconds)

Ilustracin 6-8. Respuesta esperada del sistema

A continuacin se presentan las respuestas tras el experimento

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


inyecta una seal de referencia de 30 grados. En la figura de la derecha aparece la
simulacin del mismo experimento y se puede ver que las dinmicas 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 simulacin por su parte da un tiempo de
establecimiento de 0.617.

Atendiendo a la dinmica observada y a los tiempos de establecimiento se


puede concluir que el modelo aproximado es vlido.

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.

Alexander Montoya Osorio 65


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
En primer lugar sometemos al sistema a una entrada de referencia de 30
grados y posteriormente recogeremos los datos obtenidos de la accin de control y
la respuesta obtenida. La Figura 5-19 muestra los resultados obtenidos.

Variable y accion de control


40

30
Grados

20

10

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

0.8

0.6
Acc. control

0.4

0.2

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

Ilustracin 6-9. Representacin de la posicin y la accin de control II

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


que la planta es:

.
=
( + . )

La estimacin que se obtiene de la planta se aproxima al modelo real en un


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

Alexander Montoya Osorio 66


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Measured and simulated model output


40

35

30

25

20

15

10

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time
Ilustracin 6-10. Comparacin ente el modelo real el modelo estimado

6.4. COMPARACIN ENTRE PLANTAS

En los apartados anteriores se realizaron experimentos para determinar la


planta del motor mediante dos sensores de posicin diferentes. Tras analizar los
resultados se determin que el modelo obtenido mediante la IMU se aproxima
mejor al modelo real. Para corroborar esta afirmacin se realiz un nuevo
experimento con un escaln de 50 y se compar la respuesta real con la dinmica
obtenida si se aplicara la misma seal 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 comparacin.

Alexander Montoya Osorio 67


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
Measured and simulated model output
60

50

40

30

20

10

-10
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time
Ilustracin 6-11. Comparacin entre plantas

.
= . % .
( + . )

302.11
2 = 81.8566 %
(1 + 0.099174 )

Alexander Montoya Osorio 68


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

6.5. DISEO DEL CONTROLADOR

En un gimbal, el control de la posicin ha de ser preciso, rpido y estable.

En un sistema gimbal se hace necesario disponer de un controlador lo


bastante rpido para poder corregir cualquier desviacin del ngulo para cada uno
de los ejes. Para este propsito se dise mediante el lugar de las races un
controlador PID.

Root Locus Editor for Open Loop 1(OL1) Open-Loop Bode Editor for Open Loop 1(OL1)
100 150

100
80

50
60

Magnitude (dB)
0
40

-50

20

-100 G.M.: 22.9 dB


Imag Axis

Freq: 47.3 rad/s


0 Stable loop
-150
-90
-20

-135
-40
Phase (deg)

-180
-60

-225
-80

P.M.: 68.8 deg


Freq: 7.54 rad/s
-100 -270
-160 -140 -120 -100 -80 -60 -40 -20 0 20 -3 -2 -1 0 1 2 3 4
10 10 10 10 10 10 10 10
Real Axis Frequency (rad/s)

Ilustracin 6-12. Lugar de las races para la planta del motor

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

El controlador resultante es:

( + )
= . Ecuacion 5.16
( + . )

Alexander Montoya Osorio 69


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

30

25

20

15

10

0
0 50 100 150 200 250 300

Ilustracin 6-13. Respuesta obtena tras aplicar el controlador

Step Response
1.2

System: Closed Loop r to y


I/O: r to y
Settling time (seconds): 0.284
0.8

0.6
Amplitude

0.4

0.2

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

Time (seconds)
Ilustracin 6-14. Respuesta esperada tras aplicar el filtro

Alexander Montoya Osorio 70


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

7. DESCRIPCIN DEL HARDWARE EMPLEADO

En esta capitulo se presentan todos los componentes hardware que


componen este proyecto.

7.1. TARJETA DE DESARROLLO

Ilustracin 7-1. EK-TM4C123GXL

La eleccin de esta tarjeta como plataforma de desarrollo fue motivada por


dos razones: la primera es que ya se haba trabajado con ella en las clases de
sistemas embebidos y por otra parte, esta tarjeta implementa un microprocesador
con la suficiente potencia de clculo y los perifricos adecuados para el desarrollo
de un gimbal como lo son los mdulos de PWM que implementa y que sern de
gran utilidad para generar las seales 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 mdulos de evaluacin
desarrollados por la empresa Texas Instruments y en ellos implementan algunos
de sus principales microcontroladores. El EK-TM4C123GXL est basado en un
ncleo 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 perifricos para el control de motores, mdulos de
comunicacin serie, ADCs entre otros.

Hay numerosa documentacin y herramientas software que facilitan el


desarrollo de nuevas aplicaciones adems de ejemplos de uso para cada uno de los
perifricos que implementa, lo que convierte este tipo de tarjetas en una solucin
ptima y rpida para el desarrollo de sistemas embebidos.

Alexander Montoya Osorio 71


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria
En la siguiente lista se resumen las principales caractersticas del
microprocesador TM4C123GXL:

Ncleo ARM Cortex-M4 con unidad de como flotante


Velocidad mxima 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.

Ilustracin 7-2. Caractersticas modulo EK-TM4C123GXL

Alexander Montoya Osorio 72


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

7.2. IMU (MPU-6050)

El MPU-6050 integra 3 acelermetros, 3 giroscopios y 3 magnetmetros


para cada uno de los ejes de referencia e implementa dos protocolos de
comunicacin: I2C y SPI.

Ilustracin 7-3. Unidad Inercial de Medida

El MPU-9150 incorpora 6 conversares analgico-digital (ADCs) de 16 bits


para digitalizar las salidas de los giroscopios y acelermetros. La sensibilidad de
cada uno de los sensores se puede configurar. Los valores de sensibilidad para los
giroscopios estn entre los 250 y 2000 grados/s y desde los 2g hasta 16g para los
acelermetros.

Integra tambin una memoria FIFO on-chip de 1024 bytes que almacena las
medidas y ayuda al ahorro de energa ya que el dispositivo puede ser puesto en
modo de bajo consumo y seguir tomando muestras desde los sensores.

El protocolo de comunicacin usado en este proyecto fue el I2C debido a


que resulta un protocolo fcil de implementar en un micro y adems se pueden
transmitir datos con una velocidad mxima de 400 kbits/s.

Alexander Montoya Osorio 73


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

7.3. INVERSOR L6234

Ilustracin 7-4. Driver de control L6234

El L6234 implementa un circuito de potencia diseado para gobernar un


motor brushless. Bsicamente consta de un circuito inversor con diodos en
antiparalelo y un circuito lgico para el control de corriente en cada rama del
inversor.

Las tensiones de trabajo estn entre los 7 y 52 V y soporta picos de


corriente de 5 A. Las entradas lgicas son compatibles con los niveles de tensin
TTL.

En la figura 6-5 se muestra el diagrama del dispositivo.

Ilustracin 7-5. ircuito externo requerido por el L6234

Alexander Montoya Osorio 74


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

7.4. MOTOR GIMBAL

Ilustracin 7-6. Motor brushless EMAX GB2806

El motor usado es el EMAX GB2806, el bobinado de este motor est


diseado 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, segn su hoja de caractersticas. Adems del par l, motor es de
un tamao reducido y resulto ser muy apropiado y eficiente.

7.5. PCB

Para integrar todo el sistema gimbal se diseo un PCB en el cual se


implemento toda la electrnica de potencia y de control. La placa ha sido diseada
con el fin de que encaje directamente sobre la tarjeta de desarrollo para que
abarque el menor espacio posible.

El diseo del circuito ha sido realizado mediante KiCad por ser este un
software gratuito y bastante completo para el diseo de PCBs.

La placa se hizo mediante insoladora y revelado qumico, este hecho


condicion en gran medida el grosor mnimo de las pistas, siendo el mnimo de 0.8
mm. Si se disean 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
tamao de la placa viene condicionado tambin por la dimensin de los
componentes usados.

Alexander Montoya Osorio 75


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

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 vas.

Ilustracin 7-7. Layout capa superior del PCB

Ilustracin 7-8. Layout capa inferior del PCB

Alexander Montoya Osorio 76


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

8. CONCLUSIONES

Debido a la complejidad y naturaleza del proyecto, es de esperar que existan


numerosas vas de mejora en cada una de las partes que lo componen.

Por un lado el buen comportamiento el gimbal viene determinado


principalmente por el mtodo de excitacin elegido para conmutar las bobinas de
motor y a la precisin 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 bsqueda de informacin.

Los mtodos y procedimientos elegidos para el desarrollo de un sistema de


estimacin de actitud es un factor clave para el buen desempeo del gimbal puesto
que existen diferentes maneras de llevar a cabo la estimacin de la actitud y la
precisin alcanzada esta ntimamente ligada a la complejidad del algoritmo que
lleve a cabo esta labor.

Problemas encontrados durante el desarrollo del proyecto:

Tcnicas de conmutacin: existen varios mtodos para la


conmutacin de un BLCD, la eleccin de un mtodo en particular
viene determinada por la precisin que se quiera alcanzar, sin
embargo la implementacin de algoritmos mas preciso supondr el
aumento de la complejidad de esta tarea. Para este proyecto se
alcanzo una resolucin 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 mtodo mas sofisticado que el SPWM


llamado SVPWM (Space Vector PWM) cuya aplicacin supondra una
mejora de lo que ya se tiene y establece una va investigacin para el
futuro.

Eleccin 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 decisin de incorporar el
mismo driver que implementa la gran mayora de fabricantes del
controladoras para gimbal.

Alexander Montoya Osorio 77


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Vas de continuacin:

Las partes que pueden ser mejoradas se listan a continuacin:

Se puede construir un gimbal de 3 ejes usando los mismos


procedimientos para este proyecto. Para llevar a cabo esto seria
necesario aadir un driver para el nuevo eje.

El tamao 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
matemtico del motor. Una vez realizada esta tarea se podra utilizar
como punto de partida para el desarrollo de un algoritmos de control
mas robusto.

Alexander Montoya Osorio 78


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Memoria

Alexander Montoya Osorio 79


Universidad de la Rioja
Diseo 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 INGENIERA ELCTRICA
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

NDICE DE ANEXOS

1. LIBRERIAS E IMPLEMENTACION DEL SOFTWARE ....................................................3

1.1. LIBRERA TIMER .......................................................................................................... 3


1.2. LIBRERA I2C ............................................................................................................... 5
1.3. LIBRERA PWM E IMPLEMENTACION DEL SPWM ...................................................... 6
1.4. LIBRERA PLL ............................................................................................................. 7
1.5. PROGRAMA PRINCIPAL. .............................................................................................. 7

2. CODIGO ................................................................................................................. 11

2.1. FICHERO PWM.H .....................................................................................................11


2.2. CODIGO TIMERS .....................................................................................................18
2.3. CDIGO I2C ...............................................................................................................22
2.4. CODIGO PRINCIPAL....................................................................................................27
2.5. CODIGO PLL ..............................................................................................................36

Alexander Montoya Osorio 2


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

1. LIBRERIAS E IMPLEMENTACION DEL SOFTWARE

En este capitulo se describen las libreras que ha sido necesario generar para llevar
a cabo las diversas tareas asociadas al control de posicin de los motores. Entre
tales tareas se contempla por poner un ejemplo, el uso del protocolo de
comunicacin I2C para la transferencia de datos entre el microprocesador y la
unidad de sensores. Este requerimiento exige la elaboracin o uso de alguna
librera que implemente el protocolo y que proporcione las funciones apropiadas
para tal fin.

Las libreras estn directamente asociadas a la programacin y manipulacin de


los mdulos hardware que intervienen en el funcionamiento del Gimbal. A
continuacin se listan los mdulos hardware empleados del microcontrolador
TM4C123GXL:

Modulo PWM: usado para generar 6 seales de PWM


Modulo I2C: este modulo se encarga de gestionar el protocolo I2C durante
la comunicacin.
Mdulos TIMER: estos se emplean para la generacin de interrupciones
peridicas. En total se utilizan 3 interrupciones para este proyecto.
A parte de las libreras existen dentro del cdigo una serie de algoritmos y
funciones que llevan a cabo la modulacin de las seales de PWM, filtrado y
tratamiento de datos y por ltimo la estimacin de la orientacin.

En este apartado se detalla la estructura, composicin, funcin de cada uno de las


porciones de cdigo que implementa el Gimbal.

1.1. LIBRERA TIMER

La librera usada para generar interrupciones implica la programacin de 3


mdulos Timer del microprocesador TM4C123GHPZ. La metodologa empleada
durante la programacin 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 nmero de tareas, en este documento
solo se describe la programacin de los mdulos TIMER0, TIMER1 y TIMER2 para
que estos generen interrupciones peridicas. Las tareas peridicas que se deben

Alexander Montoya Osorio 3


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
ejecutar incluyen la toma de muestras de los sensores a una frecuencia
determinada y la modulacin de la seales PWM.

El fichero que incluye la implementacin de esta librera se llama: timers.cy


el cdigo puede ser consultado el los ANEXOS.

Funciones de la librera 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 funcin inicializa el timerX para que este genere interrupciones de


manera peridica y a una frecuencia establecida por el parmetro period

Parmetro Descripcin
uint32_t period Indica el periodo de tiempo que transcurre entre
cada interrupcin 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 funcin que se va a ejecutar
cada vez que se produzca la interrupcin.

void Timer0A_Handler(void)
void Timer1A_Handler(void)
void Timer2A_Handler(void)

void TimerXA_Handler(void)

Esta funcin corresponde con el manejador de interrupciones para cada


uno de los Timer, se ejecuta cada vez que se produce la interrupcin del y
dentro de ella se ejecuta la funcin apuntada por el puntero *task. Esta
funcin se ejecuta por primera vez al inicializar el Timer correspondiente
y no requiere ningn parmetro como argumento de la funcion.

Parmetro Descripcin
ninguno

Alexander Montoya Osorio 4


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

1.2. LIBRERA I2C

Esta librera incluye tres funciones, una funcin sirve para inicializar los
mdulos I2C del mircroprocesador TM4C123GP6Z y las otras dos se usan para
enviar y recibir datos mediante el protocolo I2C.

La librera I2C contiene las siguientes funciones:

void I2C0_Init()

void I2C0_Init(void)

esta funcin inicializa el modulo I2C0, lo configura y habilita la salida de


las seales por los pines PB2 y PB3.
Parmetro Descripcin
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 funcin enva un byte de datos por el bus I2C a la direccin indicada
en addr

Parmetro Descripcin
unsigned char addr addr contiene la direccin del dispositivo en el
que se quiere acceder

unsigned char direccin del registro interno del dispositivo


addrReg I2C

unsigned char data Byte de datos a transmitir

unsigned long readMD(unsigned char addr,unsigned char regAddr,


unsigned char numbytes, unsigned char *databuff)

Alexander Montoya Osorio 5


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

unsigned long readMD(unsigned char addr,unsigned char regAddr,


unsigned char numbytes, unsigned char *databuff)

Esta funcin lee la cantidad de bytes indicada en numbytes y los almacena


en una matriz

Parmetro Descripcin
unsigned char addr addr contiene la direccin del dispositivo en el
que se quiere acceder

unsigned char direccin del registro interno del dispositivo


addrReg I2C

unsigned char Byte de datos a transmitir


numbytes

unsigned char Puntero al array en donde se almacenan los


*databuff bytes ledos

1.3. LIBRERA PWM E IMPLEMENTACION DEL SPWM

La librera 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 seal trifsica manipulando los registros del
modulo de manera sncrona.

La funciones de la librera PWM son:

void PWM1_Init(uint16_t period)

void PWM1_Init(uint16_t period)

Esta funcin inicializa el modulo PWM1 para que este genere 6 salidas de
PWM a una frecuencia determinada a travs de los pines: PF0,
PF2,PF3,PD0,PD1 y PA6.
Parmetro Descripcin
uint16_t period Con el valor de indicado en period se calcula la
frecuncia de conmutacin de la seal PWM

Alexander Montoya Osorio 6


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
void SPWM_Modulation1(int8_t increment)
void SPWM_Modulation2(int8_t increment)

void SPWM_ModulationX(int8_t increment)

Esta funcin genera una seal trifsica en los pines PF0, PF2 y PF3, si X =
1
Esta funcin genera una seal trifsica en los pines PDO,PD1 y PA6, si X
=0
Parmetro Descripcin
int8_t increment Incremente puede tomar el valor de cero o uno
y determina la direccin de avance de las
seales moduladas para hacer mover el motor

1.4. LIBRERA PLL

Esta librera incluye una sola funcin. En ella se configura la frecuencia del
reloj del sistema y puede ser modificada si se modifica el valor del parmetro
SISDIV2 que aparece en el fichero: PLL.h

void PLL_Init(void)

void PLL_Init(void)

Esta funcin establece la frecuencia del reloj del sistema

Parmetro Descripcin
ninguno

1.5. PROGRAMA PRINCIPAL.

El fichero main.c incluye el cdigo 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.

Alexander Montoya Osorio 7


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
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 manipulacin de las seales PWM.

A continuacin de detallan las funciones que aparecen definidas en el


fichero main.c:

void EnableInterrupts(void):

void EnableInterrupts(void)

Esta funcin habilita la generacin global de las interrupciones


Parmetro Descripcin
ninguno

void WaitForInterrupt(void):

void WaitForInterrupt (void)

Cuando se ejecuta esta funcin el programa entra en un bucle infinito del


cual solo sale cuando se genera una interrupcin
Parmetro Descripcin
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 seales 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.

Parmetro Descripcin
freq, freq2 El valor asignado a freq/freq2 corresponde con
la velocidad de giro del motor en
revoluciones/segundo.

Alexander Montoya Osorio 8


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

void Calibrate_Gyros()

void Calibrate_Gyros()

Esta funcin 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 aplicacin.

Parmetro Descripcin
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 funcin implementa el filtro Madwick y se ejecuta peridicamente


despus de cada tomada de datos. Los parmetros que se le pasan
corresponden con las aceleraciones y velocidades medidas por los
sensores. Dentro de esta funcin se lleva a cabo el tratamiento de datos y
el calculo del cuaternio de orientacin.

Parametro Descripcin
w_x, w_y, w_z Velocidad angular de cada uno de los
giroscopios
a_x, a_y, a_z Aceleracin de cada uno de los acelermetros

void OutputSineWave(void)
void OutputSineWave2(void)

void OutputSineWave(void)
void OutputSineWave2(void)

Estas dos funciones se ejecutan cada que se produce una interrupcin que bien
puede ser del TIMER0 O TIMER1. Al mismo tiempo dentro de ellas se ejecutan los
funciones que modulan las seales PWM con las que se hacen girar los motores
Parmetro Descripcin
ninguno

Alexander Montoya Osorio 9


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

void PeriodTask(void)

void PeriodTask(void)

Esta funcin se ejecuta de manera peridica a la frecuencia del sistema, dentro de


ella se lleva a cabo la toma de datos y el clculo de la accin de control.

Parmetro Descripcin
ninguno

int main(void)

int main(void)

Esta es la funcin 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 mdulos
TIMER y tambin 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 funcin y del que solo puede salir cuando se produzca una interrupcin.

Parmetro Descripcin
ninguno

Alexander Montoya Osorio 10


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

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 librera se definen las 3 funciones que **
** son necesarias para la generacin de 6 seales **
** 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 seales PWM **
** **
*********************************************************
*********************************************************
*/

//
// Ficheros a incluir
//

#include <stdint.h>
#include "PWM.h"
#include <math.h>

Alexander Montoya Osorio 11


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

//
// Definicin 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))

Alexander Montoya Osorio 12


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
#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 funcin inicializa el modulo PWM1 para
// que este genere 6 salidas de PWM a una
// frecuencia determinada a travs de los pines: PF0,
// PF2,PF3,PD0,PD1 y PA6.
// Entradas: - period -> este valor determina
// la frecuencia de conmutacin de las
// seales PWM
// Salidas : NULL
//***************** PWM1_Init ************************

void PWM1_Init(uint16_t period){

// Calculo de los 50 valores de la seal 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 seal de reloj a los modulos PWM1


SYSCTL_RCGCPWM_R |= 0x00000002;

Alexander Montoya Osorio 13


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
// Espera mientras se termina la anterior instruccin
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 instruccin


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 funcin digital en los pines
PF0/PF2/PF3
GPIO_PORTF_AMSEL_R &= ~0x0D; // Deshabilita funcin analgica 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 funcin digital en los pines PA6
GPIO_PORTA_AMSEL_R &= ~0x40; // Deshabilita funcin analgica 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 funcin digital en los pines
PD0/PD1
GPIO_PORTD_AMSEL_R &= ~0x03; // Deshabilita funcin analgica en los
pines PD0/PD1

GPIO_PORTF_PCTL_R = (GPIO_PORTF_PCTL_R&0xFFFF00F0)+0x00005505; //
Configura PF0/2/3 para soportar seales de PWM
GPIO_PORTD_PCTL_R = (GPIO_PORTD_PCTL_R&0xFFFFFF00)+0x00000055; //
Configura PD0/1 para soportar seales de PWM
GPIO_PORTA_PCTL_R = (GPIO_PORTA_PCTL_R&0xF0FFFFFF)+0x05000000; //
Configura PA6 para soportar seales de PWM

Alexander Montoya Osorio 14


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
// Configuracin 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 conmutacin


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 seales


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 funcin genera una seal trifsica de
// de ancho de pulso variable.
// Entradas: - increment -> indica la direccin de
// avance de la sinusoide.
// Salidas : NULL
//*************** SPWM_Modulation1 *****************

uint8_t ft=1;

Alexander Montoya Osorio 15


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

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 seal


PWM1_3_CMPA_R = Wave2[index_2]; // cambio de ancho de pulso en la seal
PWM1_3_CMPB_R = Wave2[index_3]; // cambio de ancho de pulso en la seal

PWM1_CTL_R |= 0x0C;
}

//************* PWM_Modulation2 **********************


// Esta funcin genera una seal trifsica de
// de ancho de pulso variable.
// Entradas: - increment -> indica la direccin 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;

Alexander Montoya Osorio 16


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

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 seal


PWM1_0_CMPA_R = Wave2[index_2]; //cambio de ancho de pulso en la seal
PWM1_1_CMPA_R = Wave2[index_3]; //cambio de ancho de pulso en la seal

PWM1_CTL_R |= 0x03;
}

Alexander Montoya Osorio 17


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

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 librera se definen las definen las **
** funciones usadas para generar interrupciones **
** peridicas a una frecuencia particular haciendo **
** uso de los mdulos Timer del microporcesador **
** TM4C123G6PZ **
*********************************************************
*********************************************************
*/

#include <stdint.h>
#include "tm4c123gh6pm.h"

void (*PeriodicTask)(void); // user function

Alexander Montoya Osorio 18


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
void (*PeriodicTask2)(void); // user function
void (*PeriodicTask3)(void); // user function

// ***************** Timer2A_Init ****************


// Activa las interrupciones del TIMER2 para
// ejecutar tareas peridicas
// 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
configuracin
TIMER2_CFG_R = 0x00000000; // 2) configura Timer2A a modo 32-bit
TIMER2_TAMR_R = 0x00000002; // 3) configuracin en modo peridico 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) generacin de interrupcin modo timeout
NVIC_PRI5_R = (NVIC_PRI5_R&0x00FFFFFF)|0x30000000; // 8) prioridad 3
NVIC_EN0_R = 1<<23; // 9) habilita la rutina de interrupcin en el vector de
interrupciones
TIMER2_CTL_R = 0x00000001; // 10) habilita el TIMER2A

// ***************** Timer2A_Handler ****************


// Funcin que se ejecuta cada que se produce
// una interrupcin por parte del Timer2
// ejecutar tareas peridicas
// Entrada: NULL
// Salidas: NULL
// ***************** Timer2A_Handler ****************
void Timer2A_Handler(void){
TIMER2_ICR_R = TIMER_ICR_TATOCINT;// borra bandera
(*PeriodicTask)(); // ejecuta la funcin de usuario
}

// ***************** Timer1A_Init ****************


// Activa las interrupciones del TIMER1 para
// ejecutar tareas peridicas
// Entrada: - task -> puntero a una funcin definida por el usuario
// - period en unidades (1/clockfreq), 32 bits
// Salidas: NULL

Alexander Montoya Osorio 19


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
// ***************** Timer1A_Init ****************
void Timer1A_Init(void(*task)(void), uint32_t period){
uint32_t P = period;
SYSCTL_RCGCTIMER_R |= 0x02; // 0) activa TIMER1A
PeriodicTask2 = task; // funcin de usuario
TIMER1_CTL_R = 0x00000000; // 1) Deshabilita Timer1A durante la
configuracin
TIMER1_CFG_R = 0x00000000; // 2) configura Timer2A a modo 32-bit
TIMER1_TAMR_R = 0x00000002; // 3) configuracin en modo peridico 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) generacin de interrupcin modo timeout
NVIC_PRI5_R = (NVIC_PRI5_R&0xFFFF00FF)|0x00008000; // 8) priority 8
NVIC_EN0_R = 1<<21; // 9) habilita la rutina de interrupcin en el vector de
interrupciones
TIMER1_CTL_R = 0x00000001; // 10) habilita el TIMER1A

// ***************** Timer1A_Handler ****************


// Funcin que se ejecuta cada que se produce
// una interrupcin por parte del Timer2
// ejecutar tareas peridicas
// 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 peridicas
// Entrada: - task -> puntero a una funcin 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; // funcin de usuario

Alexander Montoya Osorio 20


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
TIMER0_CTL_R = 0x00000000; // 1) Deshabilita Timer0A durante la
configuracin
TIMER0_CFG_R = 0x00000000; // 2) configura Timer0A a modo 32-bit
TIMER0_TAMR_R = 0x00000002; // 3) configuracin en modo peridico 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) generacin de interrupcin modo timeout
NVIC_PRI4_R = (NVIC_PRI4_R&0x00FFFFFF)|0x80000000; // 8) priority 4
NVIC_EN0_R = 1<<19; // 9) habilita la rutina de interrupcin en el vector de
interrupciones
TIMER0_CTL_R = 0x00000001; // 10) habilita el TIMER0A
}

// ***************** Timer0A_Handler ****************


// Funcin que se ejecuta cada que se produce
// Una interrupcin por parte del Timer0
// ejecutar tareas peridicas
// Entrada: NULL
// Salidas: NULL
// ***************** Timer0A_Handler ****************
void Timer0A_Handler(void){
TIMER0_ICR_R = TIMER_ICR_TATOCINT; // borra bandera
(*PeriodicTask3)(); // ejecuta funcin de usuario 3
}

Alexander Montoya Osorio 21


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

2.3. CDIGO 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 librera 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"

Alexander Montoya Osorio 22


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

//
// Definicin de procedimientos
//
#define SLA_W(address) (address << 1)
#define SLA_R(address) ((address << 1) + 0x01)

//
// Definicin 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 funcin inicializa el modulo cero de I2C
// y lo configura para su uso con una velocidad de
// 100 Kbit/s. Tambin configura los pines PB2,3
// de tal manera que PB2 contiene la seal de reloj
// (SCL) y PB3 la seal 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 seales I2C

Alexander Montoya Osorio 23


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
GPIO_PORTB_PCTL_R = (GPIO_PORTB_PCTL_R&0xFFFF00FF)+0x00003300;
GPIO_PORTB_AMSEL_R &= ~0x0C; // 7) Deshabilita funcionalidad analgica
para PB2,3
I2C0_MTPR_R = 2; // 8) Establece un velocidad de comunicacin de
100 Kbit/s
I2C0_MCR_R = I2C_MCR_MFE; // 9) Habilita el modulo I2C para su uso
}

//******************** writeMD *************************


// Esta funcin enva por el bus I2C un byte de
// datos al dispositivo apuntado por la direccin
// indicada en addr.
// Entradas: - addr -> direccin dispositivo I2C
// - regAddr -> direccin 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
{
// Aade 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 condicin 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 ningn 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;

Alexander Montoya Osorio 24


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
// Se genera una condicin de START y se enva 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 funcin devuelve en un array los bytes de
// datos recibidos por el bus I2C del dispositivo
// cuya direccin esta contenida en addr.
// Entradas: - addr -> direccin dispositivo I2C
// - regAddr -> direccin 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)
{

// Aade 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 condicin de START en el bus y enva el dato


I2C0_MCS_R = I2C_MCS_START|I2C_MCS_RUN;

// Espera mientras el bus esta ocupado


while (I2C0_MCS_R & I2C_MCS_BUSY){};

// Aade bit de lectura


I2C0_MSA_R = SLA_R(addr);

// Genera una condicin 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;

Alexander Montoya Osorio 25


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

// Si hubieron errores durante la recepcin se genera una condicin de STOP y se


abandona la funcin
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 seal ACK

// Espera mientras la transmisin 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 ledo


I2C0_MCS_R = I2C_MCS_STOP | I2C_MCS_RUN;

// Espera mientras la transmisin se lleva a cabo


while(I2C0_MCS_R&I2C_MCS_BUSY){};

return 0;
}

Alexander Montoya Osorio 26


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

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 inclusin
** 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)

Alexander Montoya Osorio 27


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
#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

//
// Accin de control para cada uno de los motores
//
void func(double freq);
void func2(double freq2);

//
// Calibracin de los giros
//
void Calibrate_Gyros(void);

//
// Variables globales del sistema
//
float a_x1, a_y1, a_z1; // medidas de los acelermetros en m/s^2
int16_t ia_x, ia_y, ia_z; // medidas del acelermetro

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;

Alexander Montoya Osorio 28


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
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_ZOU
T_OFFSET_1000SUM;
float GYRO_XOUT_OFFSET,GYRO_YOUT_OFFSET,GYRO_ZOUT_OFFSET;

//***************** filterUpdate ************************


// Esta funcin implementa el filtro Madwick. En ella
// se acondicionan las medidas y se calcula el cuaternio
// de orientacin.
// Entradas: - w_x, w_y, w_z -> velocidad angular en cada eje
// - a_x, a_y, a_z -> aceleracin 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;

Alexander Montoya Osorio 29


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
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;
}

Alexander Montoya Osorio 30


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

//
// 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 funcin inicializa se ejecuta peridicamente
// 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);

Alexander Montoya Osorio 31


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
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;

//
// Aplicacin filtro Madwick
//
filterUpdate(w_x1/SCALE_GYRO,w_y1/SCALE_GYRO,w_z1/SCALE_GYRO,a_x
1/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;

Alexander Montoya Osorio 32


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
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 funcin inicializa inicializa todos
// los mdulos del micro que se van a usar, configura
// los sensores y entra un bucle infinito del que solo
// saldr si se produce una interrupcin
// Entradas: NULL
// Salidas : NULL
//******************* main ************************
int main(void){

//
// Configura reloj del sistema
//
PLL_Init():

Alexander Montoya Osorio 33


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
//
// Inicializacin del modulo I2C0
//
I2C0_Init();

//
// Configuracin 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

//
// Calibracin de sensores
//
Calibrate_Gyros();

//
// Inicializacin modulo PWM1
//
PWM1_Init(1300);

//
// Inicializacin de los Timer
//
Timer0A_Init(&OutputSineWave2, 190476);
Timer1A_Init(&OutputSineWave, 190476);
Timer2A_Init(&PeriodTask, FS);
EnableInterrupts();

while(1){
WaitForInterrupt();
}
return 0;
}

//******************* func ************************


// Esta funcin reprograma el TIMER1 para
// generar interrupciones peridicas a distintas
// frecuencias. Las interrupciones se usan para ir
// desplazar las ondas sinusoidales a la frecuencia
// pasada como parmetro

Alexander Montoya Osorio 34


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
// 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 funcin reprograma el TIMER2 para
// generar interrupciones peridicas a distintas
// frecuencias. Las interrupciones se usan para ir
// desplazar las ondas sinusoidales a la frecuencia
// pasada como parmetro
// 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;

Alexander Montoya Osorio 35


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
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 funcin calcula el valor de drif
// de los acelermetros al inicializar el Gimbal
// para ajustar su calibracin
// 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:

Alexander Montoya Osorio 36


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

// 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

Alexander Montoya Osorio 37


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
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

Alexander Montoya Osorio 38


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
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
*/

Alexander Montoya Osorio 39


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS

Fichero PLL.c :

// Fichero: PLL.c
// Alexander Montoya Osorio
// 01/06/2016

/*
*********************************************************
*********************************************************
** En esta librera se define una funcin 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

Alexander Montoya Osorio 40


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
ANEXOS
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;

Alexander Montoya Osorio 41


Universidad de la Rioja
Diseo 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 INGENIERA ELCTRICA
Diseo y desarrollo de un gimbal con motores brushless
Planos

NDICE DE PLANOS

1. PLANO NUMERO UNO. ESQUEMA ELCTRICO ..........................................................3

2. PLANO NUMERO DOS. CAPA INFERIOR PCB ...........................................................4

3. PLANO NUMERO TRES. CAPA.SUPERIOR PCB ........................................................5

4. PLANO NUMERO CUATRO. UBICACIN DE LOS COMPONENETES .............................6

Alexander Montoya Osorio 2


Universidad de la Rioja
1 2 3 4 5 6

CONN_01X03 CONN_01X03

P2

P3
1
2
3

1
2
3
L6234_1 L6234_2
1 20 1 20
OUT1 OUT2 OUT1 OUT2
A 2 19 2 19 A
PWM4 IN1 IN2 PWM6 PWM1 IN1 IN2 PWM2
3 18 3 18
ENABLE EN1 EN2 ENABLE ENABLE EN1 EN2 ENABLE
4 17 4 17
Vs SENSE1 Vs SENSE1
5 16 5 16
GND GND GND GND
6 15 6 15
GND GND GND GND
GND 7 14 GND GND 7 14 GND
Vs SENSE2 Vs SENSE2

C7

C4
GND

GND
C

C
8 13 8 13
ENABLE EN3 VBOOT ENABLE EN3 VBOOT
9 12 9 12
PWM5 IN3 VCP PWM3 IN3 VCP
10 11 10 11
OUT3 VREF OUT3 VREF
C10 C12
C9
C6

D3

D1
VCC

D
CP CP
D C D
C

D4 GND D2
GND

C3 C8
B B
CP C

GND

Etapa de potencia para el control de motores


CONN_01X03 CONN_01X04
P5

P1

+VBUS
1
2
3

4
3
2
1

VCC VCC
+VBUS
7805

CONN_01X02
ENABLE
P4
1 1
VI VO
3
GND GND 2

GND
J3-J1 J2-J4
2 1 2 1 C1 C2
ENABLE PWM1 GND U1

2
4 3 4 3 PWM3
C 6 5 6 5 C C C
PWM4 GND
CONN_02X10

CONN_02X10

PWM5
8 7 PWM2
8 7 PWR_FLAG PWR_FLAG
10 9 10 9
12 11 12 11
14 13 14 13 GND
16 15 16 15
18 17 18 17 GND VCC
PWM6
20 19 20 19

Conectores tarjeta e IMU Etapa de alimentacion

UNIVERSIDAD DE LA RIOJA
Sheet: /
D File: PCB.sch D

Title: Esquema electrico del PCB


Size: A4 Date: 2016-06-26 Rev:
KiCad E.D.A. kicad 4.0.2-stable Id: 1/1
1 2 3 4 5 6
1 2 3 4

A A

B B

C C

D D

E E

UNIVERSIDAD DE LA RIOJA
Sheet:
File: noname3.kicad_pcb
Title: Capa inferior del PCB
Size: A4 Date: 2016-07-06 Rev: 1.0
KiCad E.D.A. pcbnew 4.0.2-stable Id: 1/1
F F
1 2 3 4
1 2 3 4

A A

B B

C C

D D

E E

UNIVERSIDAD DE LA RIOJA
Sheet:
File: noname3.kicad_pcb
Title: Capa superior del PCB
Size: A4 Date: 2016-07-06 Rev: 1.0
KiCad E.D.A. pcbnew 4.0.2-stable Id: 1/1
F F
1 2 3 4
Diseo 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 INGENIERA ELCTRICA
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

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. DEFINICIN 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. ESPECIFICACIN TCNICA 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. CONEXIN DE LOS COMPONENTES CON LA TARJETA ............................................. 18

5. CALIBRACIN Y MODIFICACIN DE PARMETROS SOFTWARE ............................ 19

6. CONDICIONES / ESPECIFICACIONES DE OPERACIN ............................................ 23

7. CONDICIONES ECONMICAS ................................................................................. 24

7.1. ERRORES EN EL PROYECTO ............................................................................24


7.2. LIQUIDACIN ........................................................................................................24
7.3. DISPOSICIN .........................................................................................................25

Alexander Montoya Osorio 2


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

1. DISPOSICIONES GENERALES

1.1. OBJETO

El objeto del presente proyecto titulado Diseo y desarrollo de un


gimbal con motores brushlesses la Culminacin con xito los estudios de
Grado en Ingeniera Electrnica Industrial y Automtica,y est enmarcado bajo la
designacin "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 tcnicas de montaje,


especificaciones a cumplir por los elementos y materiales comerciales que se
deben considerar a la hora de llevar a cabo la realizacin 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 averas
propias del funcionamiento, repercutiendo todo el peso del problema sobre
terceras personas.

Todas las modificaciones de las que pueda ser susceptible el proyecto,


debern ser aprobadas por el ingeniero o proyectista.

1.2. PROPIEDAD INTELECTUAL

Segn el artculo 12 del reglamento de PFC de la ESCUELA TCNICA


SUPERIOR de Ingeniera 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".

Alexander Montoya Osorio 3


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

1.3. CONDICIONES GENERALES

Este proyecto se ajusta en su desarrollo a los reglamentos y disposiciones


electrnicas vigentes. Atendiendo a esto una vez se haya aprobado por el
Ministerio de Industria, tendr carcter de obligado cumplimiento.

Una vez realizado el proyecto, se podrn realizar diversas modificaciones


siempre bajo la supervisin del ingeniero o proyectista.

En caso de efectuarse alguna modificacin, 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 trminos legales obligatorios, plazos de entrega y la
conformidad con la sancin cuyo incumplimiento pueda acarrear.

1.4. NORMAS LEYES Y REGLAMENTOS

La realizacin 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 Electrotcnico de Baja Tensin, en el que se
tendrn en cuenta las siguientes normas:

UNE 20-514-82: Reglas de seguridad para los aparatos electrnicos

UNE 157001:2002: sobre criterios generales para la elaboracin de


proyectos, que establece las consideraciones generales que permitan
precisar las caractersticas que deben satisfacer los proyectos de productos
obras y edificios, instalaciones, servicios o software, para que sean
conformes al fin que estn destinados.

ISO/IEC 25000: conocida como SQuaRE (System and Software


QualityRequirements and Evaluation), es una familia de normas que tiene
por objetivo la creacin de un marco de trabajo comn para evaluar la
calidad del producto software.

ISO/IEC 25001 Planning and Management: establece los requisitos y


orientaciones para gestionar la evaluacin y especificacin de los
requisitos del producto software.

Alexander Montoya Osorio 4


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones
Este proyecto debido a sus caractersticas se encuentra recogido, dentro del
reglamento electrnico de baja tensin:

Se calificar como instalacin elctrica de baja tensin, todo conjunto de


aparatos y circuitos asociados en previsin de un fin particular, produccin,
conversin, transformacin, distribucin o utilizacin de la energa elctrica cuyas
tensiones nominales sean iguales o inferiores a 1000 V para corriente alterna y 1500
V para corrientes continuas.

Alexander Montoya Osorio 5


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

2. DEFINICIN Y ALCANCE

2.1. OBJETO DEL PLIEGO DE CONDICIONES

El presente pliego regir en unin de las disposiciones que con carcter


general y particular se indican, y tiene por objeto la ordenacin de las condiciones
tcnico-facultativas que han de regir en la ejecucin del presente Proyecto.

Se considerarn sujetas a las condiciones de este Pliego, todos los trabajos


cuyas caractersticas y presupuestos, se adjuntan en las partes correspondientes
del presente Proyecto. Se incluyen por tanto en este concepto los trabajos de
programacin para el estabilizador, as como la configuracin de datos y
algoritmos.

Si en el transcurso de los trabajos se hiciera necesario ejecutar cualquier


clase de modificacin o instalaciones que no se encuentren descritas en este Pliego
de Condiciones, el Adjudicatario estar obligado a realizarlas con estricta sujecin
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 estarn expuestos para su aprobacin de forma
que, a su juicio, los dispositivos que resulten defectuosas total o parcialmente,
debern ser retirados o sustituidos, sin que ello d derecho a ningn tipo de
reclamacin 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 geomtrica y cuantitativa.

Los documentos que definen el proyecto y que la propiedad entregue al


Contratista, pueden tener carcter 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.

Alexander Montoya Osorio 6


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones
Los datos incluidos en la memoria y Anexos, as como la justificacin de
precios tienen carcter meramente Informativo.

Cualquier cambio en el planteamiento del sistema que implique un cambio


sustancial respecto de lo proyectado deber ponerse en conocimiento de la
Direccin Tcnica para que lo apruebe, si procede, y redacte el oportuno proyecto
reformado.

2.3. COMPATIBILIDAD ENTRE DOCUMENTOS

En caso de incompatibilidad o contradiccin entre los Planos y el Pliego,


prevalecer lo escrito en este ltimo documento. Lo mencionado en el Pliego de
Prescripciones Tcnicas 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.

Alexander Montoya Osorio 7


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

3. ESPECIFICACIN TCNICA DE LOS COMPONENTES

3.1. PCB

Toda la electrnica 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 tensin de la batera.

La fabricacin del circuito se lleva a cabo mediante el empleo de una


insoladora, y revelado qumico en el laboratorio de la Universidad de La Rioja.

Las dimensiones del PCB vienen determinadas por el tamao de los


componentes discretos usados para su construccin, por la tarjeta y en particular
por el tamao de los condensadores, dado que se emplearon los disponibles en el
laboratorio de la universidad. Hay que aadir que todos los componentes
empleados son de tipo trueholl, por lo que si quiere reducir el tamao de la placa,
estos pueden ser sustituidos por componentes smd, lo que significara una
reduccin significativa.

En la figura 1-1 se puede apreciar el tamao del PCB y la ubicacin de los


componentes

Ilustracin 3-1. Disposicin de los componentes en la PCB

Alexander Montoya Osorio 8


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones
Por otra parte y debido a que la fabricacin del PCB se hace de forma
manual, el grosor de las pistas, vas y dimetro de los orificios debe ser tal que
facilite la tarea de soldar todos los componentes. En la siguiente lista aparecen los
grosores de lnea y de las vas del PCB:

Seales de control y tensin de alimentacin 5V : 0.8 mm de


grosor
Bus de tensin 9V : 1.2 mm de grosor
Vas : 1.mm de dimetro y 0.8mm de orificio

La lista de componentes empleados se muestra en la Tabla 1.

Tabla 1

Componente Valor Distancia Descripcion


entre
pines
P2,P5 -- 0.1 Conectores tipo macho de tres pines en
ngulo para los motores
P4 -- 0.3 Conector batera
P1 -- 0.1 Conector de alimentacin y datos para
la IMU
P3 -- 0.1 Conector de alimentacin para la
tarjeta de desarrollo
D1,D2,D3,D4 -- 0.3 Diodos 1N4148.
C9,C6 10 nF 0.2 Condensador cermico
C10,C12 1 F 0.2 Condensador electroltico
C4, C7 0.22 F 0.6 Condensador cermico
C8 0.1 F 0.4 Condensador cermico
C3 100 F 0.2 Condensador electroltico
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 tensin de salida a 5V

Tabla 1. Listado de componentes de la PCB

Alexander Montoya Osorio 9


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

3.2. TARJETA

Tarjeta de desarrollo: la tensin de alimentacin para la tarjeta debe estar


en el rango de 4.75 voltios a 5.25 voltios. Valores de tensin fuera de este rango
estn desaconsejados por el propio fabricante. En este proyecto la alimentacin de
la tarjeta se hace mdiate un cable USB conectado al PC, sin embargo cualquier tipo
de cargador USB que entregue 5 voltios puede ser usado como fuente de
alimentacin alternativa.

Ilustracin 3-2. Componentes del mdulo EK-TM4C123GXL

El mdulo de evaluacin EK-TM4C123GLX incluye las siguientes


caractersticas:

Microcontrador TM4C123GH6PMZ
Motion control PWM
Conectores USB micro-A y micro-B para su programacin y
depurado
Un led RGB de uso general
Dos botones de uso general
On-board ICDI
Switch de seleccin de alimentacin
Boton de Reset
Dos conectores de 20 pines

Alexander Montoya Osorio 10


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones
Especificaciones tcnicas del mdulo:

Parmetro Valor
Tensin de alimentacin 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:

Ilustracin 3-3. Dimensiones del modulo EK-TM4C123GXL

Alexander Montoya Osorio 11


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

3.3. REGULADOR

LM7805 (regulador de tensin): la tensin de entrada debe estar entre 7 y


25 V. Para este proyecto se alimenta el circuito desde la batera a una tensin de
11.1 V.

Ilustracin 3-4. Regulador de tensin L7805

Ilustracin 3-5.Circuito tpico de aplicacin

Valores mximos de operacin:

Smbolo Parmetro Valor Unidad


Vi Entrada de tensin para 35 V
Vo= 5 a 18 V
Io Salida de corriente Limitado
internamente
Pd Disipacion de potencia Limitado
internamente
Top Temperatura de operacin -55 a 150 C

Alexander Montoya Osorio 12


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones
Dimensiones del componente:

Parametro Dimensin
en mm
A 4.40
E 10
e 2.4
L30 28.9
L 13

Ilustracin 3-6. Dimensiones L7805

Alexander Montoya Osorio 13


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

3.1. L6432

El L6234 es un triple puente de transistores, y es usado para excitar las


bobinas del motor.

Ilustracin 3-7. L6432

Descripcion de los pines

Nmero del pin Nombre Funcin


1, 20, 10 OUT1, OUT2, OUT3 Salidas de los tres canales
2, 19, 9 IN1, IN2, IN2 Entrada lgica de los canales 1, 2 y 3.
Un nivel alto en algna 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 alimentacin
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 comn de masa

Alexander Montoya Osorio 14


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones
Condiciones recomendadas de operacin:

Simbolo Parmetro Valor Unidad


Vs Tensin de alimentacion 7 a 42 V
Vod Voltaje diferencial pico (entre alguna 52 V
de las 3 salidas de tension)
Iout Corriente DC de salida 2.5 A
Vsense Voltaje de medida -1 a 1 V
Tj Rango de temperatura para la unin -40 a 125 C

Dimesiones del componente:

Ilustracin 3-8. dimensiones L6432

Parmetro Dimension
en mm
D 24.8
E 8.8
e 2.54
F 7.1
L 3.3

Alexander Montoya Osorio 15


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

3.2. IMU

La unidad inercial de medida est basada en el MPU 6050, esta a su vez


contempla numerosas funcionalidades y caractersticas de operacin y
programacin. Debido a la multitud de caractersticas que se podran enumerar, en
este apartado se presentan las caractersticas principales del mdulo y de sus
sensores.

Ilustracin 3-9. IMU

Principales caractersticas 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 ADCs de 16 bits para el almacenamiento de las
medidas.
Filtro paso-bajo digital programable.

Principales caractersticas de los acelermetros:

Salida digital para las medidas de aceleracin en los ejes X,Y y


Z con rangos de escala programables entre 2g, 4g, 8g y
16g.
Implementa ADCs de 16 bits para el almacenamiento de las
medidas.
Interrupciones programadas por el usuario

Caractersticas adicionales:

Bus I2C auxiliar para leer data desde sensores externos.


1024 byte de memoria FIFO para la reduccin del consumo.
Filtros programables por el usuario para acelermetros y
giroscopios.

Alexander Montoya Osorio 16


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones
Caractersticas elctricas y otras especificaciones:

Parmetros Rango
VDD. Alimentacin 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

Ilustracin 3-10. Motor

Dimensin y principales caractersticas:

Parmetro Valor
KV 100
Peso 55 g
Dist. Entre tornillos 16*19 mm
Mtrica M3
Estructura 12N14P
Alimentacin 3S Li-Poly
Dimensiones estator 28*6 mm

Alexander Montoya Osorio 17


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

4. CONEXIN DE LOS COMPONENTES CON LA TARJETA

El gimbal al ser un dispositivo que incorpora elementos mecnicos y


electrnicos, 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, generara un


patrn 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 rpido para mitigar
la perturbacin.

Otra posible fuente de falla lo puede generar el mal/deficiente estado de las


conexiones en las lneas de I2C usadas para la comunicacin con los sensores
puesto que una mala/errnea comunicacin entre el microprocesador y la IMU
har que el Gimbal se inestabilice para jams volver a controlarse sino se reinicia
todo el sistema.

En la grfica 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 grfica. De los 9 pines
restantes se usaron 6 para las seales de pwm, 2 pines para las lneas de
comunicacin y otra para alimentar la IMU y al mismo tiempo habilitar el
funcionamiento de los drivers de potencia. En la grfica se muestra la disposicin
de los pines usados para la interaccin con los dems componentes.

Ilustracin 4-1. Conexin entre la tarjeta y los elementos

Si se desea cambiar la distribucin de los pines por algn motivo en


particular, se debe modificar el cdigo del gimbal.

Alexander Montoya Osorio 18


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

5. CALIBRACIN Y MODIFICACIN DE PARMETROS


SOFTWARE

El gimbal al estar basado en sistema de control de una variable real, es de


esperar que cualesquier tipo de perturbacin altere el buen desempeo del
sistema. Para reducir/eliminar cierto tipo de perturbacin controlada como
puede ser el ruido introducido por los sensores es necesario la implementacin de
filtros. El filtro que se usa para este proyecto lleva el nombre de Filtro Madwick y
permite su configuracin mediante 2 parmetros (En el apartado 5.3.6 se explica
este su funcionamiento). Adems de los parmetros 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 parmetros que pueden ser


modificados y se explica cmo su variacin afecta al comportamiento global.

PID

La ecuacin en tiempo discreto que se usa para implementar el controlador


est compuesta por cinco sumas y cinco multiplicaciones. Los coeficientes
de la ecuacin definen el comportamiento de un sistema basado en leyes
fsicas por lo tanto alteracin de algn 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 limitacin en la
velocidad mxima usada durante la comunicacin mediante el protocolo
I2C. El parmetro aparece dentro del cdigo del fichero main.c(disponible
en los anexos) y su nombre dentro del programa es: Fs. Dentro del cdigo
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 ecuacin que implementa el controlador


est basada en una aproximacin matemtica en la que la frecuencia de
muestreo es uno de sus parmetros, por lo tanto cuando se modifica la

Alexander Montoya Osorio 19


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones
frecuencia del sistema las ecuaciones dejan de representar la ecuacin
original puede que el sistema no funcione como se espera.

Sensibilidad acc/gyro . Escala


La sensibilidad de los acelermetros y girscopos de la IMU pueden variar
entre los 2g y 16g para los acelermetros y 250 /s y 2000 /s para los
girscopos. Para este proyecto se consider que una sensibilidad de 2g
para los acelermetros 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 estn manejando.
Las tabla XXX y XXX muestran los valores de escala posibles y que deben ser
cambiados dentro del cdigo en las variables SCALE_GYRO y
SCALE_ACCpara que las modificaciones de la sensibilidad tengan efecto a
efectos de clculo. Las variables aparecen definidos dentro del cdigo
main.c que se encuentra disponible en el apartado de ANEXOS.

Ilustracin 5-1. Sesibilidad d los acelermetros

Ilustracin 5-2.Sesibilidad d los giroscopios

Parmetro

Debido a que el filtro usado en este proyecto para la estimacin de la


orientacin basa su funcionamiento en la fusin sensorial acelermetros y
girscopos, existe un parmetro que afecta al comportamiento del filtro
Madwick implementado para el tratamiento de datos y la estimacin de la
orientacin. En funcin de su valor el filtro pondera de manera diferente los
clculos obtenidos en base a los giroscopios o acelermetros. El parmetro
se llama beta y est dentro del fichero main.c. Los valores para este
parmetro deben estar en el rango de 0 a 1 segn se precise. Cuando se

Alexander Montoya Osorio 20


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones
modifica este valor el filtro cambia su comportamiento en rgimen
permante por lo que afecta de forma directa a la estimacin de la
orientacin de tal manera que para valores cercanos a cero, se calcula la
orientacin teniendo en cuenta solo los girscopos y para valores
superiores, se hace una ponderacin entre los clculos obtenidos por ambos
sensores.

Modulacin de onda implementada. SPWM

Para este proyecto se usa un mtodo de conmutacin conocido como


Sinusoidal PWM o SPWM para el control de los motores que consiste en la
modulacin de una onda sinusoidal a partir de una onda cuadrada. Para
alcanzar este propsito 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
discretizacin de una seal sinusoidal.

Ilustracin 5-3, Discretizacion de una sinusoide

Cuando el Gimbal se inicia, se lleva a cabo el clculo de los 540 valores de


una onda senoidal, la forma de onda puede cambiarse si se modifica la
ecuacin dentro del cdigo. La ecuacin aparece definida dentro del fichero
PWM.c y se calcula dentro de la funcin: 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 funcin.

Inicializacin de los mdulos de generacin de PWM

La frecuencia de conmutacin de las seales de PWM suele estar entre los


valores de 10 a15 kHz, sin embargo para esta aplicacin se seleccionaron
valores por encima de los 30 Khz como se verms adelante en este
apartado.
Por otra parte,existe dentro del cdig ouna funcin definida como:
PWM1A_Init(uint16_t period) , que inicializa los mdulos de PWM en
base al valor de period. Este valor es igual al nmero de ciclos de reloj
necesarios para incrementar un contador hasta ese valor partiendo desde

Alexander Montoya Osorio 21


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones
cero, segn esto se puede afirmar que si se calcula el producto entre el
periodo de la seal de reloj y el valor dado a la variable period, nos dar
como resultado el periodo de conmutacin de la seal PWM.

En la versin del software presentada con este proyecto y adjunta en los


ANEXOS, se inicializan los mdulos PWM con un valor de 1300, segn esto
la frecuencia de conmutacin ser:

= 1300
= 20
= 1300 20 = 26
1
. = = 38.461
0.000026

Calibracin del Gimbal

Cuando se arranca el sistema el microprocesador realiza una calibracin de


los sensores por lo que estos deberan estar inmviles durante este proceso
para que la calibracin sea precisa.
Si el sistema no se calibra satisfactoriamente la primera vez que se
arranque, se debe hacer un reset general mediante el botn de la tarjeta de
desarrollo.

Alexander Montoya Osorio 22


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

6. CONDICIONES / ESPECIFICACIONES DE OPERACIN

La estructura del gimbal no debera estar nunca de manera que los ejes de
los motores estn alineados. Tal disposicinhar que la estimacin de los ngulos
de Roll y Pitch sea incorrecta por que se produce una singularidad matemtica
dentro del modelo usado para la estimacin. Por este motivo se debe prestar
atencin en para evitar que se alineen los ejes.

Los motores del Gimbal han sido diseados para funcionar con bateras tipo
LiPo de 3 celdas, por lo que el uso de cualesquier otro tipo de batera no garantiza
el correcto funcionamiento del sistema ya que una tensin de alimentacin
indebida puede producir calentamiento de los motores y una tensin muy baja
puede suponer una prdida 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.

Alexander Montoya Osorio 23


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

7. CONDICIONES ECONMICAS

7.1. ERRORES EN EL PROYECTO

En el caso de existir errores de diseo se dar cuenta al proyectista para dar


con la solucin al problema.

Adems se prohibir el uso de la aplicacin por posibles daos que pueda


ocasionar hasta que el error se vea subsanado.

7.2. LIQUIDACIN

Terminada la elaboracin del proyecto se proceder a la liquidacin, donde


se incluyen los importes correspondientes a la elaboracin del proyecto.
En el caso de que surgiera alguna posible modificacin aprobada por la
direccin 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 instalacin de la aeronave se deber
realizar un nuevo abono del 20% del total del presupuesto, que ser condicin
necesaria para continuar con el proceso de diseo 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 garanta 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 excepcin del periodo de
garanta que cubre lo citado anteriormente.

Alexander Montoya Osorio 24


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Pliego de condiciones

7.3. DISPOSICIN

Las dos partes contratantes, direccin tcnica 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 Logroo a 4 de Julio de 2016

Fdo. Alexander Montoya Osorio.

Alexander Montoya Osorio 25


Universidad de la Rioja
Diseo 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 INGENIERA ELCTRICA
Diseo y desarrollo de un gimbal con motores brushless
Estado de las mediciones

NDICE

1. ESTADO DE LAS MEDICIONES................................................................................... 3

1.1. MDULOS ELECTRNICOS: ......................................................................................... 3


1.2. ELEMENTOS MECANICOS: ........................................................................................... 4
1.3. PCB:............................................................................................................................. 4
1.4. CABLEADO: .................................................................................................................. 5
1.5. RECURSOS HUMANOS:................................................................................................. 5

Alexander Montoya Osorio 2


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Estado de las mediciones

1. ESTADO DE LAS MEDICIONES

En este apartado se listan en diferentes grupos la totalidad de los


componentes usados para la construccin 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:

Mdulos electrnicos
PCB
Cableado
Elementos mecnicos
Recursos humanos

A continuacin se desarrolla cada uno los grupos.

1.1. MDULOS ELECTRNICOS:

Dentro de este grupo se incluyen los elementos de control y senseo

Mduloselectrnicos
Referencia Unidad Unidades Nombre del elemento
EK-TM4C123GLX unidades 1 LauchPadEvaluation Kit
L6234 unidades 2 Driver para motor trifsico
MPU unidades 1 Unidad Inercial de medida
Batera unidades 1 Fuente de tensin

Alexander Montoya Osorio 3


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Estado de las mediciones

1.2. ELEMENTOS MECANICOS:

Elementos mecanicos
Referencia Unidad Unidades Nombre del elemento
EMAX-GB2806 unidades 2 Motor bruhsless
Estructura metlica unidades 1 Estructura Gimbal
Tornillo M3 unidades 8 Tornillo motor-estructura

1.3. PCB:

La referencia a cada elemento corresponde con la notacin usada en los planos del
PCB.

PCB
Referencia Unidad Unidades Nombre del elemento
PCB unidades 1 Circuito impreso diseado
C1 unidades 1 Condensador cermico 0,33F/50V
C6 Y C9 unidades 2 Condensadorcermico 10nF/25V
C4 y C7 unidades 2 Condensador cermico 0,22F/50V
C2 y C8 unidades 2 Condensadorcermico 0,1F/25V
C10 y C12 unidades 2 Condensador electroltico 1F
C3 unidades 1 Condensador electroltico 100F
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 tensin
P4 unidades 1 Conector batera
P1 unidades 1 Conector IMU
P2 y P3 unidades 2 Conector motor

Alexander Montoya Osorio 4


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Estado de las mediciones

1.4. CABLEADO:

Cableado
Referencia Unidad Unidades Nombre del elemento
Cable IMU 1 Cable de alimentacin 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
Investigacinde tcnicas de
RH1 Horas 150
conmutacin para motores BLDC
RH2 Horas 150 Investigacin en tratamiento de datos
RH3 Horas 300 Programacin
RH4 Horas 30 Diseo PCB
RH5 Horas 20 Diseo estructura mecnica
RH6 Horas 90 Redaccin del documento

Alexander Montoya Osorio 5


Universidad de la Rioja
Diseo 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 INGENIERA ELCTRICA
Diseo y desarrollo de un gimbal con motores brushless
Presupuesto

NDICE DEL PRESUPUESTO

1. PRESUPUESTO .........................................................................................................3

2. CUADRO DE PRECIOS ...............................................................................................4

3. DESGLOSE DEL PRESUPUESTO EN SUBAPARTADOS .................................................6

4. PRESUPUESTO GLOBAL ...........................................................................................8

Alexander Montoya Osorio 2


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Presupuesto

1. PRESUPUESTO

Se parte de la informacin recogida en el Estado de las mediciones para


realizar el presupuesto.

Para el clculo 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 comn.

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:

Mdulos electrnicos
PCB
Cableado
Elementos mecnicos
Recursos humanos

Alexander Montoya Osorio 3


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Presupuesto

2. CUADRO DE PRECIOS

En este apartado se incluyen los precios de cada uno de los componentes.

Cuadro de precios de los mduloselectrnicos

Moduloselectronicos
Referencia Unidad Nombre del elemento Precio/Ud
EK-TM4C123GLX unidades LauchPadEvaluation Kit 13
L6234 unidades Driver para motor trifsico 5,84
MPU unidades Unidad Inercial de medida 3,91
Batera unidades Fuente de tensin 10,46

Cuadro de precios PCB

PCB
Referencia Unidad Nombre del elemento Precio/Ud
PCB unidades Circuito impreso diseado 10
C1 unidades Condensador cermico 0,33F/50V 0,181
C6 Y C9 unidades Condensador cermico 10nF/25V 0,187
C4 y C7 unidades Condensador cermico 0,22F/50V 0,124
C2 y C8 unidades Condensador cermico 0,1F/25V 0,154
C10 y C12 unidades Condensador electroltico 1F 0,136
C3 unidades Condensador electroltico 100F 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 tensin 1,950
P4 unidades Conector batera 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 de alimentacin sensor y bus
Cable IMU I2C 0,50
Cable motor 1 Cable motor 0,50
Cable motor 2 Cable motor 0,50

Alexander Montoya Osorio 4


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Presupuesto

Cuadro de precios elementos mecnicos

Elementos mecanicos Precio/Ud


Referencia Unidad Nombre del elemento
EMAX-GB2806 unidades Motor bruhsless 15
Estructura metlica 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
Investigacin tcnicas de
RH1 Horas 30
conmutacin para motores BLDC
Investigacin en tratamiento de
RH2 Horas datos 30
RH3 Horas Programacin 30
RH4 Horas Diseo PCB 30
RH5 Horas Diseo estructura 30
RH6 Horas Redaccin documento 30

Alexander Montoya Osorio 5


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Presupuesto

3. DESGLOSE DEL PRESUPUESTO EN SUBAPARTADOS

Presupuesto mduloselectrnicos:

Mduloselectrnicos
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
Batera Ud 1 Fuente de tensin 10,46 10,46
Subtotal 39,05

Presupuesto cableado:

Cableado
Referencia Unidad Unidades Nombre del elemento Precio/Ud Sub Total
Cable de alimentacin sensor y bus
Cable IMU Ud 1 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

Presupuesto PCB:

PCB
Referencia Unidad Unidades Nombre del elemento Precio/Ud Subtotal
PCB Ud 1 Circuito impreso diseado 10 10,000
C1 Ud 1 Condensador cermico 0,33F/50V 0,181 0,181
C6 Y C9 Ud 2 Condensadorcermico 10nF/25V 0,187 0,374
C4 y C7 Ud 2 Condensador cermico 0,22F/50V 0,124 0,248
C2 y C8 Ud 2 Condensadorcermico 0,1F/25V 0,154 0,308
C10 y C12 Ud 2 Condensador electroltico 1F 0,136 0,272
C3 Ud 1 Condensador electroltico 100F 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 tensin 1,950 1,950

Alexander Montoya Osorio 6


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Presupuesto
P4 Ud 1 Conector batera 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

Presupuesto Elementos mecnicos:

Elementos mecanicos
Referencia Unidad Unidades Nombre del elemento Precio/Ud Sub Total
EMAX-GB2806 Ud 2 Motor bruhsless 15 30,00
Estructura metlica Ud 1 Estructura Gimbal 3 3,00
Tornillo M3 Ud 8 Tornillo motor-estructura 0,01 0,04
Subtotal 33,04

Presupuesto Recursos humanos:


Recursos humanos
Referencia Unidad Unidades Nombre del elemento Precio/Ud Sub Total
Investigaciontcnicas de
RH1 Horas 250 30 7.500
conmutacin para motores BLDC
Investigacin en tratamiento de
4.500
RH2 Horas 150 datos 30
RH3 Horas 300 Programacin 30 9.000
RH4 Horas 40 Diseo PCB 30 1.200
RH5 Horas 20 Diseo estructura 30 600
RH6 Horas 90 Redaccin documento 30 2.700
Subtotal 25.500

Alexander Montoya Osorio 7


Universidad de la Rioja
Diseo y desarrollo de un gimbal con motores brushless
Presupuesto

4. PRESUPUESTO GLOBAL

Con los presupuestos parciales calculados, se realiza el presupuesto total.

Resumen general del presupuesto


1 Mduloselectrnicos 0,1526 % 39,05
2 PCB 0,0878 % 22,465
3 Cableado 0,0059 % 1,50
4 Elementos mecnicos 0,1291 % 33,04
5 Recursos humanos 99,6247 % 25.500

Presupuesto de ejecucin material 25.596,06

Gastos generales 13% 3.327,49

Beneficio Industrial 6% 1.535,76

Suma______________________________________ 30.459,31

Impuestos aadidos 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 Logroo a 4 de Julio de 2016

Fdo. Alexander Montoya Osorio.

Alexander Montoya Osorio 8


Universidad de la Rioja