Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad de Ingeniera
Escuela de Ingeniera Elctrica
Por:
Daniel Barrera Nez
_________________________________
Ing. Fabin Abarca Caldern
Profesor Gua
_________________________________
Ing. Fabin Garita Gonzales
Ingeniero lector
_________________________________
Dr. Lucky Lochi Yu Lo
Profesor lector
ii
DEDICATORIA
A mi familia y seres queridos, por el constante apoyo y ayuda brindada durante los aos de
mi carrera universitaria, sin la cual no hubiese podido lograr culminar esta etapa de manera
exitosa.
iii
RECONOCIMIENTOS
A mi profesor gua, el Ing. Fabin Abarca, por su apoyo y consejo a lo largo del
desarrollo del proyecto.
iv
NDICE GENERAL
1.
1.1
Objetivos ................................................................................................. 3
1.2
Metodologa ............................................................................................ 4
2.1
Aerodinmica ......................................................................................... 5
2.2
2.3
2.4
Sensores ................................................................................................. 22
2.5
Actuadores ............................................................................................ 32
2.6
2.7
Procesamiento de Seales.................................................................... 40
2.8
2.9
3.
UAV 47
3.1
3.2
Experimentos ........................................................................................ 52
3.3
4.
4.1
Conclusiones ......................................................................................... 67
4.2
Recomendaciones ................................................................................. 70
4.3
BIBLIOGRAFA ............................................................................................ 72
APNDICES ................................................................................................... 76
Apndice 1. Sketch de validacin del mdulo bluetooth. ........................... 76
Apndice 2. Cdigo completo de programacin del cuadracptero ......... 78
vii
NDICE DE FIGURAS
Figura 1. ngulo de ataque de un ala [30] .............................................................................. 6
Figura 2. Modelo tridimensional de un cuadracptero ........................................................... 8
Figura 3. Diagrama rotacin de cuadracptero alrededor del eje Z [9]. ............................... 12
Figura 4. Diagrama rotacin de cuadracptero alrededor del eje X [9]................................ 13
Figura 5. Diagrama rotacin de cuadracptero alrededor del eje Y [9]................................ 13
Figura 6. Diagrama traslacin de cuadracptero a lo largo del eje Z [9]. ............................ 15
Figura 7. Parte superior de Arduino Uno [http://arduino.cc/en/Main/ArduinoBoardUno] .. 17
Figura 8. Entorno de programacin de Arduino (programa de ejemplo). ............................ 22
Figura 9. Respuesta de Ganancia y Fase del Filtro del IDG-500 ......................................... 25
Figura 10. Diagrama de bloques de acelermetro ADXL335. Hoja de Especificaciones .... 28
Figura 11. Diagrama de Operacin de Sensor Ultrasnico de Proximidad. Fuente: Google
Images. .................................................................................................................................. 30
Figura 12. Sensor Ultrasnico de Proximidad (HC-SR04). Fuente: Manual de Fabricante. 30
Figura 13. Representacin grfica de funcionamiento de sensor ultrasnico de proximidad.
.............................................................................................................................................. 32
Figura 14. Representacin de Motor DC sin Escobillas ....................................................... 35
Figura 15. Principio de funcionamiento de motores sin escobillas [6] ................................. 37
Figura 16. Ilustracin Media Mvil ...................................................................................... 42
Figura 17. Grfico Ilustrativo de Media Mvil..................................................................... 43
viii
ix
NDICE DE TABLAS
NOMENCLATURA
PWM: Modulacin por ancho de pulso (del ingls Pulse Width Modulation).
xi
RESUMEN
El presente trabajo constituye un proyecto de investigacin y desarrollo de un vehculo
areo no tripulado con control de estabilidad autnomo, especficamente un cuadracptero.
La finalidad del proyecto fue tener la oportunidad de poder ahondar ms en determinados
conocimientos obtenidos a los largo de la carrera de ingeniera elctrica, y ponerlos en
prctica mediante el desarrollo de un proyecto multidisciplinario. Para lograr esto, se
realiz una investigacin previa de los componentes requeridos y conceptos necesarios
para el proceso de desarrollo del cuadracptero. Se logr realizar un primer prototipo de un
cuadracptero con control automtico de estabilidad y altitud con comunicacin
inalmbrica va bluetooth con un telfono inteligente que serva de control remoto para el
usuario. Todos los bloques funcionales del cuadracptero fueron validados previamente a
ser integrados al sistema. Este desarrollo se realiz utilizando hardware y software libre, y
componentes de fcil acceso al pblico. Se logr obtener un primer prototipo capaz de
volar pequeas distancias, sin embargo, a la hora de concluir el proyecto se determin que
requera de algoritmos ms robustos y un mejor microcontrolador para poder
implementarlos. Esto con la finalidad de lograr obtener una mayor robustez y seguridad a la
hora de volar el vehculo en ambientes con obstculos.
xii
1. CAPTULO 1: Introduccin
La conceptualizacin y creacin de mquinas que tengan la capacidad de operar de manera
autnoma data desde la era clsica. Sin embargo, no fue sino hasta el siglo XIX, junto con
el surgimiento y auge de la revolucin industrial, que se empezaron a vislumbrar las
primeras mquinas relevantes de automatizacin de tareas. A partir de ese momento, ste se
convirti en un campo de estudio en constante desarrollo, el cual, a partir de mediados del
siglo XX, empez a crecer de manera exponencial, impulsado principalmente por los
grandes avances que se estaban dando en el rea de la electrnica.
El rea de la aeronutica actualmente constituye una de las ramas con ms presencia dentro
del campo de la robtica, en especial con el surgimiento de UAVs (Unmanned Aerial
Vehicles) desarrollados para una gran diversidad de tareas, que van desde aplicaciones
militares, hasta equipos de investigacin cientfica. Esta constituye el rea que se pretende
explorar con el avance del proyecto.
Para el desarrollo del presente proyecto, se pretende elaborar un vehculo areo de vuelo
autnomo (UAV), y para ello se busc una plataforma verstil y de construccin sencilla.
Tras realizar una investigacin previa, se eligi tomar como modelo base un quad-rotor, o
tambin conocido como cuadracptero, el cual consiste, como se pude intuir de su nombre,
en una plataforma con cuatro rotores ubicados en los extremos de los ejes de simetra de su
chasis. Esta plataforma presenta varias ventajas en cuanto a su maniobrabilidad y la poca
1
cantidad de componentes mecnicos requeridos para su elaboracin (lo cual muchas veces
representa el verdadero reto de los proyectos de esta ndole).
Para su construccin se pretende hacer uso de hardware open source (Arduino) para el
sistema de control principal y de comunicaciones del dispositivo, y de componentes
electrnicos y mecnicos de fcil acceso al consumidor para el resto de la plataforma.
Dentro de las principales razones por las cuales se toma la decisin de abordar un proyecto
de este ndole, es por la gran cantidad de tpicos que se encuentran involucrados en el
desarrollo de un prototipo de esta categora, y dado que este proyecto se encuentra ligado a
la finalizacin del grado acadmico, permite la oportunidad de aplicar y demostrar una gran
cantidad de conocimientos que se han adquirido a travs de la carrera. Entre las reas de
estudio que se pretenden aplicar se pueden mencionar: microcontroladores, programacin,
sistemas de control automtico, sistemas de comunicacin, anlisis de sistemas, mquinas
elctricas, electrnica analgica, circuitos digitales y hasta un poco de mecnica!
1.1
Objetivos
un
1.2
Metodologa
La metodologa que se implement para el desarrollo del proyecto fue una extensa
investigacin de los componentes necesarios (tanto fsicos como tericos) para realizar el
desarrollo del sistema de manera exitosa. Adems, cada uno de los sistemas estudiados,
fueron implementados y validados de manera individual, para luego ser unificados en el
sistema final (cuadracptero). Esto requiri de una extensa investigacin y experimentacin
para poder llegar a obtener el comportamiento esperado de cada uno de los subsistemas.
El cronograma original del proyecto a desarrollar fue evolucionando con el transcurso del
tiempo, sin embargo, a continuacin se muestra el cronograma tentativo para el desarrollo
que se llev a cabo:
Tabla 1. Cronograma tentativo del desarrollo del dispositivo.
En el desarrollo del captulo II, se sintetizarn los temas de mayor importancia para el
desarrollo y entendimiento de los conceptos necesarios para la implementacin del
prototipo del cuadracptero. Estos temas se tratarn de exponer de una manera sencilla para
que sea apto para lectores con o sin mayor conocimiento tcnico del tema.
2.1
Aerodinmica
Con la finalidad de ir desarrollando los temas en un orden estructurado, se iniciar con una
breve seccin de aerodinmica, la cual a grandes rasgos, constituye la base que permite
entender el comportamiento y la forma de operar del cuadracptero. En este apartado se
explicarn brevemente los conceptos aerodinmicos de mayor relevancia para crear la base
terica que permita un mejor entendimiento y desarrollo del proyecto.
Uno de los conceptos fundamentales que surge cuando se empieza a estudiar el campo de la
aerodinmica es el de la fuerza de sustentacin. La fuerza de sustentacin se define como la
fuerza perpendicular al flujo de un fluido (en nuestro caso el aire) que se crea cuando el
fluido pasa por la superficie de un objeto. El paso del fluido por la superficie del objeto crea
una fuerza con varios componentes, pero la fuerza de sustentacin es solamente la
componente vertical al vector de direccin del fluido. Dentro de los otros componentes de
esta fuerza creada por el paso del fluido, tambin se encuentra la fuerza de arrastre, la cual
5
En el caso de los vehculos que poseen aspas adheridas a rotores, sta fuerza es la
encargada de crear un par rotacional en el vehculo cuya direccin va en contra del sentido
de giro de las aspas. Por esta razn es que los helicpteros convencionales poseen rotores
de cola que compensan este par rotacional y evita que giren sin control alrededor del eje de
rotacin del rotor principal.
El ngulo de ataque de un ala se encuentra definido como el ngulo que forma la cuerda
geomtrica de un perfil alar con la direccin del aire que incide sobre el ala. Este parmetro
juega un papel muy importante en la generacin de la fuerza de sustentacin y la fuerza de
arrastre de una hlice. Para un mejor entendimiento de este concepto se puede observar la
figura a continuacin.
La correcta eleccin del ngulo de ataque de las hlices es de suma importancia para
obtener los parmetros de fuerza de sustentacin y de arrastre que son requeridos.
6
2.2
2.2.1 Introduccin
Los vehculos areos no tripulados (popularmente conocidos como UAVs por sus siglas en
ingls), son vehculos areos que estn diseados para poder volar sin necesidad de un
piloto humano a bordo. El vuelo de estas mquinas, normalmente se encuentra controlado
por un piloto humano que se encuentra en un centro de mando en tierra, desde donde puede
transmitirle las instrucciones de vuelo de manera remota, o tambin, stas mquinas pueden
ser controladas de manera autnoma por un controlador o computador que se encuentre
programado para tal fin.
Dentro de la gama de vehculos areos no tripulados, se puede encontrar una gran escala de
tamaos , configuraciones y formas (vehculos de ala fija, vehculos multirotores, etc), los
cuales inicialmente fueron surgiendo como plataformas controladas remotamente por un
piloto, pero que en los ltimos aos, gracias a los grandes avances de la tecnologa en el
campo de la computacin, la electrnica y comunicaciones, han migrando poco a poco al
sector de vehculos autnomos.
2.2.2 El Cuadracptero
El
representa una
Dinmica de Movimiento
Para la ilustracin de este movimiento, primero se procede con la definicin del eje z del
vehculo. Este eje imaginario, se encuentra en el centro del bastidor de la mquina, (el
centro de la equis formada por la estructura del vehculo), y es perpendicular al plano
formado por la misma estructura del vehculo. Como se mencion anteriormente, la
rotacin de las aspas crean un torque que tratan de girar el vehculo alrededor del eje de
giro de las aspas. En los helicpteros convencionales, este problema se corrige mediante un
rotor en su cola que genere una fuerza tangente al radio de giro del rotor principal, la cual
sea suficiente para crear un par opuesto que contrarreste el efecto del par generado por el
rotor principal.
En un cuadracptero no se cuenta con rotores de cola (ni colas en s), de modo que este
problema se soluciona de una manera distinta (la cual resulta muy ingeniosa). Como se
9
sabe, los cuadracpteros poseen un nmero par de rotores, por lo tanto se puede tener dos
rotores girando en un sentido, y dos rotores girando en otro sentido. De esta manera, al
manipular la velocidad de rotacin de los distintos motores se puede llegar a un punto de
operacin donde el par rotacional neto del vehculo sea igual a cero.
Segn lo expuesto en [5], se puede concluir que tanto la fuerza de sustentacin como la
fuerza de arrastre son funciones que dependen del cuadrado de la velocidad angular. A
continuacin se muestran las ecuaciones de dichas fuerzas:
Ecuacin 2.1
Ecuacin 2.2
Donde
10
Ahora, como lo que se trata de controlar es la rotacin alrededor del eje z del
cuadracptero, basta con igualar los pares rotacionales creados por los motores que giran en
contra de las manecillas del reloj, y los pares rotacionales creados por los motores que giran
a favor de las manecillas del reloj (en caso de que se quiera que el cuadracptero no gire
alrededor del eje z). Esto lo logramos controlando las velocidades netas de cada uno de los
sentidos de giro (partiendo del hecho que las hlices sean simtricas y con las mismas
caractersticas constructivas).
Sean
del reloj y
Si
Si
Si
A continuacin se puede observar la figura que ilustra el caso anterior para que se visualice
de una manera ms sencilla.
12
, entonces
en
para
mantener la velocidad neta de rotacin a favor de las manecillas del reloj constante.
La dinmica resulta la misma para el caso anlogo de la rotacin alrededor del eje Y.
13
Una consecuencia de provocar una rotacin alrededor de alguno de los ejes X o Y, es que
se va a obtener un desplazamiento traslacional en caso de que el cuadracptero ya se
encuentre en vuelo, el cual va a ser correspondiente al tipo de inclinacin que tenga el
cuadracptero. Por ejemplo, si el cuadracptero rota alrededor del eje X, se va a obtener
una traslacin a lo largo del eje Y, y si el cuadracptero rota alrededor del eje Y, se va a
obtener una traslacin a lo largo del eje X. Cabe resaltar que tambin se puede obtener una
rotacin simultnea en ambos ejes, lo cual va a provocar una traslacin anloga a esa
rotacin.
Control de Altitud
El control de altitud resulta de una manera muy intuitiva. Se parte de que la altitud se
asocia con el desplazamiento del cuadracptero a lo largo su eje Z (el cual no
necesariamente se encuentra perpendicular al suelo).
Para realizar el control de altitud, basta con aumentar o disminuir de manera equivalente las
velocidades de los cuatro motores del cuadracptero. Si se quiere ganar altitud, se procede a
aumentar la velocidad de todos los motores en un factor equivalente a la rapidez con la que
se quiere lograr este cambio de altitud, y de manera anloga para disminuirla.
14
Resulta fcil llegar a la conclusin de que con una determinada combinacin de cualquiera
de los tres tipos de movimientos descritos anteriormente se puede obtener un control total
sobre la trayectoria y postura del cuadracptero en un determinado momento. El control de
movimiento del cuadracptero se basa en un principio de superposicin, en donde la
velocidad final de cada uno de los motores va a ser la suma dinmica de cada uno de las
velocidades necesarias para lograr cada uno de los tres tipos de movimiento que se estn
ejecutando en determinado momento.
15
2.3
Arduino ha surgido en los ltimos aos como una plataforma de creacin de prototipos
electrnicos muy revolucionaria, la cual ha desarrollado de gran manera el campo del
movimiento de Hgalo usted mismo (Do It Yourself). Esto se debido a su gran facilidad,
versatilidad y flexibilidad de uso tanto de su hardware como de su software, la cual requiere
poca experiencia y conocimiento del tema para iniciar con el desarrollo de prototipos.
La familia de Arduino cuenta con una gran variedad de integrantes (tipos de tarjetas
distintas), cada una con su forma y caractersticas propias. Esto resulta muy prctico para
seleccionar una que se adapte lo mejor posible a las caractersticas de cada proyecto.
16
17
A continuacin se presenta una tabla resumen con las principales caractersticas del
Arduino Uno:
Tabla 2. Especificaciones Tcnicas del Arduino Uno
Fuente de Poder
El Arduino Uno puede ser alimentado desde su conector USB o mediante una fuente de
poder externa, como por ejemplo una batera. La fuente de poder es seleccionada de manera
18
La tensin de alimentacin de la tarjeta puede variar entre 6 y 20 volts, sin embargo cuando
la tensin es inferior a 7 volts, el regulador de 5 volts puede actuar de manera inestable y no
suplir los 5 volts deseados (que se obtienen a travs del pin de 5V). Adems, cuando se usa
una tensin de alimentacin superior a 12 volts existe la posibilidad de que el regulador se
sobrecargue y se dae. Por las razones anteriores, la tensin de entrada recomendada para el
Arduino es de 7 a 12 volts.
Vin: Es el pin de entrada cuando se est utilizando una fuente de poder externa (no
USB). La tensin recomendada en este pin es de 7 a 12 volts. Este pin se encuentra
en paralelo con el conector de entrada de 2.1 mm.
3.3V: Es la salida del regulador de 3.3 volts de la tarjeta utilizado para sensores y
actuadores que requieran de esta tensin de alimentacin especial. La corriente
mxima que se puede entregar por medio de este canal es de 50 mA.
19
Memoria
El ATmega 328 posee 32 kB de memoria, de los cuales 0.5 kB son utilizados por el
bootloader de la tarjeta. Adems posee 2 kB de SRAM y 1 kB de EEPROM, los cuales
pueden ser accesados o modificados mediante una de las libreras destinadas para tal fin.
Entradas y Salidas
El Arduino Uno posee 14 pines digitales, los cuales pueden ser utilizados como entradas o
salidas. Estos pines trabajan a 5 volts, y pueden entregar un mximo de 40 mA. Adems,
ciertos pines tienen funciones especializadas, las cuales se mencionan a continuacin:
Pines Seriales: 0 (RX) y 1 (TX). Son utilizados para recibir y transmitir datos
seriales TTL. Estos pines estn conectados a los pines correspondientes del chip
serial USB-TTL ATmega8U2.
Pines de PWM: 3,5,6,9,10 y 11. Proveen una salida PWM de 8 bits de resolucin
mediante la funcin analogWrite().
20
2.3.3 Programacin
La programacin del Arduino se realiza mediante el entorno de programacin propio de
Arduino. Los programas que se realizan para Arduino son denominados Sketch. Una vez
que se escribe un programa, el entorno de programacin se encarga de compilarlo y
cargarlo al Arduino que se tenga conectado al computador. Para un mayor detalle de las
funciones, estructuras y valores del lenguaje de programacin se puede referir a la pgina
web oficial: http://arduino.cc/en/Reference/HomePage. Adems, Arduino posee una gran
cantidad de libreras realizadas por sus usuarios, las cuales pueden ser descargadas de
manera gratuita para su respectivo uso. A continuacin se muestra una imagen del entorno
de programacin:
21
2.4
Sensores
Las palabras sensor y transductor son dos trminos muy utilizados para referirse a
dispositivos de sensado de alguna variable fsica, sin embargo no significan lo mismo. El
trmino transductor se utiliza cuando se quiere considerar un sistema completo de sensado,
donde se lleva a cabo un cambio entre tipos de energa. Un ejemplo de estos sistemas son
los acelermetros (transductores de aceleracin), donde un cambio de estado de un sistema
mecnico se manifiesta como una salida de tensin elctrica en el dispositivo. Por otro lado
22
23
2.4.1 Giroscopio
2.4.1.1 Descripcin Generalizada
Los giroscopios son dispositivos utilizados para medir o mantener una orientacin
especfica. Antiguamente solo se contaba con los giroscopios mecnicos, que consistan en
discos giratorios suspendidos sobre un eje que poda rotar en varias direcciones. La
dinmica consista en que el disco rotatorio permaneca en la misma posicin
indiferentemente de cmo rotara la plataforma sobre la cual estuviera montado.
Actualmente se cuenta con otro tipo de giroscopios, los cuales son basados en sistemas
micro-electromecnicos, y han aumentado su popularidad en los dispositivos electrnicos
debido a su reducido tamao, bajo precio y buena precisin. Una de las mayores
aplicaciones de los giroscopios es para el desarrollo de unidades de medicin inercial
(IMU) de vehculos o dispositivos que requieran de este tipo de mediciones, como es el
caso de los vehculos areos no tripulados (UAV) para sus sistemas de estabilizacin.
El IDG-500 es un giroscopio de dos ejes que consiste en dos girscopos MEMS vibratorios
independientes. Uno de ellos detecta la velocidad de rotacin alrededor del eje X, y el otro
detecta la velocidad de rotacin alrededor del eje Y. Ambas estructuras se encuentran
24
A continuacin se puede observar un diagrama de Bode del filtro paso bajo que posee el
giroscopio para acondicionar la seal de salida:
25
El IDG-500 posee dos salidas de velocidad para el eje X, y dos para el eje Y. A
continuacin se muestra una tabla con sus principales parmetros:
26
2.4.2 Acelermetro
2.4.2.1 Dispositivo Utilizado (ADXL335)
27
Seguidamente, tambin se muestra una tabla con los parmetros de mayor importancia para
el desarrollo del proyecto, sin embargo tambin se puede recurrir a la hoja de
especificaciones completa en la seccin de bibliografa [37] en caso de que sea necesario.
28
Los sensores ultrasnicos de proximidad (que en realidad son transductores pero son
conocidos popularmente como sensores), trabajan bajo un principio muy similar a un radar,
en el cual se evala la distancia de un objetivo al interpretar los ecos de ondas sonoras o de
radio. Los sensores ultrasnicos generan ondas de alta frecuencia, detectan el eco, y
calculan el intervalo de tiempo entre el momento en que se envi la seal, y el momento en
el que se recibi el eco, para determinar la distancia del objeto que se est avaluando. Esta
tecnologa se encuentra un poco limitada por la forma de las superficies o la consistencia
29
del material del objeto que se est midiendo, dado que determinados materiales pueden dar
lecturas errneas en el transductor.
Figura 11. Diagrama de Operacin de Sensor Ultrasnico de Proximidad. Fuente: Google Images.
El sensor ultrasnico de proximidad que se eligi para la realizacin del proyecto es el HCSR04, de la compaa ITead Studios. A continuacin se puede apreciar una imagen del
sensor:
30
La expresin que se utiliza para calcular la distancia en centmetros del objeto (o superficie,
una vez dada la duracin del pulso de ECO es la siguiente:
31
2.5
Actuadores
Una de las desventajas de los motores DC sin escobillas, es que requieren de un sistema
electrnico por aparte para poder operar, normalmente denominado como controlador
electrnico de velocidad (ESC por sus siglas en ingls), y del cual se hablar ms adelante.
El motor DC con escobillas puede operar sin problemas conectado nicamente a una fuente
DC o tambin con un conmutador electrnico o restato para regular su velocidad.
alimentacin. Por ejemplo, un motor sin escobillas de 1000 Kv conectado a una fuente de 2
volts, puede girar a 2000 rpm.
Tpicamente los motores DC sin escobillas poseen imanes permanentes adheridos a una
armadura fija, eliminando as los problemas generados para suplir corriente a una armadura
mvil. El controlador electrnico de velocidad es el anlogo los conmutadores mecnicos
en los motores con escobillas, y ste se encarga de cambiar continuamente cada una de las
fases del motor para generar un campo magntico rotativo que se encargue de inducir el
movimiento del motor.
Las bobinas de los motores sin escobillas se pueden encontrar tanto en configuraciones
Delta (las cuales entregan menor torque a bajas velocidades, pero generan mayores
velocidades) como configuraciones Estrella (que generan mayor torque a bajas velocidades
pero menor velocidad mxima que la configuracin en Delta). [33]
34
Para controlar la rotacin del motor, el controlador requiere de un medio para determinar la
orientacin del rotor con respecto al estator. Para este fin, algunos diseos utilizan sensores
de efecto Hall (los cuales detectan el campo magntico del rotor) y otros mtodos detectan
la fuerza contra electromotriz inducida en las bobinas no energizadas para inferir la
posicin del rotor. Este mtodo mencionado anteriormente no requiere de sensores
adicionales, y por ende este tipo de sistemas son llamados controladores sin sensores.
35
El reto al que se enfrentan los controladores que infieren la posicin del rotor con respecto
a la fuerza contra electromotriz de las bobinas que no estn en uso, es a la hora de iniciar el
movimiento, ya que no hay una fuerza contra electromotriz (el rotor se encuentra esttico, y
por ende no hay tensin inducida). Usualmente, el procedimiento que se sigue es iniciar el
movimiento desde una fase arbitraria, y luego corregirla en caso de que no sea la correcta.
2.6
Comunicaciones Inalmbricas
de las comunicaciones seriales, es que poseen tasas de transmisin de datos ms bajas que
las comunicaciones en paralelo, dado que se pueden transmitir menos datos por unidad de
tiempo, sin embargo, resulta ventajoso para reducir costos cuando la velocidad de
transmisin de datos no es un factor fundamental para la operacin del dispositivo.
Como ejemplos de los buses ms conocidos que implementan comunicacin de tipo serial
se pueden mencionar: SPI, I2C (ambas pueden ser implementadas mediante el Arduino),
USB, PCI, Bluetooth y 1-Wire.
Este protocolo est diseado para comunicar dos o ms dispositivos al mismo tiempo, los
cuales normalmente se encuentran gobernados por un dispositivo maestro que se encarga de
realizar la sincronizacin de datos del grupo.
38
El protocolo Bluetooth se encuentra regido por el Bluetooth Special Interest Group o SIG
por sus siglas en ingls, el cual es un grupo formado por ms de diecisis mil compaas de
reas de telecomunicaciones, computacin y dispositivos electrnicos. Este grupo se
encarga de velar por que se cumplan los estndares requeridos para los nuevos dispositivos
que requieran hacer uso de esta tecnologa.
39
2.7
Procesamiento de Seales
2.7.1 Introduccin
Debido a la naturaleza analgica de los sensores y transductores que se utilizan para
percibir el entorno y el estado del cuadracptero, stos proporcionan seales de salida que
se van a ver sometidas a ciertos niveles de ruido (causado tanto por vibraciones mecnicas
como por interferencias electromagticas). Por esta razn, resulta de gran importancia para
el adecuado control del vehculo, acondicionar estas seales de manera que se puedan
eliminar los datos provenientes de los sensores que no sean provechosos para el control del
vehculo (o dicho de manera ms sencilla, el ruido).
40
Dada una serie de nmeros y un tamao de subgrupo fijo, el primer elemento de la media
mvil es obtenido sacando el promedio de los valores del primer subgrupo de la serie de
nmeros. Luego, este subgrupo de datos es modificado excluyendo el primer nmero de su
serie, y reemplazndolo por el siguiente nmero de la serie original de datos. Esto genera
41
un nuevo subgrupo de datos, el cual a su vez tiene un valor de promedio numrico nuevo.
Este proceso es repetido hasta abarcar todos los datos de la serie numrica original. A la
grfica que conecta los valores de cada una de las medias obtenidas se le denomina media
mvil.
Las medias mviles tambin pueden ser utilizadas agregando pesos distintos a los valores
que son de mayor inters, para que estos tengan mayor o menor impacto sobre el promedio
de cada subgrupo. Para ilustrar de manera ms sencilla lo explicado anteriormente se puede
observar la siguiente figura:
42
43
Esta es una de las principales utilidades de la media mvil, el atenuar las fluctuaciones de
pequea duracin de los datos originales, y darles ms importancia a las tendencias de largo
plazo. La diferencia entre largo y corto plazo depende de cada aplicacin, por ende, el
tamao de los subgrupos, y el peso de los valores (en caso de que se requieran agregar) se
deben programar adecuadamente dependiendo del fin para el cual se utilicen.
La media mvil tambin se puede ver como un tipo de filtro paso bajo, donde los datos
aleatorios de alta frecuencia pueden ser atenuados por medio del promediado de valores
para obtener una tendencia ms adecuada y eliminar el ruido del sistema. Cabe resaltar que
esto tambin causa problemas si los parmetros no se encuentran debidamente programados
dado que mientras ms se trate de atenuar el ruido, ms lenta ser la respuesta del sistema.
2.8
Control Automtico
Los controladores PID son sistemas que trabajan bajo el principio de realimentacin de lazo
cerrado, los cuales se encargan de manipular una o ms variables de un sistema (las cuales
44
se trabajan como entradas del sistema) con la finalidad de reducir la diferencia existente
entre la salida real del sistema y la salida deseada del sistema (conocido como el error).
Los algoritmos de control PID poseen 3 componentes cuya suma da resultado al parmetro
de control de la variable manipulada (entrada del sistema). Estos elementos son: la
componente proporcional, la componente integral y la componente derivativa. Una correcta
sintonizacin de las ganancias de estos parmetros, y un apropiado modelado de todo el
sistema, es lo que da paso a lograr una respuesta de la salida del sistema en la que se
minimice su diferencia con respecto al valor esperado, de la manera ms rpida y estable
posible.
La ecuacin generalizada de los controladores PID viene dada por la siguiente expresin:
Donde:
2.9
Fuente de Poder
46
Mdulo de
Sensado
Mdulo de
Comunicaciones
Mdulo de control
principal
Control de
Potencia
Motores
Fuente de
Alimentacion
47
48
Por sutil que parezca la diferencia, esto influye en la programacin y calibracin que se
realizar en los sistemas de control. Se elige la configuracin + debido a que resulta de
ms sencilla aplicacin.
A continuacin se expone el diagrama de bloques funcional para cada uno de los motores.
La velocidad final de cada uno de ellos, estar constituida por la suma de la salida del PID
de control de altitud, el PID de control de rotacin alrededor del eje X (o Y), y un valor de
velocidad fijo para iniciar con una velocidad conocida cuando se encienda el
cuadracptero. El resultado de dicha suma (la cual se convertir en una seal PWM por el
microcontrolador), ser ingresado en el bloque de control de potencia de los motores
(ESC), donde se convertir la seal PWM resultante, en el conjunto de seales trifsicas
correspondientes para lograr la velocidad angular requerida para cada uno de los motores.
Motor X
Entrada de Seales de
Transductores
PID Altitud
Salida de Velocidad de
Motores
Velocidad Motor X
Valor Fijo
49
Motor 1
Motor 2
Transductores de
Posicin y Postura
Posicin y Postura
Deseada
Motor 3
Motor 4
50
Como se observa, se tienen seis entradas/salidas digitales libres, las cuales se pueden
utilizar en un futuro para LEDs de sealizacin.
51
3.2 Experimentos
3.2.1
La validacin de este mdulo se realiz de una manera muy sencilla. Primero se procedi a
la programacin de los parmetros propios del mdulo, como lo es su tasa de transmisin
de datos y su respectivo emparejamiento con la computadora y el telfono inteligente. Este
proceso se realiz siguiendo los pasos detallados en la hoja de especificaciones del
dispositivo.
Luego, se realiz un sketch sencillo para el Arduino, el cual permitiera observar que se
estaban transmitiendo los datos correctamente entre la plataforma Android y el Arduino. El
sketch utilizado se puede observar en el apndice 1 de la seccin de anexos. La dinmica
consisti en utilizar 5 leds de distintos colores que se encontraban conectados a las salidas
digitales del microcontrolador, y prenderlos o apagarlos desde el telfono inteligente de
manera remota por medio del adaptador bluetooth utilizado en conjunto con el
microcontrolador Arduino.
52
Figura 24. Diagrama de mtodo de validacin de mdulo bluetooth en conjunto con Arduino.
53
3.2.2
3.2.3
Este apartado correspondi a uno de los mayores retos del desarrollo del proyecto. Como se
mencion en el II Captulo, los sensores utilizados para el sistema de medicin inercial
(acelermetros y giroscopios), poseen salidas cuyas seales poseen un determinado nivel de
ruido que va en detrimento de la robustez del control automtico del cuadracptero. Este
ruido es dependiente del tipo de componentes mecnicos que se estn utilizando (como por
ejemplo las caractersticas de las hlices, el material del marco, etc). Por esta razn se tuvo
que implementar una etapa de filtrado digital de las seales para tratar de eliminar la mayor
parte del ruido de cada una de las seales de entrada.
Para lograr esto, se implement la tcnica de la media mvil para realizar un promediado
dinmico de los valores de cada una de estas seales, de modo que se disminuyera el nivel
de ruido, sin desfasar en gran medida la seal filtrada de la seal real. Esto es de suma
importancia debido a que los controladores PID requieren obtener su seal de entrada en
tiempo real para un correcto funcionamiento del sistema.
55
El parmetro requerido para este filtro (cantidad de muestras que se promedian en cada
ciclo de ejecucin), se obtuvo experimentalmente, con un mtodo de prueba y error, hasta
obtener el parmetro que mostrara el mejor resultado posible.
A continuacin se observa un grfico que muestra la seal sin filtrar (en azul) junto con la
seal filtrada (rojo). Esta captura fue tomada con los motores encendidos a un 15% de su
velocidad mxima. Se puede apreciar la gran reduccin del ruido que se logr al realizar la
fusin de las seales de los acelermetros y los giroscopios, junto con el promediado
dinmico expuesto anteriormente. El promediado se realiz con un ndice de 20 muestras
por ciclo.
56
Figura 26. Comparacin entre seal original y seal filtrada de uno de los acelermetros.
Adems se puede observar el desfase que se obtiene entre la seal filtrada (roja) y la seal
sin procesar (azul). Para este experimento se conservaron los mismos parmetros de la
prueba anterior, solamente que se apagaron los motores para observar una seal ms limpia
de los acelermetros. Tambin cabe mencionar que para estas pruebas se utiliz un peso
relativo del 80% para la seal del acelermetro y un peso de 20% para la seal del
giroscopio. Se observ que mientras mayor peso se le asigne a las lecturas del giroscopio,
mayor es el desfase experimentado entre la seal filtrada y la seal original.
Figura 27. Prueba para observar el desfase entre la seal filtrada y la original, con los motores
apagados.
57
Por ltimo, se realiz una prueba para observar la inmunidad del sistema ante la presencia
de seales no deseadas. Para este caso, se aplicaron pequeos golpes al sensor, y se
observaron ambas seales de inters (seal filtrada y seal original). Se puede observar que
el sistema final resulta bastante inmune a este tipo de perturbaciones anmalas en el
sistema. Esto es muy importante para evitar comportamientos no deseados de todo el
sistema ante la presencia de perturbaciones no deseadas en las lecturas de los sensores.
Figura 28. Prueba realizada para observar la inmunidad del sistema ante seales no deseadas.
58
diferencial del controlador, si se ver muy afectada, dado que la pendiente de las seales de
ruido de alta frecuencia es muy pronunciada, motivo por el cual la derivada de estas seales
resulta en una cifra muy alta. Debido a esta razn, la ganancia de la componente derivativa
del controlador se tiene que subdimensionar para lograr que sea inmune a este ruido. El
problema con esto, es que mientras ms se disminuye esta ganancia, el controlador no
reacciona de manera adecuada ante cambios bruscos reales en la postura del cuadracptero,
y su debida correccin de postura no se ejecuta de la manera adecuada.
De aqu la importancia de tener una seal bien acondicionada, para poder dimensionar
correctamente la ganancia de la componente derivativa del controlador, y de esta manera
logar que el cuadracptero responda de una mejor manera ante cambios bruscos en su
postura.
3.2.4
Para la validacin del transductor ultrasnico se decidi utilizar la librera facilitada por el
fabricante del dispositivo. La dinmica consisti en conectar el dispositivo al Arduino, y
luego observar si las distancias obtenidas mediante el sensor ultrasnico coincidan con las
medidas reales de distancia (las cuales fueron medidas con una cinta mtrica). Los
resultados fueron los esperados, y las lecturas fueron muy precisas. Cabe resaltar que
mediante la experimentacin se pudieron medir distancias que fueron desde los 2 cm hasta
los 500 cm. Fuera de ese rango, las lecturas eran inestables.
59
3.2.5
Para la validacin del sistema de control automtico, primero se procedi a obtener las
ganancias de las componentes de cada uno de los controladores PID. Dado que no se cuenta
con un modelo matemtico del sistema, y la respuesta del sistema a los escalones es un
proceso complejo de obtener sin el equipo necesario, las ganancias de cada PID se
obtuvieron mediante un proceso de experimentacin hasta llegar a los parmetros que
dieran los mejores resultados.
60
Para realizar este proceso, la dinmica que se sigui fue calibrar cada PID por separado
hasta obtener el comportamiento deseado, para luego ponerlos a trabajar todos juntos una
vez que ya estuvieran correctamente calibrados.
Primero se procedi con la obtencin de los parmetros para el PID de control de rotacin
alrededor del eje X. Para realizar esto, se restringi la rotacin del cuadracptero alrededor
del eje Y al apoyar el eje X en una superficie libre de friccin que lo permitiera rotar. De
esta manera, solo se trabaj con los motores 2 y 4 encendidos, los cuales eran los
encargados de mantener el equilibrio del cuadracptero (mientras tanto, los motores 1 y 3
permanecen apagados).
Figura 29. Experimento para la obtencin de los parmetro de PID de inclinacin Eje X
Inicialmente, el proceso que se sigui, fue configurar todas las ganancias de este PID en 0.
Luego, poco a poco se fue aumentando la ganancia proporcional del controlador hasta
61
Cabe resaltar, que los parmetros encontrados para el sistema con un tipo de hlice, no son
vlidos si se cambian las hlices, de modo que se tienen que volver a obtener los
parmetros.
Luego de obtener los parmetros del PID del Eje X, se procede a realizar el procedimiento
anlogo pero para el controlador PID del Eje Y. Esto debido a que el cuadracptero no es
completamente simtrico, de modo que los parmetros varan dependiendo de la
distribucin de la masa del vehculo.
62
Los parmetros se obtuvieron con hlices de 8 pulgadas de dimetro. Cabe destacar que la
diferencia entre los parmetros del eje X y del Eje Y se debi principalmente a la forma de
la batera (dado que constituye un 30% del peso total) y como se encontraba dispuesta en el
vehculo (dado que no es simtrica).
Este proceso de obtencin de los parmetros se puede facilitar y optimizar al contar con el
equipo necesario para poder modelar el cuadracptero y poder obtener la respuesta al
escaln de cada uno de los ejes. Sin embargo, por motivo de tiempo y recursos, para la
realizacin del presente proyecto no se pudo contar con las herramientas requeridas. No
obstante, fuera del hecho que la obtencin de los parmetros no se dio de la manera
cientfica-matemtica deseada, los resultados que se obtuvieron fueron muy aceptables.
Adems se aclara que para la experimentacin que se detall anteriormente, se incluy una
proteccin en la salida de los controladores PID, de modo que la salida se sature a cierto
nivel conocido (en nuestro caso un 30% de la velocidad mxima de los motores). Esto para
evitar que por algn error de programacin o algo similar, el cuadracptero se salga de
63
control y ocurra algn accidente. La adicin de todo tipo de protecciones es una prctica
recomendada en caso de que se vaya a experimentar o realizar algn cambio del que no se
est completamente seguro de su resultado, de modo que haya seguridad de que el
cuadracptero no se va a salir de control y daarse o lastimar a alguien.
64
El cdigo de programacin del Arduino que se utiliz para realizar las pruebas se encuentra
en el Anexo2. Una vez que se ensambl por completo el prototipo, el resultado final fue el
siguiente:
65
66
67
computadora personal como con el dispositivo Android para enviar los datos de
postura y otras variables de inters para el usuario por medio del shield bluetooth.
69
4.2 Recomendaciones
Se recalca el cuidado que hay que tener al hacer las pruebas con las hlices
puestas. Se recomienda utilizar el equipo de proteccin requerido.
Documentar muy bien todos los experimentos que se realicen, y los cambios que
se le hagan a los sketches (a manera de bitcora).
Hacer buen uso de los profesores tutores para orientar la resolucin de los
problemas de alta complejidad que se presenten durante el desarrollo del
proyecto.
71
BIBLIOGRAFA
Artculos y Papers:
1.
4. Paul Pounds, Robert Mahony, Peter Corke. Modelling and Control of a QuadRotor Robot. Australian National University, Canberra, Australia.
5. Jun Li, Yuntang Li. Dynamic Analysis and PID Control for a Quadrotor. 2011
IEEE International Conference on Mechatronics and Automation.
Agosto
2010.
6. Roman Czyba. Design of Attitude Control System for an UAV Type-Quadrotor
Based on Dynamic Contraction Method. 2009 IEEE/ASME International
Conference on Advanced Intelligent Mechatronics. Singapore, 2009.
72
Libros:
10. Usher M.J. and Keating D.A. Sensors and Transducers, Segunda Edicin,
Macmillan, Inglaterra, 1996.
11. Subir Kumar, Saha. Introduccin a la Robtica. I Edicin, Mc Graw Hill, 2010.
Pginas Web:
75
APNDICES
En este apartado se debe de incluir informacin que por su naturaleza no puede ser
incluida en el desarrollo mismo del proyecto, pero que fue utilizada para su elaboracin.
{
digitalWrite(arriba, HIGH);
delay(100);
digitalWrite(arriba, LOW);
delay(100);
}
if (incomingByte == 68)//encender el led de abajo
{
digitalWrite(abajo, HIGH);
delay(100);
digitalWrite(abajo, LOW);
delay(100);
}
if (incomingByte == 82)//encender el led de izquierda
{
digitalWrite(derecha, HIGH);
delay(100);
digitalWrite(derecha, LOW);
delay(100);
}
if (incomingByte == 76)//encender el led de izquierda
{
digitalWrite(izquierda, HIGH);
delay(100);
digitalWrite(izquierda, LOW);
delay(100);
}
Serial.flush();
}
}
77
<---> ANALOG 0
<---> ANALOG 1
<---> ANALOG 2
<---> ANALOG 3
<---> ANALOG 4
PWM Motor 1
PWM Motor 2
PWM Motor 3
PWM Motor 4
<--->
<--->
<--->
<--->
DIGITAL 3
DIGITAL 9
DIGITAL 10
DIGITAL 11
78
} config;
// "w" se refiere a cada uno de los ejes, por ejemplo RwAcc[0],RwAcc[1],RwAcc[2] means RxAcc,RyAcc,RzAcc
//Variables tienen que ser globales (se utilizan en getEstimatedInclination)
float RwEst[3]; //Rw estimado de la combinacin de RwAcc y RwGyro
unsigned long lastMicros;
//Variables para la obtencion del angulo de inclinacion
unsigned long interval; //intervalo entre muestras
float RwAcc[3];
//proyeccion del vector de gravedad en cada eje, medido por acelerometro
float RwGyro[3];
//Rw obtenido de la ultima lectura del giroscopio
float Awz[2];
//Variables para uso del controlador PID. Todas tienen que tener formato de double por definicion de la funcion.
double vel_adelante, vel_derecha, vel_altura;
double adelante_sp=0.00, derecha_sp=0.00, altura_sp=0.00;
double x_angle, y_angle;
//Constantes PID
double kp=5, ki=4, kd=3;
//Constantes de ganancia de controladores PID inclinacion
double kpa=2, kia=0.0, kda=0.0; //Constantes de ganancia de controladores PID altura
//Controladores PID. Se dedica 1 controlador a cada eje de rotacin y otro para la altura. Nomenclatura PID(&Input,
&Output, &Setpoint, Kp, Ki, Kd, Direction)
79
void setup() {
static int i;
Serial.begin(115200);
//Se asignan los pines de salida para los PWM de los motores
pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);
pinMode(motor3, OUTPUT);
pinMode(motor4, OUTPUT);
//Se inicializan las salidas de los motores para activar los ESCs
analogWrite(motor1,140);
analogWrite(motor2,140);
analogWrite(motor3,140);
analogWrite(motor4,140);
delay(3000); //Valor de espera para inicializacion de los ESCs
// X,Y,Z axis
80
PID_EJE_Y.SetMode(AUTOMATIC);
PID_EJE_Y.SetOutputLimits(-vel_limit_PID, vel_limit_PID);
PID_Altura.SetMode(AUTOMATIC);
PID_Altura.SetOutputLimits(0, vel_limit_PID_altura);
PID_EJE_X.SetSampleTime(20);
PID_EJE_Y.SetSampleTime(20);
PID_Altura.SetSampleTime(100);
}
void loop() {
ComunicacionBluetooth();
time_now=millis();
//Mediciones a 100 Hz
if((time_now-time_1)>10) {
time_1=time_now;
getEstimatedInclination();
81
}
imprimir_valores_debug();
}
void imprimir_valores_debug(){
//Datos para generacin de curvas con serial chart software
time_now_debug=millis();
if((time_now_debug-time_1_debug)>50) {
time_1_debug=time_now_debug;
Serial.print(interval); //microseconds since last sample, please note that printing more data will increase interval
Serial.print(",");
Serial.print((vel_adelante*0.01)); //velocidad PID derecha
Serial.print(",");
Serial.print(x_angle); //Inclination Y axis (estimated / filtered)
Serial.println("");
}
/*
//Data para debug de la velocidad de los motores
time_now=millis();
if((time_now-time_1)>200) {
time_1=time_now;
Serial.println("Xaxis ");
Serial.println(x_angle, DEC);
Serial.println("Yaxis ");
Serial.println(y_angle, DEC);
Serial.println(" ");
Serial.println("Vel1");
Serial.println(vel1, DEC);
Serial.println("Vel2");
Serial.println(vel2, DEC);
Serial.println("Vel3");
Serial.println(vel3, DEC);
Serial.println("Vel4");
Serial.println(vel4, DEC);
82
Serial.print(", ");
Serial.print("YaxisRaw: ");
Serial.print(analogRead(1));
Serial.print(", ");
Serial.print("ZaxisRaw: ");
Serial.print(analogRead(2));
Serial.print(", ");
Serial.print("Zero Level: ");
Serial.print(config.zeroLevel[0]);
Serial.println("");
}
*/
}
void actualizar_velocidades(){
vel1= general_vel + vel_adelante + vel_altura;
vel2= general_vel + vel_derecha + vel_altura;
vel3= general_vel - vel_adelante + vel_altura;
vel4= general_vel - vel_derecha + vel_altura;
if(Activado==0){
//Apaga los motores
analogWrite(motor1,140);
analogWrite(motor2,140);
analogWrite(motor3,140);
analogWrite(motor4,140);
}
if(Activado==1){
//Prende los motores
analogWrite(motor1,vel1);
analogWrite(motor2,vel2);
analogWrite(motor3,vel3);
analogWrite(motor4,vel4);
}
}
//
//
83
//Comando para los setpoints de inclinacion. Recibe los comandos del joystick de la aplicacion.
if (incomingByte1[2]==43){
if(incomingByte1[3]<=5) derecha_sp=0;
else derecha_sp= (incomingByte1[3]*sensibilidad_control)/125;
}
if (incomingByte1[2]==45){
if(incomingByte1[3]<=5) derecha_sp=0;
else derecha_sp= (-1*incomingByte1[3]*sensibilidad_control)/125;
}
84
}
}
}
85
//Rz is too small and because it is used as reference for computing Axz, Ayz it's error fluctuations will amplify leading
to bad results
//in this case skip the gyro data and just use previous estimate
for(w=0;w<=2;w++) RwGyro[w] = RwEst[w];
}else{
//get angles between projection of R on ZX/ZY plane and Z axis, based on last RwEst
for(w=0;w<=1;w++){
tmpf = getInput(3 + w);
//get current gyro rate in deg/ms
tmpf *= interval / 1000.0f;
//get angle change in deg
Awz[w] = atan2(RwEst[w],RwEst[2]) * 180 / PI; //get angle and convert to degrees
Awz[w] += tmpf;
//get updated angle according to gyro movement
}
//estimate sign of RzGyro by looking in what qudrant the angle Axz is,
//RzGyro is pozitive if Axz in range -90 ..90 => cos(Awz) >= 0
signRzGyro = ( cos(Awz[0] * PI / 180) >=0 ) ? 1 : -1;
//reverse calculation of RwGyro from Awz angles
for(w=0;w<=1;w++){
RwGyro[0] = sin(Awz[0] * PI / 180);
RwGyro[0] /= sqrt( 1 + squared(cos(Awz[0] * PI / 180)) * squared(tan(Awz[1] * PI / 180)) );
RwGyro[1] = sin(Awz[1] * PI / 180);
RwGyro[1] /= sqrt( 1 + squared(cos(Awz[1] * PI / 180)) * squared(tan(Awz[0] * PI / 180)) );
}
RwGyro[2] = signRzGyro * sqrt(1 - squared(RwGyro[0]) - squared(RwGyro[1]));
}
//combine Accelerometer and gyro readings
for(w=0;w<=2;w++) RwEst[w] = (RwAcc[w] + config.wGyro* RwGyro[w]) / (1 + config.wGyro);
normalize3DVector(RwEst);
}
firstSample = 0;
}
void normalize3DVector(float* vector){
static float R;
R = sqrt(vector[0]*vector[0] + vector[1]*vector[1] + vector[2]*vector[2]);
vector[0] /= R;
vector[1] /= R;
vector[2] /= R;
}
float squared(float x){
return x*x;
}
//For accelerometer it will return g (acceleration) , applies when xyz = 0..2
//For gyro it will return deg/ms (rate of rotation) , applies when xyz = 3..5
float getInput(char i){
static float tmpf;
//temporary variable
tmpf = an[i] * VDD / 1023.0f; //voltage (mV)
tmpf -= config.zeroLevel[i]; //voltage relative to zero level (mV)
tmpf /= config.inpSens[i]; //input sensitivity in mV/G(acc) or mV/deg/ms(gyro)
tmpf *= config.inpInvert[i]; //invert axis value according to configuration
return tmpf;
}
86