Академический Документы
Профессиональный Документы
Культура Документы
Diciembre 2016
Buffon No. 46 Piso 5, Colonia Nueva Anzures, C.P. 11590, Ciudad de México D.F. Tel. (0052) 55 55 45 50 00
CONTENIDO
INTRODUCCIÓN ............................................................................................................... 4
Pág.2
www.corrosionyproteccion.com Pág.2
IMAGEN CORPORATIVA DIEGO/ KARINA / ANDREA / JORDI ............................ 336
Pág.3
www.corrosionyproteccion.com Pág.3
INTRODUCCIÓN
Este reporte detalla el trabajo realizado durante el año 2016 dentro del proyecto
INGENIERÍA EN CONTROL DE CORROSIÓN DE TUBERÍAS EN AGUAS PROFUNDAS CON
MODELADO NUMÉRICO, 2° PARTE.
Objetivos
Pág.4
www.corrosionyproteccion.com Pág.4
Los objetivos básicos de este sistema son la toma de un potencial eléctrico en los
postes, y la transmisión del valor obtenido por radiofrecuencia al dron.
El sistema debe poder medir los potenciales con un error máximo de 10 mV, en un
rango de 0 V a 10 V.
Además el diseño debe der de bajo consumo, de tal forma que pueda durar dos
años con una batería comercial.
Por otro lado no se pueden utilizar ningún tipo de fotoceldas, fotorresistencias, o
cualquier otro componente que requiera estar fuera del poste (salvo por el cable de
la antena) por las condiciones en las que se instalará el dispositivo.
Selección de componentes
Tomando en cuenta los objetivos se determinó que la principal limitante del sistema
es el consumo energético del mismo. Es por esto que se decidió utilizar
componentes con el menor consumo posible, tratando de mantener el sistema lo
más sencillo y económico posible.
Al ser un sistema de bajo consumo, es conveniente utilizar un voltaje bajo para así
reducir la potencia requerida. La mayoría de los componentes comerciales
funcionan con voltajes estándar de 5V o 3.3V, por lo que se decidió utilizar 3.3V.
En primer lugar se seleccionó el micro controlador Atmega328p, es importante que
sea de la familia ‘p’ ya que este tipo de micro controladores (‘p’ se refiere a
“PicoPower”) son de bajo consumo. Si bien existen otros microcontroladores de
menor consumo, la principal ventaja del Atmega328p es la facilidad de
programación y la amplia documentación que existe, así como su fácil
disponibilidad. El Atmega328p puede operar desde los 1.8V a 4MHz, hasta los 5V
a 16MHz.
Para el módulo de radiofrecuencia se decidió utilizar el RFM12B, que es un módulo
específicamente diseñado para aplicaciones de bajo consumo. Si bien existe la
nueva versión (RFM69HCW) con un mayor rango, el RFM12B es de un menor
consumo. El RFM69HCW tiene un rango de 400m y un consumo de 130mA
encendido, mientras que el RF12B tiene un rango de 200m con un consumo de
23mA encendido. Los 200m de rango del RFM12B se consideraron suficientes y por
lo tanto se decidió utilizarlo pese a sus limitaciones.
Para mantener una correcta operación a lo largo de la duración de la batería, se
requiere un regulador de voltaje. En este caso, al requerir un bajo consumo se
necesita de un regulador como el MCP1702 para voltajes de 3.3V. Este regulador
de bajo consumo consume 2.2 μA de acuerdo a sus especificaciones.
Para las baterías se decidió utilizar una sola celda de LiPo ya que tiene una tasa de
descarga automática (es decir la velocidad a la que la celda se descarga debido a
las reacciones químicas internas) muy baja, aproximadamente un 2% mensual, lo
que equivale a una descarga de aproximadamente 40% en dos años.
Mes Carga %
0 100.00
1 98.00
2 96.04
3 94.12
4 92.24
Pág.5
www.corrosionyproteccion.com Pág.5
5 90.39
6 88.58
7 86.81
8 85.08
9 83.37
10 81.71
11 80.07
12 78.47
13 76.90
14 75.36
15 73.86
16 72.38
17 70.93
18 69.51
19 68.12
20 66.76
21 65.43
22 64.12
23 62.83
24 61.58
1. Descarga de batería
Además una sola celda de LiPo tiene un voltaje entre los 3.5V (descargada) y 4.2V
(a su máxima carga) lo que es más que suficiente para alimentar un circuito de 3.3V
mediante regulador.
En cuanto a la capacidad de la batería, esta depende del consumo de corriente
promedio que se pueda lograr.
Optimización de consumo
Para calcular este tiempo se supuso que el avión va a pasar siempre sobre el poste.
Si bien el avión no siempre pasa exactamente sobre el poste, el error de un par de
metros es despreciable contra los 200 m de rango que tiene el módulo de
radiofrecuencia.
Pág.6
www.corrosionyproteccion.com Pág.6
2. Esquema de distancias al avión
Si el avión viaja a 30 km/h, es decir 8.3 m/s, el tiempo que transcurre desde que el
avión entra en rango, hasta que sale se puede obtener mediante:
Pág.7
www.corrosionyproteccion.com Pág.7
-Pedir medición de la batería al ADC (MCP3424)
-Leer medición de la batería del ADC y pedir medición de sensor
-Leer medición de del sensor
-Encender el módulo de RF (RFM12B)
-Enviar valores al módulo RF
-Apagar el módulo de RF
-Preparar el timer para despertar dentro de 10 segundos y poner al Atmega328p en
modo sleep
Pág.8
www.corrosionyproteccion.com Pág.8
3. Protocolo de comunicación del RFM12B
Total: 16 bytes
La máxima velocidad de transmisión debe ser lo más alta posible, en este caso de
50 kbits/seg. Esto equivale a 0.16ms por byte transmitido.
8 bits/byte / 50000 bits /seg =0.00016 seg/byte
Pág.9
www.corrosionyproteccion.com Pág.9
Transmisión de datos 32.56 ms
El siguiente esquema de tiempos se diseñó entonces para cumplir con los tiempos
requeridos para cada operación, tomando en cuenta que los tiempos en sleep deben
ser múltiplos de los 16ms.
Atmega328p 6
Pág.10
www.corrosionyproteccion.com Pág.10
ADC (MCP3424) 544
RF (RFM12B) 35
Medición de voltajes
Pág.11
www.corrosionyproteccion.com Pág.11
I=VR= 4.2V / 20MΩ=0.21uA
Por otro lado para la medición del valor del poste se necesita un filtro pasa bajas
que permita eliminar la frecuencia de 60 Hz del rectificador. Este filtro debe tener la
frecuencia de corte más baja posible sin ocasionar un alias en las mediciones. En
este caso la frecuencia de muestreo es de un periodo de 10 segundos, es decir
0.1Hz, por lo que se requiere un periodo del doble del periodo de muestreo, es decir
20 segundos o 0.05Hz.
Pág.12
www.corrosionyproteccion.com Pág.12
6. Circuito para toma de potenciales del poste
Por otro lado tenemos los tiempos de encendido y apagado de cada uno de los
módulos en el periodo de 10 segundos:
Pág.13
www.corrosionyproteccion.com Pág.13
Transmisor RF(RFM12B) 35 ms 9.965 s
Divisor de voltaje(pila) 10 s 0s
Regulador 3.3V(MCP1702) 10 s 0s
Pág.14
www.corrosionyproteccion.com Pág.14
En este caso los 1854.22 mAh deben ser el 60% de la carga máxima de la batería,
lo cual significa que se requiere de una batería de al menos 3090.36 mAh.
Ambas son tarjetas PCB que contienen el hardware básico para operar el
Atmega328p junto con un módulo de RF. Ambas soluciones son similares, cuentan
con el Atmega328p, el regulador de voltaje de bajo consumo MCP1702 propuesto
y la conexión al módulo RF. La diferencia principal es que el Moteino utiliza un cristal
de cuarzo como resonador, mientras que el JeeNode utiliza un resonador cerámico,
que si bien no es tan preciso como el cristal, permite despertar al Atmega328p en
un tiempo mucho menor.
La otra opción es desarrollar el hardware desde cero con la conexión a los módulos
propuesta. En este caso llevaría más tiempo conseguir los componentes y
desarrollar el PCB, sin embargo la solución podría mejorarse fácilmente en caso de
necesitar modificar el hardware.
De cualquier manera los circuitos de medición y las conexiones al ADC externo se
deberán fabricar en un PCB. El esquema general es de la siguiente manera:
Pág.15
www.corrosionyproteccion.com Pág.15
8. Esquema general del sistema
El sistema propuesto se puede construir como una placa (shield) sobre el JeeNode,
lo cual haría que el tamaño necesario para embeber el sistema en el poste sea muy
pequeño. El JeeNode tiene unas dimensiones de 85.9 x 21.1 x 9.9 mm. Agregando
los componentes externos en una placa del mismo tamaño se requiere un espacio
de al menos 85.9 x 21.1 x 20 mm, que redondeado nos da un espacio de 90 x 30 x
20 mm.
También se requiere embeber la batería en el poste. Para asegurar una duración
de 2 años, se propone utilizar una batería del 150% de capacidad de lo que se
requiere teóricamente. En este caso los cálculos indican 3090.36 mAh por lo que lo
recomendado es utilizar una batería de 4635.54 mAh. La batería comercial más
cercana es de 5000 mAh para 1S (4.2V)
Pág.16
www.corrosionyproteccion.com Pág.16
9. LiPo 5000mAh 1S (4.2V)
Oportunidades de mejora
Pág.17
www.corrosionyproteccion.com Pág.17
aproximadamente a la mitad, el consumo del módulo cuando se encuentra en modo
prendido. Sin embargo esto no afecta el consumo en modo sleep, que es la mayoría
del tiempo.
2) Reducir SUTCKSEL a cero, este fusible indica el tiempo necesario para despertar
del modo sleep.
Se puede reducir a cero, sin embargo es recomendable permitir al resonador llegar
a un modo estable después de despertar, antes de realizar cualquier operación.
-Utilizar un RTC (real time clock). Por último probablemente la manera más sencilla
de mejorar el rendimiento sea utilizar un RTC como módulo adicional. El RTC es un
módulo de reloj que se utiliza generalmente para saber la fecha y hora de manera
precisa sin atrasarse o adelantarse en un periodo largo de tiempo. El RTC utiliza su
propia batería (generalmente una batería de reloj) por lo que no generaría ningún
Pág.18
www.corrosionyproteccion.com Pág.18
consumo adicional al sistema. El RTC puede durar hasta 5 años sin atrasarse con
su propia batería. La ventaja de utilizar el RTC es que se puede programar al
Atmega328p para que cheque la hora y el día antes de realizar cualquier medición
y/o transmisión de datos. De esta manera se puede enviar datos únicamente
durante ciertas horas del día (de 6am a 6pm por ejemplo) o durante ciertos días de
la semana (no enviar en fin de semana por ejemplo) De esta manera se puede
reducir el consumo tanto como se desee.
Una vez diseñado el sistema embebido pasamos a la siguiente fase que es el desarrollo
de este por lo tanto es necesario conocer las tarjetas y componentes electrónicos a
utilizar, sus características y capacidades, ya que de ello depende que sea un sistema
eficiente de bajo consumo el cual tenga una duración prolongada de dos años, este
necesita hacer mediciones de la batería de alimentación y de los potenciales en las
plataformas y ductos para posteriormente enviar estos datos vía RF para guardarse en
una tarjeta SD .
JEENODE V6
11. JeeNode v6
Pág.19
www.corrosionyproteccion.com Pág.19
Cada JeeNode tiene 4 "puertos" idénticos para la fijación de la lógica de E / S analógicas
y digitales, dispositivos I2C, y mucho más. La biblioteca JeeLib hace que sea fácil de
interactuar con estos puertos.
El JeeNode posee:
6-pin FTDI- Puerto serial compatible I/O, usado para alimentación, re-flasheado, y
comunicación.
3.3V regulador de voltaje que soporta 3.5 … 13V de Fuente externa de
alimentación
8-pines combinados alimentación / Serial / I2C / Conector Extendido (PSIX)
ATmega328P microcontrolador Atmel, con 16 MHz resonador cerámico
2x4-pines conectores combinados SPI / ISP , propósito general I/O
RFM12B comunicación RF desde 433, 868, o 915 MHz banda ISM
Antena Radio de (78, 82, 165 mm longitud, para 915, 868, 433 MHz,
respectivamente)
Los dos poseen el mismo arranque optiboot que les permite ejecutar los bocetos de arduino
IDE, así mismo como el mismo controlador Atmega 328p
•JeeNode usa un voltaje interno de 3.3V, esto afecta todos los puertos y pines I/O
•No todos los pines de Arduino son llevados a cabo en los conectores, algunos pines
se le asignan los roles fijos
•El conector ISP tiene dos pines extras, que permite la reutilización del Puerto SPI
para uno o dos dispositivos
•No tiene leds, para el uso de bajo consumo cuando se utilizan baterías.
Pág.20
www.corrosionyproteccion.com Pág.20
Selección del JeeNode por su diseño
La segunda razón es porque se necesitaba de una unidad que tuviera integrado una
conectividad Wireless default. El RFM12B es una opción de bajo costo con suficiente
potencia y rango confiable que permite la comunicación con un protocolo de comunicación
básico con menos de 3 Kb de código C
La tercera razón es que es bastante común que un arduino se quede sin conectores de
alimentación y tierra al conectar unos sensores a este. En cambio el JeeNode posee en
cada puerto sus propios conectores de alimentación y tierra. Por otra parte, al ser idénticos,
los cuatro puertos JeeNode tienen las mismas características y conexiones, lo que permite
a los sensores puedan volver a utilizarse y volver a combinarse más adelante.
Por último, un objetivo clave del diseño para el JeeNode es para apoyar el uso de consumo
bajo con baterías.
Especificaciones
Microcontrolador: ATmega328P
Peso: 12 g
Pág.21
www.corrosionyproteccion.com Pág.21
Conectores y pines de salida
Puertos
Pág.22
www.corrosionyproteccion.com Pág.22
Pin Nombre Descripción
3 GND Tierra
7 SEL0 Atado a PB0 (A. pin 8) 8 SEL1 Atado a PB1 (A. pin 9)
Conector FTDI
1 GND Tierra
2 N.C. No conectado
Pág.23
www.corrosionyproteccion.com Pág.23
Pin Nombre Descripción
4 RX Receptor serial
5 TX Transmisor serial
6 RTS Reset
Conector PSIX
3 GND Tierra
8 RST Reset
Lista de componentes
Pág.24
www.corrosionyproteccion.com Pág.24
componentes valor Detalles Digi-Key#
USB BUB
Pág.25
www.corrosionyproteccion.com Pág.25
- Una derivación que se puede configurar para cambiar los niveles lógicos de
3,3 a 5 voltios.
- Esta derivación es independiente de la tensión de salida de derivación. Por
defecto = 3,3 V, para la correcta JeeNodes
- Una derivación configurable para cambiar el voltaje de salida de 5 a 3,3
voltios.
- Sitio para añadir un regulador de 3.3V SMD para corrientes de salida más
altas.
- Una header, conectado en el orden del pasador FTDI cable RS232 (esto es
correcto para el JeeNode / BBB / BRD / LilyPad / Arduino Pro cabecera
pines). La línea DTR está presente para generar 'reset' - esto es más fiable
que el uso de la peculiar RTS.
El USB - BUB tiene partes fundamentales ya montadas y probadas.
Se puede usar la BUB para cargar bocetos y luego el nodo tiene su propia
alimentación de energía, se puede desconectar y utilizar en otros nodos.
El USB BUB-II requiere una conexión USB A - a mini cable. Este es el mismo tipo
que se utiliza a menudo como un conector de cámara digital, por lo que se puede
reciclar uno puede que ya tenga.
Pág.26
www.corrosionyproteccion.com Pág.26
13. ADC (MCP3424)
El ADC Analog Plug es una tarjeta pequeña que contiene el convertidor MCP3424 de
analógico a digital con interfaz de bus I2C. El ADC puede tomar 4…240 muestras por
segundo, dependiendo de la resolución (12...18 bits).Dispone de 4 canales de entrada
diferencial y es compatible con una gama de tensión diferencial de -2.048V a + 2.048V, a
gran escala. Para seleccionar todo el rango de medición se toma el lado "negativo" a tierra
para el uso de un solo extremo y se restringe la entrada de "positivo" para voltios positivos
con respecto a tierra.
De un lado tiene un conector hembra 2x6 pines, con 4 entradas analógicas diferenciales y
además GND, +3V, PWR, and IRQ
Un bus I2C funcionando a 3,3 V se utiliza para E / S, con todas las líneas de alimentación
y de señal a ambos lados de la placa para permitir la conexión en cadena con otras placas
por medio de I2C.
Configuración
Para su configuración cuenta con dos jumpers en la placa para soldarse, lo que permite
elegir entre las direcciones de 7-bit I2C
Pines
Pág.27
www.corrosionyproteccion.com Pág.27
RFM12B BOARD
14. RFM12B
El RFM12B es un módulo de radio compacto esta trabaja con toda una gama de placas de
Arduino (compatibles), tales como de Arduino (tanto 5V y 3.3V versiones), Freeduino, kit
JeeNode SMD, BRD y Boarduino. Para facilitar su uso, los pines del conector están
etiquetados con los nombres de señales, así como los números de pin de Arduino. Sólo
tiene que conectarlo a su tablero y conectarlo como se indica.
El módulo de radio RFM12B soporta un nivel de alimentación de hasta 3.8V. Para usar el
RFM12B en un entorno 5V, esta placa cuenta con un regulador de voltaje de bajada y los
convertidores de nivel de voltaje de resistencia requeridos para los pines de señales
utilizados. Cuando la alimentación es de 3,3 V, los componentes del regulador y el nivel de
conversión se quedan fuera.
Configuración de alimentación
Para su uso en 3,3 V: (los niveles lógicos de señal y el nivel de tensión de alimentación
deben coincidir con 3,3 V)
Omitir R4, R5, R6, R1, R2, R3 del puente a través de la respectiva soldadura de los puentes
de SJ1, SJ2, SJ3. Esto desactiva los convertidores de nivel de voltaje.
Pág.28
www.corrosionyproteccion.com Pág.28
Omitir el regulador de voltaje (VR) y de 3.3V en el pin conector marcado como ' 3V3’.
Incluyen todos los componentes (C1, C2, C3, VR, R1, R2, R3, R4, R5, R6) para activar los
convertidores de nivel de voltaje de la señal y el regulador de tensión (VR).
Pines
Una antena es necesaria y puede ser un simple pedazo de 1/4 - longitud de onda de cable
soldado en la antena:
Pág.29
www.corrosionyproteccion.com Pág.29
RTC PLUG CR 1220
El RTC Plug es una placa pequeña que contiene un reloj en tiempo real DS1340 con
respaldo de batería, por lo que continúa el seguimiento del momento en que la alimentación
está apagada.
Un bus I2C funcionando a 3,3 V se utiliza para E / S, con todas las líneas de alimentación
y de señal a ambos lados de la junta para permitir la conexión en cadena con otras placas.
No hay nada que configurar. El chip RTC con el bus I2C responde a la dirección 0x68.
Pines
ARDUINO PRO-MINI
Pág.30
www.corrosionyproteccion.com Pág.30
La Arduino Pro Mini es una placa electrónica basada en el ATmega328.
Cuenta con 14 pines digitales de entrada / salida (de los cuales 6 se podrán utilizar como
salidas PWM), 6 entradas analógicas, un resonador de a bordo, un botón de reinicio, y los
agujeros para montaje de conectores macho. Un encabezado de seis pines puede ser
conectado a un cable FTDI o tablero del desbloqueo de Sparkfun para proporcionar
alimentación USB y la comunicación a la junta.
Hay dos versiones del Mini Pro. Uno corre a 3.3V y 8 MHz, y el otro a 5 V y 16 MHz.
Características:
- Microcontrolador ATmega328
- 14 pines de entrada/salida digital (de las cuales 6 se puede usar como salidas PWM)
- 1 KB de SRAM 1 KB
Pág.31
www.corrosionyproteccion.com Pág.31
Una vez conociendo todas las características y capacidades de las placas y componentes
a utilizar se comenzó el desarrollo practico del sistema, a continuación se explican los pasos
realizados durante el desarrollo del mismo.
Los componentes en la placa del JeeNode vienen por separado así que es necesario
soldarlos por cuenta propia, de manera que para estandarizar su armado se buscó el
procedimiento y la ayuda necesaria para un correcto ensamblado de todas las piezas.
Lista de piezas:
- 4 capacitores cerámicos
- Antena de 82 mm
- Placa JeeNode
- Atmega 328p
- Base de 28 pines
- Resonador de 16 MHz
- Capacitor electrolítico
- Regulador de voltaje
- Placa RFM12B
- Resistencia
Pág.32
www.corrosionyproteccion.com Pág.32
- 4 conectores hembra 6x1 (headers)
- Conector macho 6x1 (FTDI)
1- Resistencia
2- 4 capacitores cerámicos
3- Capacitor electrolítico
4- Regulador de voltaje
5- Base de 28 pines
6- Conectores hembra 6x1 (headers)
7- Placa RFM12B
8- Conector macho 6x1 (FTDI)
9- Antena de 82 mm
10- Atmega 328p
Para mayor información y ayuda visual visitar el siguiente link:
http://jeelabs.org/2010/09/26/assembling-the-jeenode-v5/
Ensamblando el RFM12B
18. RFM12B
Lista de piezas:
- header 9x1 pines
- 2 capacitores cerámicos
- regulador de voltaje
- capacitor electrolítico
- 3 resistencias de 4.7 Kohms
- 3 resistencias de 1 Kohms
- módulo RF12B
- antena de 82 mm
Pág.33
www.corrosionyproteccion.com Pág.33
Para su ensamble se recomienda poner los componentes de acuerdo al siguiente orden y
soldarse:
3- 2 capacitores cerámicos
4- regulador de voltaje
5- capacitor electrolítico
6- módulo RF12B
7- - antena de 82 mm
Para las demás placas solo es necesario soldar los conectores tipo headers de acuerdo a
la posición que se vayan a utilizar o como sea más cómodo para el usuario.
De manera que el objetivo del sistema es que su funcionamiento sea de bajo consumo es
necesario realizar una configuración del ADC para que las mediciones realizadas ayuden a
la optimización del uso de la batería.
Para ello es necesario checar la sección. 5.2 configuración de registro, p. 18 del datasheet
donde viene la siguiente información:
Pág.34
www.corrosionyproteccion.com Pág.34
B7,B6, B5, B4, B3, B2, B1, B0 (bit number)
RDY, C1, C0, O/C, S1, S0, G1, G0 (bit name)
[Bit 7] *RDY = 0 siempre esté listo (en modo one-shot se pone '1' para empezar
conversión)
[Bit 6-5] *C1/C0: canal de entrada # 00 = 0, 01 = 1, 10 = 2, 11 = 3
[Bit 4] *O/C: 1 modo de conversión continua, 0 = modo de conversión one-shot
[Bit 3-2] *S1/S0: resolución: 00 = 240 Hz (12 b), 01 = 60 Hz (14 b) 10 = 15 Hz (16
b)
11 = 3.75 Hz (18 b)
[Bit 1-0] *G1/G0: gain: 00 = x1, 01 = x2, 10 = x4, 11 = x8 Full-scale: 2.048 V,
1.024, 0.512, 0.256
El dispositivo tiene 8 bit de configuración del registro que permite seleccionar, entrada de
canal, modo de conversión, resolución, y ganancia PGA, esto permite cambiar las
condiciones de operación y checar el status en la operación del dispositivo.
RDY C1 C0 O/C S1 S0 G1 G0
1* 0* 0* 1* 0* 0* 0* 0*
bit 7 bit 0
Pág.35
www.corrosionyproteccion.com Pág.35
ONE SHOT
En la siguiente tabla podemos ver la configuración de cada bit en qué estado establecerse
para la configuración que se requiere.
B7 B6 B5 B4 B3 B2 B1 B0
RDY C1 C0 o/c S1 S0 G1 G0
1 0 0 0 1 1 0 0
1 0 1 0 1 1 0 0
I2C Direcciones
Pág.36
www.corrosionyproteccion.com Pág.36
Low Float 0x69
Pág.37
www.corrosionyproteccion.com Pág.37
Circuitos empleados en el ADC para la medición de la batería y
potenciales.
Para realizar las mediciones correctas por medio del sistema embebido fue
necesario realizar circuitos electrónicos que nos ayuden al acoplamiento de las
señales y la protección de la placas, aquí se muestran los circuitos empleados
Pág.38
www.corrosionyproteccion.com Pág.38
Para la medición de los potenciales se necesita un filtro pasa bajas que permita
eliminar la frecuencia de 60 Hz del rectificador. Este filtro debe tener la frecuencia
de corte más baja posible sin ocasionar un alias en las mediciones.
Primero se realizaron los circuitos por separado en distintas placas para hacer
pruebas de funcionamiento con cada uno y posteriormente ensamblarse los dos en
una sola placa.
Pág.39
www.corrosionyproteccion.com Pág.39
21. Circuito medidor de batería + medidor de potencial.
PROGRAMAS
El primer programa consta del transmisor y la configuración del JeeNode con el RFM12B
para él envió de dos variables contenidas en un buffer.
Pág.40
www.corrosionyproteccion.com Pág.40
RF SEND
#include <JeeLib.h>
Void setup () {
Void loop () {
delay (300);
int buf [3];
buf [0] = ++seqnum;
buf [1] = myInt1;
buf [2] = myInt2;
Pág.41
www.corrosionyproteccion.com Pág.41
El siguiente programa es la configuración del receptor y la impresión de los datos recibidos
RF RECEIVE
#include <JeeLib.h>
void setup() {
Serial.begin (57600);
Serial.println ("\n[simpleReceive]");
rf12_initialize (18, RF12_868MHZ, 212);
Serial.print ("SimpleReceive");
}
void loop() {
Serial.print(buf[0]);
Serial.print(" ");
Serial.print(buf[1]);
Serial.print(" ");
Serial.println(buf[2]);
}
}
Después de las pruebas de transmisión de datos, se hizo la prueba de lectura de un canal del
ADC, y su configuración
PortI2C myI2C(1);
AnalogPlug adc (myI2C,0x69); //registro por default a utilizar
void setup() {
Serial.begin(57600);
if(adc.isPresent())
Serial.println("Analog Plug found");
adc.send();
adc.write(0x8C); //configuracion de adc , 18 bits, mode one-shot,gain x1
adc.stop();}
void loop() {
adc.select(1);
delay(500);
long uvolts = ((adc.reading() >> 8)*1000)/64;
Serial.print(' ');
Pág.42
www.corrosionyproteccion.com Pág.42
Serial.print(uvolts);
Serial.print(" ");
}
Serial.println();
delay(1000);}
El siguiente programa es para hacer un recorrido de la lectura de los cuatro canales que posee el
ADC
#include <JeeLib.h>
PortI2C myI2C(1);
AnalogPlug adc (myI2C);
byte seqnum;
void setup() {
rf12_initialize(20, RF12_868MHZ, 212);
Serial.begin(57600);
if(adc.isPresent())
Serial.println("Analog Plug found");
void loop() {
delay(300);
int buf[5];
buf[0] = ++seqnum;
while (!rf12_canSend())
rf12_recvDone ();
Pág.43
www.corrosionyproteccion.com Pág.43
Después lo siguiente fue realizar la medición del voltaje de la batería por medio del ADC
PortI2C myI2C(1);
AnalogPlug adc (myI2C,0x69);
void setup() {
Serial.begin(57600);
if(adc.isPresent())
Serial.println("Analog Plug encontrado");
adc.send();
adc.write(0x8C);
adc.stop();
}
void loop() {
adc.select(1);
delay(500);
long uvolts = ((adc.reading() >> 8)*1000)/64;
Serial.print(' ');
Serial.print(uvolts);
Serial.print(" ");
uvolts=(uvolts*2.55);
Serial.print("voltaje de pila ");
Serial.print(uvolts);
Serial.println();
delay(1000);
}
Una vez obtenido el valor del voltaje de la batería, se hizo una prueba para enviar este dato y ver
su funcionamiento, este programa consta en la configuración del transmisor y lectura del voltaje en
el ADC
Pág.44
www.corrosionyproteccion.com Pág.44
byte seqnum;
void setup() {
Serial.begin(57600);
if(adc.isPresent())
Serial.println("Analog Plug found");
adc.send(); //configuracion ADC
adc.write(0x8C);
adc.stop();
}
void loop() {
delay(300);
long buf[3];
buf[0]= ++seqnum;
adc.select(1);
delay(500);
long uvolts = ((adc.reading() >> 8)*1000)/64;
Serial.print(' ');
Serial.print(uvolts);
Serial.print(" ");
buf[1]=uvolts;
long uvolt2=(uvolts*2.55);
Serial.print("voltaje de pila ");
Serial.print(uvolt2);
buf[2]=uvolt2;
Serial.println();
delay(1000);
while (!rf12_canSend())
rf12_recvDone();
rf12_sendStart(0,buf,sizeof buf);
delay(200);
buf[1]=0;
buf[2]=0;
delay(200);
}
Este programa consta de la configuración del receptor y la impresión de los datos enviados del valor del voltaje de la batería
Pág.45
www.corrosionyproteccion.com Pág.45
ANALOG PLUG READ VOLTAJE PILA_RF RECEIVE
#include <JeeLib.h>
void setup() {
Serial.begin(57600);
Serial.println("\n[simpleReceive]");
rf12_initialize(18, RF12_868MHZ, 212);
Serial.print("SimpleReceive");
}
void loop() {
Serial.print(" Poste:");
Serial.print(buf[0]);
delay(100);
Serial.print(" Valor ADC: ");
Serial.print(buf[1]);
delay(100);
Serial.print(" Voltaje PILA: ");
Serial.print(buf[2]);
Serial.print(" ");
Serial.println();
delay(100);
}
}
Se estructuro el programa para una mejor organización de este y corregir un problema de ruido
que se presentaba en los datos enviados por vía RF
RFSEND_ANALOG STRUCTURE
#include <JeeLib.h>
Pág.46
www.corrosionyproteccion.com Pág.46
}
void setup()
{
Serial.begin(57600);
rf12_initialize(20, RF12_868MHZ, 212); // inicializacion de RF y configuracion
rf12_config();
rf12_easyInit(0);
AP2init(adc);
if(adc.isPresent())
Serial.println("Analog Plug found");
void loop() {
delay(300);
long buf[3];
///////////////////
long val = AP2read(adc);
rf12_easyPoll();
rf12_easySend(&val, sizeof val);
buf[0]= ++seqnum;
buf[1]=val;
long val2 = val*2.68;
buf[2]=val2;
delay(2000);
////////////////////ENVIO DE DATA
while (!rf12_canSend())
rf12_recvDone();
rf12_sendStart(0,buf,sizeof buf);
De acuerdo a que es necesario almacenar los datos enviados del voltaje de la batería y
los potenciales, se realizó una prueba de almacenamiento en una tarjeta SD, y para
conocer su modo de configuración.
READ/WRITE SD CARD
/* SD card read/write
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4*/
#include <SPI.h>
#include <SD.h>
File myFile;
void setup() {
Pág.47
www.corrosionyproteccion.com Pág.47
Serial.begin(9600);
while (!Serial) {
; }
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("no inicializo!");
return;
}
Serial.println("inicializaicon correcta.");
if (myFile) {
Serial.print("Escribiendo en text.txt...");
myFile.println("Prueba 1, 2, 3.");
myFile.close();
Serial.println("done.");
} else {
Serial.println("error abriendo text.txt");
}
myFile = SD.open("text.txt");
if (myFile) {
Serial.println("text.txt:");
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
} else {
Serial.println("error abriendo text.txt");
} } void loop() {
CONFIGURACION SDCARD + RFM12B CONEXIONES ENTRE PINES
Se emplean dos dispositivos que utilizan comunicación SPI, por lo cual es necesario la correcta conexión de los pines entre
ellos que permita el funcionamiento correcto al momento de usarse.
RFM12B
SD CARD
Pág.48
www.corrosionyproteccion.com Pág.48
GND CD DO SCK DI CS VCC
READWRITE SD+RF
/*
RF card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 10
#include <JeeLib.h>
#include <SPI.h>
#include <SD.h>
File myFile;
long volt;
int id;
int CS;
int aux = 0;
void setup() {
pinMode(10, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite (10, HIGH);
digitalWrite (4, HIGH);
Serial.begin(57600);
while (!Serial) {
; }
//////////////RF12B////////////////
rf12_initialize(18, RF12_868MHZ, 212);
Serial.print("SimpleReceive");
//////////////
if (!SD.begin(4)) {
Pág.49
www.corrosionyproteccion.com Pág.49
Serial.println("initialization failed!");
return;
}
}
void loop() {
delay(100);
digitalWrite (10, LOW);
digitalWrite (4, HIGH);
if (rf12_recvDone() && rf12_crc == 0) {
long* buf = (long*) rf12_data;
delay(100);
Serial.print(" Poste:");
Serial.print(buf[0]);
delay(100);
Serial.print(" Valor ADC: ");
Serial.print(buf[1]);
delay(100);
Serial.print(" Voltaje PILA: ");
Serial.print(buf[2]);
Serial.print(" ");
Serial.println();
delay(100);
id = buf[0];
volt = buf[2];
}
volt = 0;
}
Pág.50
www.corrosionyproteccion.com Pág.50
digitalWrite (4, HIGH);
}
A continuación se muestran los datos de las lecturas realizadas por el ADC, y por medio de un monitor serial se despliegan
los datos obtenidos vía RF para corroborar que se enviaran correctamente.
Pág.51
www.corrosionyproteccion.com Pág.51
ONESHOT_RF
#include <JeeLib.h>
#include <Ports.h>
#include <RF12.h>
PortI2C myI2C(1);
AnalogPlug adc(myI2C,0x69);
byte seqnum;
byte Config;
int ack;
void setup()
{
ack = 0;
// Serial
Serial.begin(57600);
//RF12B
rf12_initialize(20, RF12_868MHZ, 212); // inicializacion de RF y configuracion
rf12_config();
rf12_easyInit(0);
////////////////
Serial.println("POSTES");
ack = adc.send();
if(ack)
Serial.println("Got Ack");
//adc.write(0x8F); // channel 1, 18 bit, 8x gain, one-shot conversion
adc.stop();
}
void loop() {
long buf[3];
buf[0]= ++seqnum;
Serial.print(buf[0]);
Serial.print(" | ");
long raw;
ack = adc.send();
if(ack){
adc.write(0x8C);
adc.receive();
raw = (long) adc.read(0) << 16;
raw |= (word) adc.read(0) << 8;
raw |= adc.read(0);
Config = adc.read(0);
Pág.52
www.corrosionyproteccion.com Pág.52
Config = adc.read(0);
}
adc.read(1);
adc.receive();
long data = adc.read(0);
raw = data << 16;
raw |= (word) adc.read(0) << 8;
raw |= adc.read(0);
raw |= (raw * 1000) / 64;
ack = adc.send();
if(ack){
adc.write(0xAC);
adc.receive();
raw = (long) adc.read(0) << 16;
raw |= (word) adc.read(0) << 8;
raw |= adc.read(0);
Config = adc.read(0);
while(Config != 0x2C) {
Config = adc.read(0);
}
adc.read(1);
adc.receive();
long data = adc.read(0);
raw = data << 16;
raw |= (word) adc.read(0) << 8;
raw |= adc.read(0);
raw |= (raw * 1000) / 64;
Serial.print(" ADC BAT: ");
Serial.print(raw);
Serial.print(" uV ");
Serial.print(" | ");
long uvolts = ((raw*2.44)/1000);
Serial.print(" Voltaje bat: ");
Serial.print(uvolts);
Pág.53
www.corrosionyproteccion.com Pág.53
Serial.print(" mV ");
Serial.print(" | ");
buf[2]=uvolts;
adc.read(1);
adc.stop();
}
Serial.println();
////////////envio de data/////////////////////////
while (!rf12_canSend())
rf12_recvDone();
rf12_sendStart(0,buf,sizeof buf);
buf[1]=0;
buf[2]=0;
delay(8700);
}
ReadWrite SD+RF+BATERIA+POSTES_FINAL
/*
* RF card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 10
#include <JeeLib.h>
#include <SPI.h>
#include <SD.h>
File myFile;
long volt;
long poste;
int id;
int CS;
int aux=0;
void setup() {
pinMode(10,OUTPUT);
pinMode(4,OUTPUT);
digitalWrite (10,HIGH);
digitalWrite (4,HIGH);
Serial.begin(57600);
while (!Serial) { ; }
//////////////RF12B////////////////
rf12_initialize(18, RF12_868MHZ, 212);
Serial.print("SimpleReceive");
Pág.54
www.corrosionyproteccion.com Pág.54
//////////////
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;}
}
void loop() {
///////////////RF12B//////////////////////////
delay(100);
digitalWrite (10,LOW);
digitalWrite (4,HIGH);
if (rf12_recvDone() && rf12_crc == 0) { // received good data if true
long* buf = (long*) rf12_data;
delay(100);
Serial.print(" ID Poste:");
Serial.print(buf[0]);
delay(100);
Serial.print(" Voltaje Poste: ");
Serial.print(buf[1]);
delay(100);
Serial.print(" Voltaje Bateria: ");
Serial.print(buf[2]);
Serial.print(" ");
Serial.println();
delay(100);
id=buf[0];
poste=buf[1];
volt=buf[2];
}
////////////////////////////////////////
if (volt>0)
{
digitalWrite (10,HIGH);
digitalWrite (4,LOW);
Serial.println("SD");
myFile = SD.open("voltaje.txt", FILE_WRITE);
if (myFile) {
Serial.print("Writing voltaje.txt...");
myFile.print("poste :");
myFile.print(id);
// myFile.print("| ");
myFile.print("voltaje poste :");
myFile.print(poste);
myFile.print(" mV ");
//myFile.print(" | ");
myFile.print("voltaje bateria :");
myFile.print(volt);
myFile.print(" mV ");
myFile.println("_________ ");
// close the file:
myFile.close();
Serial.println("done.");
Pág.55
www.corrosionyproteccion.com Pág.55
}
else {
Serial.println("fail.");
}
volt=0;
}
digitalWrite (10,HIGH);
digitalWrite (4,HIGH);
}
ONESHOT_RF_SLEEPMODEPWRDOWN
#include <avr/sleep.h>
#include <avr/wdt.h>
#include <avr/power.h>
#include <JeeLib.h>
#include <Ports.h>
#include <RF12.h>
PortI2C myI2C(1);
AnalogPlug adc(myI2C,0x69);
byte seqnum;
byte Config;
int ack;
//////////SLEEPMODE_CONFIG/////////////
ISR(WDT_vect)
{
wdt_disable(); //deshabilitda watchdog
}
set_sleep_mode (SLEEP_MODE_PWR_DOWN);
sleep_mode();
Pág.56
www.corrosionyproteccion.com Pág.56
}
void setup()
{
ack = 0;
//RF12B
Sleepy::loseSomeTime(32);
rf12_initialize(20, RF12_868MHZ,212);
rf12_config();
rf12_easyInit(0);
rf12_sleep(RF12_SLEEP);
Sleepy::loseSomeTime(1000);
////////////////
ack = adc.send();
if(ack)
adc.stop();
}
void loop() {
power_all_enable ();
Sleepy::loseSomeTime(200);
long buf[3];
buf[0]= ++seqnum;
long raw;
ack = adc.send();
if(ack){
adc.write(0x8C);
adc.receive();
raw = (long) adc.read(0) << 16;
raw |= (word) adc.read(0) << 8;
raw |= adc.read(0);
Config = adc.read(0);
while(Config != 0x0C) {
Config = adc.read(0);
}
adc.read(1);
adc.receive();
long data = adc.read(0);
raw = data << 16;
raw |= (word) adc.read(0) << 8;
raw |= adc.read(0);
raw |= (raw * 1000) / 64;
long poste = ((raw*3.125)/1000);
buf[1]=poste;
adc.read(1);
adc.stop();
}
Sleepy::loseSomeTime(300);
ack = adc.send();
if(ack){
adc.write(0xAC);
adc.receive();
raw = (long) adc.read(0) << 16;
Pág.57
www.corrosionyproteccion.com Pág.57
raw |= (word) adc.read(0) << 8;
raw |= adc.read(0);
Config = adc.read(0);
while(Config != 0x2C) {
Config = adc.read(0);
}
adc.read(1);
adc.receive();
long data = adc.read(0);
raw = data << 16;
raw |= (word) adc.read(0) << 8;
raw |= adc.read(0);
raw |= (raw * 1000) / 64;
long uvolts = ((raw*2.44)/1000);
buf[2]=uvolts;
adc.read(1);
adc.stop();}
////////////envio de data/////////////////////////
rf12_sleep(RF12_WAKEUP);
rf12_sendNow(0,buf, sizeof buf);
rf12_sendWait(0);
rf12_sleep(RF12_SLEEP);
buf [1]=0;
buf [2]=0;
int p;
for (p = 0; p <9; p++)/// duerme por 9 segundos
{
myWatchdogEnable (0b000110); // 1 seconds
}
}
Pág.58
www.corrosionyproteccion.com Pág.58
23. Datos enviados y almacenados en la SD
Pág.59
www.corrosionyproteccion.com Pág.59
RTC PLUG PROPUESTA DE MEJORA DEL AHORRO DE CONSUMO
Por medio del rtc podemos configurar el día y la hora en que trabajara el sistema, de esta manera podemos aumentar el
tiempo de uso de la batería programando para que este en modo de sueño cuando no esté en uso.
#include <JeeLib.h>
PortI2C myport (1 /*, PortI2C::KHZ400 */);
DeviceI2C rtc (myport, 0x68);
static byte bin2bcd (byte val) {
return val + 6 * (val / 10);}
Pág.60
www.corrosionyproteccion.com Pág.60
buf[4] = bcd2bin(rtc.read(0));
buf[3] = bcd2bin(rtc.read(0));
rtc.read(0);
buf[2] = bcd2bin(rtc.read(0));
buf[1] = bcd2bin(rtc.read(0));
buf[0] = bcd2bin(rtc.read(1));
rtc.stop();}
void setup() {
Serial.begin(57600);
Serial.println("\n[rtc_demo]");
// test code:
setDate(16, 11, 10, 10, 00, 0); //año,mes,dia,hora,min,seg}
void loop() {
byte now[6];
getDate(now);
Serial.print("rtc");
for (byte i = 0; i < 6; ++i) {
Serial.print(' ');
Serial.print((int) now[i]);}
Serial.println();
delay(1000);
}
#include <JeeLib.h>
#include <Wire.h>
PortI2C myport (1 /*, PortI2C::KHZ400 */);
DeviceI2C rtc (myport, 0x68);
byte diaA;
byte diaN;
byte i;
byte diaActual;
byte a;
byte c;
static void setDate (byte yy, byte mm, byte dd, byte h, byte m, byte s) {
rtc.send();
rtc.write(0);
rtc.write(bin2bcd(s));
Pág.61
www.corrosionyproteccion.com Pág.61
rtc.write(bin2bcd(m));
rtc.write(bin2bcd(h));
rtc.write(bin2bcd(0));
rtc.write(bin2bcd(dd));
rtc.write(bin2bcd(mm));
rtc.write(bin2bcd(yy));
rtc.write(0);
rtc.stop();
}
rtc.receive();
buf[5] = bcd2bin(rtc.read(0));
buf[4] = bcd2bin(rtc.read(0));
buf[3] = bcd2bin(rtc.read(0));
rtc.read(0);
buf[2] = bcd2bin(rtc.read(0));
buf[1] = bcd2bin(rtc.read(0));
buf[0] = bcd2bin(rtc.read(1));
rtc.stop();
}
void setup() {
Serial.begin(57600);
Serial.println("\n[rtc_demo]");
/*
Lunes=0
Martes=1
Miercoles=2
Jueves =3
Viernes=4
Sabado=5
Domingo=6
*/
diaActual=5;
a=1;
// test code:
setDate(16, 12, 3, 23, 59,0 ); //año,mes,dia,hora,min,seg
}
void loop() {
byte now[6];
getDate(now);{
Serial.print("rtc");
Serial.print(" ");
Pág.62
www.corrosionyproteccion.com Pág.62
Serial.print(now[2]);//dia
Serial.print(" / ");
Serial.print(now[1]);//mes
Serial.print(" / ");
Serial.print(now[0]);//año
Serial.print(" . ");
Serial.print(now[3]);//hora
Serial.print(" : ");
Serial.print(now[4]);//minuto
Serial.print(" : ");
Serial.print(now[5]);//segundo
diaN=diaA+1;
diaA=now[2];
Serial.print(" ");
// Serial.print(diaA);
Serial.print(" ");
//Serial.print(diaN);
Serial.print(" ");
if(diaN==diaA){
c=a;
if(c==1){
diaActual=(diaActual+1);
for (i = diaActual; i < 7; i++){
a=a+1;
break;
}
if(c==2){
for (i = diaActual; i < 7; i++){
break;
}
}
}
}
Serial.println(dia[i]);
Serial.println();
delay(1000);
}
#include <JeeLib.h>
int b=500;
Pág.63
www.corrosionyproteccion.com Pág.63
byte seqnum;
void setup() {
Serial.begin(57600);
Serial.print("simple");
rf12_initialize(20, RF12_868MHZ, 212);
}
void loop() {
delay(300);
int buf[30];
int a=0;
for(a=0;a<=30;a++)
buf[a]=b++;
/*
buf[0]=10;
buf[1]=11;
buf[2]=12;
buf[3]=13;
buf[4]=14;
buf[5]=15;
buf[6]=16;
*/
while (!rf12_canSend())
rf12_recvDone();
rf12_sendStart(0, buf, sizeof buf);
Serial.print("enviado");
delay(5000);
}
#include <JeeLib.h>
void setup() {
Serial.begin(57600);
Serial.println("\n[simpleReceive]");
rf12_initialize(18, RF12_868MHZ, 212);
Serial.print("SimpleReceive");
}
void loop() {
Pág.64
www.corrosionyproteccion.com Pág.64
Serial.print(" ");
}
}
Pág.65
www.corrosionyproteccion.com Pág.65
24. cilindro de nylamid
PROPUESTA
La primera propuesta para guardar el circuito dentro de un estuche que pudiera protegerlo de las condiciones del medio
ambiente y que fuera fácil de instalarse en los postes fue un cilindro de Nylamid y tomando en cuenta las medidas del
circuito se diseñaron los siguientes planos y modelos 3d
Pág.66
www.corrosionyproteccion.com Pág.66
Planos
Pág.67
www.corrosionyproteccion.com Pág.67
25. planos y medidas del cilindro
Pág.68
www.corrosionyproteccion.com Pág.68
Modelos 3D
Pág.69
www.corrosionyproteccion.com Pág.69
Por medio de la simulación 3D podemos ver qué medidas y ajustes hacer para que los componentes queden lo mejor
posibles acomodados y que las dimensiones sean correctas.
Pág.70
www.corrosionyproteccion.com Pág.70
28. Batería LiPo
Pág.71
www.corrosionyproteccion.com Pág.71
29. Cilindro de nylamid con los componentes
Pág.72
www.corrosionyproteccion.com Pág.72
30. cilindro ensamblado
Partiendo del primer diseño y haciendo un análisis de cómo realizar una mejora que permita crear un estuche de menor
costo y que se adecue más al poste donde se instale se dieron las siguientes propuestas.
Propuesta 1
Para esta primer propuesta se diseñó una caja y una tapadera con las medidas del ancho del poste que es de 15cm y con
un espacio suficiente para poder colocar el sistema embebido a como se desee.
Planos
Pág.73
www.corrosionyproteccion.com Pág.73
31. planos de propuesta 1
Modelos 3D
Para tener una idea final de la caja a continuación se muestran los modelos 3D creados en solidworks
Pág.74
www.corrosionyproteccion.com Pág.74
32. modelos 3D de propuesta 1
Propuesta 2
La segunda propuesta consistió en diseñar la caja con la forma octagonal que posee el poste, de esta manera se mantiene
la estética y además posee el espacio suficiente para almacenar el sistema embebido.
Planos
Pág.75
www.corrosionyproteccion.com Pág.75
33. planos de propuesta 2
Modelos 3D
Pág.76
www.corrosionyproteccion.com Pág.76
34 modelos 3D de propuesta 2
Por medio del diseño podemos ver las alternativas a desarrollar, esto nos permite tomar en cuenta todos los factores que
conllevan para su realización, así como medidas y lo que podemos encontrar en el mercado para hacer nuestra caja
También se diseñó un pcb donde se pudieran soldar todos los componentes del sistema embebido que va dentro del Drone
el cual es el que recibe los datos enviados por RF, de esta manera pueda soportar los movimientos ejercidos por el avión.
Primera propuesta
Se diseñó un circuito que tuviera todas las conexiones necesarias para el sistema que consta de un arduino Pro mini,
RF12b y tarjeta SD.
Pág.77
www.corrosionyproteccion.com Pág.77
35. Placa 1 pcb para sistema embebido en el drone
Se diseñó una segunda propuesta y se decidió por mejorar la distribución y el espacio de cómo se acomodarían los
componentes para una mejor ergonomía dentro de la aeronave.
Pág.78
www.corrosionyproteccion.com Pág.78
En la siguiente imagen se muestra el resultado final de la placa con los componentes soldados.
Pág.79
www.corrosionyproteccion.com Pág.79
Caja para sistema embebido en el drone
Los siguientes planos y modelos 3D se realizaron para guardar la placa pcb que se monta en el drone.
Planos
Pág.80
www.corrosionyproteccion.com Pág.80
38. Planos para caja del pcb
Modelos 3D
Pág.81
www.corrosionyproteccion.com Pág.81
Al mismo tiempo se diseñó otro circuito similar para la toma de potenciales.
TOMA DE POTENCIALES
El objetivo de este tema es recaudar la toma de un potencial eléctrico en los
postes, integrado a eso va un circuito eléctrico, capaz de leer el diferencial del
potencial, mandarlo al UAV (Unmanned Aerial Vehicle), y comunicándose con el
UAV en tiempo real, en un rango de 200mts.
Todo este circuito tiene que ir embebido en un cilindro de nylamid, llamado nylalloy,
este tipo de material, tiene propiedades mecánicas, térmicas, eléctricas, dureza.
Sus dimensiones son 3” de diámetro, y 5.9” de largo.
También la batería debe soportar la alimentación del circuito por 1 año sin que se
le de mantenimiento.
XCTU
Pág.82
www.corrosionyproteccion.com Pág.82
Figura 1 Arduino Mega
Pág.83
www.corrosionyproteccion.com Pág.83
Figura 3 Sparkfun Xbee Explorer
void setup() {
Serial.begin(9600);
}
void loop() {
float v = (analogRead(0) * v1) / 1024.0;
float v2 = v / (r2 / (r1 + r2));
Pág.84
www.corrosionyproteccion.com Pág.84
Serial.print("001, ");
Serial.println(v2);
delay(300);
}
Con este código lo que hace el circuito es, siempre estar leyendo lo que le entra
en el puerto analógico, y siempre mandarlo por el puerto serial, esto causa que la
batería consuma mucha energía, por esa razón es uno de los puntos a mejorar.
CONEXIONES
Para la conexión del Arduino mega con el Shield de Xbee Explorer es de la siguiente
manera, como se muestra en la siguiente figura.
5v - 5v
GND GND
TX DIN
Pág.85
www.corrosionyproteccion.com Pág.85
RX DOUT
Arduino Mega
2190𝑊ℎ 𝑎𝑙 𝑎ñ𝑜
= 438𝐴
5𝑣
El puro Microcontrolador consume 438Ah en un año, mientras que el Xbee pro 900
consume 2242.42Ah. Revisando los cálculos, es excesiva la demanda de energía
que se necesita para que el circuito funcione adecuadamente, y sería un arreglo
de baterías muy grande, y no estaría embebido en el poste, utilizando la pila que
le proporcionamos ya tomando en cuenta que la batería va perdiendo el voltaje,
mientras se descarga, duraría aproximadamente 1 día con una hora de consumo.
Desventajas
Pág.86
www.corrosionyproteccion.com Pág.86
No cabe dentro de las especificaciones del poste.
Mayor consumo de batería.
Los Xbee no soportaban los protocolos de comunicación que se
necesitaban.
No cabe en el cilindro de Nylalloy figura 5.
Pág.87
www.corrosionyproteccion.com Pág.87
Toma de potenciales V.2
Tomando en cuenta que necesitamos mejorar las desventajas del circuito anterior,
lo primero que se mejoró en cuanto al diseño del circuito fue, cambiar el
Microcontrolador, por uno de menor puertos, ya que en el Arduino mega se
desperdiciaban muchos puertos de analógico y digital.
Así que por esa razón decidimos usar el Arduino uno figura 6, gracias a este
Microcontrolador reducimos el espacio del circuito, reducimos los puertos
analógicas y digitales, también reducimos el consumo de energía de este
Microcontrolador, lo que se busca es obtener el proyecto es tener el menor
consumo de energía, reduciendo al igual el tamaño del circuito acoplándolo a las
dimensiones marcadas por el cilindro.
Pág.88
www.corrosionyproteccion.com Pág.88
Figura 6 Arduino uno
Pág.89
www.corrosionyproteccion.com Pág.89
Figura 8 Xbee RPSMA (120m).
CONEXIONES
Pág.90
www.corrosionyproteccion.com Pág.90
En este se muestra como se conecta los dos circuitos, como los dos comparten la
parte del Xbee Explorer, se conectan de igual forma, no importa si es receptor, o
el emisor de los datos, como se muestra en la figura de abajo
5v - 5v
GND GND
TX DIN
RX DOUT
Pág.91
www.corrosionyproteccion.com Pág.91
Ya que está abierto el programa, conectamos el Xbee Explorer USB, con el
dispositivo Xbee que deseamos configurar.
Pág.92
www.corrosionyproteccion.com Pág.92
Después, le damos clic en la parte superior izquierda donde aparece el icono
Pág.93
www.corrosionyproteccion.com Pág.93
Debemos seleccionar el puerto COM que se les asignó a los Xbee Explorer USB,
después le damos en next y nos desplegara otro menú.
Pág.94
www.corrosionyproteccion.com Pág.94
En el siguiente menú nos mostrara los parámetros, bites de paridad, serial, etc.
Le damos en finish.
Pág.95
www.corrosionyproteccion.com Pág.95
Después de escanear los dispositivos conectados, le damos en add selected
devices, seleccionas el que vayas a configurar, en este caso configuraremos el
Pág.96
www.corrosionyproteccion.com Pág.96
Hacemos el mismo proceso con el coordinador.
Y como se puede observar en la imagen vemos que dice Xbee coordinator AT,
después de configurarlo tenemos que observar que tengan la misma
configuración los dos Xbee tanto el coordinador como el Router, ojo cada vez
que vayas a cambiar los parámetros del Xbee no se te vaya a olvidar escribirlos
para ello se recomienda que después de las configuraciones le des clic en el
Pág.97
www.corrosionyproteccion.com Pág.97
En esta imagen se puede observar que del lado izquierdo tenemos el Router y del
lado derecho tenemos el Coordinador, para esto también se observa que tienen
el mismo ID, por esa razón se van a comunicar entre ellos, para poder observar
que hay comunicación, hicimos una prueba.
Para esto nos vamos al monitor serial que está representado con este icono
Pág.98
www.corrosionyproteccion.com Pág.98
A continuación se verá que el coordinador recibirá el paquete de letras y se verá
reflejado en el monitor serial del lado derecho, como se muestra en la imagen de
abajo.
El código que se utilizo es el mismo que se utilizó en el prototipo pasado, solo que
ahora se integró un nuevo código que es para la parte del coordinator, este código
en Arduino nos ayuda visualizar los datos que se están mandando del Router.
char vout;
void setup(){
void loop(){
if (Serial.available()>0);{//se revisa si hay algo en el serial
}
}
Lo que sucede con este código es iniciar el serial, después ver si hay algo en ese
serial, si hay algo dentro de ese rango del serial imprimirlo, y después esperar un
tiempo.
Pág.99
www.corrosionyproteccion.com Pág.99
En cuanto a la alimentación del circuito se quedó como en el prototipo anterior,
una batería de 12voltios a 7 amperes figura 10.
Con este circuito logramos reducir el consumo de energía esto es gracias a que se
cambió el Microcontrolador por uno de menor consumo, al igual que los RF (radio
frecuencia), aunque también se disminuyó el rango de recepción, pero no se
necesita mucho rango para detectar el UAV, con el circuito en el poste.
Pág.100
www.corrosionyproteccion.com Pág.100
0.4𝑊 𝑥 24ℎ = 9.6𝑤ℎ 𝑑𝑒 𝑐𝑜𝑛𝑠𝑢𝑚𝑜 𝑎𝑙 𝑑𝑖𝑎
3504𝑊ℎ 𝑎𝑙 𝑎ñ𝑜
= 700.8𝐴
5𝑣
Arduino uno junto con el Xbee son de 700.8 A al año, esto quiere decir que aunque
se redujo la cantidad de energía que se utilizara aun no es suficiente.
Desventajas
Toma de PotencialesV3.
Pág.101
www.corrosionyproteccion.com Pág.101
Tomando en cuenta, las desventajas del circuito anterior, nos dimos a la tarea de
mejorar en cuanto a consumo de energía, en esta versión de toma de potenciales,
reducimos el tamaño del circuito, ya que se cambió el Microcontrolador por el
Arduino nano, esta versión de Arduino viene un poco más compacta como se
muestra en la figura 11. Pero aparte de reducir el tamaño, también se redujo el
consumo de energía del circuito.
Este circuito aparte de que queda embebido en el poste, se diseñó en Proteus una
placa en pcb, esto ayuda a reducir espacios, para los dos circuitos, tanto el
coordinator, como el Router como se muestra en la figura 12 y 13. Esto nos ayuda
a no generar cables o algún falso, ya que este tipo de placas tiene una aleación y
un recubrimiento que no te permite que hagan corto.
CONEXIONES
Pág.102
www.corrosionyproteccion.com Pág.102
Conexiones entre arduino nano y Xbee Explorer.
5v - 5v
GND GND
TX DIN
RX DOUT
Pág.103
www.corrosionyproteccion.com Pág.103
Figura 12 pcb de Router, con los circuitos eléctricos.
Pág.104
www.corrosionyproteccion.com Pág.104
Figura 13 PCB de Coordinator.
Lo que se logra apreciar en esta versión del circuito, que el objetivo se cumplió que
fue reducir el consumo de energía, reduciendo un 50% de energía. También se
logró reducir las dimensiones del circuito esto nos ayuda a que el circuito este más
compacto y quede embebido en el poste, otra de las ventajas de los circuitos es
que ya están sincronizados como Coordinador y Reuter. Esto nos ayuda a generar
una red de comunicación.
Desventajas
Pág.105
www.corrosionyproteccion.com Pág.105
Toma de potenciales V4
Esta versión del circuito de toma de potenciales nos dimos a la tarea, de hacer que
guardara los datos recibidos del poste, y los almacenara en una memoria SD, del
mismo modo se generó una placa en pcb como se muestra en la figura 14, también
se ven los componentes eléctricos adaptados con la placa PCB en la figura 15,
adaptado a la placa PCB se encuentra el Xbee serie 2 figura 7 y el Microcontrolador
nano figura 11.
para esto se generó el siguiente código que hace que lea lo que se reciba del
poste, adaptado a que guarde lo detectado en una memoria micro SD, lo que se
ve dentro de la SD, es un documento en .txt, con el ID del poste, y el potencial del
poste como se muestra en la figura 16.
#include <SD.h>
const int chipSelect = 4;
void setup(){
Serial.begin(9600);
pinMode(10, OUTPUT);
if (!SD.begin(chipSelect)){
Serial.println("Error al leer la tarjeta.");
return;
}
}
void loop(){
int dato;
if(Serial.available()>0)
{
char dato=Serial.read();
File dataFile = SD.open("voltaje.txt", FILE_WRITE);
if (dataFile) {
dataFile.print(dato);
dataFile.close();
Serial.print(dato);
}
}
delay(100);
}
Con este circuito, dice que trabaja de la siguiente manera, el circuito que va
embebido en el poste, siempre está mandando los datos por el puerto serial, en el
Pág.106
www.corrosionyproteccion.com Pág.106
momento que el circuito que va en el UAV lo detecta lo lee y después lo guarda
en la memoria SD, también se puede observar lo que se está guardando en el
monitor serial de la computadora.
Pero al momento de correr el programa, el único detalle que se observa, es que
no se guarda adecuadamente los datos en la SD, como se muestra en la figura 16
los guarda de manera vertical, esto se debe al programa.
CONEXIONES
Pág.107
www.corrosionyproteccion.com Pág.107
Arduino Xbee Explorer Arduino MODULO SD
5v - 5v D4 CS
TX DIN 11 MOSI
RX DOUT 12 MISO
5V VCC
GND GND
Pág.108
www.corrosionyproteccion.com Pág.108
Figura 15 adaptaciones de componentes eléctricos al pcb.
Pág.109
www.corrosionyproteccion.com Pág.109
Figura 16 documento de texto con los valores recopilados del poste.
Pero aparte de mejorar la recepción de datos, también hicimos que guardara los
datos recopilados, esto nos ayuda a ver qué es lo que sucede en cada uno de los
postes instrumentados, y nos demos cuenta que ducto necesita mantenimiento, o
que ducto esta corroído.
Hay dos tipos de circuitos, uno que va a estar instrumentado en el poste como se
muestra en la figura 17 y otro que ira en la Aeronave no tripulada, el circuito que
ira en la aeronave, es el que cuenta con la memoria SD como se muestra en la
figura 15, para el almacenamiento de datos, para esto el circuito cuenta con una
carcasa de acrílico para protegerlo de cualquier daño como se muestra en la
figura 18.
Pág.110
www.corrosionyproteccion.com Pág.110
Figura 17 circuito embebido en el tubo de nylalloy.
Pág.111
www.corrosionyproteccion.com Pág.111
Figura 18 carcasa protectora del circuito del UAV.
También se le adapto una clavija figura 20, para la conexión a una batería de Lipo
de 2celdas a 7.4 voltios, de 1300mAh como se muestra en la figura 21.
Pág.112
www.corrosionyproteccion.com Pág.112
Figura 20 clavija para la adaptación de batería Lipo.
Desventajas
Pág.113
www.corrosionyproteccion.com Pág.113
Toma de potenciales V5
Para la medición del valor del poste se necesita un filtro pasa bajas que permita
eliminar la frecuencia de 60 Hz del rectificador. Este filtro debe tener la frecuencia
de corte más baja posible sin ocasionar un alias en las mediciones. En este caso la
frecuencia de muestreo es de un periodo de 10 segundos, es decir 0.1Hz, por lo que
se requiere un periodo del doble del periodo de muestreo, es decir 20 segundos o
0.05Hz.
1 1
RC= 2 π f = 2 π 0.05 =3.183 ΩF
Podemos elegir entonces un capacitor comercial que no sea muy grande. En este
caso se eligió un capacitor de 470uF, lo que indica que es necesaria una resistencia
de 6.722kὨ. Para obtener esta resistencia se puede utilizar entonces un
potenciómetro de precisión trimpot.
Pág.114
www.corrosionyproteccion.com Pág.114
Este divisor debe reducir el voltaje de los 10 V máximos que se esperan de la lectura
del poste, a un máximo de 3.3V. Definiendo entonces el valor máximo de resistencia
como 1 MὨ, la otra resistencia se puede obtener de:
R 2= R1 = 1 M Ω ≈500 k Ω
Vin −1 10 V −1
Vout 3.3 V
De esta manera se muestra cómo quedaría el circuito de toma de potenciales,
figura 22.
Pág.115
www.corrosionyproteccion.com Pág.115
momento de llegar al circuito que v en la aeronave, comprueba que hay en el
serial, con el siguiente comando if(Serial.available()>0), entonces después viene la
otra parte del código que es leer el tipo de dato del serial como lo indica con el
siguiente comando char dato=Serial.read(), después lo manda a la SD, imprime el
dato en la SD y en el monitor serial de la computadora, y regresa al principio del
ciclo if.
Pág.116
www.corrosionyproteccion.com Pág.116
File dataFile = SD.open("voltaje.txt", FILE_WRITE);
if (dataFile) {
dataFile.print(dato);
dataFile.close();
Serial.print(dato);
}
}
if(Serial.available()>0)
{
char dato=Serial.read();
File dataFile = SD.open("voltaje.txt", FILE_WRITE);
if (dataFile) {
dataFile.print(dato);
dataFile.close();
Serial.print(dato);
}
}
if(Serial.available()>0) //Comprobamos si en el buffer hay datos
{
char dato=Serial.read();
File dataFile = SD.open("voltaje.txt", FILE_WRITE);
if (dataFile) {
dataFile.print(dato);
dataFile.close();
Serial.print(dato);
}
}
if(Serial.available()>0) //Comprobamos si en el buffer hay datos
{
char dato=Serial.read();
File dataFile = SD.open("voltaje.txt", FILE_WRITE);
if (dataFile) {
dataFile.println(dato);
dataFile.close();
Serial.println(dato);
}
}
delay(100);
}
Pág.117
www.corrosionyproteccion.com Pág.117
Figura 23 datos recibidos del bloc de notas, del circuito del poste, como se
muestra en la imagen del lado izquierdo se alcanza a apreciar el id que se le
genero al poste, y del lado derecho se muestra la toma de potencial recopilada
del circuito del poste.
Como se alcanza a observar en la figura 23, nos damos cuenta que el circuito
recibe de manera correcta todos los datos recibidos del circuito del poste, de
manera ordenada.
Después de realizar los cálculos necesarios, se comenzó con el armado del circuito
de acuerdo a los diagramas antes mencionados, como se muestra en la figura 24
Pág.118
www.corrosionyproteccion.com Pág.118
Figura 24 armado del circuito pasa bajas.
A continuación del armado del circuito se dieron varias pruebas en campo como
se muestra en la figura 25, en esta se puede observar cómo van las conexiones del
circuito, ya que si por alguna razón se invierte la polaridad de la celda y de la tierra
del poste, se puede llegar a dañar el circuito, ya que el Arduino no puede leer
cargas negativas y esto conllevaría a la quema de componentes eléctricos.
Pág.119
www.corrosionyproteccion.com Pág.119
Figura 25 pruebas en campo del circuito pasa bajas.
Luego de realizar las pruebas necesarias dentro del circuito, nos dimos a la tarea
de colocarlo en un lugar muy reducido con ayuda de mini placas pcb como
protoboard, se introdujo todo el circuito se acomodó y se colocó en el circuito que
ya se tenía. Como se muestra en las figuras 26 y 27.
Pág.120
www.corrosionyproteccion.com Pág.120
Figura 26 adaptación de circuito pasa bajas al circuito de toma de potenciales
Pág.121
www.corrosionyproteccion.com Pág.121
Figura 27 adaptación de circuito pasa bajas, al circuito de toma de potenciales.
Con esta mejora que se le aplico a la toma de potencial V5, se obtiene la exactitud
que se planteó desde un principio.
Desventajas
Pág.122
www.corrosionyproteccion.com Pág.122
Una de las desventajas que se observó con este circuito que una vez
probada en campo, ya con los circuitos montados en el UAV y en el poste,
fue que el rango de detención de los dos era muy pequeña por el tipo de
antena que tenía el Xbee serie 2 wire antena como se muestra en la figura
7. Sus rangos son muy pequeños y por esa razón no alcanzaban a
detectarse.
Pág.123
www.corrosionyproteccion.com Pág.123
Toma de potenciales V6
Pág.124
www.corrosionyproteccion.com Pág.124
Figura 28 conexiones de Xbee con adaptador Xbee Explorer USB, para su
configuración.
Pág.125
www.corrosionyproteccion.com Pág.125
Figura 29 representa el programa XCTU para configurar los Xbee SERIE 2 RPSMA.
Pág.126
www.corrosionyproteccion.com Pág.126
A continuación le damos en el icono de finish, y a continuación se abrirá la
configuración del Xbee serie 2 RPSMA, como se muestra en la figura 31.
En esta versión del circuito nos dimos cuenta que el cambio nos favoreció ya que
en pruebas de campo, el circuito tanto el que va en la aeronave, como el que va
en el poste, están dentro del rango y alcanzan la comunicación que esperábamos
dentro del rango de los 120mts.
Desventajas
Pág.127
www.corrosionyproteccion.com Pág.127
Toma de potenciales V7
Pág.128
www.corrosionyproteccion.com Pág.128
Este chip trabaja en modo IDE, necesitará un cristal de 16MHz externo o
resonador, una alimentación de 5V, y una conexión en serie.
un 16 MHz cristal,
Arduino uno
ATmega328p
una resistencia de 10K, y
dos de 18 a 22 picofaradios capacitores (cerámica).
Protoboard
Pág.129
www.corrosionyproteccion.com Pág.129
Figura resistencia de 10kohms
Pág.130
www.corrosionyproteccion.com Pág.130
Pero antes de que se haga algo mas solo conectas el Arduino uno con la
computadora como se muestra en la siguiente figura.
// ArduinoISP //
// Copyright (c) 2008-2011 Randall Bohn // On some Arduinos (Uno,...), pins MOSI,
// If you require a license, see MISO and SCK are the same pins
// http://www.opensource.org/licenses/ // as digital pin 11, 12 and 13,
bsd-license.php respectively. That is why many tutorials
// // instruct you to hook up the target to
// This sketch turns the Arduino into a these pins. If you find this wiring
AVRISP // more practical, have a define
// using the following arduino pins: USE_OLD_STYLE_WIRING. This will work even
// // even when not using an Uno. (On an Uno
// Pin 10 is used to reset the target this is not needed).
microcontroller. //
// // Alternatively you can use any other
// By default, the hardware SPI pins MISO, digital pin by configuring software
MOSI and SCK pins are used ('BitBanged')
// to communicate with the target. On all // SPI and having appropriate defines for
Arduinos, these pins can be found PIN_MOSI, PIN_MISO and PIN_SCK.
// on the ICSP/SPI header: //
// // IMPORTANT: When using an Arduino that
// MISO °. . 5V (!) Avoid is not 5V tolerant (Due, Zero, ...)
this pin on Due, Zero... // as the programmer, make sure to not
// SCK . . MOSI expose any of the programmer's pins to 5V.
// . . GND
Pág.131
www.corrosionyproteccion.com Pág.131
// A simple way to accomplish this is to #define PIN_MISO 12
power the complete system (programmer #define PIN_SCK 13
// and target) at 3V3.
// #endif
// Put an LED (with resistor) on the
following pins: // HOODLOADER2 means running sketches on
// 9: Heartbeat - shows the programmer the atmega16u2
is running // serial converter chips on Uno or Mega
// 8: Error - Lights up if something boards.
goes wrong (use red if that makes sense) // We must use pins that are broken out:
// 7: Programming - In communication with #else
the slave
// #define RESET 4
#define LED_HB 7
#include "Arduino.h" #define LED_ERR 6
#undef SERIAL #define LED_PMODE 5
#endif
#define PROG_FLICKER true
// By default, use hardware SPI pins:
// Configure SPI clock (in Hz). #ifndef PIN_MOSI
// E.g. for an attiny @128 kHz: the #define PIN_MOSI MOSI
datasheet states that both the high #endif
// and low spi clock pulse must be > 2 cpu
cycles, so take 3 cycles i.e. #ifndef PIN_MISO
// divide target f_cpu by 6: #define PIN_MISO MISO
// #define #endif
SPI_CLOCK (128000/6)
// #ifndef PIN_SCK
// A clock slow enough for an attiny85 @ #define PIN_SCK SCK
1MHz, is a reasonable default: #endif
Pág.132
www.corrosionyproteccion.com Pág.132
return b;
}
#define HWVER 2
#define SWMAJ 1 private:
#define SWMIN 18 unsigned long pulseWidth; // in
microseconds
// STK Definitions };
#define STK_OK 0x10
#define STK_FAILED 0x11 static BitBangedSPI SPI;
#define STK_UNKNOWN 0x12
#define STK_INSYNC 0x14 #endif
#define STK_NOSYNC 0x15
#define CRC_EOP 0x20 //ok it is a void setup() {
space... SERIAL.begin(BAUDRATE);
Pág.133
www.corrosionyproteccion.com Pág.133
digitalWrite(RESET, ((reset && if (CRC_EOP == getch()) {
rst_active_high) || (!reset && SERIAL.print((char)STK_INSYNC);
!rst_active_high)) ? HIGH : LOW); SERIAL.print((char)b);
} SERIAL.print((char)STK_OK);
} else {
void loop(void) { error++;
// is pmode active? SERIAL.print((char)STK_NOSYNC);
if (pmode) { }
digitalWrite(LED_PMODE, HIGH); }
} else {
digitalWrite(LED_PMODE, LOW); void get_version(uint8_t c) {
} switch (c) {
// is there an error? case 0x80:
if (error) { breply(HWVER);
digitalWrite(LED_ERR, HIGH); break;
} else { case 0x81:
digitalWrite(LED_ERR, LOW); breply(SWMAJ);
} break;
case 0x82:
// light the heartbeat LED breply(SWMIN);
heartbeat(); break;
if (SERIAL.available()) { case 0x93:
avrisp(); breply('S'); // serial programmer
} break;
} default:
breply(0);
uint8_t getch() { }
while (!SERIAL.available()); }
return SERIAL.read();
} void set_parameters() {
void fill(int n) { // call this after reading paramter
for (int x = 0; x < n; x++) { packet into buff[]
buff[x] = getch(); param.devicecode = buff[0];
} param.revision = buff[1];
} param.progtype = buff[2];
param.parmode = buff[3];
#define PTIME 30 param.polling = buff[4];
void pulse(int pin, int times) { param.selftimed = buff[5];
do { param.lockbytes = buff[6];
digitalWrite(pin, HIGH); param.fusebytes = buff[7];
delay(PTIME); param.flashpoll = buff[8];
digitalWrite(pin, LOW); // ignore buff[9] (= buff[8])
delay(PTIME); // following are 16 bits (big endian)
} while (times--); param.eeprompoll = beget16(&buff[10]);
} param.pagesize = beget16(&buff[12]);
param.eepromsize = beget16(&buff[14]);
void prog_lamp(int state) {
if (PROG_FLICKER) { // 32 bits flashsize (big endian)
digitalWrite(LED_PMODE, state); param.flashsize = buff[16] * 0x01000000
} + buff[17] *
} 0x00010000
+ buff[18] *
uint8_t spi_transaction(uint8_t a, uint8_t 0x00000100
b, uint8_t c, uint8_t d) { + buff[19];
SPI.transfer(a);
SPI.transfer(b); // avr devices have active low reset,
SPI.transfer(c); at89sx are active high
return SPI.transfer(d); rst_active_high = (param.devicecode >=
} 0xe0);
}
void empty_reply() {
if (CRC_EOP == getch()) { void start_pmode() {
SERIAL.print((char)STK_INSYNC);
SERIAL.print((char)STK_OK); // Reset target before driving PIN_SCK
} else { or PIN_MOSI
error++;
SERIAL.print((char)STK_NOSYNC); // SPI.begin() will configure SS as
} output,
} // so SPI master mode is selected.
// We have defined RESET as pin 10,
void breply(uint8_t b) {
Pág.134
www.corrosionyproteccion.com Pág.134
// which for many arduino's is not the }
SS pin. }
// So we have to configure RESET as
output here, unsigned int current_page() {
// (reset_target() first sets the if (param.pagesize == 32) {
correct level) return here & 0xFFFFFFF0;
reset_target(true); }
pinMode(RESET, OUTPUT); if (param.pagesize == 64) {
SPI.begin(); return here & 0xFFFFFFE0;
SPI.beginTransaction(SPISettings(SPI_CLO }
CK, MSBFIRST, SPI_MODE0)); if (param.pagesize == 128) {
return here & 0xFFFFFFC0;
// See avr datasheets, chapter }
"SERIAL_PRG Programming Algorithm": if (param.pagesize == 256) {
return here & 0xFFFFFF80;
// Pulse RESET after PIN_SCK is low: }
digitalWrite(PIN_SCK, LOW); return here;
delay(20); // discharge PIN_SCK, value }
arbitrally chosen
reset_target(false);
// Pulse must be minimum 2 target CPU void write_flash(int length) {
clock cycles fill(length);
// so 100 usec is ok for CPU speeds if (CRC_EOP == getch()) {
above 20KHz SERIAL.print((char) STK_INSYNC);
delayMicroseconds(100); SERIAL.print((char)
reset_target(true); write_flash_pages(length));
} else {
// Send the enable programming command: error++;
delay(50); // datasheet: must be > 20 SERIAL.print((char) STK_NOSYNC);
msec }
spi_transaction(0xAC, 0x53, 0x00, 0x00); }
pmode = 1;
} uint8_t write_flash_pages(int length) {
int x = 0;
void end_pmode() { unsigned int page = current_page();
SPI.end(); while (x < length) {
// We're about to take the target out of if (page != current_page()) {
reset commit(page);
// so configure SPI pins as input page = current_page();
pinMode(PIN_MOSI, INPUT); }
pinMode(PIN_SCK, INPUT); flash(LOW, here, buff[x++]);
reset_target(false); flash(HIGH, here, buff[x++]);
pinMode(RESET, INPUT); here++;
pmode = 0; }
}
commit(page);
void universal() {
uint8_t ch; return STK_OK;
}
fill(4);
ch = spi_transaction(buff[0], buff[1], #define EECHUNK (32)
buff[2], buff[3]); uint8_t write_eeprom(unsigned int length)
breply(ch); {
} // here is a word address, get the byte
address
void flash(uint8_t hilo, unsigned int unsigned int start = here * 2;
addr, uint8_t data) { unsigned int remaining = length;
spi_transaction(0x40 + 8 * hilo, if (length > param.eepromsize) {
addr >> 8 & 0xFF, error++;
addr & 0xFF, return STK_FAILED;
data); }
} while (remaining > EECHUNK) {
void commit(unsigned int addr) { write_eeprom_chunk(start, EECHUNK);
if (PROG_FLICKER) { start += EECHUNK;
prog_lamp(LOW); remaining -= EECHUNK;
} }
spi_transaction(0x4C, (addr >> 8) & write_eeprom_chunk(start, remaining);
0xFF, addr & 0xFF, 0); return STK_OK;
if (PROG_FLICKER) { }
delay(PTIME); // write (length) bytes, (start) is a byte
prog_lamp(HIGH); address
Pág.135
www.corrosionyproteccion.com Pág.135
uint8_t write_eeprom_chunk(unsigned int }
start, unsigned int length) { return STK_OK;
// this writes byte-by-byte, }
// page writing may be faster (4 bytes
at a time) void read_page() {
fill(length); char result = (char)STK_FAILED;
prog_lamp(LOW); int length = 256 * getch();
for (unsigned int x = 0; x < length; length += getch();
x++) { char memtype = getch();
unsigned int addr = start + x; if (CRC_EOP != getch()) {
spi_transaction(0xC0, (addr >> 8) & error++;
0xFF, addr & 0xFF, buff[x]); SERIAL.print((char) STK_NOSYNC);
delay(45); return;
} }
prog_lamp(HIGH); SERIAL.print((char) STK_INSYNC);
return STK_OK; if (memtype == 'F') result =
} flash_read_page(length);
if (memtype == 'E') result =
void program_page() { eeprom_read_page(length);
char result = (char) STK_FAILED; SERIAL.print(result);
unsigned int length = 256 * getch(); }
length += getch();
char memtype = getch(); void read_signature() {
// flash memory @here, (length) bytes if (CRC_EOP != getch()) {
if (memtype == 'F') { error++;
write_flash(length); SERIAL.print((char) STK_NOSYNC);
return; return;
} }
if (memtype == 'E') { SERIAL.print((char) STK_INSYNC);
result = (char)write_eeprom(length); uint8_t high = spi_transaction(0x30,
if (CRC_EOP == getch()) { 0x00, 0x00, 0x00);
SERIAL.print((char) STK_INSYNC); SERIAL.print((char) high);
SERIAL.print(result); uint8_t middle = spi_transaction(0x30,
} else { 0x00, 0x01, 0x00);
error++; SERIAL.print((char) middle);
SERIAL.print((char) STK_NOSYNC); uint8_t low = spi_transaction(0x30,
} 0x00, 0x02, 0x00);
return; SERIAL.print((char) low);
} SERIAL.print((char) STK_OK);
SERIAL.print((char)STK_FAILED); }
return; //////////////////////////////////////////
} //////////////////////////////////////////
Pág.136
www.corrosionyproteccion.com Pág.136
break;
case 'E': // extended parameters -
ignore for now
fill(5);
empty_reply();
break;
case 'P':
if (!pmode)
start_pmode();
empty_reply();
break;
case 'U': // set address (word)
here = getch();
here += 256 * getch();
empty_reply();
break;
Pág.137
www.corrosionyproteccion.com Pág.137
Después de cargar el código ISP al Arduino realizamos las siguientes conexiones.
Conexiones
Figura uso del Arduino uno para grabar el gestor de arranque en el ATmega.
Pág.138
www.corrosionyproteccion.com Pág.138
Después de darle clic en quemar bootloader, te aparecerá un escrito que dice
que está quemando la placa como se muestra en la siguiente figura.
Pág.139
www.corrosionyproteccion.com Pág.139
Figura diagrama de conexiones para cargar algún programa a la placa
ATmega328
Y le cargamos el siguiente programa para poder leer lo del poste, con el filtro
pasa bajas.
float analogPin = 0;
float val = 0;
float valV;
void setup(){
Serial.begin(9600);
}
void loop(){
val = analogRead(analogPin);
valV = (float)val*5/1024;
Serial.print("001,");
Serial.println(valV);
Pág.140
www.corrosionyproteccion.com Pág.140
Una vez que carguemos el programa en el ATmega 328p, se hicieron pruebas
como se muestra en las siguientes figuras
Pág.141
www.corrosionyproteccion.com Pág.141
Figura se muestra las pruebas cuando el ATmega 328 está mandando información
por medio del Xbee.
Pág.142
www.corrosionyproteccion.com Pág.142
RF RECEIVE
#include <JeeLib.h>
void setup() {
Serial.begin (57600);
Serial.println ("\n[simpleReceive]");
rf12_initialize (18, RF12_868MHZ, 212);
Serial.print ("SimpleReceive");
}
void loop() {
}
}
Después de las pruebas de transmisión de datos, se hizo la prueba de lectura de un canal del
ADC, y su configuración
PortI2C myI2C(1);
AnalogPlug adc (myI2C,0x69); //registro por default a utilizar
void setup() {
// put your setup code here, to run once:
Serial.begin(57600);
if(adc.isPresent())
Serial.println("Analog Plug found");
adc.send();
adc.write(0x8C); //configuracion de adc , 18 bits, mode one-shot,gain x1
adc.stop();
}
void loop() {
adc.select(1);
delay(500);
long uvolts = ((adc.reading() >> 8)*1000)/64;
Serial.print(' ');
Serial.print(uvolts);
Pág.143
www.corrosionyproteccion.com Pág.143
Serial.print(" ");
}
Serial.println();
delay(1000);
}
El siguiente programa es para hacer un recorrido de la lectura de los cuatro canales que posee el
ADC
#include <JeeLib.h>
PortI2C myI2C(1);
AnalogPlug adc (myI2C);
byte seqnum;
void setup() {
rf12_initialize(20, RF12_868MHZ, 212);
Serial.begin(57600);
if(adc.isPresent())
Serial.println("Analog Plug found");
void loop() {
delay(300);
int buf[5];
buf[0] = ++seqnum;
while (!rf12_canSend())
rf12_recvDone ();
Pág.144
www.corrosionyproteccion.com Pág.144
rf12_sendStart (0, buf, sizeof buf);
}
Después lo siguiente fue realizar la medición del voltaje de la batería por medio del ADC
PortI2C myI2C(1);
AnalogPlug adc (myI2C,0x69);
void setup() {
Serial.begin(57600);
if(adc.isPresent())
Serial.println("Analog Plug found");
adc.send();
adc.write(0x8C);
adc.stop();
}
void loop() {
adc.select(1);
delay(500);
long uvolts = ((adc.reading() >> 8)*1000)/64;
Serial.print(' ');
Serial.print(uvolts);
Serial.print(" ");
uvolts=(uvolts*2.55);
Serial.print("voltaje de pila ");
Serial.print(uvolts);
Serial.println();
delay(1000);
}
Pág.145
www.corrosionyproteccion.com Pág.145
Una vez obtenido el valor del voltaje de la batería, se hizo una prueba para enviar este dato y ver
su funcionamiento, este programa consta en la configuración del transmisor y lectura del voltaje en
el ADC
Serial.begin(57600);
if(adc.isPresent())
Serial.println("Analog Plug found");
adc.send(); //configuracion ADC
adc.write(0x8C);
adc.stop();
}
void loop() {
delay(300);
long buf[3];
buf[0]= ++seqnum;
adc.select(1);
delay(500);
long uvolts = ((adc.reading() >> 8)*1000)/64;
Serial.print(' ');
Serial.print(uvolts);
Serial.print(" ");
buf[1]=uvolts;
long uvolt2=(uvolts*2.55);
Serial.print("voltaje de pila ");
Serial.print(uvolt2);
buf[2]=uvolt2;
Serial.println();
delay(1000);
while (!rf12_canSend())
rf12_recvDone();
rf12_sendStart(0,buf,sizeof buf);
delay(200);
buf[1]=0;
Pág.146
www.corrosionyproteccion.com Pág.146
buf[2]=0;
delay(200);
}
Este programa consta de la configuración del receptor y la impresión de los datos enviados del valor del voltaje de la batería
#include <JeeLib.h>
void setup() {
Serial.begin(57600);
Serial.println("\n[simpleReceive]");
rf12_initialize(18, RF12_868MHZ, 212);
Serial.print("SimpleReceive");
}
void loop() {
Serial.print(" Poste:");
Serial.print(buf[0]);
delay(100);
Serial.print(" Valor ADC: ");
Serial.print(buf[1]);
delay(100);
Serial.print(" Voltaje PILA: ");
Serial.print(buf[2]);
Serial.print(" ");
Serial.println();
delay(100);
}
}
Se estructuro el programa para una mejor organización de este y corregir un problema de ruido
que se presentaba en los datos enviados por vía RF
Pág.147
www.corrosionyproteccion.com Pág.147
RFSEND_ANALOG STRUCTURE
#include <JeeLib.h>
void setup()
{
Serial.begin(57600);
rf12_initialize(20, RF12_868MHZ, 212); // inicializacion de RF y
configuracion
rf12_config();
rf12_easyInit(0);
AP2init(adc);
if(adc.isPresent())
Serial.println("Analog Plug found");
void loop() {
delay(300);
long buf[3];
///////////////////
long val = AP2read(adc);
rf12_easyPoll();
rf12_easySend(&val, sizeof val);
buf[0]= ++seqnum;
buf[1]=val;
long val2 = val*2.68;
buf[2]=val2;
delay(2000);
////////////////////ENVIO DE DATA
while (!rf12_canSend())
rf12_recvDone();
Pág.148
www.corrosionyproteccion.com Pág.148
rf12_sendStart(0,buf,sizeof buf);
De acuerdo a que es necesario almacenar los datos enviados del voltaje de la batería y
los potenciales, se realizó una prueba de almacenamiento en una tarjeta SD, y para
conocer su modo de configuración.
READ/WRITE SD CARD
/* SD card read/write
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4*/
#include <SPI.h>
#include <SD.h>
File myFile;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; }
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
myFile = SD.open("test.txt", FILE_WRITE);
Pág.149
www.corrosionyproteccion.com Pág.149
}
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}
void loop() {
}
Se emplean dos dispositivos que utilizan comunicación SPI, por lo cual es necesario la correcta conexión de los pines entre
ellos que permita el funcionamiento correcto al momento de usarse.
RFM12B
SD CARD
READWRITE SD+RF
Pág.150
www.corrosionyproteccion.com Pág.150
/*
RF card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 10
#include <JeeLib.h>
#include <SPI.h>
#include <SD.h>
File myFile;
long volt;
int id;
int CS;
int aux = 0;
void setup() {
pinMode(10, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite (10, HIGH);
digitalWrite (4, HIGH);
Serial.begin(57600);
while (!Serial) {
; }
//////////////RF12B////////////////
rf12_initialize(18, RF12_868MHZ, 212);
Serial.print("SimpleReceive");
//////////////
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
}
void loop() {
delay(100);
digitalWrite (10, LOW);
digitalWrite (4, HIGH);
if (rf12_recvDone() && rf12_crc == 0) {
long* buf = (long*) rf12_data;
delay(100);
Pág.151
www.corrosionyproteccion.com Pág.151
Serial.print(" Poste:");
Serial.print(buf[0]);
delay(100);
Serial.print(" Valor ADC: ");
Serial.print(buf[1]);
delay(100);
Serial.print(" Voltaje PILA: ");
Serial.print(buf[2]);
Serial.print(" ");
Serial.println();
delay(100);
id = buf[0];
volt = buf[2];
}
volt = 0;
}
Pág.152
www.corrosionyproteccion.com Pág.152
MONITOR SERIAL DATOS RECIBIDOS
A continuación se muestran los datos de las lecturas realizadas por el ADC, y por medio de un monitor serial se despliegan
los datos obtenidos vía RF para corroborar que se enviaran correctamente.
Ilustración 1
ONESHOT_RF
#include <JeeLib.h>
#include <Ports.h>
#include <RF12.h>
PortI2C myI2C(1);
AnalogPlug adc(myI2C,0x69);
byte seqnum;
byte Config;
int ack;
void setup()
{
ack = 0;
// Serial
Serial.begin(57600);
Pág.153
www.corrosionyproteccion.com Pág.153
//RF12B
rf12_initialize(20, RF12_868MHZ, 212); // inicializacion de RF y
configuracion
rf12_config();
rf12_easyInit(0);
////////////////
Serial.println("POSTES");
ack = adc.send();
if(ack)
Serial.println("Got Ack");
//adc.write(0x8F); // channel 1, 18 bit, 8x gain, one-shot conversion
adc.stop();
}
void loop() {
long buf[3];
buf[0]= ++seqnum;
Serial.print(buf[0]);
Serial.print(" | ");
long raw;
ack = adc.send();
if(ack){
// Start new conversion
adc.write(0x8C);
Pág.154
www.corrosionyproteccion.com Pág.154
delay(500);
ack = adc.send();
if(ack){
adc.write(0xAC);
buf[1]=0;
buf[2]=0;
delay(8700);
ReadWrite SD+RF+BATERIA+POSTES_FINAL
/*
* RF card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
Pág.155
www.corrosionyproteccion.com Pág.155
** CLK - pin 13
** CS - pin 10
#include <JeeLib.h>
#include <SPI.h>
#include <SD.h>
File myFile;
long volt;
long poste;
int id;
int CS;
int aux=0;
void setup() {
pinMode(10,OUTPUT);
pinMode(4,OUTPUT);
digitalWrite (10,HIGH);
digitalWrite (4,HIGH);
// Open serial communications and wait for port to open:
Serial.begin(57600);
while (!Serial) { ; }
//////////////RF12B////////////////
rf12_initialize(18, RF12_868MHZ, 212);
Serial.print("SimpleReceive");
//////////////
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;}
}
void loop() {
///////////////RF12B//////////////////////////
// rf12_recvDone() is true if new information has been received.
// re12_crc == 0 indicates good transmission, checks validity of data
delay(100);
digitalWrite (10,LOW);
digitalWrite (4,HIGH);
if (rf12_recvDone() && rf12_crc == 0) { // received good
data if true
long* buf = (long*) rf12_data;
delay(100);
Serial.print(" ID Poste:");
Serial.print(buf[0]);
delay(100);
Serial.print(" Voltaje Poste: ");
Serial.print(buf[1]);
delay(100);
Serial.print(" Voltaje Bateria: ");
Pág.156
www.corrosionyproteccion.com Pág.156
Serial.print(buf[2]);
Serial.print(" ");
Serial.println();
delay(100);
id=buf[0];
poste=buf[1];
volt=buf[2];
}
////////////////////////////////////////
if (volt>0)
{
digitalWrite (10,HIGH);
digitalWrite (4,LOW);
Serial.println("SD");
myFile = SD.open("voltaje.txt", FILE_WRITE);
ONESHOT_RF_SLEEPMODEPWRDOWN
Pág.157
www.corrosionyproteccion.com Pág.157
#include <avr/sleep.h>
#include <avr/wdt.h>
#include <avr/power.h>
#include <JeeLib.h>
#include <Ports.h>
#include <RF12.h>
PortI2C myI2C(1);
AnalogPlug adc(myI2C,0x69);
byte seqnum;
byte Config;
int ack;
//////////SLEEPMODE_CONFIG/////////////
ISR(WDT_vect)
{
wdt_disable(); // disable watchdog
}
set_sleep_mode (SLEEP_MODE_PWR_DOWN);
sleep_mode(); // now goes to Sleep and waits for the interrupt
}
void setup()
{
ack = 0;
//RF12B
Sleepy::loseSomeTime(32);
rf12_initialize(20, RF12_868MHZ,212);
rf12_config();
rf12_easyInit(0);
rf12_sleep(RF12_SLEEP);
// wait another second for the power supply to settle
Sleepy::loseSomeTime(1000);
////////////////
ack = adc.send();
if(ack)
adc.stop();
}
void loop() {
power_all_enable ();
Sleepy::loseSomeTime(200);
long buf[3];
buf[0]= ++seqnum;
long raw;
ack = adc.send();
if(ack){
// Start new conversion
adc.write(0x8C);
Pág.158
www.corrosionyproteccion.com Pág.158
adc.receive(); // Sets R/W bit high
raw = (long) adc.read(0) << 16;
raw |= (word) adc.read(0) << 8;
raw |= adc.read(0);
Config = adc.read(0);
while(Config != 0x0C) {
Config = adc.read(0);
}
adc.read(1); // last poll
adc.receive(); // Sets R/W bit high
long data = adc.read(0);
raw = data << 16;
raw |= (word) adc.read(0) << 8;
raw |= adc.read(0);
raw |= (raw * 1000) / 64;
long poste = ((raw*3.125)/1000);
buf[1]=poste;
adc.read(1);
adc.stop();
}
Sleepy::loseSomeTime(300);
ack = adc.send();
if(ack){
adc.write(0xAC);
while(Config != 0x2C) {
Config = adc.read(0);
}
buf[2]=uvolts;
adc.read(1);
adc.stop();}
////////////envio de data/////////////////////////
rf12_sleep(RF12_WAKEUP); //turn on radio
rf12_sendNow(0,buf, sizeof buf); //transmit packet
rf12_sendWait(0);
rf12_sleep(RF12_SLEEP);
buf [1]=0;
buf [2]=0;
int p;
Pág.159
www.corrosionyproteccion.com Pág.159
for (p = 0; p <9; p++)/// duerme por 9 segundos
{
myWatchdogEnable (0b000110); // 1 seconds
}}//end of loop
Datos enviados y almacenados en tarjeta SD
3D
Diseños en 3D
Pág.160
www.corrosionyproteccion.com Pág.160
Todos los diseños del circuito, se generaron en un documento en solidWorks, para
medir los espacios y las dimensiones que necesitaba, esto con el fin de llegar al
objetivo que es reducir el tamaño del circuito, para que el circuito quede
embebido en el poste, y no tenga problemas de humedad, o de algún fallo
eléctrico.
Pág.161
www.corrosionyproteccion.com Pág.161
Figura antena del circuito embebido en el poste.
Pág.162
www.corrosionyproteccion.com Pág.162
Figura conector para la alimentación del circuito, también conector para la
toma de potencial
Pág.163
www.corrosionyproteccion.com Pág.163
Figura ensamble de componentes en el circuito embebido en el poste
Pág.164
www.corrosionyproteccion.com Pág.164
Pág.165
www.corrosionyproteccion.com Pág.165
Figura poste de concreto donde se colocara el circuito del poste.
Se diseñó el circuito dentro del nylalloy, esto para que el circuito este protegido, de
cualquier variación térmica, y quede completamente sellado, como se muestra en
la figura 31
Pág.166
www.corrosionyproteccion.com Pág.166
Figura 31 diseño de circuito en el nylalloy.
Pág.167
www.corrosionyproteccion.com Pág.167
Figura 15 Caja de acrílico, para la protección del circuito.
Pág.168
www.corrosionyproteccion.com Pág.168
Figura 16 el nylalloy rotulado IDUCTOS
Pág.169
www.corrosionyproteccion.com Pág.169
Figura 16 nylalloy rotulado de
A partir del sistema embebido desarrollado durante esta etapa, fue posible
ingresar una patente que protegiera este desarrollo. La patente ingresada
en diciembre del 2016, se titula Dispositivo de Bajo consumo para el
monitoreo remoto de sistemas de protección catódica en derechos de vía.
Sin embargo, si bien en la patente se hace un enfoque al monitoreo
terrestre de derechos de vía, este mismo dispositivo es el que se utilizó para
el monitoreo de protección catódica en sistemas de exploración de aguas
profundas.
Pág.170
www.corrosionyproteccion.com Pág.170
DISPOSITIVO DE BAJO CONSUMO PARA EL MONITOREO REMOTO DE
SISTEMAS DE PROTECCIÓN CATÓDICA EN DERECHOS DE VÍA
Campo de la técnica
Objeto de la invención
Antecedentes
Pág.171
www.corrosionyproteccion.com Pág.171
contacto con el electrolito sea este el propio terreno donde está alojado el
ducto o un medio ambiente exterior incluyendo el marino, integran la
totalidad de elementos que constituyen la celda electroquímica, la cual da
lugar al deterioro y la pérdida de masa del ducto, originando el proceso
corrosivo del ducto y a su afectación estructural.
Pág.172
www.corrosionyproteccion.com Pág.172
Este sistema elimina el ruido eléctrico capacitivo e inductivo de este tipo de
mediciones, además de que plantea utilizar un electrodo de referencia fijo,
colocado apropiadamente cerca de la estructura metálica.
Pág.173
www.corrosionyproteccion.com Pág.173
cuenta con otro transpondedor portátil que utiliza la misma frecuencia y se
puede comunicar de manera remota con el transpondedor enterrado. El
dispositivo enterrado se alimenta eléctricamente a través del circuito de
protección catódica. Este dispositivo facilita la medición en lugares de difícil
acceso mediante la conexión inalámbrica al transpondedor enterrado. Sin
embargo requiere de ubicarse cercano al rectificador para obtener la
corriente necesaria que alimente el transpondedor.
Pág.174
www.corrosionyproteccion.com Pág.174
existentes de ductos sumergidos en derechos de vía. Asimismo las patentes
previamente mencionadas requieren de una alimentación eléctrica
externa, por lo que se dificulta su instalación en lugares remotos. Además,
ninguna de las patentes reportadas, considera el consumo energético de su
sistema de medición, por lo que requiere de una conexión eléctrica externa.
En particular la presente invención tiene una gran utilidad en el monitoreo
de ductos sumergidos, en lugares remotos y de difícil acceso, donde ya hay
instalaciones presentes por lo que no es posible un suministro eléctrico
externo al sistema de medición y transmisión de datos.
Pág.176
www.corrosionyproteccion.com Pág.176
embebido en bloques de concreto resistentes, ubicados en instalaciones
existentes de monitoreo de protección catódica en derechos de vía.
Para las baterías el sistema utiliza una sola celda de LiPo ya que tiene una
tasa de descarga automática (es decir la velocidad a la que la celda se
descarga debido a las reacciones químicas internas) muy baja,
aproximadamente un 2% mensual, lo que equivale a una descarga de
aproximadamente 40% en dos años.
Además una sola celda de LiPo tiene un voltaje entre los 3.5V (descargada)
y 4.2V (a su máxima carga) lo que es más que suficiente para alimentar un
circuito de 3.3V mediante regulador.
Pág.177
www.corrosionyproteccion.com Pág.177
el voltaje del poste, ya que entre menos veces se haga el consumo de
corriente promedio será menor.
-Encender el módulo de RF
-Apagar el módulo de RF
Pág.178
www.corrosionyproteccion.com Pág.178
de 16 ms, y hasta un máximo de 60 segundos. El tiempo máximo no es
problema ya que el tiempo máximo en sleep es de menos de 9.5 segundos.
Por otro lado es importante tomar en cuenta que los tiempos de sleep deben
ser siempre múltiplos de 16, aun cuando esto signifique desperdiciar algunos
mili segundos.
1 1
𝑇= = = 0.267𝑠𝑒𝑔
𝑓 3.75𝐻𝑧
Pág.180
www.corrosionyproteccion.com Pág.180
Después de los 3ms el microcontrolador apaga al módulo de
radiofrecuencia y luego entra en modo sleep durante aproximadamente los
siguientes 9.4 segundos antes de iniciar el ciclo nuevamente.
𝑉 4.2𝑉
𝐼 = 𝑅 = 20𝑀𝛺 = 0.21𝑢𝐴
Por otro lado para la medición del valor del poste el sistema utiliza un filtro
pasa bajas que le permite eliminar la frecuencia de 60 Hz del rectificador.
Este filtro tiene la frecuencia de corte más baja posible sin ocasionar un alias
Pág.181
www.corrosionyproteccion.com Pág.181
en las mediciones. En este caso la frecuencia de muestreo es de un periodo
de 10 segundos, es decir 0.1Hz, por lo que se requiere un periodo del doble
del periodo de muestreo, es decir 20 segundos o 0.05Hz.
1 1
𝑅𝐶 = = = 3.183𝛺𝐹
2𝜋𝑓 2𝜋0.05
𝑅1 1𝑀𝛺
𝑅2 = 𝑉𝑖𝑛 = 10𝑉 ≈ 500𝑘𝛺
−1 −1
𝑉𝑜𝑢𝑡 3.3𝑉
Pág.182
www.corrosionyproteccion.com Pág.182
bajo consumo (sleep). Los 5 módulos que van a consumir corriente de la
batería son los siguientes, con su consumo en ambos modos.
Microcontrolador 7mA encendido y 4uA apagado, radiotransmisor 25mA
encendido y 0.3uA apagado, ADC 135uA encendido y 0.3uA apagado,
divisor de voltaje 0.21uA encendido y regulador de 3.3V 2uA encendido. Los
tiempos de encendido y apagado durante el periodo de 10 segundos son:
microcontrolador 6ms prendido 9.994s apagado, radiotransmisor 35ms
prendido y 9.965 S apagado, ADC 544ms prendido y 9.456s apagado, divisor
de voltaje y regulador siempre prendidos.
Pág.183
www.corrosionyproteccion.com Pág.183
consumo para encender y apagar los distintos módulos según el diagrama
previamente establecido.
Descripción de figuras
Pág.184
www.corrosionyproteccion.com Pág.184
Figura 3. Esquema del dispositivo completamente embebido en el bloque
de concreto. Los componentes descritos son 3(1) batería; 3(2) módulo de
reloj de tiempo real (RTC); 3(3) microcontrolador principal maestro; 3(4)
circuito para monitoreo de la batería; 3(5) módulo de sensores de conversión
analógicos digitales; 3(6) circuito para monitoreo del potencial del ducto;
3(7) módulo transceptor de radiofrecuencia.
Figura 4. Circuito para toma de potenciales de los postes con filtro para
rectificador. Los componentes descritos son 4(1) referencia positiva desde el
poste, 4(2) referencia negativa desde el poste, 4(3) resistencia de 1 mega
ohm para el divisor de voltaje, 4(4) resistencia de 500 kilo ohms para el divisor
de voltaje, 4(5) potenciómetro de precisión en 6.772 kilo ohms para el filtro
pasa bajas, 4(6) capacitor de 470 microfaradios para el filtro pasa bajas, 4(7)
salida del circuito hacia el ADC.
Pág.185
www.corrosionyproteccion.com Pág.185
Reivindicaciones
Pág.186
www.corrosionyproteccion.com Pág.186
Resumen de la invención
Pág.187
www.corrosionyproteccion.com Pág.187
Figuras
Figura 1
Figura 2
Pág.188
www.corrosionyproteccion.com Pág.188
Figura 3
Figura 4
Pág.189
www.corrosionyproteccion.com Pág.189
Figura 5
MODELO 3D BIXLER
Pág.190
www.corrosionyproteccion.com Pág.190
40. Modelo 3D Bixler
Se procedió a realizar un modelo 3D de los aviones que utilizamos, esto nos permite realizar simulaciones de esfuerzos,
aerodinámicas, centros de masa entre otros que nos permita tener mayor conocimiento sobre el comportamiento que tenga
el avión ante colisiones, o durante el vuelo.
Para la realización del modelo 3D se utilizó el programa de solidworks, el diseño de este se tomó en base a las
especificaciones del avión.
ESPECIFICACIONES
Material: EPO Foam
Wingspan: 1500mm
Length: 963mm
Flying Weight: 760g
ESC: 20A
Motor: 2620-1300kv Brushless Out runner
Servo: 4 x 9g
Radio System: HK-T6A V2 2.4GHz transmitter and receiver (Mode 2 transmitter - left stick throttle)
Prop: 7x5
Pág.191
www.corrosionyproteccion.com Pág.191
MEDIDAS
De acuerdo a las especificaciones del avión se realizó el modelado 3d, a continuación las siguientes imágenes muestran la
longitud y el tamaño de las alas del avión, dependiendo del uso que le queramos dar, debemos tomar en cuenta las
capacidades que nos pueden ofrecer cada aeronave
Pág.192
www.corrosionyproteccion.com Pág.192
41. Longitud del Avión
Pág.193
www.corrosionyproteccion.com Pág.193
Vistas del avión
Pág.194
www.corrosionyproteccion.com Pág.194
Pág.195
www.corrosionyproteccion.com Pág.195
CENTRO DE MASA
El centro de masa es un dato importante a conocer de la aeronave, este debe estar situado correctamente para que el avión
pueda despegar, volar y aterrizar adecuadamente, un centro de masa fuera de la zona adecuada provoca complicaciones
para el vuelo y para ajustarse a veces es necesario poner peso adicional o mover los componentes internos que lleva.
Por medio de la simulación 3D podemos saber dónde se encuentra el centro de masa y al momento de adicionar al avión
con accesorios que necesitamos como lo son cámaras, GPS o sistemas de navegación saber hacia dónde se mueve el
centro y poder corregir alguna posición que lo saque fuera de la zona establecida que permita un vuelo óptimo.
En las siguientes imágenes se muestra la posición que tiene el centro de masa ubicado en el avión
Pág.196
www.corrosionyproteccion.com Pág.196
45. centro de masa vista superior
ESFUERZOS
Por medio de una simulación estática de elemento finito queremos conocer el comportamiento de las piezas de la aeronave
sometidas a un esfuerzo.
Simulación Estática
La estructura del avión se someterá a dos pruebas, la primera será una fuerza ejercida sobre la nariz y la segunda sobre un
extremo del ala. Esta simulación nos permitirá saber cómo es el comportamiento de la aeronave ante algún impacto, y así
darnos una idea de que puede suceder ante tal situación.
Dentro de la simulación de elemento finito es necesario la creación de un mallado el cual subdivide el modelo en partes
pequeñas llamadas elementos, que están conectadas en puntos comunes llamados nodos.
Pág.197
www.corrosionyproteccion.com Pág.197
46. mallado
Después se fijan las fuerzas que actuaran sobre este, una de estas fuerzas es un empotramiento y la otra la fuerza es la
que se ejercerá sobre el modelo
RESULTADOS
Después de terminar la simulación estos fueron los resultados que arrojaron, realmente estos resultados nos sirven para
conocer la deformación de la pieza ante una fuerza ejercida, esto con fines didácticos, ya que en un impacto real intervienen
más variables que provocan distintos resultados, pero por medio de esta simulación sería una situación ideal.
Pág.198
www.corrosionyproteccion.com Pág.198
48. fuerza ejercida sobre la nariz
El tipo de material con el que está hecho el avión es EPO FOAM, un tipo de hielo seco de mayor densidad, los resultados
arrojados de una fuerza ejercida sobre la nariz indican que este se compactaría, aunque la simulación representa de
manera exagerada lo que sucedería, nos podemos dar una idea de esto, también nos arroja un gráfico de colores que nos
indican los esfuerzos ejercidos sobre la pieza, aunque este no es de importancia para este caso ya que sirve para calcular
esfuerzos máximos para el diseño de piezas, y para lo cual este avión ya viene fabricado y esos datos son propios del
diseño que utilizo la empresa para elaborar la aeronave.
Para una fuerza ejercida sobre el ala en la siguiente imagen vemos la deformación, la cual vemos que por la curvatura del
ala presenta un tipo de amortiguación ante un impacto, también dependiendo de la fuerza del impacto es lo que puede
suceder tanto que no presente ningún daño o se fracture una parte del ala, ya que esta por la parte interna presenta un tubo
de carbono que le da la firmeza suficiente para aguantar impactos.
Pág.199
www.corrosionyproteccion.com Pág.199
49. fuerza ejercida sobre el ala
En la siguiente imagen podemos ver que del lado izquierdo presenta un una tonalidad diferente en un área del ala, esta
área por medio del grafico indica la magnitud del esfuerzo ejercido, como se mencionaba anteriormente este sirve para
cálculos de factor de seguridad o esfuerzo máximo que soporte la pieza, aquí nosotros podemos concluir que en esta región
del ala es donde se concentra mayores esfuerzos ante un impacto, también por lo cual es donde está situado el tubo de
carbón.
Pág.200
www.corrosionyproteccion.com Pág.200
AERODINÁMICA
La aerodinámica es la ciencia que estudia el movimiento del aire y su interacción con objetos que
se mueven y que generan con su desplazamiento una circulación de este.
Un cuerpo en movimiento inmerso en un fluido experimenta fuerzas ocasionadas por la acción del fluido. Para los estudios
de aerodinámica intervienen muchas variables pero se consideran dos fuerzas resultantes de mayor importancia: el
arrastre y la sustentación.
Pág.201
www.corrosionyproteccion.com Pág.201
El arrastre es la fuerza ejercida por el fluido en dirección contraria a la fuerza que ejerce el cuerpo en movimiento. Es decir,
es una fuerza que el fluido opone, contrarrestando el movimiento de un cuerpo. La fuerza de arrastre debe contrarrestarse
con una fuerza de propulsión que vaya en dirección opuesta al arrastre. Para obtener esta fuerza, se requiere el empleo de
algún tipo de energía, por lo que siempre se busca disminuir el arrastre.
Sustentación es la fuerza ocasionada por el fluido en dirección perpendicular a la dirección del movimiento del cuerpo. Su
aplicación más importante se encuentra en el diseño de partes de aviones y aeronaves. En base al análisis de fuerzas, se
obtiene cierta geometría que permite que exista fuerza de sustentación tanto encima como por debajo del aeroplano. A la
vez, se debe considerar que la fuerza de sustentación debe ser al menos igual que el peso de la aeronave para que esta
vuele.
Partiendo de los conceptos anteriores se procedió a realizar simulaciones aerodinámicas a los modelos 3D de los aviones,
de esta manera queremos conocer distintos datos que nos proporcionen información útil sobre la interacción del aire sobre
la aeronave, para así poder hacer instalaciones de accesorios como cámaras para tomar video y fotografía, así como
algunos sistemas de navegación y ver que regiones son óptimas para su posicionamiento y que no afecten mucho en la
aerodinámica del avión y permitiendo de esta manera un ahorro en el consumo de energía.
Pág.202
www.corrosionyproteccion.com Pág.202
Presiones en el Avion
Cuando un cuerpo está en contacto con un fluido en movimiento, éste se mueve alrededor del objeto y tiende a adherirse
en la longitud del cuerpo. En algún punto de la longitud, esta capa delgada se separa de la superficie y forma una estela
turbulenta. La presión en este punto es mucho menor que la presión en el punto de estancamiento en el frente del objeto.
Podemos decir entonces que se genera una fuerza neta que actúa en dirección contraria al movimiento del cuerpo. A esta
fuerza se le conoce como arrastre de presión. Si se logra que el punto en el que la capa límite se separa ocurra en un punto
lejano de la parte posterior del cuerpo, entonces se podrá disminuir el arrastre, debido a la disminución de la estela
turbulenta
La primera simulación consiste en las diferentes regiones donde encontramos un cambio de la presión que ejerce el aire
sobre la aeronave, debemos tener en cuenta que una alta velocidad es igual a una baja presión, y que una baja velocidad
es debido a una alta presión.
En las siguientes imágenes se muestra la aeronave antes y después de entrar en contacto con el aire, con diferentes vistas
que nos permitan ver los efectos desde distintos ángulos.
Pág.203
www.corrosionyproteccion.com Pág.203
53. Simulación de presión después del contacto con el modelo 3d, vista lateral
Pág.204
www.corrosionyproteccion.com Pág.204
55. Simulación de presión después del contacto, vista superior
Como podemos ver en las imágenes anteriores se presenta un gráfico del lado derecho que indica la presión atmosférica
normalizada que se utiliza al nivel del mar que sería de 101 325 pa, partiendo de esa presión podemos ver conforme
cambia el grafico si hay un aumento o disminución de esta, analizando las regiones donde entra en contacto el aire, en la
parte frontal vemos un aumento de la presión donde cambia a un color azul más claro con una presión entre 101327pa
a101341pa, esto nos indica que por un aumento de presión tendremos una disminución de la velocidad debido a las fuerzas
resultantes por el arrastre de presión.
Pág.205
www.corrosionyproteccion.com Pág.205
En la imagen anterior esta una representación de lo que sucede en un perfil del ala, el cual nos indica que por la parte
superior se genera una baja presión lo cual indica un aumento de velocidad, como podemos ver en la imagen de vista
superior sobre el perfil del ala por la parte posterior vemos que el grafico indica que la presión disminuyo en esa región lo
cual nos asegura que el comportamiento de la simulación es el adecuado.
Ahora pasamos a la simulacion de la velocidad del aire con respecto al avion cuando este incide sobre el fuselaje y las alas,
de aquí partiremos a otro analisi el cual conlleva a saber la velocidades obtenidas cuando este presenta los accerorios que
modifican la aerodinamica del avion, a continuacion estas las imágenes de la simulacion.
Pág.206
www.corrosionyproteccion.com Pág.206
58.Simulacion de velocidad despues del contacto, vista lateral
Pág.207
www.corrosionyproteccion.com Pág.207
60. simulaicon de velocidad despues del contacto, vista superior
En las imágenes podemos darnos cuenta respecto al grafico de colores la variaciones de velocidad que existen cuando el
aire impacta contra el avion, en la simulacion se manejo que la velocidad promedio seria de 8.3 m/s que equivale
aproximadamente a 30 km/h, el arrastre que se presenta es tal que la disminucion respecto al grafico que se presenta indica
que lo que predomina es el color amarillo este indica que la velocidad promedio de esa region es entre 6.6 m/s a 7.3 m/s
que equivale a una variacion entre 23 a 26 km/h, en la parte central podemos ver que esta de color verde, en esta region
esta ubicado el motor que impulsa al avion, lo que a nosotros nos interesa es saber la velocidad promedio alrededor de las
alar y partes del fuselaje donde nosotros tengamos los datos de las velocidades que se presentan, asi cuando se instale
alguna camara en estas partes del avion ver que tanto arrastre nos genera y poder decidir si esta es un area optima para
colocacion o encontrar una mejor zona.
Posicion de camaras
Para nuestro analisis de arrastre y cambios de velocidad se agregaron al modelo lo que serian las camaras y se
posicionaron en distintas partes del avion donde estas puedan hacer capturas de fotografias o videos que sean utiles.
Pág.208
www.corrosionyproteccion.com Pág.208
Posterior a esto se realizo nuevamente un analisis y se compararon los resultados anteriores con los obtenidos
nuevamente.
Pág.209
www.corrosionyproteccion.com Pág.209
Resultados de la simulacion
Para la simulacion se realizaron distintas pruebas, la primera consiste en conocer la velocidad del aire respecto alas
camaras , y la segunda hacer una simulacion de las camaras junto con el fuselaje y las alas para despues comparar los
resultados obtenidos.
Pág.210
www.corrosionyproteccion.com Pág.210
64. Vista isométrica simulación cámaras
Como nos podemos dar cuenta, la velocidad del aire arrojada por la simulación nos presenta que el promedio esta entre 4.1
m/s hasta 6.2 m/s, parte de esta estela generada por las cámaras presentan un área que está cerca de los 2 m/s.
Comparación
Pág.211
www.corrosionyproteccion.com Pág.211
Haciendo una comparación de las dos imágenes vemos las diferencias de velocidad una con respecto a la otra, la primera
imagen seria el avión sin cámaras y la segunda con las cámaras, podemos ver que en la parte central se genera una mayor
desaceleración del aire con la cámara puesta en la parte superior, por medio de esto podemos concluir que la mejor
posición para nuestras cámaras seria en la parte interna debajo del ala ya que genera un arrastre menor.
Pág.212
www.corrosionyproteccion.com Pág.212
67. Simulación de velocidad con cámaras
Pág.213
www.corrosionyproteccion.com Pág.213
ESPECIFICACIONES
MEDIDAS
Estas son las medidas del modelo 3D que indican las especificaciones de la aeronave las siguientes imágenes muestran la
longitud y el largo de las alas.
Pág.214
www.corrosionyproteccion.com Pág.214
70. envergadura del avion
VISTAS
Pág.215
www.corrosionyproteccion.com Pág.215
Se presentan las diferentes vistas del avión el cual se aprecia su estructura
CENTROS DE MASA
El centro de masa como se mención anteriormente es importante conocer la ubicación óptima para el vuelo del avión, aquí
se muestra el centro de masa del Ranger el cual debemos tener en cuenta donde debe estar posicionado ya que este avión
se utiliza para hacer las misiones de vuelo más extensas y el cual lleva accesorios de mayor tamaño los cuales provocan
que el centro de masa se mueva aún más de su lugar.
Pág.216
www.corrosionyproteccion.com Pág.216
72. centro de masa vista lateral
Pág.217
www.corrosionyproteccion.com Pág.217
ESFUERZOS
Para este modelo 3D también se sometió a simulaciones de elemento finito para conocer el comportamiento del avión ante
impactos, así como en el anterior se hicieron dos pruebas, la primera será una fuerza ejercida sobre la nariz y la segunda
sobre un extremo del ala. Esta simulación nos permitirá saber cómo es el comportamiento de la aeronave ante algún
impacto, y así darnos una idea de que puede suceder ante tal situación.
Resultados
Para este avión el material es distinto a diferencia del EPO este tiene una carcasa de plástico lo cual tiene un reacción
diferente ante una fuerza en la nariz, como podemos ver se flexiona de la parte donde hay un cambio de sección.
Pág.218
www.corrosionyproteccion.com Pág.218
75. resultado de simulación estática vista lateral
En la siguiente imagen podemos ver la fuerza que se ejerce sobre el ala, y podemos apreciar el comportamiento de esta
ante el esfuerzo provocado.
Pág.219
www.corrosionyproteccion.com Pág.219
76. resultado de simulación estática vista isométrica
En la región del ala donde se ve un cambio de color es donde se concentra el esfuerzo ante la fuerza actuante, aquí en esta
parte es donde se encuentra el tubo de carbón que refuerza esta parte del ala.
Pág.220
www.corrosionyproteccion.com Pág.220
AERODINAMICA
Para este avión también se realizaron pruebas aerodinámicas las cuales son necesarias para un análisis comparativo de la
diferencia de velocidades que se generan cuando estos presentan accesorios externos en su fuselaje y así poder concluir
cual es la zona para posicionamiento que genera menos arrastre.
Presión
La primera simulación consiste en las diferencias de presión alrededor del avión mostrando un antes y después de la
incidencia del aire sobre el fuselaje y las alas.
Pág.221
www.corrosionyproteccion.com Pág.221
79. simulacion de presion despues del contacto, vista lateral
Pág.222
www.corrosionyproteccion.com Pág.222
81. simulacion de presion despues del contacto, vista superior
En esta simulacion aerodinamica en la cual podemos apreciar las diferencias de presion ejercidas por el contacto del aire
sobre el avion podemos destacar que la region de alta presion que se genera sobre el ala es menor que el avion anterior lo
cual indica un menor presion de arrastre lo cual es bueno.
Velocidad
En la siguiente simulación realizada se pueden apreciar los cambios de velocidad del aire cuando el aire pasa a través de
él, estos nos servirán para posteriormente hacer un comparativo de las partes donde es recomendable poner una cámara la
cual no genere demasiado arrastre en el avión.
Pág.223
www.corrosionyproteccion.com Pág.223
82. simulación de velocidad antes del contacto, vista superior
Pág.224
www.corrosionyproteccion.com Pág.224
83. simulación de velocidad después del contacto, vista superior
Pág.225
www.corrosionyproteccion.com Pág.225
85. simulación de velocidad después del contacto, vista lateral
Los resultados obtenidos de esta simulación muestran en las imágenes que la aerodinámica del avión hace variar la
velocidad inicial que va desde 8.3 m/s a un promedio de entre 6 y 7 m/s, podemos notar que la variación de la velocidad del
aire se presenta de manera más uniforme.
Pág.226
www.corrosionyproteccion.com Pág.226
Análisis de arrastre respecto
El siguiente análisis tiene por objetivo realizar una comparación entre el arrastre generado por un avión con y sin
accesorios integrados, esto nos permitirá conocer las mejores áreas para integrar ciertos tipos de accesorios que
necesitemos a lo largo de la misión que se vaya a desarrollar, para este caso es importante realizar vuelo de distancia
largas y es bueno conocer las características que nos entrega el avión durante un vuelo.
Para los vuelos de inspección con fotografía y video es necesario utilizar una cámara que va puesta sobre un gimball el cual
permite girar la cámara en diferentes direcciones, para esto nosotros deseábamos conocer donde era mejor situarla y que
cumpliera con el lugar que proporcionara una buena protección y a su vez generara el menor arrastre posible.
El posicionamiento de las cámaras es el siguiente, la primera se ubica por debajo de la nariz y la segunda cámara se
encuentra por el lateral del fuselaje debajo del ala y la tercera cámara está posicionada en un extremo del ala por debajo
como se muestra en las imágenes.
Posición de cámaras
Pág.227
www.corrosionyproteccion.com Pág.227
86. Posición de cámaras, Vista frontal
Resultados
Estos son los resultados obtenido de la simulación aerodinámica, se presentan los gráficos que arrojan los valores de
cambios de velocidad del aire que interactúa con las cámaras, primeramente se evalúa el nivel de arrastre y disminución de
velocidad de cada una de ellas para conocer su comportamiento aerodinámico.
Pág.228
www.corrosionyproteccion.com Pág.228
88. Resultado de velocidad en cámaras, Vista isométrica
Pág.229
www.corrosionyproteccion.com Pág.229
90 Resultado de velocidad en cámaras, Vista isométrica
CONCLUSION DE RESULTADOS
Después de analizar las simulaciones y comparar los datos obtenidos, podemos darnos cuenta que de las tres cámaras
solo una de ellas presenta un arrastre mayor en comparación a las demás, esto nos lo indica el grafico que nos marca la
velocidad del aire después de interactuar con las partes en la que entra en contacto, si asignamos una numeración a cada
cámara de la siguiente manera, la numero uno seria la que se encuentra por debajo de la nariz del avión, la segunda seria
la que está por debajo del ala muy cerca del fuselaje y la tercera la más pequeña que está más alejada del fuselaje por
debajo del ala, después de esta asignación cabe destacar la reacción del viento ante cada una, haciendo la comparación
Pág.230
www.corrosionyproteccion.com Pág.230
del color del grafico notamos que la cámara uno y tres su velocidad promedio esta los 6 m/s y 7 m/s mientras la segunda
cámara su velocidad oscila entre los 5 m/s a 6 m/s, esto nos indica que la mejor posición para la cámara se situaría por
debajo de la nariz, que es la zona donde se genera menos arrastre.
Así mismo el Ranger volantex presenta mejores condiciones para el vuelo que el bixler.
Este análisis consistió en una parte experimental, así como en un desarrollo teórico
de análisis. Al finalizar se hicieron comparaciónes de los valores obtenidos en la
teoría y la práctica para determinar el mejor modelo matemático que nos permita
tomar decisiónes de cálculo y selección de los distintos componentes del sistema
de propulsión del VANT.
Experimentación
Pág.231
www.corrosionyproteccion.com Pág.231
La fuerza que genera la combinación del sistema de propulsión como empuje.
Pág.232
www.corrosionyproteccion.com Pág.232
Figura 2. Muestra de toma del voltaje, corriente, potencia y gramos de empuje
generados al 50%.
Pág.233
www.corrosionyproteccion.com Pág.233
Figura 4. Muestra de toma revoluciones por minuto mediante el tacómetro óptico
digital.
Pág.234
www.corrosionyproteccion.com Pág.234
KV (rpm/v) 2300
Prueba 1
Propelas (blades) 2
Voltaje(S) 4
Prueba 2
Pág.235
www.corrosionyproteccion.com Pág.235
Parámetro de prueba Resultado obtenido en la prueba
Propelas (blades) 2
Voltaje(S) 4
Prueba 3
Propelas (blades) 2
Pág.236
www.corrosionyproteccion.com Pág.236
Voltaje(S) 4
Prueba 4
Propelas (blades) 3
Voltaje(S) 4
Pág.237
www.corrosionyproteccion.com Pág.237
Potencia 50% (W) 75.64
Prueba 5
Propelas (blades) 2
Voltaje(S) 4
Pág.238
www.corrosionyproteccion.com Pág.238
Voltaje 100% (V) 16.18
KV (rpm/v) 2300
Prueba 1
Propelas (blades) 2
Voltaje(S) 4
Pág.239
www.corrosionyproteccion.com Pág.239
Voltaje 50% (V) 16.65
Prueba 2
Propelas (blades) 2
Voltaje(S) 4
Pág.240
www.corrosionyproteccion.com Pág.240
Rpm 50% 17253
Prueba 3
Propelas (blades) 3
Voltaje(S) 4
Pág.241
www.corrosionyproteccion.com Pág.241
Potencia 100% (W) 434.43
Prueba 4
Propelas (blades) 2
Voltaje(S) 4
Pág.242
www.corrosionyproteccion.com Pág.242
Prueba 5
Propelas (blades) 2
Voltaje(S) 4
Pág.243
www.corrosionyproteccion.com Pág.243
Diámetro estator (mm) 22
KV (rpm/v) 2450
Prueba 1
Propelas (blades) 3
Voltaje(S) 4
Pág.244
www.corrosionyproteccion.com Pág.244
Prueba 2
Propelas (blades) 2
Voltaje(S) 4
Prueba 3
Pág.245
www.corrosionyproteccion.com Pág.245
Prop paso (in) 4
Propelas (blades) 2
Voltaje(S) 4
Prueba 4
Propelas (blades) 3
Voltaje(S) 4
Pág.246
www.corrosionyproteccion.com Pág.246
Voltaje 50% (V) 15.81
Prueba 5
Propelas (blades) 2
Voltaje(S) 4
Pág.247
www.corrosionyproteccion.com Pág.247
Rpm 50% 15985
KV (rpm/v) 2350
Prueba 1
Propelas (blades) 2
Voltaje(S) 2
Pág.248
www.corrosionyproteccion.com Pág.248
Voltaje 50% (V) 7.57
Prueba 2
Propelas (blades) 2
Voltaje(S) 3
Pág.249
www.corrosionyproteccion.com Pág.249
Rpm 50% 19356
Prueba 3
Propelas (blades) 2
Voltaje(S) 4
Pág.250
www.corrosionyproteccion.com Pág.250
Corriente 100% (A) 10.92
Prueba 4
Propelas (blades) 3
Voltaje(S) 2
Pág.251
www.corrosionyproteccion.com Pág.251
Thrust 100% (g) 210
Prueba 5
Propelas (blades) 3
Voltaje(S) 3
Prueba 6
Pág.252
www.corrosionyproteccion.com Pág.252
Parámetro de prueba Resultado obtenido en la prueba
Propelas (blades) 3
Voltaje(S) 4
Prueba 7
Pág.253
www.corrosionyproteccion.com Pág.253
Propelas (blades) 3
Voltaje(S) 2
Prueba 8
Propelas (blades) 3
Voltaje(S) 3
Pág.254
www.corrosionyproteccion.com Pág.254
Corriente 50% (A) 5.93
Prueba 9
Propelas (blades) 3
Voltaje(S) 4
Pág.255
www.corrosionyproteccion.com Pág.255
Thrust 50% (g) 485
Prueba 10
Propelas (blades) 2
Voltaje(S) 2
Pág.256
www.corrosionyproteccion.com Pág.256
Potencia 100% (W) 63.5
Prueba 11
Propelas (blades) 2
Voltaje(S) 3
Pág.257
www.corrosionyproteccion.com Pág.257
Prueba 12
Propelas (blades) 2
Voltaje(S) 4
Pág.258
www.corrosionyproteccion.com Pág.258
Longitud estator (mm) 7
KV (rpm/v) 2300
Prueba 1
Propelas (blades) 3
Voltaje(S) 4
Prueba 2
Pág.259
www.corrosionyproteccion.com Pág.259
Parámetro de prueba Resultado obtenido en la prueba
Propelas (blades) 2
Voltaje(S) 4
Prueba 3
Pág.260
www.corrosionyproteccion.com Pág.260
Propelas (blades) 2
Voltaje(S) 4
Prueba 4
Propelas (blades) 4
Voltaje(S) 4
Pág.261
www.corrosionyproteccion.com Pág.261
Corriente 50% (A) 9.3
Prueba 5
Propelas (blades) 2
Voltaje(S) 4
Pág.262
www.corrosionyproteccion.com Pág.262
Thrust 50% (g) 619
KV (rpm/v) 2550
Prueba 1
Propelas (blades) 2
Voltaje(S) 4
Pág.263
www.corrosionyproteccion.com Pág.263
Corriente 50% (A) 4.4
Prueba 2
Propelas (blades) 2
Voltaje(S) 4
Pág.264
www.corrosionyproteccion.com Pág.264
Thrust 50% (g) 454
Prueba 3
Propelas (blades) 2
Voltaje(S) 4
Pág.265
www.corrosionyproteccion.com Pág.265
Potencia 100% (W) 419.95
Prueba 4
Propelas (blades) 3
Voltaje(S) 4
Pág.266
www.corrosionyproteccion.com Pág.266
Prueba 5
Propelas (blades) 2
Voltaje(S) 4
Pág.267
www.corrosionyproteccion.com Pág.267
Longitud estator (mm) 10
KV (rpm/v) 2400
Prueba 1
Propelas (blades) 3
Voltaje(S) 4
Prueba 2
Pág.268
www.corrosionyproteccion.com Pág.268
Parámetro de prueba Resultado obtenido en la prueba
Propelas (blades) 2
Voltaje(S) 4
Prueba 3
Pág.269
www.corrosionyproteccion.com Pág.269
Propelas (blades) 2
Voltaje(S) 4
Prueba 4
Propelas (blades) 3
Voltaje(S) 4
Pág.270
www.corrosionyproteccion.com Pág.270
Corriente 50% (A) 7.2
Prueba 5
Propelas (blades) 2
Voltaje(S) 4
Pág.271
www.corrosionyproteccion.com Pág.271
Thrust 50% (g) 586
Prueba 6
Propelas (blades) 4
Voltaje(S) 4
Pág.272
www.corrosionyproteccion.com Pág.272
Potencia 100% (W) 458.57
Prueba 7
Propelas (blades) 2
Voltaje(S) 4
Pág.273
www.corrosionyproteccion.com Pág.273
Entrenamiento de modelo mediante red neuronal predictiva
En este caso se optó por analizar el sistema utilizando inteligencia artificial, para
predecir los valores esperados con cualquier combinación de propela, motor y
batería.
Imagen del libro Neural Networks and Deep Learning de Michael Nielsen
Esta neurona, toma los valores de entrada X, y los suma y multiplica por pesos
definidos dentro de la neurona individualmente. Al final genera una única salida de
un valor procesado dentro de la neurona, de la siguiente manera en el caso de una
neurorona con función de activación sigmoidiana:
Pág.274
www.corrosionyproteccion.com Pág.274
Mediante la combinación de varios perceptrones en diversas capas se puede
obtener una red capas de separar y predecir diversos problemas mucho más
complejos
Entrenamiento
Pág.275
www.corrosionyproteccion.com Pág.275
La red neuronal por si sola genera resultados aleatoreos y sin sentido a una entrada
dada. Es por eso que es necesario entrenar a la neurona para reconocer patrones
en el problema que le permitan predecir y resolver otros problemas similares.
En este caso se programó y utilizo una red neuronal con la arquitectura siguiente.
Entradas 7
Capas ocultas 1
Momento 0
Número de salidas 1
Pág.276
www.corrosionyproteccion.com Pág.276
Rango de pesos iniciales 0.5
Pág.277
www.corrosionyproteccion.com Pág.277
12 117403.516 55.24% 86130.328 49.33%
Pág.278
www.corrosionyproteccion.com Pág.278
32 48292.535 32.44% 39710.676 30.21%
Pág.279
www.corrosionyproteccion.com Pág.279
52 20506.449 17.68% 15240.589 17.19%
Pág.280
www.corrosionyproteccion.com Pág.280
72 11036.642 12.54% 7411.626 11.74%
Pág.281
www.corrosionyproteccion.com Pág.281
92 7874.646 10.48% 3803.783 8.35%
Pág.282
www.corrosionyproteccion.com Pág.282
112 6917.099 9.57% 3237.283 6.11%
Pág.283
www.corrosionyproteccion.com Pág.283
132 6367.548 9.21% 1539.942 5.00%
Pág.284
www.corrosionyproteccion.com Pág.284
Las siguientes gráficas muestran como fue reduciendo el error durante el
entrenamiento.
Pág.285
www.corrosionyproteccion.com Pág.285
Como se puede observar, el error se redujo considerablemente a lo largo del
entrenamiento.
Comparación de modelos
Modelo 1,
Pág.286
www.corrosionyproteccion.com Pág.286
Modelo 2,
Ecuación de Staples
La ecuación de Staples es un poco más complicada ya que parte del análisis teórico
pero agrega diversas constantes empíricas que modifican y ajustan de una mejor
manera el resultado teórico a la escala de VANTs.
Theorical thrust
Final Theorical
Pág.287
www.corrosionyproteccion.com Pág.287
Empirical Thrust
Comparación
KV (rpm/v) 2550
Pág.288
www.corrosionyproteccion.com Pág.288
4 4.5 2 4 241.34 632 1070.11 69.32 724.69 14.67 672.21 6.36
1167.7
5 4.5 2 4 439.55 1184 1851.93 56.41 1097.67 7.29 9 1.37
1134.4
5 4 2 4 419.95 1107 1796.46 62.28 1160.48 4.83 6 2.48
Error promedio de cada una de los modelos matemáticos para todas las pruebas.
En este caso se puede observar una clara ventaja de la red neuronal contra los otros
modelos, sin embargo este fue uno de los motores utilizados en el desarrollo y
entrenamiento de la red por lo que es un problema para el cuál la red neuronal ya
está preparada para resolver.
Pág.289
www.corrosionyproteccion.com Pág.289
Diámetro estator (mm) 22
KV (rpm/v) 2200
En este caso se puede ver que la red neuronal tuvo un error promedio ligeramente
mayor, sin embargo en comparación a los otros modelos analizados, la ventaja
competitiva que ofrece la red neuronal artificial, es muy amplia.
Pág.290
www.corrosionyproteccion.com Pág.290
Conclusión
La red neuronal artificial planteada cumple de una mucho mejor manera con los
resultados prácticos de un análisis del sistema de propulsión para los VANT que
otros modelos matemáticos disponibles.
Si bien siempre será mucho más preciso el utilizar mediciones de los sistemas de
propulsión previo a un vuelo, la red neuronal artificial planteada demostró que puede
ser utilizada sin ningún problema como análisis de un sistema de propulsión previo
a la selección de componentes. Esta ventaja nos permite analizar varios sistemas
de manera mucho más precisa, sin la necesidad de comprar los componentes.
Un VANT, es una aeronave 100% autónoma con una amplia variedad de Commented [AILVA1]: En estricta teoría es automática
no autónoma ya que no toma decisiones por si mismo
tecnologías para cumplir una misión, la palabra autónoma se le da es gracias a un fuera de su sistema de control.
1. Pixhawk
Pág.291
www.corrosionyproteccion.com Pág.291
Pixhawk es una plataforma “Opensource” , diseñada para multiples
configuraciones desde un cuadricóptero hasta una aeronave de ala fija, con la
ayuda de una serie de sensores de posición tales como giroscopio, acelerómetro
, magnetómetro , barómetro y GPS se puede corregir errores en pleno vuelo de
manera instantánea. Commented [AILVA2]: Hay que reestructurar este
párrafo, no se entiende bien.
Una aeronave integrada con pixhawk tiene la oportunidad de mejorar sus Commented [AILVA3]: Y en general cualquier
estabilizador de vuelo
características de vuelo, sin importar las condiciones externas. Por ejemplo, al
impactar ráfagas de viento con la aeronave, éstas crean un desplazamiento en la
ruta, inclinación y dirección del avión. Es en esta situación donde entra el piloto
automático que procesa los diferentes datos y crea una acción para corregir el
ángulo de inclinación, la altitud y las coordenadas de rutas.
2. Giroscopio
Acelerómetro 3 ejes: Este sensor mide la aceleración estática (en el eje
vertical, como la gravedad) y la aceleración dinámica (en el eje horizontal,
Commented [AILVA5]: Y también como dije arriba, se
en un plano XY).
utiliza junto con el giroscopio para calcular el ángulo de
inclinación.
Pág.292
www.corrosionyproteccion.com Pág.292
3. Acelerómetro
Magnetómetro: Este sensor mide la intensidad y la dirección de un campo Commented [AILVA6]: Son Gauss no Newtons
Pág.293
www.corrosionyproteccion.com Pág.293
4. Magnetómetro
5. Diagrama de conexiones
Pág.294
www.corrosionyproteccion.com Pág.294
6. Pines de entrada
Pixhawk cuenta con 14 entradas con conectores tipo molex, el cual podemos
conectar modulos como:
Modulo Gps
7. GPS/COMPASS
Pág.295
www.corrosionyproteccion.com Pág.295
El módulo GPS indica por medio de satélites la ubicación de la aeronave, tiene
como características. Commented [AILVA10]: Estaría bien detallar esto un
poco más
Fuente de alimentación
Tensión de V
4.5 5.0 5.5
alimentación
Pines de Entrada
GPS lleva un conector output molex dentro del módulo, el cual es conectado a
dos conectores input molex, que es I2C Y GPS.
GPS port
Pág.296
www.corrosionyproteccion.com Pág.296
I2C
Pág.297
www.corrosionyproteccion.com Pág.297
8. Módulo de batería.
Telemetria
Pág.298
www.corrosionyproteccion.com Pág.298
acción desde el software Mission Planner , cada módulo cuenta con conexión
micro usb que lo hace compatible con Windows y dispositivos Android.
Pág.299
www.corrosionyproteccion.com Pág.299
12. Antena omnidireccional
El rango de estos módulos está limitado a los 600 metros por ser de 100mw de
potencia y por la antena de bajos db, al ser código abierto hace que sea más
sencillo sustituir por módulos con una mayor potencia para un mayor rango.
Pixhawk cuenta con dos pines de telemetría que se pueden habilitar desde el
software para la conexión de otros módulos los cuales utilicen los datos de vuelo
como el módulo OSD.
Software
Ensamble en la aeronave.
Pág.300
www.corrosionyproteccion.com Pág.300
13. Vista trasera
Pág.301
www.corrosionyproteccion.com Pág.301
15. Interior de la aeronave
Pág.302
www.corrosionyproteccion.com Pág.302
17. Colocación de GPS.
Observación
Pág.303
www.corrosionyproteccion.com Pág.303
SENSORES ( detección de fugas: (Juan Carlos ) ( cámara video, Gimbals )
Diagramas de conexiones etc (Gustavo)
PERMISOS DE VUELO
Para poder utilizar de manera comercial los VANT en operaciones regulares de
monitoreo, es necesario contar con los permisos y seguros necesarios. Durante este
proyecto se trabajo de igual manera en la obtención de estos permisos. Como
parte de esta obtención de permisos se ingresaron los manuales de operación,
bitácoras de vuelo, así como todos los documentos administrativos de la compra
de los VANT y el equipo a utilizar.
MANUALES DE OPERACIÓN
procedimientos de vuelo (fotos)
Antes de cada misión de vuelo es necesario estar seguro de que todo esté en
orden, con el propósito de evitar algún riego innecesario, accidentes etc… se debe
de llevar acabo un procedimiento el cual estipula que si no cumple con al menos
uno, dicho aeronave no podrá despegar sin excepción alguna.
Pág.304
www.corrosionyproteccion.com Pág.304
I. Todo el personal deberá contar con las medidas de seguridad personal:
Overol.
Botas.
Casco.
Lentes obscuros y lentes transparentes.
Chaleco reflejante.
Guantes.
Pág.305
www.corrosionyproteccion.com Pág.305
II. Verificar que el fuselaje no tenga algún daño, al igual revisar
cuidadosamente el área del timón, elevador, alerones. En caso de posible
fractura en dichas partes se colocara bisagras para evitar un
desprendimiento.
III. Verificar tornillería de cada servomotor del avión, conexiones entre viga y
partes movibles. Colocar seguro de manguera dentro de las vigas.
IV. Verificar baterías que se usaran para el vuelo tengan una carga completa,
que estén balanceadas(todas sus celdas con el mismo voltaje) y añadir a la
bitácora:
Pág.306
www.corrosionyproteccion.com Pág.306
Numero de batería.
Voltaje de batería.
Observación: para realizar una misión la batería deberá tener una carga completa
si no podrá ser usada al igual que si la batería muestra rastros que está en mal
estado no podrá ser usada hasta que sea revisada.
Pág.307
www.corrosionyproteccion.com Pág.307
V. Como siguiente punto a realizar paso es realizar el armado completo del
avión, es decir:
Colocación de alas.
Pág.308
www.corrosionyproteccion.com Pág.308
Colocación de batería. (la batería debe de estar bien sujetada).
Pág.309
www.corrosionyproteccion.com Pág.309
Prender el Control junto con módulo TBS.
Pág.310
www.corrosionyproteccion.com Pág.310
Identificar satélites GPS y verificar que el GPS no muestre ningún error
dentro de sus parámetros.
Pág.311
www.corrosionyproteccion.com Pág.311
Liberar botón de seguridad para habilitar el movimiento de
servomotores, para verificar que todos los mandos estén correcto
junto con el control RC.
Pág.312
www.corrosionyproteccion.com Pág.312
Se volverá a verificar la dirección de los servomotores con la ayuda
del modo FBW el cual se inclinara el avión en diferentes posiciones, el
piloto deberá identificar que la acción que está realizando el
controlador de vuelo sea el correcto para que la aeronave se pueda
enderezar.
Como se muestra en la imagen el avión está siendo inclinado por lo que el avión
crea acciones en el alerón para que el avión gire hacia el lado contrario y se pueda
corregir, si el avión no presenta las acciones indicadas, se debe de corregir desde
el software misión planner.
Pág.313
www.corrosionyproteccion.com Pág.313
Observación: La configuración de los mandos dentro del RC puede variar a la
calibración hecha en misión planner como “calibración de radio”.
Pág.314
www.corrosionyproteccion.com Pág.314
Se montara la hélice verificando que sea la adecuada, además de
que la posición sea la correcta, se habilitara el motor de la aeronave
desde el ordenador para revisar que no tenga vibraciones.
Pág.315
www.corrosionyproteccion.com Pág.315
Se alimentara el transmisor de video junto con la cámara con una
batería diferente de la del controlador.
Pág.316
www.corrosionyproteccion.com Pág.316
Se verificara que el switch de cámaras esté funcionando, la calidad
de video sea buena, y el módulo OSD este transmitiendo en el monitor
los datos necesarios para la misión. En el monitor debemos poder ver:
Nivel de batería.
Latitud y altitud.
Distancia a casa.
Velocidad.
Orientación.
Angulo de inclinación.
Modo de vuelo.
Pág.317
www.corrosionyproteccion.com Pág.317
VI. Se deshabilitara servmotores y motor de la aeronave con la ayuda del
botón de seguridad.(Como se muestra en la imagen anterior).
Pág.318
www.corrosionyproteccion.com Pág.318
VIII. Procedimientos de despegue
Pág.319
www.corrosionyproteccion.com Pág.319
Despegue con tren de aterrizaje, este método dependerá de la superficie
del terreno, las condiciones óptimas es en pavimento.
Pág.320
www.corrosionyproteccion.com Pág.320
Despegue con bungie, método el cual la aeronave es lanzada con una
liga elástica de 2 metros de largo sin esfuerzo y de hasta 3.5 metros con
esfuerzo, es necesario que el avión cumplan con el peso máximo de carga
es decir, el bungie está diseñado para aguantar un peso de hasta 4.5 kilos.
El peso de la aeronave depende de la misión, si la misión abarca
monitoreo debería llevar las cámaras óptimas para dicha misión, si no son
necesario serán removidas para quitar peso, depende mucho de la
batería, si necesitamos que la autonomía del avión sea mayor es necesario
una batería con una mayor capacidad y por lo tanto con un peso mayor,
Si el peso sobrepasa 4.5 kilos el avión no podrá usar el bungie por motivos
de seguridad.
Pág.321
www.corrosionyproteccion.com Pág.321
Despegue con asistente de piloto, es decir el asistente deberá de aventar
la aeronave con el esfuerzo necesario, el asistente debe de usar casco y
guantes en todo momento para evitar algún contacto accidentalmente
con la hélice. Este método es el más usado por la mínima distancia que
necesita para el despegue.
Pág.322
www.corrosionyproteccion.com Pág.322
Antes de cualquier despegue se debe de notificar a toda persona cerca.
Pág.323
www.corrosionyproteccion.com Pág.323
Aterrizaje con red, trata de una red diseñada para soportar un peso
de 80 kilos recomendados y 100 kilos para tener una fractura ,
hecha de Nylon reforzado, con una longitud de 5 metros es decir 1.5
metros extras de cada lado comparado con la envergadura del
avión, con una altura de 3 metros, dos soportes a los extremos
empotrados al suelo, cada soporte cuenta con el exterior hule
espuma para evitar daños al avión, la aeronave cuenta con un
gancho en la parte frontal, el objetivo de dicha red es dar la
oportunidad de un aterrizaje con una distancia libre de obstáculos
de 5 metros, consta que el avión vuele directo a la red , al estrellarse
con la red la aeronave disminuirá su velocidad a 0, la red disminuirá
el golpe, evitando daños, el gancho atrapara la red evitando que el
avión caiga al suelo.
Pág.324
www.corrosionyproteccion.com Pág.324
Se desconecta la alimentación de todo el avión al igual que el del
fpv.
Pág.325
www.corrosionyproteccion.com Pág.325
Después de 20 min se debe de medir la batería y colocar dentro de
la bitácora el tiempo de uso el voltaje inicial, voltaje final, y número
de batería.
Pág.326
www.corrosionyproteccion.com Pág.326
XI. Tipos de vuelo
Pixhawk cuenta con múltiples tipos de vuelo, los cuales tienen como objetivo
mejor la técnica de vuelo, los modos de vuelos utilizados dentro de nuestro
proyecto son
RTL
FBWA
LOITER
AUTO
MANUAL
ESTABILIZADOR
CIRCLE
RTL que significa “Return to lunch” esta acción es una de las más importantes, al
estar en este modo de vuelo pixhawk dará la orden de regresar al punto Home de
Pág.327
www.corrosionyproteccion.com Pág.327
forma totalmente autónoma, la aeronave al ser encendida identifica gracias al
GPS las coordenadas y son reconocidas como “home” es decir el avión guardara
las coordenadas de donde fue prendido para que si la persona a cargo llega a
perder de vista el avión automáticamente identifique, RTL es utilizado como modo
de seguridad, una gran parte de que un avión caiga es la perdida de señal del
control, pixhawk te da la opción de configurar que no importe el modo de vuelo si
la señal del control se pierde automáticamente el avión regresar, nosotros como
manejamos diferentes altitudes programamos que al entrar en modo RTL la altitud
será de entre 200 y 400 metros de la altitud del terreno es decir no parejo si no va
a variar sus altitudes en el regreso, al llegar al punto “home” el avión empezara a
dar vueltas a 200 metros de altura hasta que se le indique otra misión u otro modo
de vuelo.
FBWA obtendrá un 60% de los mandos del avión, el usuario no podrá hacer movimientos
rápidos ni vueltas tan cerradas, pixhawk ayudara al usuario a estabilizar al avión con el
motivo de que el avión mantenga un vuelo controlado, estable en todo momento. Este
modo de vuelo es favorable en los despegues con bungie y cuando el operador lo avienta,
normalmente el avión puede llegar a tener más entrada de aire de un lado que del otro
haciendo que el avión tenga un despegue demasiado brusco o bajando mucha altura,
con FBWA pixhawk determinara si se necesitan hacer movimientos para estabiliazar el avión
en cuesion de microsegundos.
Loiter
Pág.328
www.corrosionyproteccion.com Pág.328
Es algo similar a RTL, da círculos en el momento en que le tu pones este modo sin importar
que este alejado de punto “HOME” esto con la finalidad de que si estamos haciendo
monitoreo y llega a ver algo extraño al activar este modo el avión dará vueltas en ese
punto para ver más detalladamente el área,
Auto
Pág.329
www.corrosionyproteccion.com Pág.329
Los puntos que podemos encontrar en cada punto seleccionado son las coordenadas
(latitud, longitud, altitud, grados, ángulo, distancia entre ese punto y el anterior, distancia
entre ese punto y “home”).
En un vuelo es recomendado no tener vueltas muy cerradas por lo que en Mission planner
puedes configurar el diámetro de cada punto seleccionado para que el avión tenga la
opcion de que si los puntos están muy juntos pueda tener mayor rango para dar la vuelta
o si es todo lo contrario y se necesitan vueltas muy cerradas podamos hacer que el avión
pueda dar vuelta en cuestión de 1 o 2 metros.
Pág.330
www.corrosionyproteccion.com Pág.330
Manual
El modo manual deja que el operador tenga totalmente el control de la aeronave, siempre
es bueno que el avión tenga cargado este modo de vuelo ya que en el momento en el
que el pixhawk pueda a llegar tener un error o este ejecutando un plan de vuelo mal
diseñado como una acción de un cambio de altitud con un Angulo descendiente
elevado el operador pueda tomar el control y darle alguna otra orden como RTL.
Estabilizador
Modo muy similar a FBWA la diferencia es el pixhawk tiene un menor porcentaje de control,
el operador tiene todo el rango de movimientos, es decir el avión podrá hacer una vuelta
muy cerrada y lo que buscara el controlador es que al salir de la vuelta el avión mantenga
una orientación y Angulo equilibrado.
Circle
Pág.331
www.corrosionyproteccion.com Pág.331
Modo en el que es similar a Loiter la diferencia es que circle usa los sensores internos del
pixhawk y no el GPS, como lo hace loiter, si el gps sufre de algún error circle podrá dar
vueltas gracias a su giroscopio.
DETECCIÓN DE FUGAS
SELECCIÓN DE TECNOLOGÍAS
Los diferentes espectros que se pueden detectar mediante sensores que se pueden
montar sobre el VANT son:
UV
10nm a 400 nm
Visible
de 400nm a 700nm
Pág.332
www.corrosionyproteccion.com Pág.332
Infrarojo
de 700 nm a 1 mm
de 700 nm a 1000000nm
Microonda
de 1mm a 1m
Radio
1m+
Azul (10000K)
Blanco (6000K)
Rojo (1000K)
IR Subdiv
Pág.333
www.corrosionyproteccion.com Pág.333
FIR(farIR) 15000nm a 1000000nm (LaserIR Cold -270C a -80C)
Sensor ProSpecTIR
Sequoia
Flir TauSWIR
Pág.334
www.corrosionyproteccion.com Pág.334
Tetracam RGB+3
FLIR GasFinder
CloudCap TASE500
---------------------------------------------------------------
Agriculture
Pág.335
www.corrosionyproteccion.com Pág.335
ESTRATEGIA COMERCIAL.
ANÁLISIS DE MERCADO Jordi.
Pág.336
www.corrosionyproteccion.com Pág.336
Nomination Form for 2017
E-mail this completed form to: MPInnovationAwards@nace.org
To qualify for consideration, the innovation must have been in some sort of development
phase on or after January 1, 2012; the technology must be feasible; and nominations must
be submitted on this official nomination form. The nomination process opens on July 1,
2016 and the nomination form must be submitted by e-mail to
MPInnovationAwards@nace.org on or before Monday, October 31, 2016 at 11:59 p.m.
Eastern time. There is no fee to submit a nomination.
Please limit the summary description to 300 words or less and one photo, and limit the
full description to no more than 10 pages.
Each innovation will be rated by a panel of leading corrosion experts using a numerical
scoring system based on the rating criteria listed below. The highest-rated innovations will
receive the awards.
Rating criteria
Can the innovation be incorporated into existing corrosion prevention and control
activities?
For questions about the awards, please contact MP Editor Kathy Riggs Larsen at
MPInnovationAwards@nace.org.
Contact Information:
Pág.337
www.corrosionyproteccion.com Pág.337
Job title: Drone Engineer
E-mail: aldric.lopez@corrosionyproteccion.com
Nominee(s)
Mailing Address:
Street, City, State, Postal
Code, Country
Pág.338
www.corrosionyproteccion.com Pág.338
Job title: Drone Engineer
E-mail: aldric.lopez@corrosionyproteccion.com
Mailing Address: Jr Hegel 132, Colonia Polanco, Delegación Miguel Hidalgo, CP.
11490.
Telephone:
E-mail: lmm@corrosionyproteccion.com.mx
Pág.339
www.corrosionyproteccion.com Pág.339
Telephone: 7772142656
E-mail: miguelarizvilla@gmail.com
Telephone: 6672317796
E-mail: Carlosf.escalante@hotmail.com
NOTE: The above contact information will not be made public except the nominees’ names, job
titles, and organizations. However, all information submitted on the following pages will be
submitted to the panel of corrosion experts and posted on the MP Corrosion Innovtion of the
Year Awards Web site.
Pág.340
www.corrosionyproteccion.com Pág.340
2017 Award Nomination
Title of Innovation:
UAV Cathodic Protection Monitoring System
Nominee(s)
Corrosión y Protección
Category:
(select one below)
Pág.341
www.corrosionyproteccion.com Pág.341
Full Description:
(Please provide complete answers to the questions below. Graphs, charts, and photos can
be inserted to support the answers.)
Fixed wing UAVs are capable of very fast and efficient aerial inspection and surveillance of
gas and oil pipelines, they are being used to inspect assets which are normally difficult to
access. It’s also possible to equip UAVs with multiple technologies like high definition and
multispectral cameras and sensors. However, in many countries, the only way to collect CP
readings is to send personnel to manually collect this data.
The system works by adding low cost and low consumption, short range transceivers to
the existing pipeline CP measurement installations. The installations, as well as the
rectifiers, are instrumented with equipment that collects, stores and transmits data to the
UAV when it passes by. The UAV is equipped as well, with the corresponding electronics
that communicate with the CP measuring installations. The UAV can store that information
and then correlate and integrate it with other data it provides, for example: video and
photography images, infrared images (including thermal), GPS coordinates, among others.
Pág.342
www.corrosionyproteccion.com Pág.342
The UAV flies autonomously at a safe height to clear the tree line, as well as any other
constructions that may be present. As the UAV approaches a measuring station at a
remote location, it sends a short range radio signal to the instrumented transceiver at the
ground station. At that moment, the electronics in the measuring station take all the
recorded data taken from the pipeline, and transmit it to the UAV. The UAV receives and
stores that information with its dedicated electronics. The UAV then proceeds to
autonomously fly using GPS to the next point where it can find a measuring station,
following the buried pipeline to gather visual information as well.
Since safety is of mayor importance, the UAV is always communicated with the pilot via
long range ultra-high frequency (UHF) radio telemetry, which allows the pilot to control
the aircraft in case of emergency. Included in this UHF communication, the operator at the
ground station receives a life feed of information critical to pipeline inspection. This
includes: life video from the UAV (with the option of infrared/thermal video), the
measured CP data and flight information such as maps, attitude, altitude, GPS, among
other needed information. This information is viewed in a ground station as seen in the
following image.
Pág.343
www.corrosionyproteccion.com Pág.343
This system allows a complete monitoring solution for CP pipelines. The information
gathered by this UAV based system allows a better assesment of CP needs for the pipeline.
3. Describe the corrosion problem or technological gap that sparked the development of
the innovation? How does the innovation improve upon existing methods/technologies
to address this corrosion problem or provide a new solution to bridge the technology
gap?
Due to the sociopolitical and geographical environment of many regions in Mexico and
latin-america, there are pipelines in areas where driving in a truck or walking is not
possible. Taking CP data measurements from test stations located in such areas is very
dangerous and inefficient. This areas include swamps, jungles and mountains; as well as
socially violent areas.
Currently, most of this high risk areas are not being monitored at all. This is very dangerous
since CP measurements are the vital signs of the pipeline, and without them its impossible
to operate correctly the pipeline.
Pág.344
www.corrosionyproteccion.com Pág.344
The only existing method to inspect dangerous and inaccessible pipelines is with the use of
manned airplanes. There are several problems with this approach. First, its not possible to
take CP readings directly from the pipelines, which limits the monitoring of the pipeline to
purely visual information. Second, the manned airplane needs to fly at a much higher
altitude than the UAV would, that lowers the quality of gathered visual information. Also,
operating a manned aerial vehicle, is inherently more dangerous than operating a UAV.
Finally the cost, continuously operating a manned airplane requires a lot more investment
in fuel and maintenance, than operating an UAV.
This problem inspired a new more technologically advanced and practical solution. With
the use of a completely integrated UAV based cathodic protection monitoring system, it
will be possible to monitor difficult inaccessible areas more efficiently and frequently than
ever. The system is specifically designed for inaccessible areas, but it provides much more
information than it would be possible to acquire in commonly accessible areas. Aerial
video footage at close range, provides a better evaluation of the surrounding areas of the
pipeline. Infrared cameras can help detect gas and oil leaks, as well as human intruders in
the pipeline. Automated CP measurement data acquisition makes it possible to collect
data more frequently to better assess the pipeline situation. On top of all this advantages,
having it all the information in an integrated service will completely change the way we
inspect and take CP measurements from pipelines.
4. Has the innovation been tested in the laboratory or in the field? If so, please describe
any tests or field demonstrations and the results that support the capability and
feasibility of the innovation.
There have been several tests both in simulated controlled environments, as well as
sections of real instrumented pipelines.
The system was first tested separately. The UAV has been tested through progressively
longer flights, which provide a reliability test of mechanical and electronical components
of the UAV as well as the communications link. Through this test´s it was demonstrated
that the UAV can safely work a distance of more than 40 km per flight, which makes it
feasible as a surveillance platform.
The instrumentation system, the transceiver, and data recollection systems have been
proven as a separate unit as well. This systems have been proven to work together
perfectly with a resolution of less than 0.05 mV for CP measurements, which is more than
enough resolution to make a correct pipeline protection assessment. The transceiver was
also tested with the UAV, with a correct reliable transmission distance of up to 200m,
Pág.345
www.corrosionyproteccion.com Pág.345
considering the well-known GPS coordinates of CP measurement stations in pipelines, its
more than enough distance to take measurements reliably.
5. How can the innovation be incorporated into existing corrosion prevention and
control activities and how does it benefit the industry/industries it serves (i.e., does it
provide a cost and/or time savings; improve an inspection, testing, or data collection
process; help to extend the service life of assets or corrosion-control systems, etc.)?
The innovation is designed to be easily incorporated into existing facilities. The transceiver
units would need to be installed on CP monitoring stations during the next inspection.
After that the UAV could be easily deployed for future inspections. UAV need to be
programmed to follow the specified GPS coordinates of the pipeline, which are already
available and known to the pipeline inspection personnel. The operation is then very
simple, since the UAV can fly completely autonomously and the operating team would
only focus on gathering visual information from the UAV cameras.
The cost and time savings using this system will quickly be noticed, and pipeline inspection
will be faster and more reliable than ever. With the additional available correlated
information, assessing the pipeline needs will be easier and will provide better results,
thus extending the life of the assets.
6. Is the innovation commercially available? If yes, how long has it been utilized? If not,
what is the next step in making the innovation commercially available? What are the
challenges, if any, that may affect further development or use of this innovation and
how could they be overcome?
Currently the innovation is in its last validation steps, however the product is commercially
available as an experimental feature in our pipeline inspection services. The next steps to
make this innovation commercially available include final validation test´s, especially of the
complete integrated system, as well as product advertisement. Regulations and security
are the main challenges that will affect further development. In terms of regulations, we
currently comply with all the legislations having a permit from the department of
communications and transport (SCT). All of our pilots and aircraft have an insurance for
any damages that may be accidentally caused in the event of an accident.
7. Are there any patents related to this work? If yes, please provide the patent title,
number, and inventor.
This innovation is based on two patents, both submitted to the Mexican Institute of
Intellectual Property. The first one is titled “SISTEMA INTEGRAL AUTOMATIZADO DE
ALERTAS DE OPERACIÓN Y MANTENIMIENTO DE INTEGRIDAD DE DUCTOS EN DERECHOS
Pág.346
www.corrosionyproteccion.com Pág.346
DE VÍA”, it consists of an integrated alert, operation and maintenance system, completely
integrated and to be used in pipeline inspection. The second one is titled “DISPOSITIVO DE
BAJO CONSUMO PARA EL MONITOREO REMOTO DE SISTEMAS DE PROTECCIÓN CATÓDICA
EN DERECHOS DE VÍA”, and it is basically the electronics transceiver system that monitors
CP in the pipeline and sends that information to the UAV.
Referencias
Pág.347
www.corrosionyproteccion.com Pág.347