Professional Documents
Culture Documents
Resumen
Title: Analysis and design of data acquisition systems and wireless control for
unmanned aerial vehicles.
Author: Jorge Polo Alonso
Director: Ramn Casanella Alonso
Date: June, 3rd 2013
Overview
NDICE
INTRODUCCIN Y OBJETIVOS...................................................................... 1
CAPTULO 1. UNIDAD DE PROCESAMIENTO............................................. 4
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
El ADC .............................................................................................................................14
1.8.1 Anlisis del ADC del ATtiny84 .............................................................................15
1.9
2.2
2.3
2.4
Infrarrojos ........................................................................................................................31
2.4.1 Teora ..................................................................................................................31
2.4.2 Eleccin del emisor ..............................................................................................31
2.4.3
2.4.4
2.4.5
2.4.6
2.5
Motores ............................................................................................................................35
2.5.1 Driver para motores .............................................................................................37
3.2
CAPTULO 4. PROGRAMACIN................................................................. 43
CAPTULO 5. REPRESENTACIN DE DATOS .......................................... 46
5.1
5.2
5.3
5.4
5.5
INTERFAZ ........................................................................................................................49
Introduccin y objetivos
INTRODUCCIN Y OBJETIVOS
Este trabajo de final de carrera se presenta con el objetivo de crear un sistema
de adquisicin y actuacin; orientado al entorno de los vehculos areos no
tripulados y concretamente a los MAVs, siglas de Micro Air Vehicles.
Un MAV es una aeronave no tripulada de reducidas dimensiones que viene
definida por un peso no superior a 5 Kg y un alcance inferior a los 10 Km [1].
Este tipo de aeronave se engloba dentro de los vehculos areos no tripulados
o UAVs, Unmanned Air Vehicles o popularmente conocidos como drones,
aunque este ltimo trmino, normalmente se aplica exclusivamente al campo
militar o cuando el vehculo vuela de forma autnoma, sin necesidad de control
de un piloto.
El uso de un MAV es muy diverso, en este sentido podemos encontrar desde
aplicaciones militares hasta proyectos de investigacin basados en inteligencia
artificial. En la figura 0.1 podemos ver dos tipos de MAVs. El primero de ellos,
imagen de la izquierda, corresponde al dispositivo Black Hornet Nano,
dispositivo de reconocimiento orientado al apoyo de la infantera. El segundo,
imagen de la derecha, corresponde a un MAV desarrollado por el Instituto de
Tecnologa de Massachusetts (MIT, en sus siglas en ingls) y tiene como
objetivo el estudio y el desarrollo de aplicaciones basadas en visin por
computador.
2 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
como una base para ser implementado dentro de una pequea aeronave
destinada a la docencia, aunque el diseo y construccin de esta plataforma no
sea abordado en este proyecto.
En definitiva este proyecto pretende dar soporte a cualquier estudiante de
ingeniera, aportando las herramientas necesarias para desarrollar una base en
el estudio de sistemas de adquisicin y control, con especial nfasis en el
diseo de la unidad de control, para que despus cada uno pueda adaptar lo
aprendido a sus necesidades.
Como se ha definido anteriormente, una de las partes principales del sistema
tiene como objetivo principal el anlisis y el diseo de un sistema de
adquisicin de datos o SAD. Ms conocidos con sus siglas en ingls DAS, Data
Adquisition System, este tipo de sistemas llevan a cabo una labor
indispensable en la gran mayora de campos de la ingeniera, son los
encargados de obtener y representar la informacin que proviene de los
sensores. Los sensores son los encargados de extraer informacin de una
magnitud fsica en concreto cmo puede ser: la velocidad, el rumbo, la
temperatura, etc.
El propsito de este proyecto de final de carrera es el de analizar e
implementar un sistema de adquisicin que adems tambin sea capaz de
controlar actuadores, concretamente motores. El sistema tiene que poder
trabajar de forma inalmbrica, utilizando una estacin base para la
comunicacin con el ordenador y una estacin remota capaz de adquirir datos
de diferentes sensores y controlar la actuacin de la aeronave.
Siempre que se empieza el desarrollo de un sistema, se tiene que tener en
cuenta una serie de criterios, llamados parmetros de diseo o lo que es lo
mismo, establecer los requisitos que el sistema debe cumplir. Para este
proyecto se han establecido una serie de requisitos previos. El primero de
estos requisitos, es que el sistema debe permitir familiarizarse con modelos
bsicos de acondicionamiento y calibracin de sensores. El segundo criterio es
el precio, el sistema debe ser lo ms econmico posible. El tercero es que se
disee un sistema de forma modular o lo que es lo mismo, que el sistema
pueda ser divido conceptualmente en partes individuales. El cuarto es que las
herramientas se diseen a travs de la plataforma que nos ofrece la comunidad
Arduino. El quinto es que los componentes de sistema deben ser de fcil
adquisicin; por lo que se ha usado una nica fuente de distribucin de
componentes, que ha sido la empresa Farnell o cualquiera de sus
distribuidores asociados. El sexto y ltimo criterio, es que el sistema se englobe
en un entorno destinado a ser embarcado en vehculos areos no tripulados,
por lo que un criterio bsico es el espacio y el peso que ocuparn los
componentes del sistema.
Con referencia al sexto y ltimo requisito, es importante concretar que los
componentes utilizados en este proyecto (condensadores, resistencias, chips,
etc...) no sern con encapsulado SMD o similares, esto aunque parezca una
contradiccin a la hora de conseguir el mnimo peso y espacio posible, se hace
porque este proyecto es sobre todo un proyecto con un fin didctico basado en
Introduccin y objetivos
4 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
1.1
Eligiendo la plataforma
ATmega328P-PU
8 bits
16 MHz
5V
32 KB
2 KB
Memoria EEPROM
Pines Digitales
Pines PWM
Pines Analgicos
Resolucin ADC
Intensidad salida de Pines
1 KB
14
6
6
10 bits
40 mA
Unidad de procesamiento
1.2
Introduccin a Arduino
1.3
Arquitectura de Arduino
Para conocer mejor las posibilidades que nos ofrece Arduino debemos conocer
un poco ms su arquitectura, esto significa entender las entradas y salidas que
podemos utilizar para realizar nuestros proyectos.
6 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
Una de las ventajas que nos ofrece Arduino es que todos los pines que
podemos utilizar estn numerados haciendo as ms fcil interactuar con la
plataforma y facilitndonos as la forma de programar.
Primero de todo tenemos dos grandes grupos de pines, los pines digitales y los
pines analgicos.
Los pines analgicos son claves en nuestro proyecto ya que son los que estn
conectados al conversor ADC. En Arduino Uno tenemos 6 pines analgicos
numerados desde el A0 hasta el A6. Cada uno de estos pines es capaz de
digitalizar una seal de entrada entre los 0V y VCC, convirtiendo el voltaje de
entrada en un valor numrico que va desde el cero hasta el 1023, este rango
de valores corresponde a la resolucin del ADC que es de 10bits.
Estos pines nos sern de gran utilidad para transformar la seal procedente del
sensor a una informacin muy fcil de procesar.
El segundo grupo de pines son los digitales, estos pines nos sirven tanto como
de entrada como de salida, esto quiere decir que mediante la programacin
podemos poner el pin con una tensin de 0V que corresponde al nivel bajo o
LOW o poner una tensin de 5V para obtener un nivel alto o HIGH. Como
vemos con cualquiera de estos pines podemos realizar infinidad de circuitos
basados en sistemas binarios, desde usar los pines como interruptores a enviar
seales digitales enviando pulsos de unos y ceros. Los pines digitales en
Arduino Uno estn numerados del 0 al 13.
Una caracterstica muy til, sobretodo, para el control de motores o actuadores
son los pines PWM, estos pines corresponde a los pines digitales 3, 5, 9, 10 y
11 y tienen la ventaja que pueden ser modulados en frecuencia, de momento
nos basta con saber que con estos pines seremos capaces de sacar voltajes
intermedios entre 0V y 5V. Por ejemplo con estos pines podramos graduar la
velocidad de un pequeo motor de corriente continua. En la figura 1.2 vemos
una imagen con la distribucin de los pines comentados en la placa.
Unidad de procesamiento
1.4
Una vez vista brevemente la arquitectura, y que somos capaces de situar los
pines en la placa, veamos un poco como se programa con Arduino.
Como ya se ha comentado a lo largo del captulo, Arduino est basado en un
microcontrolador Atmel, la ventaja de Arduino es que nos permite programar
las salidas que hemos comentado anteriormente con una gran facilidad,
aunque en este proyecto no se entrar en detalle a niveles de programacin, se
vern unos pequeos ejemplos que hagan entender a una persona sin
conocimientos previos, lo sencillo que es programar un microcontrolador
mediante esta plataforma.
Lo primero que se debe hacer es conectar Arduino mediante un USB a nuestro
ordenador e instalar los drivers que nos proporciona la comunidad. A partir de
ah y a travs del programa que tambin se proporciona, se puede empezar a
programar el microcontrolador. Existen infinidad de pginas donde
encontraremos programas para realizar con Arduino, pero para empezar,
Arduino te proporciona ejemplos bsicos para realizar pruebas con tu
plataforma, entre los ejemplos ms bsicos esta Blink, que nos permite
encender el led integrado en la placa, este ejemplo se incluye en la figura 1.3.
Todas las instrucciones que se pueden usar en arduino se pueden consultar en
la siguiente direccin: http://arduino.cc/es/Reference/Extended
1.4.1
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
//
//
//
//
Salida
Tiempo
Salida
Tiempo
del Pin a
de espera
del Pin a
de espera
VCC
-> LED ON
1 segundo
0V
-> LED OFF
1 segundo
8 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
1.5
Bootloader Arduino
1.6
Unidad de procesamiento
10 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
1.6.1
Como vemos que los dos microcontroladores, son iguales, se programan igual,
ahora mismo la eleccin es trivial y depender del nmero de pines a utilizar,
pero llegados a este punto empezaremos utilizando el ATtiny84.
La explicacin es sencilla, este tipo de microcontroladores, pueden trabajar a
diferentes frecuencias (1, 8, 16 o 20 MHz), como facilidad en el uso entre
Arduino UNO y el ATtiny se ha elegido trabajar a la misma frecuencia de
operacin, 16 MHz. Para adaptar el ATiny a esta frecuencia de trabajo existen
muchas maneras, incluso se puede hacer por software, pero como simplicidad,
lo ms sencillo es incorporar un cristal u oscilador externo que nos genere 16
MHz.
Se ha escogido el ATtiny84 ya que si usamos un cristal externo para adaptar la
frecuencia de uso, con el ATtiny85 nos quedaran solo 4 pines para usar, ya
que dos pines son utilizados para incorporar el cristal.
El acondicionamiento de cmo adaptar el ATtiny84 a nuestras necesidades
adems de una breve introduccin a los fuses se encuentra explicado en el
anexo 1, Acondicionando el ATtiny84,
Unidad de procesamiento
1.6.2
11
1.7
12 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
Unidad de procesamiento
13
Ahora solo tenemos que abrir un programa por ejemplo Blink y elegir el pin de
salida, la numeracin de los pines en esta librera corresponde a la imagen 1.7.
/* Asignamos a una variable led el pin que queremos usar como salida
digital. PIN REAL -> PA0 */
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
Salida
Tiempo
Salida
Tiempo
del Pin a
de espera
del Pin a
de espera
VCC
-> LED ON
1 segundo
0V
-> LED OFF
1 segundo
14 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
1.8
El ADC
Valor
10 bits
0 a VCC
65 a 260 s
8
1 LSB
Unidad de procesamiento
1.8.1
15
(1.1)
(1.2)
16 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
1.9
1.9.1.1
Precio
17,12 *
Conversor de carga
Unidad de procesamiento
17
18 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
Descripcin
Unidad de procesamiento
1.10
19
Descripcin
Cant.
1
1
2
1
1
Precio
Unitario
0 *
3,010
0,181
0,55
7,497
11.419
Fig. 1.13 Acondicionamiento del ATtiny84 para uso remoto, ver NOTA.
NOTA: En delante en la memoria, para facilitar la representacin de cada
mdulo la seal +5V, corresponder a VCC que ser la salida que nos
proporciona el conversor de carga MAX756.
20 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
2.1
2.1.1
Teora de acondicionamiento
Definicin de sensor
2.1.2
21
[20](2.1)
[20](2.2)
2.1.3
22 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
2.2
Sensor de temperatura
2.2.1
Teora
23
Cabe destacar que los sensores de temperatura resistivos presentan una muy
buena exactitud, siendo mayor en los termistores que en los RTD, adems de
esto los termistores presentan unas caractersticas muy interesantes, que
veremos a continuacin y que pueden ser muy tiles en futuros proyectos.
Dentro de los termistores, los NTC pueden ser usados en circuitos como
limitadores de corriente, esto representa que el NTC puede actuar como
elemento de proteccin poniendo el NTC en serie con el circuito. Esto se basa
en que la resistencia al principio en este elemento es alta de manera que la
corriente se ve limitada, protegiendo al circuito en serie, una vez el NTC se ha
estabilizado permite el paso de una corriente de una manera estable.
Los PTC en cambio pueden ser usados como elementos de proteccin en
sistemas de motores ya que estos al principio presentan una baja resistencia y
permiten pasar una corriente elevada en el arranque de los motores y despus
al paso del tiempo, cuando se calienten debido a la intensidad de circulacin la
resistencia del elemento aumenta de forma exponencial y deja pasa un valor
muy pequeo de intensidad. [20][23][25]
2.2.1.2
Sensores generadores
24 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
2.2.1.3
Sensores integrados
2.2.2
Valor
5 a 45 C
0a5V
Mejor Posible
Menor Posible
Menor Posible
Como podemos observar, en este primer sensor los factores de diseo son
bastantes simples, lo que es claramente intencionado, para intentar una
adaptacin al ADC lo ms precisa posible, esto como se ver ms adelante no
ser posible en el resto de sensores a acondicionar en este proyecto.
Para la eleccin del sensor, nos basaremos en una comparativa entre los
diferentes sensores que podemos encontrar, esta comparativa se puede ver en
la tabla 2.2.
Cmo eleccin se ha escogido el LM35DZ, para realizar este proyecto. La
razn de escoger este sensor a favor de otro, es por su linealidad y su bajo
coste. Cabe destacar que como una segunda opcin o alternativa, se hubiese
escogido un sensor resistivo NTC, por su bajo coste, y aunque este tipo de
sensor no se ha escogido por no ser lineal, se puede linealizar basndose en
diversas configuraciones de pseudo-puentes o puente de wheatstone, por lo
que para otros proyectos, donde el precio sea ms crtico se puede anteponer
a sensores integrados.
25
2.2.3
Producto / REF
TLC2272AIP
Tipo Amplificador
Rail-to-Rail, Low Noise.
Operacionales
integrados
2
Precio
2,48
Para calcular la resolucin terica que tendr nuestro sistema podemos utilizar
la frmula del margen dinmico:
(2.5)
26 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
Para conseguir una ganancia 11, lo nico que tenemos que hacer es conseguir
una relacin R2/R1 de 10. No se ha considerado ajustar la salida menor (5),
hasta 0 V ya que sera necesario incrementar el nmero de elementos del
sistema sin conseguir un aumento realmente significativo de resolucin.
La adaptacin de nuestro sensor de temperatura, se representa en la figura
2.3. La salida de este sensor se ha asignado al pin PA0 del ATtiny84, en el
esquemtico llamado ADC0.
2.2.4
27
Calibracin
2.2.5
Resumen
Tabla 2.4. Tabla de los componentes del sensor de temperatura
Producto / REF/Link
Descripcin
LM35DZ
Sensor de Temperatura
TLC2272AIP
Amplificador Operacional
MCRR25104X7RK0050 Cond. cermico 100 nF 50 V
MCF 0.25W 1M
Resistencia 1M 1/4W
MCF 0.25W 1K
Resistencia W 1K
MCF 0.25W 10K
Resistencia W 10K
Coste completo del sensor de temperatura
Cant.
1
1
1
1
1
1
Precio
Unitario
1,89
2,48
0,330
0,018
0,018
0,018
4,754
28 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
2.3
2.3.1
Teora
Los sensores de efecto Hall, son sensores que son capaces de medir campos
magnticos en su rea de medicin. Este efecto se basa en que una corriente
que circula en un conductor y que est inmersa dentro de un campo magntico,
perpendicular a la misma, crea un desplazamiento de los portadores de carga,
estos portadores se agrupan en los lados del conductor o semiconductor y
aparece una diferencia de potencial que puede ser medida y es proporcional al
campo magntico.
2.3.2
En la eleccin del sensor de este sensor, se han elegido dos compaas lderes
en la fabricacin de este tipo de sensores, Allegro Microsystems y
Honeywell. La comparativa de los diferentes tipos de sensores, se representa
en el anexo 4, Comparativa sensores efecto Hall, debido al tamao de la
tabla comparativa.
La eleccin en este sensor ha sido el A1301, que presenta una sensibilidad
menor que el SS495A1 pero tiene un coste inferior. La sensibilidad de este
sensor es de 2.500 mV/G. Cmo nota al lector, cabe destacar que el sensor
ms apropiado para los fines de este proyecto sera el SS494B, pero
lamentablemente este sensor no estaba disponible en la web de Farnell, lo
que no se escogi para no contradecir uno de los requisitos del proyecto, el de
la fcil disponibilidad.
2.3.3
Acondicionamiento
29
Lo que nos facilita enormemente el trabajo, ya que V + puede ser la salida del
sensor, y V- un divisor de voltaje que presente el mismo offset del sensor, por lo
que a la salida solo tendremos amplificada la seal del campo magntico
detectado.
Debido a que si realizamos un divisor de tensin con dos resistencias,
podemos inducir a un error importante en la salida si este divisor no presenta el
50% exacto de nuestro VCC, se ha decidido poner un potencimetro en la
entrada V-, para calibrar manualmente la salida del divisor y as ajustar el
mximo posible la salida del sensor.
En cuanto a la ganancia del operacional, deberemos trabajar en el orden de
ganancia 1000. Un pequeo resumen del estudio realizado para la adaptacin
de este sensor se encuentra en el anexo 3, Resultados experimentales. Para
realizar las pruebas se ha conectado el circuito representado en la figura 2.5
conectado a la salida A0 del Arduino UNO y un pequeo programa en
LabVIEW que representaba el histograma de las medidas que iba adquiriendo
Arduino. Dichos programas se pueden encontrar en el anexo 3, Resultados
experimentales.
30 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
2.3.4
Calibracin
2.3.5
Resumen
Tabla 2.5. Tabla de los componentes del sensor de efecto Hall
Producto / REF/Link
Descripcin
A1301EUA-T
Sensor de Efecto Hall
INA122PA
Amplificador Instrumentacin
MCCFR0W8J0221A20
Resistencia 1/4 W 220
3306P-1-103 *
Potencimetro 10K
MCRR25104X7RK0050 Cond. cermico 100 nF 50 V
MCF 0.25W 1M
Resistencia 1M 1/4W
Coste completo del acondicionamiento del sensor de
efecto Hall
Cant.
1
1
1
1
1
1
Precio
Unitario
1,61
6,30
0,006
0,38
0,330
0,018
8,644
2.4
2.4.1
31
Infrarrojos
Teora
2.4.2
32 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
2.4.3
En la eleccin del receptor, se ha optado por elegir entre los diferentes tipos de
receptores infrarrojos, eligiendo finalmente la opcin del fotodiodo, pero no del
componente propio, ya que a travs de prueba y ensayo se ha comprobado
que la luz artificial puede aceptar en su comportamiento, sino que finalmente se
ha elegido entre los dispositivos encapsulados conocidos, por su nombre
receptores infrarrojos, pero que se basan en los fotodiodos, la peculiaridad de
estos dispositivos es que trabajan a una frecuencia determinada, normalmente
36 o 38 kHz. Estos dispositivos, son lo que tienen la mayora de dispositivos
para recibir seales infrarrojas, ya que al trabajar a una frecuencia determinada
no se ven afectados por la luz artificial.
Tabla 2.7 Comparativa de receptores infrarrojos
Producto /
Distancia
Angulo de
Frecuencia
Precio
REF
mxima
recepcin
TSOP4P38
38 kHz
45 m
45
0,50
TSOP38338
38 kHz
45 m
45
0,56
TSOP38436
36 kHz
45 m
45
0,56
Filtro previo de la bsqueda: Receptores Infrarrojos, Precio mnimo posible
En este caso la eleccin viene condicionada por el menor precio posible, ya
que estos sensores son capaces de trabajar con un espectro de infrarrojos
variables. Una de las empresas lderes de estos dispositivos es la empresa
VISHAY, las diferencias entre los dispositivos son mnimas, por lo que para
nuestras necesidades, la eleccin ms econmica es la mejor opcin, en este
caso se ha elegido el sensor TSOP4P38.
2.4.4
33
Acondicionamiento
34 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
2.4.5
Calibracin
2.4.6
Resumen
Tabla 2.8. Tabla de los componentes del sensor de infrarrojos
Producto / REF/Link
Descripcin
OPE5685
Emisor de infrarrojos
TSOP4P38
Receptor de infrarrojos
BC548BZL1G
Transistor NPN
MCF 0.25W 1K
Resistencia W 1K
MCF 0.25W 10K
Resistencia W 10K
MCCFR0S2J0101A20
Resistencia W 100
Coste completo del sistema de infrarrojos
Cant.
2
2
4
4
2
2
Precio
Unitario
0,680
0,50
0,29
0,018
0,018
0,012
3,652
2.5
35
Motores
36 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
TIPO
NPN
Ic
800mA
G,hfe
160
Precio
0,81
37
Descripcin
BC337-25ZL1G
Transistor NPN 800mA
MCF 0.25W 1K
Resistencia W 1K
1N4148
Diodo de proteccin 150mA
Coste completo del acondicionamiento de 1 motor
2.5.1
Cant.
6
6
6
Precio
Unitario
0,81
0,018
0,087
5,490
Descripcin
L293N
Motor Driver 1,2 A
1N4148
Diodo de proteccin 150mA
Coste completo del acondicionamiento de motores
Cant.
1
6
Precio
Unitario
3,13
0,087
3,652
38 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
Comunicaciones
39
CAPTULO 3. COMUNICACIONES
3.1
Mensaje
0
0
1
Informacin
X
X
X
X
Mensaje
0
1
0
1
1
0
1
0
0
0
1
1
Tipo de informacin
Envo de informacin sensor temperatura
Envo de informacin sensor efecto hall
Envo de informacin sobre motor Principal 1
Envo de informacin sobre motor Principal 2
Envo de informacin sobre motor Cola direccin 1
Envo de informacin sobre motor Cola direccin 2
40 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
Comunicaciones
3.2
41
3.2.1
Arduino UNO, se comunica con el ordenador mediante USB. USB son las
siglas de Universal Serial Bus, este es un protocolo estndar de
comunicaciones va serie. Bsicamente y sin entrar en muchos detalles, un
USB consta de 4 terminales, un pin de alimentacin, un pin de masa y dos
pines de comunicacin, esta configuracin se representa en la figura 3.3.
3.2.2
El protocolo RS232
Aunque es cierto que Arduino UNO recibe informacin a travs del USB, en
verdad lo que hace el driver o controlador de Arduino es emular un puerto
COM, Por qu? Por facilidad en el diseo del driver, por eso cuando elegimos
donde est conectada nuestra placa Arduino seleccionamos un puerto COM
ms un nmero y no un USB ms un nmero. Y por qu no sale directamente
una salida DB9, que es la salida RS232? Porque esta salida, ya no est
presente en la mayora de ordenadores, por eso seguramente, y esto es un
comentario personal, se desarroll una interfaz USB mediante un ATmega82U
intermedio.
Si se quiere entender ms acerca de este protocolo, se recomienda visitar la
siguiente direccin: http://www.cursomicros.com/avr/usart/estandar-rs232.html
42 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
Lo que s que necesitamos saber cules son las propiedades que representan
un puerto RS232, para poder establecer correctamente la comunicacin, si
alguno de los parmetros que veremos a continuacin no se adapta entre los
sistemas de recepcin y transmisin, existirn errores en el envo de los datos.
Los parmetros para establecer una comunicacin serie RS232 son los
siguientes: nombre del puerto, velocidad de transmisin, nmero de bits de
datos, paridad, bits de parada y control de flujo.
El nombre del puerto, como su nombre indica, ser elegir el puerto en el que
est conectado nuestro dispositivo (COM1, COM2, COM3, etc.). La velocidad
de transmisin, Baud Rate, se expresa en baudios. Un baudio es una unidad
de velocidad que indica cuantos smbolos se han enviado por segundo, un
smbolo es un cantidad determinada de bits de informacin, la cantidad de bits
depende de la modulacin, pero en RS232, un smbolo corresponde a un bit,
por lo que Baut Rate coincide con el Bit Rate, velocidad de transmisin de bits.
El nmero de bits de datos, es la cantidad de bits que se envan, normalmente
se enva un byte, 8 bits. La paridad es un bit que se enva opcionalmente para
detectar la deteccin de errores en la transmisin, normalmente la paridad es
nula, lo que significa que no enviamos el bit. Los bits de parada son unos
lgicos que indica que indican el final de la transmisin, normalmente este valor
ser igual a 1. Los bits de control de flujo son bits para el control de la
informacin, este control se puede hacer mediante hardware o software pero lo
ms comn es que no haya control de flujo.
Ahora que somos capaces, a grandes rasgos, de entender cmo se comunica
Arduino con el ordenador, podemos ver una de las ventajas de trabajar de esta
manera. La mayor ventaja que tenemos con este tipo de protocolo serie, es que
existen libreras para casi todos los lenguajes de programacin, por no decir
todos, por lo que nos facilitar la tarea de exportar nuestra representacin de
datos a otro tipo de plataformas (matlab, visual C, python, etc.) y por eso solo
se ha elegido una nica plataforma (LabVIEW) para la representacin de la
informacin, ya que LabVIEW nos proporciona infinidad de funciones para el
control de seales, todo de una manera visual, lo que es ms intuitiva y fcil de
usar que un lenguaje de programacin convencional.
Programacin
43
CAPTULO 4. PROGRAMACIN
La programacin de los microcontroladores, tanto del ATtiny84 como del
ATmega328, presente en el Arduino UNO; se ha realizado mediante el lenguaje
de programacin propio de Arduino. Los programa ATiny.ino y
Arduino_UNO.ino se puede encontrar en el anexo 5, Programacin.
En este apartado se entrar a detallar el cdigo de una manera muy genrica
para dar al lector una idea conceptual de la programacin realizada en este
proyecto, de manera que se entienda cmo estn programados ambos
microcontroladores.
void loop() {
enviarMensaje();
delay(50);
recibirMensaje();
delay(50);
}
44 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
// *
// **
// ***
}
* Lmita la velocidad de transmisin
** Si el pulso dura ms de 500 microsegundos, es un 1.
*** Imprime en binario el mensaje en el Serial.
=
=
=
=
analogRead(pinTemp);
57344; // "111" Cabecera
1024;
// "001" Temperatura
word(infoTEMP);
Programacin
45
int value = 0;
for(int i=15;i>=0;i--)
{
value = bitRead(mensaje_a_Transmitir,i);
if (value == 0)
enviarPulsoBajo();
else
enviarPulsoAlto();
}
Fig. 4.5 Mtodo utilizado para enviar informacin
Como vemos la programacin en ambos microcontroladores es muy parecida,
lo que es de gran ayuda, ya que podemos reutilizar partes del cdigo.
Otra parte muy interesante es cmo codificar la informacin recibida en el
ATtiny en una respuesta fsica en el actuador. Bsicamente lo que hacemos es
recibir el mensaje, igual que lo hacemos con el Arduino UNO, y una vez
recibido el mensaje lo dividimos en tres partes: la cabecera, el tipo de mensaje
y la informacin que lleva el mensaje. No entraremos en cmo partimos la
cadena, ya que el cdigo se puede consultar en los anexos, sino lo importante
es cmo hacemos para variar la informacin de los actuadores, en nuestro
caso nuestro motores. La figura 4.5 nos muestra cmo a travs de un simple
switch podemos variar la variable Z, que es la que controla el PWM del motor1.
...
Z = int(informacion);
elegir = int (tipoMensaje);
cabeceraOK = int (cabecera);
if (cabeceraOK == 7)
{
switch (elegir)
{
case 4: // 100
if (Z != motor1ANTERIOR)
{
analogWrite(motor1, Z);
motor1ANTERIOR = Z;
}
break;
...
Para finalizar con este apartado, comentar que el programa se ha creado bajo
la licencia GNU, para que puede ser utilizado y modificado libremente por
cualquier persona, solo con la condicin de utilizar en sus programas la misma
licencia. Para no extenderse en este apartado se han puesto comentarios en
todo el programa, para una fcil lectura del mismo y poder seguir el cdigo con
unos conocimiento muy bsicos de programacin.
46 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
5.1
Representacin de DATOS
47
usuario podr modificar el mdulo VISA SERIAL admite dos entradas que
sern muy tiles en nuestro proyecto, la entrada, carcter de final de lnea, y
que carcter queremos que sea el carcter de final de lnea. En la figura 5.1 se
puede ver como una entrada est configurada en True, esto quiere decir que
el final de lnea se dar cuando en el serial aparezca un salto de lnea, esta
configuracin, es 10, en cdigo ASCII.
5.2
Unos de los problemas que nos podemos encontrar si somos nuevos usuarios
de Labview es su configuracin de errores, para facilitar el uso de la interfaz
grfica se ha considerado detallar los errores ms comunes y los que han ido
apareciendo cuando se realizaba la verificacin del programa.
Bsicamente se ha hecho una pequeo indicador, comparando los errores que
van apareciendo en el programa, con los errores conocidos, por si al detectarse
un error conocido, se imprime por pantalla un mensaje de error ms detallado y
ms concreto, de lo que lo hara Labview.Los errores se expresan en la tabla
5.1.
Tabla 5.1 Errores conocidos y tipificados en el programa.
Error
-1073807343
-1073807202
-1073807246
5.3
Explicacin
Puerto COM, no vlido.
Faltan los drivers VISA
Puerto COM en uso.
48 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
para ser representada, esto se hace muy fcilmente mediante un bucle for, y
nuevamente dividiendo la string, esta vez de uno en uno, y comparando cada
valor con un 1, para que se introduzca por medio de un indexado a un
convertidor de booleano a nmero decimal, me explico, lo que hace este parte
del cdigo es coger una cadena de nmeros, y separarlos uno a uno, si el
nmero es un 1 entonces tendr un valor true, de lo contrario ser false, el
indexado lo que hace es guardarnos esa informacin hasta que acaba el bucle,
por lo que cuando acabe, tenemos una serie de valores cierto y falso que
pueden ser convertidos fcilmente a un nmero digital, mediante una mdulo
llamado Boolean Array to number, finalmente transformamos el nmero en
decimal y ya lo podemos representar por pantalla.
5.4
Representacin de DATOS
49
escritura se realiza con muy pocos elementos, ya que el mdulo Build text nos
permite entrar una nmero y el mismo lo transforma a binario y adems lo saca
como cadena de caracteres.
5.5
INTERFAZ
50 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
CAPTULO 6. CONCLUSIONES
Se han conseguido alcanzar los objetivos propuestos al inicio del proyecto. El
sistema desarrollado cumple las expectativas iniciales, de ser un sistema de
adquisicin y control que trabaje de forma inalmbrica, econmico y donde se
ha tratado de facilitar su comprensin para que puede ser de utilidad como
sistema didctico que permita el aprendizaje bsico de los sistemas de
adquisicin y actuacin.
Se han adaptado con xito los sensores de temperatura y posicin, como parte
del sistema de adquisicin de datos. Adems se han acondicionado los
motores como parte del sistema de actuacin del sistema.
En lo referente a los microcontroladores, pieza central del proyecto, se ha
aprendido desde programar los fuses internos, hasta la realizacin de
programas en Arduino para controlar el sistema inalmbrico.
En el apartado de comunicaciones, el protocolo desarrollado, aunque bsico
cumple correctamente su cometido. Adems el protocolo creado es muy
sencillo de implementar, y se puede adaptar a diferentes necesidades.
Cmo ltimo punto, destacar el potencial que tienen las herramientas de
Arduino y LabVIEW para la realizacin de todo tipo de proyectos, ya que
ambos unidos crean un entorno de desarrollo sencillo y eficiente, adems de
ser plataforma con una comunidad que ofrece soporte de muy buena calidad.
Para lneas futuras de desarrollo se deja la mejora de los sistemas adquisicin,
aadiendo acelermetros y giroscopios, la miniaturizacin de los mdulos a
elementos SMD, que aumentaran notablemente la posibilidad de embarcar el
sistema en un MAV, y poder ampliar el sistema de comunicacin inalmbrico a
radio-frecuencia para aumentar el alcance de transmisin.
En lo que se refiere a la ambientalizacin, este proyecto se enmarca a favor de
un desarrollo sostenible, utilizando elementos que cumplen la normativa RoHS,
Restriction of Hazardous Substance, normativa europea recogida en la
Directiva 2002/96/CE que tiene como objetivo la restriccin de sustancias
peligrosas en equipos electrnicos.[33]
Bibliografa y Referencias
51
BIBLIOGRAFA Y REFERENCIAS
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
52 Diseo e implementacin de un sistema de adquisicin y actuacin inalmbrico para vehculos areos no tripulados
[15]
[16]
[17]
[18]
[19]
[20]
[21]
[22]
[23]
[24]
[25]
[26]
Teora de infrarrojos:
https://en.wikipedia.org/wiki/Infrared
[27]
[28]
Definicin de fotodiodo:
http://es.wikipedia.org/wiki/Fotodiodo
[29]
Bibliografa y Referencias
[30]
[31]
[32]
[33]
Definicin de RoHS:
http://es.wikipedia.org/wiki/RoHS
53
ANEXOS
NDICE
INTRODUCCIN ............................................................................................... 1
ANEXO 1.
1.1
ANEXO 2.
2.1
2.2
El transistor ........................................................................................................................ 7
2.3
Filtros .................................................................................................................................. 9
ANEXO 3.
3.1
3.2
3.3
ANEXO 4.
ANEXO 5.
PROGRAMACIN ...................................................................... 24
5.1
Arduino_UNO.ino............................................................................................................. 25
5.2
ATiny.ino .......................................................................................................................... 29
ANEXO 6.
ANEXO 7.
SISTEMA .................................................................................... 43
7.1
PCB ................................................................................................................................... 44
7.2
ANEXO 8.
DATASHEETS............................................................................ 47
8.1
LM35DZ ............................................................................................................................. 47
8.2
Introduccin
INTRODUCCIN
Los anexos de este proyecto, se han utilizado como extensin de la memoria y
como soporte a conceptos necesarios para entender el funcionamiento del
sistema.
Adicionalmente los anexos, se han usado como ampliaciones a los objetivos
iniciales del proyecto.
Anexos
1.1
Acondicionando el ATtiny84
1.1.1
Para entender un poco mejor la teora del apartado anterior, veamos una
imagen de como conectar nuestro programador AVR a nuestro ATtiny84. La
eleccin del programador es a eleccin personal, como para este proyecto solo
se necesita el programador para programar los fuses, recomiendo comprar uno
lo ms barato posible, el usado aqu cuesta 7,72 euros en la pgina:
http://www.miniinthebox.com/es/ REF: usb isp usbasp programador para atmel
avr, aunque si se est interesado en la programacin de microcontroladores
Atmel, recomiendo programadores compatibles con AVR Studio, como por
ejemplo USBTiny http://www.ladyada.net/make/usbtinyisp/
o AVRISP
http://www.atmel.com/tools/AVRISPMKII.aspx.
Anexos
Acondicionando el ATtiny84
Anexos
2.1
El amplificador operacional
Elementos bsicos
(2.1)
2.2
El transistor
Anexos
(2.5)
IB debe ser mayor que IC entre , por lo que si despejamos IB tiene que ser
mayor o igual a 111,11 A. Si cogemos un margen de seguridad
suficientemente alto podemos coger IB como 4 mA, si despejamos RB en la
ecuacin 2.6 ya tendremos resuelto nuestro interruptor.
(2.6)
Lo que nos da que RB ser igual a 1075 . Para usar valores comerciales
siempre usaremos resistencias de 1K en la base de los transistores, como el
margen es grande, adaptaremos RC a las necesidades de cada momento.
Elementos bsicos
2.3
Filtros
10
Anexos
3.1
Unidad de Procesamiento
3.1.1
Punto
Bornes
Voltaje
3.70 V
Intensidad mxima
750 mA
Potencia
1.85 W
RESULTADOS EXPERIMENTALES
3.1.2
11
Punto
Entrada
Salida
Voltaje
3.70 V
5.05 V
Intensidad mxima
750mA
200 mA
Potencia
2,775 W
1,01 W
con
la
configuracin
de
elementos
12
Anexos
RESULTADOS EXPERIMENTALES
13
/* Asignamos a una variable led el pin que queremos usar como salida
digital. PIN REAL -> PA0 */
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delayMicroseconds(10);
digitalWrite(led, LOW);
delayMicroseconds(10);
}
-> LED ON
14
Anexos
Descripcin
Batera VARTA insertable en PCB,
de 2,4V y 150mAh
Precio
Unitario
4,36
RESULTADOS EXPERIMENTALES
3.2
15
16
Anexos
G
1000
Desviacin
estndar mxima
de la muestra
3
Valor ADC
Hall apuntando al
Norte
965
Valor ADC
Hall apuntando al
Sur
743
RESULTADOS EXPERIMENTALES
3.3
17
Sensor de infrarrojos
3.3.1
Emisor de infrarrojos.
18
Anexos
RESULTADOS EXPERIMENTALES
19
3.3.2
Receptor de infrarrojos
20
Anexos
RESULTADOS EXPERIMENTALES
21
void setup() {
pinMode(ledIR, OUTPUT);
}
void loop() {
for(int i=0; i<24;i++)
{
digitalWrite(ledIR, HIGH);
delayMicroseconds(10);
digitalWrite(ledIR, LOW);
delayMicroseconds(10);
}
delayMicroseconds(500);
}
// Espera 500us
22
Anexos
Cmo podemos observar, y tal cmo nos indica el fabricante, la salida del
TSOP4P38 corresponde a un nivel bajo cuando detecta el tren de pulsos a
38kHz. Ahora bien, a la hora de detectar un pulso, nos podra interesar ms
que el comportamiento del sensor hiciese todo lo contrario, que cuando
detectase un tren de pulsos pasase de 0 a 1. Esto nos facilitar nuestro trabajo
a la hora de programar. Para realizar lo que se conoce como una puerta not, es
decir poner VCC a la salida cuando en la entrada tengo 0V y viceversa.
23
24
Anexos
ANEXO 5. PROGRAMACIN
En este captulo se expondrn los dos programas cargados en los
microcontroladores del proyecto. El programa cargado en el Arduino UNO se
llama Arduino_UNO.ino y el programa cargado en el ATtiny84 ATtiny.ino
Programacin
5.1
25
Arduino_UNO.ino
/*
Arduino_UNO.ino - Infrared comunication for ATtiny84
Copyright (c) 2013 Jorge Polo. All right reserved.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Licence: http://creativecommons.org/licenses/by-sa/3.0/
*/
/* Cdigo de la librera ATtiny84:
http://code.google.com/p/arduino-tiny/
Bibliografa:
http://arduino.cc/es/Reference/Extended
http://www.cursomicros.com/avr/arquitectura/fuses-de-los-avr.html
http://www.engbedded.com/fusecalc/
http://codeandlife.com/2012/01/25/avr-attiny-usb-tutorial-part-2/
http://avrbasiccode.wikispaces.com/
http://www.fiz-ix.com/2012/11/arduino-serial-communication-bytesbases-and-ascii-characters/
*/
//******************************************************************//
//*
Arduino_UNO.ino
*//
//******************************************************************//
// Librerias:
// Definicin de PINES:
const int RX = 2;
const int TX = 3;
/*
PROTOCOLO UTILIZADO: PROPIO
CODIFICACIN DEL MENSAJE:
CABECERA
111
111
MENSAJE
XXX
001
INFORMACION
XXXXXXXXXX
XXXXXXXXXX
*/
// Definicin de Variables:
unsigned long duracion;
word cabecera = 0;
word tipoMensaje = 0;
word informacion = 0;
->
Sensor de Temperatura
26
Anexos
word mensajeRecibido = 0;
word mensaje_a_Enviar = 0;
double temp;
int byteSerial;
boolean error
= false;
void setup() {
Serial.begin(115200);
pinMode(TX, OUTPUT);
pinMode(RX, INPUT);
}
void loop() {
enviarMensaje();
delay(50);
recibirMensaje();
delay(50);
}
void recibirMensaje(void)
{
mensajeRecibido = 0;
error = false;
for(int i=0; i<16; i++)
{
duracion = pulseIn(RX, HIGH,150000);
// Limita la velocidad de transmision
if (duracion == 0)
{
break;
}
else if (duracion > 500)
// Si el pulso dura ms de 500 microsegundos, es un 1.
{
//Serial.print(1);
bitSet(mensajeRecibido, 15-i);
}
else
{
//Serial.print(0);
}
}
Serial.println(mensajeRecibido,BIN);
// Imprime en binario el mensaje en el Serial.
}
void enviarMensaje(void)
{
mensaje_a_Enviar = 0;
error = false;
for(int i=0; i<16; i++)
{
Programacin
27
byteSerial = Serial.read();
if (byteSerial == 49)
{
bitSet(mensaje_a_Enviar, 15-i);
}
else if (byteSerial == 48)
{
// No hacemos nada
}
else
{
error = true;
}
// Si no leemos un cero o un uno es que ha habido un error en la
transmisin.
}
if (error)
{
//Serial.println("Error al enviar Mensaje");
//
codificado de error en transmisin
}
else
{
//Serial.println(mensaje_a_Enviar,BIN); // Imprime en
el mensaje en el Serial.
transmitirMensaje(mensaje_a_Enviar);
}
}
Mensaje
binario
void enviarPulsoAlto() {
// Funcin a realizar: 1. Envio un tren de 30 pulsos a 38 KHz.
//
2. Al finalizar espera 600 us.
//
Serial.print("Enviando un 1 ");
for (int i=0; i<30;i++)
{
digitalWrite(TX, HIGH);
delayMicroseconds(9);
digitalWrite(TX, LOW);
delayMicroseconds(9);
}
delayMicroseconds(600);
}
void enviarPulsoBajo() {
// Funcin a realizar: 1. Envio un tren de 15 pulsos a 38 KHz.
//
2. Al finalizar espera 600 us.
//
Serial.print("Enviando un 0 ");
for (int i=0; i<15 ;i++)
{
digitalWrite(TX, HIGH);
28
Anexos
delayMicroseconds(9);
digitalWrite(TX, LOW);
delayMicroseconds(9);
}
delayMicroseconds(600);
microsegundos.
}
void transmitirMensaje(word mensaje_a_Transmitir)
{
int value = 0;
for(int i=15;i>=0;i--)
{
value = bitRead(mensaje_a_Transmitir,i);
if (value == 0)
enviarPulsoBajo();
else
enviarPulsoAlto();
}
}
// Espera de 600
Programacin
5.2
29
ATiny.ino
/*
ATtiny.ino - Infrared comunication for ATtiny84
Copyright (c) 2013 Jorge Polo. All right reserved.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Licence: http://creativecommons.org/licenses/by-sa/3.0/
*/
/* Cdigo de la librera ATtiny84:
http://code.google.com/p/arduino-tiny/
Bibliografa:
http://arduino.cc/es/Reference/Extended
http://www.cursomicros.com/avr/arquitectura/fuses-de-los-avr.html
http://www.engbedded.com/fusecalc/
http://codeandlife.com/2012/01/25/avr-attiny-usb-tutorial-part-2/
http://avrbasiccode.wikispaces.com/
*/
//******************************************************************//
//*
ATtiny.ino
*//
//******************************************************************//
// Librerias:
#include <SoftwareSerial.h>
FUTUROS // Definicin de PINES:
const int RX
= 6;
const int TX
= 7;
const int pinTemp = A0;
temperatura
const int pinHall = A2;
HALL
//const int LED_ON = 9;
"Solo versiones de iniciales"
const int N = 100;
del sensor HALL
int sensorValue[N];
HALL
long sumaValue;
HALL
float mediaValue;
HALL
30
Anexos
int motor1 = 3;
Derecha
int motor2 = 2;
int motor3D = 4;
int motor3I = 5;
Izquierda
motor1ANTERIOR
motor2ANTERIOR
motor3DANTERIOR
motor3IANTERIOR
=
=
=
=
0;
0;
0;
0;
// Definicin de Constantes:
word cabecera = 57344;
00 00
// Definicin de Variables:
word tipoMensaje = 1024;
00 01
// Definicin:
// 001 -> Informacin sobre temperatura
// 100 -> Motor principal 1
// 101 -> Motor principal 2
// 011 -> Motor de Cola
word informacion = 1023;
11 11
//
//
//
/*
PROTOCOLO UTILIZADO: PROPIO
CODIFICACIN DEL MENSAJE:
CABECERA
111
111
111
111
111
111
111
Izquierda
*/
TIPO MENSAJE
XXX
001
010
100
110
011
101
word mensaje = 0;
int infoTEMP = 0;
int infoHALL = 0;
word mensajeRecibido = 0;
boolean error = false;
unsigned long duracion = 0;
boolean alternar = true;
sensores.
int Z = 0;
void setup() {
pinMode(TX, OUTPUT);
INFORMACION
XXXXXXXXXX
XXXXXXXXXX
->
XXXXXXXXXX
->
XXXXXXXXXX
->
XXXXXXXXXX
->
XXXXXXXXXX
->
XXXXXXXXXX
Mensaje Temperatura
Mensaje Posicion
Motor Principal 1
Motor Principal 2
Rotor de cola Mov. Derecha
-> Rotor de cola Mov.
// Valor de temperatura
// Valor HALL
Programacin
31
pinMode(RX, INPUT);
pinMode(motor1,
motor P.1
pinMode(motor2,
motor P.2
pinMode(motor3D,
motor Cola
pinMode(motor3I,
motor Cola
}
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
void loop() {
// Envio de informacin sobre sensores:
enviarInformacion();
delay(50);
// Recibimos informacin sobre Motores:
recibirMensaje();
delay(50);
delay(150);
}
//******************************************************************//
void enviarInformacion()
{
if (alternar)
{
// Envio de informacin sobre temperatura:
infoTEMP = analogRead(pinTemp);
cabecera
= 57344; // "111" Cabecera
tipoMensaje = 1024;
// "001" Temperatura
informacion = word(infoTEMP);
mensaje = cabecera | tipoMensaje | informacion;
transmitirMensaje(mensaje);
alternar = false;
}
else
{
// Envio de informacin sobre sensor efecto HALL:
//infoHALL = analogRead(pinHall);
potenciomentro del sensor.
//
Solo
para
calibrar
el
32
Anexos
delayMicroseconds(600);
}
void transmitirMensaje(word mensaje_a_Transmitir)
{
// Funcin a realizar: 1. Envia un mensaje de 16 bits -> "Envia 0 o
1 segn corresponda"
//
2. Al finalizar espera 1000 us.
int value = 0;
for(int i=15;i>=0;i--)
Programacin
33
{
value = bitRead(mensaje_a_Transmitir,i);
if (value == 0)
enviarPulsoBajo();
else
enviarPulsoAlto();
}
}
void recibirMensaje(void)
{
mensajeRecibido = 0;
for(int i=0; i<16; i++)
{
duracion = pulseIn(RX, HIGH,150000);
if (duracion == 0)
{
break;
}
else if (duracion > 500)
// Si el pulso dura ms de 500
microsegundos, es un 1.
{
//Serial.print(1);
bitSet(mensajeRecibido, 15-i);
}
else
{
//Serial.print(0);
}
codificarMensaje(mensajeRecibido);
}
}
void codificarMensaje(word mensaje)
{
cabecera = 0;
tipoMensaje = 0;
informacion = 0;
int
int
int
int
value = 0;
j = 0;
elegir = 0;
cabeceraOK = 0;
for(int i=13;i<=15;i++)
{
value = bitRead(mensaje,i);
if (value == 1)
bitSet(cabecera, j);
j++;
}
j = 0;
for(int i=10;i<=12;i++)
{
value = bitRead(mensaje,i);
if (value == 1)
34
Anexos
bitSet(tipoMensaje, j);
j++;
}
j = 0;
for(int i=0;i<=9;i++)
{
value = bitRead(mensaje,i);
if (value == 1)
bitSet(informacion, j);
j++;
}
Z
= int(informacion);
elegir = int (tipoMensaje);
cabeceraOK = int (cabecera);
if (cabeceraOK == 7)
{
switch (elegir)
{
case 4: // 100
if (Z != motor1ANTERIOR)
{
analogWrite(motor1, Z);
motor1ANTERIOR = Z;
}
break;
case 6: // 110
if (Z != motor2ANTERIOR)
{
analogWrite(motor2, Z);
motor2ANTERIOR = Z;
}
break;
case 3: // 011
if (Z != motor3DANTERIOR)
{
analogWrite(motor3D, Z);
analogWrite(motor3I, LOW);
motor3DANTERIOR = Z;
}
break;
case 5: // 101
if (Z != motor3IANTERIOR)
{
analogWrite(motor3I, Z);
analogWrite(motor3D, LOW);
motor3IANTERIOR = Z;
}
break;
default:
break;
}
}
}
Esquemas de LaBVIEW
35
36
Anexos
Una vez visto los esquemas generales del sistema, vamos a ver uno por uno
cada uno de los mdulos que lo forman. En primer lugar vamos a ver el control
de puerto serie. En la figura 6.3 tenemos ampliada la zona de las propiedades y
un pequeo SubVI o subrutina que se ha realizado para el control de los
errores conocidos.
Esquemas de LaBVIEW
37
38
Anexos
Esquemas de LaBVIEW
39
40
Anexos
Esquemas de LaBVIEW
41
42
Anexos
Cmo ltima parte, lo nico que queda por hacer es una vez acabado el bucle
por demanda del usuario, deberemos cerrar el puerto serie, para permitir a
otros programas poder utilizarlo. El cdigo para cerrar el puerto serie se
representa en la figura 6.11.
SISTEMA
43
ANEXO 7. SISTEMA
Cmo conclusin del sistema, se presenta el esquemtico completo de la
unidad remota y el diseo de una placa de circuito integrado de dimensiones
reducidas (50 x 49 mm).
44
7.1
Anexos
PCB
SISTEMA
45
7.2
46
Anexos
DATASHEETS
47
ANEXO 8. DATASHEETS
8.1
LM35DZ
www.ti.com/lit/ds/symlink/lm35.pdf
48
Anexos
DATASHEETS
8.2
D
http://pdf1.alldatasheet.es/datasheet-pdf/view/120794/ALLEGRO/A1301.html
49
50
Anexos
BIBLIOGRAFA Y REFERENCIAS
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]