“implementación de un control de tracción 2x2 en un

146
UNIVERSIDAD DE VALLADOLID ESCUELA DE INGENIERIAS INDUSTRIALES Grado en Ingeniería Electrónica Industrial y Automática Implementación de un control de tracción 2x2 en un vehículo prototipo Autor: JIMÉNEZ PERALTA, ROBERTO Tutor: DOMÍNGUEZ VÁZQUEZ, JOSÉ ANTONIO Tecnología Electrónica Valladolid, julio de 2017.

Upload: others

Post on 10-Nov-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: “Implementación de un control de tracción 2x2 en un

UNIVERSIDAD DE VALLADOLID

ESCUELA DE INGENIERIAS INDUSTRIALES

Grado en Ingeniería Electrónica Industrial y Automática

Implementación de un control de tracción

2x2 en un vehículo prototipo

Autor:

JIMÉNEZ PERALTA, ROBERTO

Tutor:

DOMÍNGUEZ VÁZQUEZ, JOSÉ

ANTONIO

Tecnología Electrónica

Valladolid, julio de 2017.

Page 2: “Implementación de un control de tracción 2x2 en un
Page 3: “Implementación de un control de tracción 2x2 en un

A mi familia y mis amigos, pero en especial, quiero dedicárselo a una persona

que se fue y sé que seguro que está muy orgullo de lo que ha dejado.

Por el apoyo en los momentos difíciles y su cariño.

“El mejor guerrero no es el que triunfa siempre, sino el que vuelve sin miedo a

la batalla”

Page 4: “Implementación de un control de tracción 2x2 en un
Page 5: “Implementación de un control de tracción 2x2 en un

RESÚMEN Y PALABRAS CLAVE:

Con este trabajo final de grado, lo que se ha conseguido, es retomar un

proyecto anterior (Diseño eléctrico y electrónico de una motocicleta eléctrica

infantil 2x2) para terminarlo, corrigiendo todos los aspectos mejorables que en

la revisión se han detectado para poder construir dicho prototipo funcional.

Para su control se ha usado el microcontrolador Arduino basado en el

ATmega 328, provisto de sensores hall para determinar la velocidad de las

ruedas y la posición del acelerador.

Se ha llevado a cabo la placa de circuito impreso, el diseño de la envolvente

donde contendrá dicha placa y además una corrección en el control del

vehículo. Para el almacenamiento de energía se han usado ultracondensadores

(se ha usado este tipo de almacenaje de energía por tenerlos ya comprados y

así poder aprovecharlo).

Palabras clave: Control de tracción 2x2, interfaz hombre-máquina, HMI,

vehículo eléctrico ligero, arduino.

ABSTRACT AND KEYWORDS:

The aim of this final degree work is to complete a previous project (Electric

and electronic design of a children’s 2x2 electric motorcycle), correcting all

errors and adding improvements that in the review were detected to build a

functional prototype.

For the electric motorcycle’s control, it was used the Arduino

microcontroller which is based on the ATmega 328, equipped with HALL

sensors to determine wheel speed and the throttle position.

We built the Printed Circuit Board (PCB), the design of the box which contain

this PCB and an improvement in the software and hardware of control of the

vehicle. Furthermore, for the energy storage has been used some ultra-

capacitors (this kind of storage was used because the ultra-capacitors were

already purchased).

Keyword: 2x2 traction control, Human-Machine Interface, HMI, Electric

light vehicle, Arduino.

Page 6: “Implementación de un control de tracción 2x2 en un
Page 7: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | I

ÍNDICE GENERAL:

1 INTRODUCCIÓN Y OBJETIVOS: ..................................................................... 17

INTRODUCCIÓN: ..................................................................................... 17

OBJETIVOS:............................................................................................. 18

2 ESTADO DEL ARTE: ....................................................................................... 19

RESEÑA HISTÓRICA: .............................................................................. 19

TÉCNICA ACTUAL EN LOS VEHÍCULOS ELÉCTRICOS: .......................... 20

2.2.1 TIPOS DE VEHÍCULOS ELÉCTRICOS EN LA ACTUALIDAD: ............ 22

HISTORIA DE LA MOTO ELÉCTRICA:...................................................... 24

FUENTES DE ENERGÍA DE LA MOTO ELÉCTRICA: ................................ 26

MOTOS ELÉCTRICAS INFANTILES EXISTENTES: .................................. 26

VEHÍCULOS ELÉCTRICOS LIGEROS DE DOS RUEDAS: ........................ 27

2.6.1 SEGWAY: ......................................................................................... 27

2.6.2 MOTOS DE TRIAL/CROSS CON TRACCIÓN 2x2: ........................... 28

2.6.3 GIROCOCHES O MOTOS DE CARROCERÍA CERRADA: .................. 30

2.6.4 PATINETES ELÉCTRICOS CON TRACCIÓN ELÉCTRICA: ................. 32

VEHÍCULOS ELÉCTRICOS LIGEROS DE TRES RUEDAS: ....................... 33

2.7.1 VEHÍCULOS DESTINADOS A DRIFTING: ......................................... 33

2.7.2 TRICICLOS ELÉCTRICOS PARA PERSONAS DE MOVILIDAD

REDUCIDA: .................................................................................................... 34

INTERFACE HOMBRE-MÁQUINA: ........................................................... 35

3 TEORÍA: ......................................................................................................... 37

ULTRACONDENSADORES: ..................................................................... 37

SENSORES HALL RUEDAS: ................................................................... 39

SENSOR HALL LINEAL: .......................................................................... 40

MOTORES BRUSHLESS: ........................................................................ 40

INVERSORES DC/AC: ............................................................................. 42

CONTROL DEL SISTEMA: ....................................................................... 43

4 DESARROLLO DEL TRABAJO FINAL DE GRADO: ......................................... 45

DISEÑO DE LA PLACA DE CIRCUITO IMPRESO: ................................... 45

CÁLCULOS: ............................................................................................. 47

4.2.1 ALIMENTACIÓN: .............................................................................. 47

4.2.2 SENSOR DE TENSIÓN: ................................................................... 51

Page 8: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | II ROBERTO JIMÉNEZ PERALTA

4.2.3 VÚMETRO PARA VER EL NIVEL DE CARGA DE LOS

ULTRACONDENSADORES: ........................................................................... 52

SIMULACIONES: .................................................................................... 55

4.3.1 REGULADOR DE TENSIÓN LM7808C: .......................................... 55

4.3.2 VÚMETRO PARA VER EL NIVEL DE CARGA DE LOS

ULTRACONDENSADORES: ........................................................................... 57

4.3.3 SENSOR DE TENSIÓN PARA LOS ULTRACONDENSADORES: ...... 61

4.3.4 RESPUESTA EN FRECUENCIA DEL FILTRO DE ENTRADA AL

VÚMETRO: .................................................................................................... 62

ARCHIVOS PARA LA FABRICACIÓN DE LA PCB: ................................... 63

MODIFICACIÓN DEL CÓDIGO: ............................................................... 65

4.5.1 MUESTRA VELOCIDAD: .................................................................. 67

4.5.2 MUESTRA TENSIÓN: ...................................................................... 68

4.5.3 SELECTOR DE MODO: .................................................................... 69

4.5.4 MOSTRAR POTENCIA: .................................................................... 73

4.5.5 LECTURA DE VOLTAJE: ................................................................... 74

4.5.6 CAMBIO DE LOS VALORES DEL PID: ............................................. 77

CONSTRUCCION DE LAS PLACAS DE CIRCUITO IMPRESO: ................ 78

ERRORES OBSERVADOS/COMETIDOS: ............................................... 80

4.7.1 BOBINA DE FILTRADO: ................................................................... 80

4.7.2 FILTRADO DE LA SEÑAL DE ACELERACIÓN DEL CONVERTIDOR

DELANTERO: ................................................................................................. 81

4.7.3 FILTRADO DE LA SEÑAL DE TENSIÓN DEL DIVISOR DE LOS

ULTRACONDENSADORES: ........................................................................... 82

MEDIDAS REALIZADAS: ........................................................................ 83

DISEÑO DE LA ENVOLVENTE: ............................................................... 85

4.9.1 CAJA: ............................................................................................... 85

4.9.2 TAPA DE LA BASE: .......................................................................... 86

4.9.3 ENGANCHE BASE-MANILLAR: ....................................................... 87

4.9.4 LOGO DEL VEHÍCULO: .................................................................... 89

4.9.5 CAJA DE CONEXIONES: .................................................................. 89

5 COSTE DEL EQUIPO: .................................................................................... 91

6 CONCLUSIÓN: ............................................................................................... 93

MEJORAS DEL PROYECTO: ................................................................... 93

7 BIBLIOGRAFÍA: ............................................................................................. 95

Page 9: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | III

8 ANEXOS: ........................................................................................................ 99

MANUAL DE USUARIO: .......................................................................... 99

8.1.1 SEGURIDAD: ................................................................................ 100

8.1.2 UTILIDAD: ..................................................................................... 101

8.1.3 MEDIO AMBIENTE: ...................................................................... 103

8.1.4 CARACTERÍSTICAS TÉCNICAS: .................................................... 104

8.1.5 MONTAJE Y CONEXIÓN ELÉCTRICA: ........................................... 105

8.1.6 PUESTA EN SERVICIO: ................................................................. 109

8.1.7 ERRORES FRECUENTES:............................................................. 112

CÓDIGO: .............................................................................................. 113

8.2.1 CÓDIGO PRINCIPAL: .................................................................... 114

8.2.2 CODIGO CABECERA: .................................................................... 118

8.2.3 SELECCIÓN DEL MODO DE FUNCIONAMIENTO: ........................ 123

8.2.4 CALCULO DE LA DIFERENCIA DE PULSOS: ................................ 127

8.2.5 TOMA DE DECISIONES: ............................................................... 128

8.2.6 PID: ............................................................................................... 130

8.2.7 REGULACIÓN DE POTENCIA: ....................................................... 132

8.2.8 COMPENSAR ESFUERZO: ............................................................ 133

8.2.9 TRACCIÓN PROPORCIONAL: ....................................................... 134

8.2.10 INICIALIZAR: ................................................................................. 135

8.2.11 MANDAR AL CONTROLADOR: ..................................................... 136

8.2.12 LEER TENSIÓN: ............................................................................ 137

8.2.13 MUESTRA VELOCIDAD: ................................................................ 139

8.2.14 MUESTRA TENSIÓN: .................................................................... 140

8.2.15 MUESTRA POTENCIA: .................................................................. 141

PLANOS: .............................................................................................. 143

8.3.1 PLANOS CONTROL: ...................................................................... 143

8.3.2 PLANOS CONECTOR: ................................................................... 146

8.3.3 PLANOS ENVOLVENTE: ............................................................... 154

Page 10: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | IV ROBERTO JIMÉNEZ PERALTA

Page 11: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | V

ÍNDICE DE ILUSTRACIONES:

Ilustración 1: Vehículos híbridos de Porsche. ............................................................................. 19 Ilustración 2: Owen Magnetic Model 60 de 1921. ..................................................................... 20 Ilustración 3: Generación de electricidad en 2014 en España. ................................................ 21 Ilustración 4: Principales partes de un vehículo eléctrico. ......................................................... 21 Ilustración 5: Esquema de un vehículo eléctrico de baterías. ................................................... 22 Ilustración 6: Esquema de un vehículo eléctrico híbrido. .......................................................... 23 Ilustración 7: Esquema de un vehículo eléctrico híbrido enchufable. ....................................... 23 Ilustración 8: Esquema de un vehículo eléctrico de pila de combustible. ................................ 24 Ilustración 9: Segway i2 SE. ......................................................................................................... 28 Ilustración 10: BMW R1200GS híbrida. ...................................................................................... 29 Ilustración 11: Yamaha WR450F. ................................................................................................ 29 Ilustración 12: Sistema de tracción delantera de Christini Technologies. ................................ 30 Ilustración 13: Ford Gyron de 1961. ........................................................................................... 31 Ilustración 14: Gyro-X de Alex Tremulis. ...................................................................................... 31 Ilustración 15: Girocoche C1. ....................................................................................................... 32 Ilustración 16: Urban Fox Volt Brushless. ................................................................................... 32 Ilustración 17: Motor eléctrico para Skate. ................................................................................. 33 Ilustración 18: Vehículo verrado. ................................................................................................. 34 Ilustración 19: E-Worker S80. ...................................................................................................... 34 Ilustración 20: HMI de una estación meteorológica. .................................................................. 35 Ilustración 21: Boceto del vehículo eléctrico. ............................................................................. 37 Ilustración 22: Ultracondensadores empleados en el prototipo................................................ 37 Ilustración 23: Tiempo de carga-descarga de un ultracondensador. ........................................ 39 Ilustración 24: Sensores hall de las ruedas. ............................................................................... 39 Ilustración 25: Sensor hall lineal del acelerador. ....................................................................... 40 Ilustración 26: Motores BLDC en los cubos de las ruedas. ....................................................... 40 Ilustración 27: Par-velocidad motor brushless. .......................................................................... 41 Ilustración 28:Convertidor para el control de los motores BLDC............................................... 42 Ilustración 29: Señal de control del motor BLDC. ....................................................................... 42 Ilustración 30: Tensión generada en el frenado. ........................................................................ 43 Ilustración 31: Microcontrolador Arduino UNO. .......................................................................... 43 Ilustración 32: Boceto del cuadro de instrumentos. .................................................................. 45 Ilustración 33: Esquema del circuito electrónico........................................................................ 46 Ilustración 34: Circuito recomendado por el fabricante para el buck. ...................................... 47 Ilustración 35: Circuito recomendado por el fabricante para el regulador lineal. .................... 47 Ilustración 36: Modelo térmico del regulador lineal. .................................................................. 48 Ilustración 37: Cálculo de la corriente inactiva. .......................................................................... 50 Ilustración 38: Cálculo de la tensión de saturación (amarillo para el prototipo, rojo con luces

incluidas). ...................................................................................................................................... 50 Ilustración 39: Circuito para comprobar la tensión de los ultracondensadores. ..................... 52 Ilustración 40: Circuito recomendado por el fabricante para el LM3914. ............................... 53 Ilustración 41: Circuito para simular el regulador de tensión. ................................................... 55 Ilustración 42: Tensión de salida del regulador lineal. ............................................................... 56 Ilustración 43: Corriente que proporciona el regulador lineal. .................................................. 56 Ilustración 44: Circuito para la simulación del LM3914. ........................................................... 57 Ilustración 45: Tensión en el pin 5 del LM3914. ........................................................................ 57 Ilustración 46: Corriente de consumo total del integrado apagado. ......................................... 58 Ilustración 47: Corriente por el LED 1 apagado.......................................................................... 58 Ilustración 48: Corriente por el LED 1 encendido. ...................................................................... 59 Ilustración 49: Consumo total de la parte del vúmetro. ............................................................. 59 Ilustración 50: Modelo térmico de un componente con su radiador. ....................................... 60 Ilustración 51: Línea roja, tensión de A1, línea verde tensión de los ultracondensadores. .... 61

Page 12: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | VI ROBERTO JIMÉNEZ PERALTA

Ilustración 52: Tensión en A1 con un valor de potenciómetro mayor. ...................................... 61 Ilustración 53: Respuesta en frecuencia del filtro del vúmetro. ................................................ 62 Ilustración 54: Respuesta para un ciclo de trabajo del 50 %. ................................................... 62 Ilustración 55: Distancias entre pistas según la norma IPC-2221. ........................................... 63 Ilustración 56: Aspecto final de la cara de soldadura. ............................................................... 64 Ilustración 57: Aspecto final de la cara de componentes. ......................................................... 64 Ilustración 58: Aspecto final del conector por la cara de soldadura. ........................................ 65 Ilustración 59: Aspecto final del conector por la cara de componentes. .................................. 65 Ilustración 60: Taladrado con la máquina de control numérico. ............................................... 78 Ilustración 61: Colocación del fotolito (izquierda) e insolado (derecha). .................................. 78 Ilustración 62: Acabado de la PCB después del atacado con sosa. .......................................... 79 Ilustración 63: Proceso de atacado del cobre. ............................................................................ 79 Ilustración 64: Acabado final de la PCB. ..................................................................................... 79 Ilustración 65: Bobinas de filtrado. .............................................................................................. 80 Ilustración 66: tensión de rizado del buck con 5V/div. .............................................................. 80 Ilustración 67: Bobina de filtrado después del condensador de filtrado del buck. .................. 81 Ilustración 68: Tensión de salida del convertidor buck con 2V/div. .......................................... 81 Ilustración 69: Voltaje de salida del divisor de tensión. ............................................................. 82 Ilustración 70: Voltaje de salida del divisor de tensión filtrado. ................................................ 83 Ilustración 71: Base de la envolvente. ......................................................................................... 86 Ilustración 72: Muesca para la bola de 5 mm de diámetro. ...................................................... 86 Ilustración 73: Tapa de la envolvente. ......................................................................................... 87 Ilustración 74: Parte posterior de la tapa. ................................................................................... 87 Ilustración 75: Enganche entre la base y el manillar. ................................................................ 88 Ilustración 76: Detalle del habitáculo del muelle con la bola. ................................................... 88 Ilustración 77: Enganche al manillar. .......................................................................................... 88 Ilustración 78: Logo del vehículo. ................................................................................................ 89 Ilustración 79: Caja de conexiones. ............................................................................................. 90 Ilustración 80: Serigrafía en la caja de conexiones. ................................................................... 90 Ilustración 81: Definiciones de valores numéricos IP. .............................................................. 101 Ilustración 82: Aspecto de la bola con el muelle montado. ..................................................... 105 Ilustración 83: Tornillos de fijación para el enganche y el soporte. ........................................ 106 Ilustración 84: Tornillos de fijación de la PCB. .......................................................................... 106 Ilustración 85: Conexión de los botones, llave y selector de potencia. ................................... 107 Ilustración 86: Tornillos de fijación de la tapa. ......................................................................... 107 Ilustración 87: Tornillos de fijación de la PCB. .......................................................................... 108 Ilustración 88: Indicación de la conexión de los sensores. ...................................................... 108 Ilustración 89: Tornillos para la fijación de la tapa de la caja de conexiones. ....................... 108 Ilustración 90: Información pantalla LCD. ................................................................................. 109 Ilustración 91: Testigo de la batería. ......................................................................................... 109 Ilustración 92: Indicación de poner a cargar el aparato. ......................................................... 109 Ilustración 93: Ubicación el potenciómetro de ajuste. ............................................................. 110 Ilustración 94: Array de leds encendido. ................................................................................... 110 Ilustración 95: Led de tracción encendido. ............................................................................... 111

Page 13: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | VII

ÍNDICE DE TABLAS:

Tabla 1: Historia de la moto eléctrica. ......................................................................................... 26 Tabla 2: Cronografía de la empresa Segway. .............................................................................. 28 Tabla 3: Consumos de los componentes alimentados por el regulador lineal. ........................ 48 Tabla 4: Consumos de los componentes alimentados por el buck. .......................................... 49 Tabla 5: Estados de los botones. ................................................................................................. 69 Tabla 6: Codificación en bits de la batería. ................................................................................. 76 Tabla 7: Comparación de valores medidos/ valores calculados. .............................................. 83 Tabla 8: Presupuesto de ejecución material. .............................................................................. 91 Tabla 9: Presupuesto honorarios trabajadores. ......................................................................... 92 Tabla 10: Presupuesto final. ........................................................................................................ 92 Tabla 11: Significado de las letras adicionales a los números IP. .......................................... 102 Tabla 12: Significado de los números del código IK. ................................................................ 102 Tabla13:Característica técnicas del producto. ......................................................................... 104 Tabla 14: Errores frecuentes. .................................................................................................... 112

Page 14: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | VIII ROBERTO JIMÉNEZ PERALTA

ÍNDICE DE ECUACIONES:

Ecuación 1 ..................................................................................................................................... 38 Ecuación 2 ..................................................................................................................................... 48 Ecuación 3 ..................................................................................................................................... 48 Ecuación 4 ..................................................................................................................................... 49 Ecuación 5 ..................................................................................................................................... 49 Ecuación 6 ..................................................................................................................................... 51 Ecuación 7 ..................................................................................................................................... 51 Ecuación 8 ..................................................................................................................................... 51 Ecuación 9 ..................................................................................................................................... 51 Ecuación 10 ................................................................................................................................... 51 Ecuación 11 ................................................................................................................................... 51 Ecuación 12 ................................................................................................................................... 52 Ecuación 13 ................................................................................................................................... 52 Ecuación 14 ................................................................................................................................... 52 Ecuación 15 ................................................................................................................................... 53 Ecuación 16 ................................................................................................................................... 53 Ecuación 17 ................................................................................................................................... 54 Ecuación 18 ................................................................................................................................... 54 Ecuación 19 ................................................................................................................................... 54 Ecuación 20 ................................................................................................................................... 55 Ecuación 21 ................................................................................................................................... 55 Ecuación 22 ................................................................................................................................... 55 Ecuación 23 ................................................................................................................................... 59 Ecuación 24 ................................................................................................................................... 60 Ecuación 25 ................................................................................................................................... 60 Ecuación 26 ................................................................................................................................... 60 Ecuación 27 ................................................................................................................................... 60 Ecuación 28 ................................................................................................................................... 60 Ecuación 29 ................................................................................................................................... 61 Ecuación 30 ................................................................................................................................... 61 Ecuación 31 ................................................................................................................................... 63 Ecuación 32 ................................................................................................................................... 68

Page 15: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | IX

Page 16: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | X ROBERTO JIMÉNEZ PERALTA

Page 17: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 17

1 INTRODUCCIÓN Y OBJETIVOS:

INTRODUCCIÓN: En la actualidad, con el gran cambio que se está produciendo en el ámbito

del transporte, debido a la inserción del vehículo eléctrico, se ha decidido

escoger este trabajo final de grado para ayudar a realizar un medio de

transporte limpio y sin emisiones locales de C02.

Este vehículo, contiene tracción a las dos ruedas, con posibilidad de

selección del tipo de tracción que se quiere en todo momento, de esta forma,

hay cuatro posiciones distintas:

1. 2x1 OFF: El vehículo funciona con tracción trasera y en la rueda

delantera se manda una pequeña tensión para evitar el frenado

regenerativo que produciría dicha rueda.

2. 2x1 ON: De igual forma que en el caso anterior, pero en este si la

diferencia de velocidad entre la rueda trasera y la delantera

supera un cierto umbral, la rueda delantera se pone a girar a una

velocidad regulada por el selector de potencia, hasta que las

velocidades se igualan.

3. 2x2 OFF: En este modo, el control PID intenta que la diferencia

entre las dos ruedas sea cero, por lo que las dos ruedas están

traccionando a la vez.

4. 2x2 ON: Al igual que el modo anterior, las dos ruedas traccionan y

cuando la trasera pierde adherencia, la rueda delantera se pone

a girar a la potencia regulada por el potenciómetro, hasta que las

velocidades se igualan.

Debido a la potencia de los motores insertados en los cubos de las

ruedas, esta moto va dirigida al sector infantil. Puede alcanzar una velocidad

máxima de 25 Km/h en llano con un tiempo de funcionamiento de

aproximadamente 3 min (1,31 km) con convertidor buck-boost bidireccional y

funcionando a máxima potencia en el modo 2x2 ON, si se seleccionase el modo

2x1 OFF, circulando en las mismas condiciones, el tiempo de funcionamiento

aumentaría hasta los 6 min (2,63 km) aproximadamente.

Inicialmente, esta moto se va a probar en adultos con un diseño

comprendido entre un patinete y una pit-bike. La elección de los

ultracondensadores es debido a la facilidad de carga y la falta de

mantenimiento en un vehículo prototipo.

Mediante una interface HMI (Human-Machine Interface), el piloto sabrá

a qué velocidad circula, el estado de carga de los ultracondensadores, el modo

que está seleccionado, la posición del acelerador, si entra la tracción delantera

y el selector de potencia en la rueda delantera.

Page 18: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 18 ROBERTO JIMÉNEZ PERALTA

El control del vehículo y de la interface se ha hecho mediante el

microcontrolador Arduino, por ya estar implementado, es decir, puede realizar

la tarea encomendada sin ningún problema y además de su facilidad para

modificar el código.

OBJETIVOS: El objetivo del presente proyecto es realizar un vehículo completamente

eléctrico y funcional para poder circular por las calles con él.

Se realizará un diseño de una placa de circuito impreso, por si en algún

momento se tiene pensado construir en serie dicho vehículo y de la facilidad

de realizar pruebas con dicho aparato fuera del laboratorio, además de la

envolvente para su posterior impresión en 3D.

El diseño de la placa está pensado para que sea universal, es decir, si se

quisiera usar motores con mayor potencia, solo habría que cambiar los

convertidores con su correspondiente potencia y conectarlos al sistema de

control.

Lo mismo ocurre con los ultracondensadores, tienen una gran capacidad

comparada con condensadores normales y tiene grandes ventajas en lo

referente a vehículos de ocio, se podrían cambiar por baterías de ácido-plomo

(que no es el mejor caso debido a su baja densidad energética) o cualquier otro

tipo de batería como puede ser de NiMH (níquel metal hidruro), siempre

respetando el máximo voltaje de 48 V. Realmente, se va a trabajar a 36 V

debido a el cargador diseñado.

Dicho vehículo facilita bastante la investigación ya que es barato, ligero

con un control polivalente.

Page 19: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 19

2 ESTADO DEL ARTE:

A continuación, se va a llevar a cabo una investigación sobre los vehículos

eléctricos, se va a partir de un resumen del TFG anterior, y posteriormente, se

va a exponer un análisis más extenso de los vehículos ligeros eléctricos de dos

ruedas.

RESEÑA HISTÓRICA: A diferencia de lo que se cree, en el siglo XIX el vehículo eléctrico

predominaba frente a los vehículos de combustión interna. El primer automóvil

eléctrico fue construido en 1835, por el profesor Sibrandus Strating en la

ciudad Groninberg (Alemania).

Este vehículo funcionaba con baterías que no eran recargables puesto

que este tipo de batería no se inventó hasta 1881.

El record de velocidad mundial de la época lo consiguió un Camille

Jenatzy con el coche llamado “La Jamais Contente”, completamente eléctrico y

con el interior del vehículo lleno de baterías, en el que el cuerpo del piloto iba

completamente fuera.

Los vehículos eléctricos se usaron para principalmente como taxis o

coches para moverse dentro de entornos industriales para no emitir gases

nocivos que perjudicasen a la vida de los trabajadores, al igual que se usó en

los campos de golf ya que estos vehículos no producen contaminación acústica

y que por lo tanto es perfecto para el entorno relajante de esas zonas.

Uno de los principales innovadores en este campo fue el famoso

Ferdinand Porsche, que realizó vehículos híbridos, sobre todo en serie, de todo

tipo como berlinas, trenes de carretera y tanques.

Ilustración 1: Vehículos híbridos de Porsche.

También, se crearon vehículos eléctricos de lujo, que no eran accesibles

a todo el mundo de la época como ocurre con el Owen Magnetic Model 60,

también apodado como “El coche de las mil marchas”, esto es debido a que

este vehículo no contiene caja de cambios.

Page 20: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 20 ROBERTO JIMÉNEZ PERALTA

Ilustración 2: Owen Magnetic Model 60 de 1921.

Con el paso de los años, los vehículos eléctricos o los híbridos, en vez

de prosperar fueron perdiendo fama, debido a que los motores de combustión

interna eran mejores en lo referente a prestaciones (velocidad máxima y

potencia).

TÉCNICA ACTUAL EN LOS VEHÍCULOS ELÉCTRICOS: Actualmente, el mayor problema de los vehículos eléctricos es la

autonomía de estos comparada con la de los vehículos de combustión interna

Otto o diésel, este problema está relacionado directamente con la capacidad

de las baterías y su peso.

Este problema se puede ver reducido gracias a las nuevas tecnologías

como las baterías de Lipo (litio-polímero) que tienen una densidad energética

alrededor de 180 Wh/Kg, pero esto puede mejorar gracias a las baterías de

grafeno1 que pueden tener una densidad energética de 1000 Wh/Kg.

Actualmente, la autonomía media de un vehículo eléctrico, llega hasta el

orden de los 160 Km, que es mucho mayor de lo que se recorre diariamente

con un turismo, y más que suficiente para andar por ciudad.

Las ventajas de los vehículos eléctricos son muy superiores a los de

combustión interna, alguna de las cuales son: inmediata respuesta del motor,

par en la rueda constante, no producen contaminación acústica y tampoco

producen contaminación por CO2 local (esto quiere decir que, en España, la

mayor parte de la energía eléctrica que se produce no es de energías

renovables y que por lo tanto contamina). En la imagen Ilustración 3:

1 El grafeno es un material bidimensional, que consiste en una sola capa de átomos de carbono

dispuestos en una retícula hexagonal. Es 200 veces más fuerte que el acero estructural y

conduce hasta 1000 veces mejor que el cobre la electricidad. El grafeno en estas baterías

forma parte del electrodo positivo y permite unas descargas de hasta 100C sin efecto memoria.

Page 21: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 21

Generación de electricidad en 2014 en España se puede ver qué tipo de

tecnología generó electricidad en el año 2014.

Ilustración 3: Generación de electricidad en 2014 en España.

A continuación, se va a mostrar una imagen en la cual muestra los

principales componentes del vehículo eléctrico.

Ilustración 4: Principales partes de un vehículo eléctrico.

Las baterías suelen ir en el centro del chasis, para equilibrar el peso y

no interferir en la conducción, ya que está mejor repartido el peso. Con respecto

a los motores, estos pueden distribuirse de diferentes formas, pueden alojarse

en el cubo de las cuatro ruedas, consiguiendo una tracción 4x4, un solo motor

con un diferencial en las ruedas traseras o delanteras… La ventaja de esto es

que la potencia es aditiva, es decir, se suman todas las potencias de los

motores que se instalen.

Actualmente, el vehículo totalmente eléctrico que se comercializa más

vendido es el Nissan Leaf y el coche de lujo con mejores prestaciones es el

Tesla Model S.

Page 22: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 22 ROBERTO JIMÉNEZ PERALTA

2.2.1 TIPOS DE VEHÍCULOS ELÉCTRICOS EN LA ACTUALIDAD:

Los vehículos eléctricos se pueden clasificar de varias formas, por su

peso, por su tipo de motor (eléctrico puro o hibrido).

Atendiendo a las características del peso, estos se pueden clasificar en:

1. Vehículos eléctricos ligeros (VEL): Generalmente pequeños de

dos plazas, hechos de fibra de vidrio, termoplásticos o materiales

compuestos, con un peso inferior a los 600 Kg. Tienen una

demanda entre los 9-20 KWh/100 Km.

2. Vehículos eléctricos con carrocería convencional: Dentro de esta

categoría, se puede subdividir en dos:

Convertidos a partir de coches de combustión interna:

Forma fácil de probar motores, baterías y demás

componentes.

Diseñados desde cero como VE: Son más eficientes y

tienen mayor autonomía que los anteriores.

3. Automóviles solares: Son vehículos provistos de células solares

y una pequeña batería. Llevan acoplados células solares de unos

8-10 m2.

Atendiendo al abastecimiento, estos se pueden clasificar en:

1. Vehículos eléctricos de baterías: Estos vehículos usan la energía

almacenada en baterías para poder proporcionar energía al

motor conectado a la transmisión del vehículo. Son totalmente

eléctricos y se pueden recargar.

Ilustración 5: Esquema de un vehículo eléctrico de baterías.

Page 23: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 23

2. Vehículos eléctricos híbridos: En este tipo de vehículo, la

propulsión puede venir de dos sitios diferentes, de un motor

eléctrico o de un motor de combustión interna.

Ilustración 6: Esquema de un vehículo eléctrico híbrido.

3. Vehículo eléctrico hibrido enchufable: Son similares a los

anteriores, salvo que estos pueden recargar las baterías

mediante la conexión a la red.

Ilustración 7: Esquema de un vehículo eléctrico híbrido enchufable.

4. Vehículo eléctrico de pila de combustible: Vehículo totalmente

eléctrico que disponen de una pila de combustible de hidrógeno

que genera la electricidad a partir de ese gas almacenado.

Page 24: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 24 ROBERTO JIMÉNEZ PERALTA

Ilustración 8: Esquema de un vehículo eléctrico de pila de combustible.

HISTORIA DE LA MOTO ELÉCTRICA: Se va a comenzar definiendo la moto eléctrica, esta es un vehículo con

dos ruedas que usa un motor eléctrico como medio de propulsión. La

electricidad es almacenada en unas baterías recargables que proporcionan la

energía a el/los motor/es.

Hay una gran variedad de fabricantes de motos eléctricas, entre ellos

están: Brammo, Zero Motorcycles, Quantya, Electric Motorsport, Yamaha…

Otros grandes fabricantes como puede ser BMW, KTM u Honda, llevan ya

tiempo vendiendo motos de este tipo.

Los fabricantes que se dedican a hacer motos eléctricas en el sector más

juvenil, son Xispa, Oset bikes, Kuberg…

A continuación, se va a poder ver una tabla resumen de los

acontecimientos más importantes ocurridos en el mundo del motociclismo

eléctrico:

Page 25: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 25

Año Acontecimientos

1985 Surgen primeras patentes de motos eléctricas

1911 Popular Mechanics publica un artículo sobre la moto eléctrica

1919 Ransomes, Sims y Jefferies crean un prototipo de moto eléctrica

1936 Se funda Socovel, empresa de motos eléctricas

1946 Se funda una empresa de marketing, basada en una moto

eléctrica creada por Mere Williams

1967 Karl Kordesch realizó una moto eléctrica con pila de hidrogeno

El prototipo de ciclomotor eléctrico "Papoose" es creado por Indian

Motorcycle Company

1970 Se vendió el primer cargador de motos eléctricas ligeras

1974 Mike corbin Quick estableció el record de velocidad con una

motocicleta eléctrica con una velocidad de 266,16 km/h

Corbin-Gentry Inc. Comienza a vender motos eléctricas legales

1978 La Harley Davidson MK2 fue creada por Transitron Manufactured

1988 Se crea la moto eléctrica Kawashocki

1996 Se produce la primera producción masiva de scooters eléctricas

lanzada por Peugeot

Finales 90 Scott Cronk y EMB crean la motocicleta EMB Lectra VR24 que

utiliza motores de reluctancia variable y se comienza a

comercializar

2000 El desarrollo de las baterías de ion-litio y de potentes motores

eléctricos hizo que la incorporación de las motos sea más factible

2007 La moto eléctrica Kikkacycle recorre un cuarto de milla en 7,824

segundos con una velocidad máxima de 270 km/h

2008 Se crea la moto Electra Green en Nebraska, la primera moto

eléctrica creada en ese estado

2009 California acoge las "24 horas de motocross eléctrico",

seleccionada por Zero Motorcycles.

Se realiza el primer Time Trial Xtreme Grand Prix, se trata de una

carrera de motos de calle eléctricas

2011 Chip Yates establece el record Guines de velocidad con una moto

eléctrica con 316,89 km/h

2013 FIM anunció un evento llamado E-MX que se celebró en Bélgica, se

trata de la primera carrera de motocross eléctrica.

Page 26: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 26 ROBERTO JIMÉNEZ PERALTA

2014 Bultaco, empresa española anuncia su regreso y presenta dos

prototipos de motos eléctricas Rapitan y Rapitan Sport,

presentadas como Bultaco brinco.

2015 Se presenta en el CES de Las Vegas GOGORO, un scooter eléctrico

diseñada por ingenieros de la empresa HTC.

En Barcelona se incluyen 30 scooters eléctricas a la guardia

urbana de la empresa BMW.

La empresa Bultaco recibe el premio a la “Iniciatival+D+i” gracias a

la vuelta al mercado con el desarrollo de motos eléctricas.

Sale a la venta el modelo Wmpulse TT que es la primera

motocicleta eléctrica de la marca Victory Motorcycles.

2016 Se celebra la “VIVE Tenerife”. Se trata de un circuito en vehículo

eléctrico a lo largo de la isla de Tenerife.

Torrelodones adquiere dos motos eléctricas para su servicio de

Protección Civil, de la marca XR MOTORS

La empresa Cooltra lanza el motosharing en Barcelona, se trata de

un sistema de renting de vehículos eléctricos.

Harley-Davidson produce la LiveWire, motocicleta eléctrica en fase

de desarrollo.

Goodyear presenta el e-Go2, un scooter de tres ruedas eléctrico.

La empresa Vespa anuncia que en 2017 saldrá al mercado la

Vespa eléctrica, con los mismos rasgos que la antigua Vespa, pero

con motor eléctrico.

2017 Una empresa británica VIGO Motorcycles presenta el proyecto

VIGO, una moto eléctrica con una autonomía de unos 600 Km.

Tabla 1: Historia de la moto eléctrica.

FUENTES DE ENERGÍA DE LA MOTO ELÉCTRICA: La mayoría de las motos, para almacenar energía utilizan baterías, pero

esto no quiere decir que sea la única forma de almacenamiento. Hay motos

que utilizan pilas de hidrógeno.

Esta tecnología de pila de combustible es utilizada por fabricantes como

Intelligent Energy, Suzuki, Yamaha y Honda.

También, hay fabricantes que están desarrollando motos hibridas como

puede ser el Ecycle Hybrid, Piaggio MP Hybrid…

Las motos eléctricas, pueden ser recargadas en cualquier enchufe de

casa, con una demora de unas ocho horas, pero también hay conectores

especiales, los mismos que se utilizan en los coches eléctricos, como puede

ser el conector CHAdeMO, que permite la de batería más rápida.

MOTOS ELÉCTRICAS INFANTILES EXISTENTES: Las principales empresas que se especializan en este sector, la

fabricación de motos infantiles con Oset Bikes y Xispa Motorbikes. A

continuación, se puede ver una descripción de cada empresa.

Page 27: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 27

Oset Bikes:

Esta empresa lleva en el mercado mundial desde el año 2006, en la

fabricación de motos eléctricas de trial. Tiene una gran gama de modelos a

elegir, cuenta con nueve modelos para niños desde los dos años hasta los

quince, y con una nueva versión 24.0 que es apta para adultos también.

Los motores están pensados para los niños, no para personas adultas,

excepto con el nuevo modelo comentado anteriormente, que monta un motor

OSET de 1400 W.

Cada moto tiene un control ajustable de la velocidad, de esta forma la

persona responsable del menor puede limitar la velocidad de la forma que se

quiera.

Xispa Motorbikes:

Al igual que la empresa anterior, esta también se dedica a la

comercialización de motocicletas eléctricas de trial infantiles. Lleva en el

mercado desde el 2005.

Pero en 2013, salió a concurso de acreedores y fue fusionada con la

empresa Torrota Electric, que también se dedica a este sector.

Esta empresa tiene muchos artículos y de todo tipo, desde motos de trial

eléctricas para niños hasta scooters eléctricas con un motor TORROT brushless

de 48 V y 3 Kw.

VEHÍCULOS ELÉCTRICOS LIGEROS DE DOS RUEDAS: Dentro de la categoría de vehículos eléctricos de dos ruedas, con tracción

en las dos ruedas, se pueden distinguir varios vehículos como pueden ser los

Segway, las motos de trial/Cross y también se puede hablar de giro-coches o

motos con carrocería cerrada. A continuación, vamos a ver más en profundidad

los distintos vehículos:

2.6.1 SEGWAY:

Fue inventado por Dean Kamen y fue presentado en 2001. Este vehículo

ligero tiene dos ruedas con autobalance controlado por un ordenador. Es el

primer dispositivo de transporte con autobalance. El usuario para poder ir en la

dirección que quiera, tiene que inclinarse en esa dirección. El motor que

incorpora puede llegar a alcanzar una velocidad comprendida entre los 15-20

Km/h según el modelo.

Page 28: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 28 ROBERTO JIMÉNEZ PERALTA

Ilustración 9: Segway i2 SE.

Una pequeña cronografía:

Año Acontecimientos

1999 Segway Inc. Es el innovador líder del transporte personal

2002 Se venden en Amazon los primeros transportadores personales

(TP) Segway

2005 Se lanza el Segway Cross-Terrain Transporter

2013 Se crea Ninebot en Pekín (China)

2014 Se lanza el TP Segway de tres ruedas, el SE-3 Patroller, para el

mercado de la seguridad pública.

Ninebot lanza el Ninebot E+

2015 Segway y Ninebot unen sus fuerzas

Ninebot by Segway lanza el miniPRO y el ONE E+

2016 Ninebot by Segway lanza el ONE S2, el sucesor del Ninebot by

Segway ONE E+

Se abre la sede central europea de Segway en Ámsterdam, Países

Bajos Tabla 2: Cronografía de la empresa Segway.

La autonomía de estos vehículos no es muy alta, depende bastante del

modelo elegido si, por ejemplo, se escoge cualquier vehículo para la seguridad,

estos suelen tener una autonomía de unos 35-40 Km. Sin embargo, si se coge

un modelo para uso personal, suelen tener una autonomía de unos 10-15 Km.

2.6.2 MOTOS DE TRIAL/CROSS CON TRACCIÓN 2x2:

De este tipo de motos, se pueden destacar tres, las que tienen tracción

delantera eléctrica y trasera por motor de combustión interna, las que tienen

tracción delantera hidráulica y la trasera por motor de combustión interna o

tracción delantera por vía mecánica y la trasera por motor de combustión

interna. Se entrará con más detalle en los distintos tipos:

Page 29: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 29

Tracción delantera eléctrica y trasera por motor de combustión interna:

Esta moto contiene dos motores, uno eléctrico que acciona únicamente la

rueda delantera y el motor de combustión interna que funciona de manera

convencional, es decir como si fuera una moto de un solo motor.

Hay muchas empresas que se han dedicado a comercializar este tipo de

motos, como puede ser BMW, KTM, Hero RNT… y con muy diversos tipos de

motos, es decir desde motos de trial, hasta motos de carretera.

Ilustración 10: BMW R1200GS híbrida.

Tracción delantera hidráulica y trasera por motor de combustión interna:

La empresa pionera en este sistema fue Yamaha, que tuvo la patente 2-

trac, este sistema funciona gracias a una bomba hidráulica situada encima

de la caja de cambios, accionada por el motor de combustión interna. La

presión que se transmite a la rueda delantera es proporcional a la velocidad

de la rueda trasera esto significa que, si pierde tracción en la rueda trasera,

esta girará más rápido y por lo tanto más traccionará la rueda delantera.

Ilustración 11: Yamaha WR450F.

Page 30: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 30 ROBERTO JIMÉNEZ PERALTA

Tracción delantera mecánica y trasera por motor de combustión interna:

Surge como alternativa al sistema 2-Trac de Yamaha gracias a la empresa

Christini Technologies que se especializa en dotar a las motos de tracción

integral. Ha desarrollado un sistema compacto universal que no necesita

demasiadas modificaciones de la propia moto, incrementando el peso de

la misma en unos 8 Kg. Este sistema se basa en un piñón doble del que

sale una cadena hacia una caja de transferencia, que empalma con un

cardan. La junta cardan transmite el movimiento a otra caja debajo de la

horquilla de la dirección.

Ilustración 12: Sistema de tracción delantera de Christini Technologies.

2.6.3 GIROCOCHES O MOTOS DE CARROCERÍA CERRADA:

En esta categoría, se van a ver vehículos de dos ruedas, con la carrocería

cerrada, es decir tienen que tener un sistema de autobalance para que el

conductor de ese vehículo no se caiga al suelo y pueda continuar, aunque el

coche/moto se pare en un semáforo.

Esta idea no ha surgido actualmente, en 1961 en el salón del automóvil

de Nueva York, Ford presentó un prototipo futurista llamado Ford Gyron, este

modelo se construyó a escala real, pero sin embargo no era realmente

operativo tratándose entonces de un “concep car” de exposición.

Se trataba de un coche giroscópico, de dos ruedas en línea, que

teóricamente se autoestabilizaba mediante un sistema giroscópico hidráulico,

que nunca llegó a instalarse.

Page 31: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 31

Ilustración 13: Ford Gyron de 1961.

Ford descartó este vehículo, por el elevado coste del sistema

giroscópico, pero no así lo hico Alex Tremulis que después de marcharse de

Ford que siguió con su idea y consiguió fabricar el Gyro-X junto con Thomas O.

Summers Jr.

Ilustración 14: Gyro-X de Alex Tremulis.

Actualmente se está desarrollando un prototipo de la mano de Lint

Motors, denominado C1, es una motocicleta de carrocería cerrada. Este

vehiculo se mantiene estable gracias a un estabilizador giroscópico que

incorpora un volante de inercia que ofrece 1762 Nm.

Tiene dos motores eléctricos de 54 CV (39,69 Kw) en cada una de las

ruedas, tiene previsto una velocidad punta de 190 Km/h y una autonomía de

240 Km.

Page 32: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 32 ROBERTO JIMÉNEZ PERALTA

Ilustración 15: Girocoche C1.

2.6.4 PATINETES ELÉCTRICOS CON TRACCIÓN ELÉCTRICA:

En esta sección se puede distinguir dos tipos de patinetes, los que

tienen cuatro ruedas y los que tienen dos ruedas. Dentro de los patinetes de

dos ruedas, no se ha encontrado mucha información acerca de los que tiene

tracción en las dos ruedas. La mayoría de los fabricantes sólo venden

productos con tracción trasera, con una gran variedad de potencias y

autonomías.

Los más baratos disponen baterías de ácido-plomo, pero hay fabricantes

como Urban Fox que proporcionan baterías de gel.

Ilustración 16: Urban Fox Volt Brushless.

Dentro de los patinetes de skate, los hay de tracción trasera con motor

brushless, alimentados con una batería de polímero de litio (Lipo) como pueden

ser los patinetes de Evolve, empresa española con sede en Algeciras.

Tienen una autonomía de unos 30 Km, con una capacidad de carga de

100 Kg. El control de estos vehículos se hace mediante un mando por

bluetooth, además incorpora frenado regenerativo y ABS.

También hay empresas en este sector que se dedican a hacer

accesorios para convertir un patinete normal en uno eléctrico, esta empresa es

Page 33: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 33

Mellow, lo único que hay que hacer es comprar el accesorio y cambiarlo por el

original, así se tendría un skate/longboard eléctrico, con una autonomía de

unos 15 Km con una carga de dos horas. Además, tiene cuatro modos de

conducción, para adaptarse mejor al usuario.

Ilustración 17: Motor eléctrico para Skate.

Boosted Board, otra compañía, esta ofrece longboard con tracción a las

cuatro ruedas, el fabricante incluye 3 modelos de distintas potencias 1000,

1300 y 2000 W, capaces de alcanzar 28 Km/h y una autonomía de 11 Km.

El control es inalámbrico, este mando incorpora el acelerador y el freno

además de indicadores del estado de la batería.

VEHÍCULOS ELÉCTRICOS LIGEROS DE TRES RUEDAS:

2.7.1 VEHÍCULOS DESTINADOS A DRIFTING:

Este vehículo se ha hecho un hueco en la industria gracias a la web de

crowdfunding, Kickstarter. Se trata de un triciclo con tracción en la rueda

delantera, y con dos ruedas traseras de kart, en las cuales se ha puesto una

funda para perder adherencia a propósito y poder hacer drifting.

La empresa que se encarga de comercializar el “Verrado”, se llama Local

Motors, con sede en Phoenxi, Arizona, se encarga de la fabricación de vehículos

de motor de bajo volumen de producción.

El verrado, tiene un motor brushless de 500 W, con una autonomía de 45

minutos o unos 18 Km, tiene unas baterías de litio/cobalto/manganeso y

requiere de un tiempo de carga de 3h. No está pensado para circular a gran

velocidad o recorrer grandes distancias si no que es un vehículo para el ocio.

Page 34: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 34 ROBERTO JIMÉNEZ PERALTA

Ilustración 18: Vehículo verrado.

Consta de un chasis de PVC, lo que le hace un vehículo muy ligero con

una alta relación potencia/peso.

2.7.2 TRICICLOS ELÉCTRICOS PARA PERSONAS DE MOVILIDAD REDUCIDA:

En esta categoría, también se puede encontrar cuadriciclos, así que se va

a reunir las dos en una sola.

Estos vehículos están pensados para hacer distancias medias, es decir

unos 12-16 Km con una sola carga y además no superar una velocidad media

de 6 Km/h.

Respecto a la tecnología de dichos vehículos, los hay de una gran

variedad de ellos, la mayoría de ellos tienen motores de 180 W, con baterías

de gel, pero también los hay con motor de 270 W.

En este ámbito se puede destacar una empresa española, LGM estudio

con sede en Navarra, que se dedica a la comercialización de vehículos

eléctricos ligeros como bicicletas o coches de golf. Tiene un vehiculo para

personas discapacitadas llamado E-WORKER S80, se puede montar un motor

de hasta 1500 W, con tracción integral. Su autonomía puede variar según las

potencias elegidas desde los 20 Km hasta los 80 Km. Posee unas baterías de

Ion Litio extraíbles. Alcanza una velocidad máxima de 30 Km/h. Está pensado

para poder montar con la silla de ruedas directamente sin tener que desmontar

ninguna parte del vehículo.

Ilustración 19: E-Worker S80.

Page 35: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 35

INTERFACE HOMBRE-MÁQUINA: Una interface hombre máquina se puede definir como todas las partes de

un sistema interactivo (software o hardware) que proporcionan la información

y el control necesarios para que el usuario lleve a cabo una tarea con el sistema

interactivo.

Ilustración 20: HMI de una estación meteorológica.

Las interfaces hombre máquina nacieron de la utilización del tubo de

rayos catódicos y de los primeros usos del lápiz óptico (parecido a los lápices

actuales para pantallas táctiles, pero con mayor precisión). En 1963, Ivan

Sutherland, en su tesis doctoral desarrolló Sketchpad (fue el primer programa

informático que permitió la manipulación directa de objetos gráficos, por este

software, Ivan recibió el premio Turing).

Algunos avances relacionados con el tema fueron los intentos de llegar

a una simbiosis hombre-máquina (Licklider, 1960, artículo en el cual expone la

necesidad de simplificar la interacción entre los ordenadores y los usuarios de

las computadoras), un aumento del intelecto humano (Douglas Engelbart,

1963, este inventor estadounidense es conocido por inventar el ratón), fueron

unos hechos que marcaron los cimientos de la interacción entre computadoras

y personas.

Las funciones de un HMI (human-machine interface):

Monitoreo. Es la habilidad de obtener y mostrar datos del sistema en

tiempo real. Estos datos se pueden mostrar como números, texto o

gráficos que permitan una lectura más fácil.

Supervisión. Esta función permite junto con el monitoreo la posibilidad

de ajustar las condiciones de trabajo del proceso directamente desde

los mandos del sistema.

Alarmas. Es la capacidad de reconocer eventos excepcionales dentro

del proceso y reportarlo. Las alarmas están basadas en límites de

control preestablecidos.

Page 36: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 36 ROBERTO JIMÉNEZ PERALTA

Control. Capacidad de aplicar algoritmos que ajustan los valores del

proceso y así mantener esos valores dentro de unos límites deseados

Históricos. Es la capacidad de muestrear y almacenar en archivos, datos

del proceso a una determinada frecuencia.

La realización de HMI mediante software se realiza programando en

lenguajes como Visual Basic, VC++, Delphi… Pero en este caso no se va a hacer

mediante software, se realizará mediante elementos físicos como acelerador,

freno, pantalla LCD, led indicativos y botones.

Page 37: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 37

3 TEORÍA:

A continuación, se va a explicar los diferentes componentes del vehículo

2x2, como son los ultracondensadores, controlador, sensores...

Se va a mostrar una imagen, en la cual se van a ubicar los distintos

componentes:

Ilustración 21: Boceto del vehículo eléctrico.

ULTRACONDENSADORES: Los ultracondensadores escogidos de la marca MAXWELL, con una

tensión nominal de 48 Vdc y una capacidad de 83 F.

Ilustración 22: Ultracondensadores empleados en el prototipo.

Ultracondensadores

Motores brushless

con sensores hall

Sensor hall para el

acelerador

Convertidores para el

control de los

motores BLDC Control del sistema

Page 38: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 38 ROBERTO JIMÉNEZ PERALTA

Los ultracondensadores son equiparables a un condensador normal,

como los que se usan en los equipos electrónicos de consumo, pero con la

característica de poder almacenar más de un millón de veces la energía de un

condensador convencional.

El funcionamiento de un condensador electrolítico convencional, se basa

en dos electrodos sumergidos en un electrolito (aislante) a los cuales se les

aplica una diferencia de potencial. El potencial aplicado a cada electrodo atrae

a los iones, es decir el electrodo positivo atrae iones negativos y el electrono

negativo atrae a los iones positivos.

La energía almacenada en estos condensadores es proporcional al

número de cargas atraídas, que por lo tanto es proporcional a la superficie de

cada electrodo (a mayor superficie, mayor capacidad) y también depende de la

capacidad dieléctrica del electrolito.

Por lo tanto, la capacidad de un condensador es:

𝐶 = 𝜀0 · 𝜀𝑟 ·𝑆

𝑑

Ecuación 1

Siendo:

C: Capacidad del condensador.

𝜀0: Permitividad del vacío = 8,8542 · 10-12 F/m

𝜀𝑟: Constante dieléctrica del material dieléctrico entre placas.

S: Área enfrentada entre los electrodos.

d: Distancia entre electrodos.

En un ultracondensador, los electrodos están compuestos por un

material con poros cuyo diámetro está en el rango de nanómetros, este

material suele ser carbono activo. Como inconveniente, esta tecnología no

puede soportar grandes diferencias de potencial y para alcanzar grandes

voltajes, lo que se necesita es la asociación en serie de diversas celdas.

El modelo equivalente del ultracondensador es el mismo que un

condensador normal, este consta de un condensador con una resistencia en

paralelo y otra en serie. Como las láminas de carbono activado tienen una alta

conductividad, la resistencia en serie suele ser muy pequeña, que representa

las pérdidas en conducción, en cuanto a la resistencia en paralelo, que

representa las pérdidas por corriente de fuga, suele ser alta.

Page 39: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 39

Ilustración 23: Tiempo de carga-descarga de un ultracondensador.

Las ventajas de estos tipos de condensadores frente a los

convencionales es su mayor densidad de energía comprendida entre 1-10

Wh/Kg. Estos tienen una gran vida útil y un elevado número de ciclos, llegando

a alcanzar los 106 ciclos y que además se pueden almacenar con cualquier tipo

de carga es decir cargados completamente o a mitad de carga. La carga se

puede hacer a cualquier tensión siempre que no supere la tensión nominal. Su

función principal, en los vehículos eléctricos, es la de ayudar a las baterías a

absorber grandes picos de energía para no dañar a las mismas, ya que los

ultracondensadores lo pueden absorber sin que se dañen, cuando se está

usando la tecnología del frenado regenerativo. En este caso, estos

ultracondensadores, se van a usar como si fueran baterías, ya que la rapidez

de carga es elevada, muy adecuada para hacer pruebas rápidas sobre el

vehículo.

SENSORES HALL RUEDAS: En las ruedas se han colocado unos sensores hall para saber la velocidad

de cada rueda, que son activados mediante dieciséis imanes equiespaciados.

El funcionamiento de estos sensores se basa en que un conductor que está

sometido a un campo magnético y es atravesado por una corriente eléctrica, si

se coloca un voltímetro entre los extremos de la sección transversal, se

detectara una tensión denominada voltaje hall. Este efecto es debido a que los

electrones se ven desplazados hacia un lado, produciendo la diferencia de

tensión. Esa diferencia de tensión es la que se usa para producir un contaje de

pulsos en arduino y saber las velocidades de las ruedas.

Ilustración 24: Sensores hall de las ruedas.

Page 40: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 40 ROBERTO JIMÉNEZ PERALTA

Estos sensores son utilizados en automoción debido a que no llevan

partes móviles por lo que no necesitan mantenimiento y pudiendo además

trabajar en ambientes sucios, debido a que son estancos, por lo que el polvo y

la suciedad no es problema para su funcionamiento.

SENSOR HALL LINEAL: Este sensor se utiliza en el acelerador para mandarle el correspondiente

control a la rueda trasera y al Arduino. Su funcionamiento es el mismo que el

anterior, pero con la salvedad de que antes solo se producía una tensión de

salida digital (es decir 5V o 0V), ahora la tensión cambia en función del campo

magnético, por lo que la tensión de salida es variable y se obtendrá una tensión

entre 0-5V.

Ilustración 25: Sensor hall lineal del acelerador.

MOTORES BRUSHLESS: Son los motores empleados en los cubos de las ruedas, la peculiaridad

de estos motores es que no necesitan escobillas para funcionar. Estos no

presentan un conmutador mecánico que reduzca el rendimiento, ya que las

escobillas producen ruido, chispas y el desgaste de estas provoca un polvo que

además de ensuciar el motor es conductor por lo que podría llegarse a producir

derivas o cortocircuitos indeseados. Al ahorrarnos ese elemento, se tiene una

mayor eficiencia.

Ilustración 26: Motores BLDC en los cubos de las ruedas.

Page 41: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 41

El diseño es al contrario de los motores DC, es decir en el rotor se

encuentran los imanes permanentes y en el estator se encuentran las bobinas

que producen el campo, además estos motores incluyen sensores hall para

indicar la posición en la que se encuentran y mandarle la información al

inversor.

Aunque se denomina motor de corriente continua, realmente no se puede

operar directamente sobre el motor, hay que colocar un inversor DC/AC que se

encarga de proporcionar las corrientes pulsantes necesarias para cambiar la

polaridad de las bobinas del estator.

Normalmente estos motores tienen tres bobinas desfasadas 120º

físicamente (como es en el caso de los motores equipados). Y la conmutación

de las bobinas de hace por conmutación senoidal.

Estos motores tienen una curva característica de par-velocidad, que se

puede dividir en tres zonas, la principal zona de funcionamiento es la de par

continuo, que a continuación se explicara en más detalle:

Zona de par intermitente (1): Va desde velocidad cero hasta

velocidad nominal, se caracteriza porque el motor de forma

temporal (dependiendo del modelo elegido) es capaz de

proporcionar un par mayor al nominal. Produce un

sobrecalentamiento.

Zona de par continuo (2): La característica curva par-velocidad es

totalmente horizontal y esto quiere decir que proporciona el mayor

par desde la velocidad cero hasta la nominal.

Zona de caída de par (3): Por encima de la velocidad nominal, el

par cae de forma lineal hasta la máxima velocidad que puede girar

el motor y en ese momento el par será cero. Esta velocidad puede

llegar a ser del orden de un 150 % de la velocidad nominal.

Ilustración 27: Par-velocidad motor brushless.

Page 42: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 42 ROBERTO JIMÉNEZ PERALTA

INVERSORES DC/AC: Los convertidores de potencia CC/CA, se encargan, por conmutación del

voltaje DC de entrada en una secuencia predeterminada, de generar a la salida

una tensión AC cuya magnitud y fase se pueden controlar.

Ilustración 28:Convertidor para el control de los motores BLDC.

Para poder variar la velocidad de los motores, lo que hacen estos

inversores es variar la frecuencia de la tensión alterna, ya que los motores

brushless son síncronos.

Para conocer el control de los motores, se han introducido las fases en el

osciloscopio y se ha comprobado que utilizan un control senoidal con PWM para

el control de la velocidad, en la siguiente imagen se puede comprobar los

resultados obtenidos.

Ilustración 29: Señal de control del motor BLDC.

Una vez visto el funcionamiento, se comprobó la tensión que generan

los motores cuando se deja de acelerar, por si se quisiera hacer un estudio

para integrar un frenado regenerativo:

Page 43: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 43

Ilustración 30: Tensión generada en el frenado.

Como se puede observar, en la imagen, hay dos tensiones,

correspondientes a dos de las tres fases del motor, cada una de ellas, tiene

una tensión de pico a pico de 20 V.

CONTROL DEL SISTEMA: El control del sistema se va a hacer mediante el microcontrolador arduino,

por estar parte de él hecho, además de la facilidad de modificar el código

gracias a su interface gráfica.

Ilustración 31: Microcontrolador Arduino UNO.

Arduino UNO es una placa electrónica basada en el ATmega328p. Cuenta

con 14 pines digitales de entrada/salida (de los cuales, 6 de ellos es pueden

usar como salidas PWM), presenta también 6 entradas analógicas, un cristal

de cuarzo de 16 MHz, conexión USB.

Este microcontrolador, tiene como objetivo detectar el modo de

funcionamiento, mostrar la velocidad y la carga disponible por una pantalla LCD

16x2 y como objetivo principal, hacer un PID para determinar la tensión que

hay que enviar al motor delantero, en función del modo elegido y la diferencia

de velocidades entre las ruedas, además de determinar la carga restante en

los ultracondensadores, como mostrar por pantalla la velocidad y la carga.

Page 44: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 44 ROBERTO JIMÉNEZ PERALTA

Page 45: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 45

4 DESARROLLO DEL TRABAJO FINAL DE GRADO:

El trabajo final de grado se ha compuesto principalmente de dos etapas:

1- Comprobación del trabajo ya realizado por Iván y su implementación

en un banco de pruebas.

2- Diseño, construcción y pruebas de la interface entre el vehículo y el

usuario.

En la primera etapa, ha sido primordial el estudio de la documentación

existente (revisión del TFG anterior, de los datasheet de los componentes y una

comprobación funcional del prototipo). En esta última parte se ha detectado

que había problemas con las conexiones debido a las soldaduras frías,

cableado poco adecuado para el fin propuesto y alguna tarjeta electrónica de

pruebas degradada por el transporte y almacenamiento del equipo.

Hecho eso, se ha procedido a diseñar la placa de circuito impreso y a

cambiar el código, debido a que se ha introducido nuevas funciones como, por

ejemplo, mostrar por una pantalla LCD el modo de funcionamiento, alertas a

cerca de las baterías y la velocidad a la que se está circulando.

Un boceto del cuadro de instrumentos podría ser el siguiente:

DISEÑO DE LA PLACA DE CIRCUITO IMPRESO: Para diseñar este dispositivo, se va a necesitar:

Elemento de control que gobierne todo el vehículo (arduino uno).

Visualizador en forma de pantalla LCD para ver la velocidad, la carga de

las baterías, la potencia en la rueda delantera y testigos a cerca del

estado de las baterías.

Interruptores para seleccionar el modo en el que se quiere conducir.

Visualizadores en forma de LED para controlar en modo seleccionado,

cuando entra la tracción y el nivel de aceleración que se está

seleccionando.

Reguladores de tensión, para no tener que utilizar una batería distinta

para el arduino.

PANTALLA LCD

16X2

LLAVE

Control pot

Tracción

2x1-2x2

ON-OFF

Ilustración 32: Boceto del cuadro de instrumentos.

Page 46: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 46 ROBERTO JIMÉNEZ PERALTA

La solución electrónica adoptada es la siguiente:

Ilustración 33: Esquema del circuito electrónico.

Page 47: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 47

CÁLCULOS:

4.2.1 ALIMENTACIÓN:

Para la etapa de alimentación, se ha decidido utilizar un convertidor DC-

DC buck y también un regulador lineal. El regulador lineal se ha elegido en

función de los elementos conectados a la tensión de 5 V proporcionada por el

arduino. Se ha seleccionado un regulador linear LM7808C que proporciona una

tensión de salida de 8 Vdc.

Al primero hay que poner un filtro a la salida para eliminar el ruido que

producen los polos la conmutar, este filtro se ha sacado de la hoja de

características proporcionada por el fabricante, además se ha añadido una

bobina de filtrado en la tierra, para asegurar un mayor filtrado de corriente:

Ilustración 34: Circuito recomendado por el fabricante para el buck.

Para el segundo solo es necesario conectar dos condensadores, uno a

la entrada y otro a la salida, también para filtrar posibles fluctuaciones de

tensión, el esquema también es el proporcionado por el fabricante:

Ilustración 35: Circuito recomendado por el fabricante para el regulador lineal.

Para ver si es necesario usar un radiador para el regulador lineal, hay

que ver la potencia que está disipando:

La temperatura máxima en la unión que soporta el regulador es Tj = 125

ºC, y la máxima temperatura ambiente que está preparado el dispositivo para

funcionar son 40ºC, que son las peores condiciones que se podría dar de

funcionamiento.

Page 48: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 48 ROBERTO JIMÉNEZ PERALTA

El modelo térmico del regulador seria:

Ilustración 36: Modelo térmico del regulador lineal.

El consumo de todo el dispositivo es:

ITEM Detalles Valor

Consumo arduino

50 mA 50 mA

Consumo LCD2 30 mA 30 mA

Consumo LED 22,73 mA ·3 leds 68,18 mA

Consumo de botones

0,5 · 2 mA 1 mA

Consumo barra de leds

10 leds·12,5 mA 125 mA

TOTAL 274,19 mA Tabla 3: Consumos de los componentes alimentados por el regulador lineal.

Suponiendo que la potencia a la entrada del regulador es la misma que

a la salida y que la máxima caída de tensión se produce cuando se da el

máximo en el pico de entrada, este tiene que soportar una potencia de:

𝑃 = 𝑉 · 𝐼 = (12 − 8) · 269,61 · 10−3 = 1,097 𝑊

Ecuación 2

Teniendo en cuenta esto, y que la máxima temperatura que puede

soportar la unión es de 125 ºC, la potencia máxima que puede disipar el

regulador sin radiador es:

𝑃 =𝑇𝑗 − 𝑇𝑎

𝑅𝑐𝑎𝑗𝑎−𝑎𝑚𝑏𝑖𝑒𝑛𝑡𝑒=

125 − 40

60= 1,41𝑊

Ecuación 3

2 El consumo de este componente se ha hallado experimentalmente, por no encontrar datos

acerca de este consumo en las hojas de características.

Page 49: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 49

La temperatura a la que llegaría el regulador lineal disipando esa

potencia es de:

𝑇𝑗 = 𝑃 · 𝑅𝑗𝑎 + 𝑇𝑎 = 1,097 · 60 + 40 = 94,85 º𝐶

Ecuación 4

Como la potencia que circula es menor que la máxima que puede

disipar, entonces no sería necesario incluir un radiador. Teniendo en cuenta

que la temperatura máxima que se puede alcanzar, en continuo

funcionamiento, proporcionando 274,19 mA sería de 94,85 ºC. Aun así, se

pondrá un radiador para mayor seguridad.

Para el radiador correspondiente al buck, según la fórmula que viene en

el datasheet:

𝑃𝐷 = 𝑉𝑖𝑛 · 𝐼𝑄 +𝑉𝑂

𝑉𝑖𝑛· 𝐼𝑙𝑜𝑎𝑑 · 𝑉𝑆𝐴𝑇

Ecuación 5

Dónde:

PD: potencia disipada.

Vin: Voltaje mínimo de entrada.

VO: Voltaje regulado de salida.

IQ: Corriente inactiva, se saca del datasheet.

VSAT: Tensión de saturación, se saca del datasheet.

Iload: Corriente de carga.

La corriente que se está consumiendo es de:

ITEM Detalles Valor

Consumo

anterior

274,19 mA 274,19 mA

Integrado3

LM3914

6,1 mA4 6,1 mA

20 W en luces

(etapa no

incluida en el

prototipo)

𝑃 = 𝑉 · 𝐼; 𝐼 =𝑃

𝑉=

20

12= 1,667𝐴

1666,67mA

TOTAL 280,29 mA

(1,946 A) Tabla 4: Consumos de los componentes alimentados por el buck.

3 El integrado en reposo, es decir cuando no hay ningún led encendido, consume 6,1 mA.

Page 50: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 50 ROBERTO JIMÉNEZ PERALTA

Para saber la tensión de saturación y la corriente inactiva, hay que

fijarse en las tablas del datasheet, para ello:

Ilustración 37: Cálculo de la corriente inactiva.

Como se puede ver en la anterior imagen, la corriente inactiva es de

aproximadamente unos 7 mA para una tensión de entrada de 48 V.

Para la tensión de saturación, hay que comprobar la siguiente gráfica:

Ilustración 38: Cálculo de la tensión de saturación (amarillo para el prototipo, rojo con luces incluidas).

La corriente de conmutación es de 226,55 mA, como se ha calculado

antes, y además se supone que se está trabajando a temperatura ambiente de

25 ºC, por lo que la tensión de saturación es de casi 0,8 V.

Por lo tanto, la potencia que se está disipando es:

Page 51: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 51

𝑃𝐷 = 48 𝑉 · 7 · 10−3𝐴 +12 𝑉

48 𝑉· 274,19 · 10−3𝐴 · 0,8 𝑉 = 0,391 𝑊

Ecuación 6

Por consiguiente, teniendo en cuenta ese consumo, el incremento de

temperatura del convertidor continua-continua sería de:

∆𝑇𝑗 = 𝑃𝐷 · 𝑅𝜃𝑗𝐴 = 0,391 𝑊 · 32,4 º𝐶/𝑊 = 12,67 º𝐶

Ecuación 7

Y la temperatura en la unión resultaría:

𝑇𝑗 = 𝑇𝑎 + ∆𝑇𝑗 = 40 + 12,67 = 52,67 º𝐶

Ecuación 8

Al ser una temperatura menor que los 125ºC de la máxima temperatura

soportada en la unión, no hace falta introducir un radiador para dicho

componente.

En caso de añadir una potencia en luces de 20 W, la potencia disipada

seria:

𝑃𝐷 = 48 𝑉 · 7 · 10−3𝐴 +12 𝑉

48 𝑉· 1,946A · 1,19 𝑉 = 0,915 𝑊

Ecuación 9

∆𝑇𝑗 = 𝑃𝐷 · 𝑅𝜃𝑗𝐴 = 0,915𝑊 · 32,4 º𝐶/𝑊 = 29,64 º𝐶 Ecuación 10

𝑇𝑗 = 𝑇𝑎 + ∆𝑇𝑗 = 40 + 29,64 = 69,64 º𝐶

Ecuación 11

Por lo que con las luces incluidas no haría falta añadir radiador,

además se admitiría una potencia mayor de 20 W, aun así, se incluirá un

pequeño radiador.

4.2.2 SENSOR DE TENSIÓN:

Este sensor va a indicar la cantidad de voltaje que tienen almacenado los

ultracondensadores, por lo que tendrá que tener un consumo pequeño además

de que, si se fallara una resistencia, esta anomalía no provoque desperfectos

en la placa de arduino.

Se ha construido un divisor de tensión con dos resistencias y un

potenciómetro para poder ajustar correctamente la lectura de arduino con el

valor real de tensión que proporcionan los ultracondensadores, sin dañar el

microcontrolador.

A continuación se puede apreciar el circuito diseñado:

Page 52: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 52 ROBERTO JIMÉNEZ PERALTA

Ilustración 39: Circuito para comprobar la tensión de los ultracondensadores.

Esa es la configuración que se ha seleccionado. Para elegir los valores

de las resistencias, se ha resuelto el esquema eléctrico, de tal forma que para

cuando en la entrada haya una diferencia de potencial de 48 V, en el pin que

va a A1, haya una diferencia de potencial de 5V, seleccionando a 𝑅2 = 100 𝐾:

𝐼 =48 − 5

100 · 103= 4,3 · 10−4𝐴;

Ecuación 12

Ahora sabiendo que en la resistencia 𝑅3 y en 𝑅𝑝𝑜𝑡 es de 5 V, se

selecciona 𝑅3 = 1,7𝐾:

𝑅𝑝𝑜𝑡 =5

4,3 · 10−4− 1 · 103 = 10,6279 𝐾

Ecuación 13

Se toma como valor de potenciómetro máximo de 10 K, la tensión no

sobrepasará los 5V y se podrá hacer una regulación para conseguir los 5 V si

se utilizara un batería mayor en la entrada, la tensión conseguida con este

divisor de tensión es de:

𝑉𝑖𝑛 = 4,297 · 10−4 · (1,7 · 103 + 10 · 103) = 5,02 𝑉

Ecuación 14

Las resistencias usadas serán de ¼ de watio.

4.2.3 VÚMETRO PARA VER EL NIVEL DE CARGA DE LOS

ULTRACONDENSADORES:

Antes de seleccionar el circuito de funcionamiento, este integrado tiene

dos modos de funcionamiento:

1. Escala de leds: Ira encendiendo progresivamente los leds, y

dejará encendidos los que estén por debajo del ultimo led

encendido, el resto permanecerá apagados.

+48

V

GND

A1

Page 53: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 53

2. Modo punto: Sólo estará encendido el led correspondiente a la

señal de entrada, es decir, los leds que estén por debajo del led

encendido estarán apagados y los que se encuentren por encima

también.

Este integrado tiene una respuesta lineal, por lo que se podrá usar como

voltímetro, no como el LM3915 que tiene una respuesta logarítmica (se utiliza

para mostrar los efectos de sonido en los ecualizadores, debido a que simula

la respuesta auditiva del ser humano).

La diferencia entre un modo u otro está en el pin 9 del integrado, si este

se lleva a la tensión de alimentación trabajará en el primer modo, si se deja al

aire o se conecta a tierra estará trabajando en el modo punto.

Si se consulta el datasheet del integrado LM3914, se puede ver que el

fabricante proporciona el siguiente esquema para realizar la función que

nosotros queremos en nuestro vehículo:

Ilustración 40: Circuito recomendado por el fabricante para el LM3914.

Además de este esquema, el fabricante proporciona dos fórmulas para

conseguir que los leds de salida se enciendan progresivamente con la tensión

de entrada seleccionada, estas fórmulas son:

𝐼𝐿𝐸𝐷 =12,5

𝑅1

Ecuación 15

𝑉𝑜𝑢𝑡 = 1,25 · (1 +𝑅2

𝑅1)

Ecuación 16

Una intensidad de led para que el brillo se pueda apreciar en el exterior,

cuando hace un día soleado, suele estar comprendida entre los 10 mA y los 20

mA, por lo que se va a elegir una resistencia de 1 KΩ para obtener una corriente

de led de 12,5 mA.

Page 54: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 54 ROBERTO JIMÉNEZ PERALTA

Con Vout el fabricante se refiere a la tensión de entrada por el pin 7, como

se va a estar leyendo el valor de salida del arduino, este varía entre 0 – 5 V por

lo que Vout = 5 V. Teniendo todos estos valores, se puede despejar el valor de

R2:

𝑅2 = (𝑉𝑜𝑢𝑡

1,25− 1) · 𝑅1 = (

5

1,25− 1) · 1𝐾Ω = 3𝐾Ω

Ecuación 17

Como no hay resistencias normalizadas de 3 KΩ, se va a elegir una

resistencia de 2,7 KΩ.

El fabricante también indica que el consumo de este integrado cuando

no tiene ningún led de la salida activo es de 6,1 mA. Por lo que el consumo total

de esta etapa es de:

𝐼𝐿𝑀3914 = 6,1 𝑚𝐴 + 10 · 12,5 𝑚𝐴 = 131,1 𝑚𝐴

Ecuación 18

Las resistencias elegidas serán de ¼ de watio, y el condensador tendrá

como mínimo una tensión de 12 Vdc.

Hay que tener en cuenta la tensión de alimentación de los leds ya que

el circuito integrado no puede superar la disipación de potencia de 1365 mW,

por lo que suponiendo que todos los leds tienen la misma caída de tensión de

1,2 V, alimentados a 8 V, el circuito integrado estará disipando una potencia

de:

𝑃𝑑𝑖𝑠𝑖𝑝𝑎𝑑𝑎 = (8 − 1,2)𝑉 · 12,5 · 10−3𝐴 · 10𝐿𝑒𝑑𝑠 = 850 𝑚𝑊

Ecuación 19

Hay que transducir la señal de los ultracondensadores, debido a que la

tensión mostrada en el vúmetro va desde los 18 V hasta los 48 V que es el

rango de voltajes en el cual el vehículo puede funcionar correctamente.

Para hacer esta transformación de valores, hay que pasar la información

a arduino para que cuando en el pin analógico de arduino haya 1,88 V, quiere

decir que hay 18 V en los ultracondensadores y por lo tanto tiene que tener el

primer led encendido, pero si hay menos diferencia de potencial, tienen que

estar todos los leds apagados.

El circuito integrado LM3914, en su entrada con el PWM de arduino, lo

que lee son 0 – 5 V a una frecuencia dada, por lo que se procede a hacer un

filtro paso-bajo. La frecuencia de arduino de los pines PWM es de 490 Hz,

excepto los pines 5 y 6 que es de 980 Hz.

Se va a diseñar un filtro de bajo consumo, para no consumir mucha

potencia ya que esta salida solo se va a usar como señal. Seleccionando una

Page 55: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 55

resistencia en serie de 10 KΩ y un condensador en paralelo de 1 µF, se obtiene

una frecuencia de corte de:

𝑓𝑐 =1

2 · 𝜋 · 𝑅 · 𝐶=

1

2 · 𝜋 · 10 · 103 · 1 · 10−6= 15,92 𝐻𝑧

Ecuación 20

Y la máxima corriente que se estaría consumiendo seria cuando el

condensador estuviera descargado y en la entrada se tuviera el máximo de la

fuente (5 V):

𝐼𝑚𝑎𝑥 =𝑉𝑖𝑛

𝑅=

5

10 · 103= 5 · 10−4𝐴

Ecuación 21

SIMULACIONES: A continuación, se procede a simular los distintos módulos para comprobar

que si nuestro sistema funciona correctamente:

4.3.1 REGULADOR DE TENSIÓN LM7808C:

Se realizarán las siguientes simulaciones del regulador lineal, para

comprobar que con una tensión de 12 Vdc a la entrada, se obtienen 8 Vdc a la

salida y comprobando a la vez la potencia que se está disipando. Haciendo el

siguiente esquema.

Para simular el consumo, se va a poner en paralelo una resistencia de

carga de:

𝑅 =𝑉

𝐼=

8

274,19 · 10−3= 29,18Ω

Ecuación 22

Por lo tanto, el esquema queda:

Ilustración 41: Circuito para simular el regulador de tensión.

Page 56: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 56 ROBERTO JIMÉNEZ PERALTA

La tensión de salida del regulador es:

Ilustración 42: Tensión de salida del regulador lineal.

Y la corriente que se está consumiendo es:

Ilustración 43: Corriente que proporciona el regulador lineal.

Por lo que la potencia que está disipando el regulador es la diferencia

entre la tensión de entrada y la de salida multiplicada por la corriente que se

está suministrando.

Los resultados de este apartado coinciden con los cálculos, por lo que

no será necesario añadir radiador, y además la tensión de la fuente no se caerá

al demandar la corriente necesaria.

Page 57: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 57

4.3.2 VÚMETRO PARA VER EL NIVEL DE CARGA DE LOS

ULTRACONDENSADORES:

Realizando el siguiente esquema, se va a comprobar la corriente que

consume cada LED además de la total que llega a consumir esta etapa:

Ilustración 44: Circuito para la simulación del LM3914.

Se procede a simular distintos escenarios para comprobar si los cálculos

realizados son correctos. Para empezar, se va a comprobar lo que consume el

circuito en stand-by, es decir sin que ningún led esté encendido:

Ilustración 45: Tensión en el pin 5 del LM3914.

Como se puede ver en la anterior imagen, cuando la tensión en el pin 5

del integrado LM3914, es cero, no tiene que haber ningún led encendido y

además la corriente que se está consumiendo es de 6,1 mA:

Page 58: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 58 ROBERTO JIMÉNEZ PERALTA

Ilustración 46: Corriente de consumo total del integrado apagado.

Para verificar si los leds están encendidos o no, se procede del siguiente

modo: si el primero no está encendido, el resto tiene que estar lógicamente

apagado. Si el primero está encendido, el resto puede estarlo o no.

Ilustración 47: Corriente por el LED 1 apagado.

Como la corriente por el led 1 es cero, esto significa que está apagado y

que por lo tanto los demás también lo están.

Como se ha podido comprobar, el consumo de corriente sí que coincide

con el proporcionado por el fabricante. Seguidamente se va a verificar si la

corriente por los diodos es la indicada por la fórmula.

Page 59: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 59

Se ha elegido una tensión de 1,1 V para que se enciendan los dos

primeros LED y comprobar que la corriente que están consumiendo cada uno

de ellos es de 12,5 mA como indicaba la formula o es diferente:

Ilustración 48: Corriente por el LED 1 encendido.

Como se puede ver en la imagen, la corriente por el LED 1 es de 17,1

mA, por lo que esta suposición no es correcta y como se va a comprobar a

continuación, el consumo total de esta etapa tampoco lo es:

Ilustración 49: Consumo total de la parte del vúmetro.

Como se puede apreciar en la imagen anterior, el consumo total de la

etapa es de 177 mA, por lo que habrá que rehacer los cálculos acerca del

radiador del regulador lineal.

El consumo de los elementos conectados al regulador lineal será de

320,18 mA, por lo que los cálculos para hallar el radiador son:

𝑃 = 𝑉 · 𝐼 = (12 − 8) · 320,18 · 10−3 = 1,281 𝑊 Ecuación 23

Teniendo en cuenta esto, y que la máxima temperatura que puede

soportar la unión es de 125 ºC, la potencia máxima que puede disipar el

regulador sin radiador es:

Page 60: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 60 ROBERTO JIMÉNEZ PERALTA

𝑃 =𝑇𝑗 − 𝑇𝑎

𝑅𝑐𝑎𝑗𝑎−𝑎𝑚𝑏𝑖𝑒𝑛𝑡𝑒=

125 − 40

50= 1,41𝑊

Ecuación 24

La temperatura a la que llegaría el regulador lineal disipando esa

potencia es de:

𝑇𝑗 = 𝑃 · 𝑅𝑗𝑎 + 𝑇𝑎 = 1,281 · 50 + 40 = 104,05 º𝐶 Ecuación 25

No es necesario incluir radiador, pero por seguridad se incluirá. Para

realizar los cálculos correspondientes se seguirá el modelo térmico con

radiador como el de la Ilustración 50, las ecuaciones quedan:

Ilustración 50: Modelo térmico de un componente con su radiador.

Se tiene que tener en cuenta la resistencia térmica5 entre la caja y el

disipador:

𝑅𝑇𝐻−𝐷−𝑎𝑚𝑏 =𝑇𝑗 − 𝑇𝑎

𝑃− (𝑅𝑡ℎ 𝑗−𝑐 + 𝑅𝑡ℎ 𝑐−𝑑) =

125 − 40

1,281− (5 + 1) =

= 60,35 º𝐶/𝑊

Ecuación 26

Se ha escogido uno de 30 ºC/W por tenerlo ya en el almacén, que tiene

un valor más que suficiente para disipar ese calor, este mismo radiador se

colocará en el LM2576HVT, aunque no es necesario.

La temperatura que alcanzará el regulador lineal es de:

𝑇𝑗 = 𝑃 · (𝑅𝑡ℎ 𝑗−𝑐 + 𝑅𝑡ℎ 𝑐−𝑑𝑅𝑡ℎ 𝑑−𝑎) + 𝑇𝑎 = 1,281 · (5 + 1 + 30) + 40

= 86,116 º𝐶

Ecuación 27

Para saber si el LDO de arduino (NCP1117sg) puede alimentar a todos

los elementos conectados al pin de 5 V sin que se dañe, se procede a calcular

la temperatura que puede llegar a alcanzar proporcionando una corriente de

150 mA, teniendo una resistencia térmica entre la unión y el ambiente de 160

ºC/W:

𝑇𝑗 = 𝑃 · (𝑅𝑡ℎ 𝑗−𝑎) + 𝑇𝑎 = (8 − 5)𝑉 · 150 · 10−3𝐴 · 160º𝐶

𝑊+ 40º𝐶

= 111,61 º𝐶

Ecuación 28

El fabricante recomienda no sobrepasar los 175 ºC por lo que no sería

necesario ningún radiador.

5 Valor típico de resistencia térmica sin pasta térmica ni mica. Comprendido entre 0,5 y 1 ºC/W.

Page 61: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 61

4.3.3 SENSOR DE TENSIÓN PARA LOS ULTRACONDENSADORES:

Se va proceder a simular el divisor de tensión que proporcionará la

información para saber que carga queda en los ultracondensadores, para

posteriormente mostrarla por el vúmetro.

Se va a comprobar que para distintos valores del potenciómetro como

para distintos valores de la tensión de ultracondensadores, la salida hacia el

pin A1, va estar comprendida entre 0-5 V.

Para el máximo valor de resistencia del potenciómetro, la salida del

sensor de tensión será:

Ilustración 51: Línea roja, tensión de A1, línea verde tensión de los ultracondensadores.

Obviamente, si se coge un valor mayor de resistencia de potenciómetro,

la tensión que se introducirá en el arduino será mayor y podría causar daños

graves. Esta tensión máxima que se introduciría seria de:

𝐼 =48

100𝐾 + 10𝐾 + 1,7𝐾= 4,30 · 10−4𝐴

Ecuación 29

𝑉𝐴1 = 𝐼 · (10𝐾 + 1,7𝐾) = 4,285 · 10−4 · 11,7 · 103 = 5,02 𝑉

Ecuación 30

Se va a comprobar a continuación en la siguiente gráfica:

Ilustración 52: Tensión en A1 con un valor de potenciómetro mayor.

Page 62: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 62 ROBERTO JIMÉNEZ PERALTA

4.3.4 RESPUESTA EN FRECUENCIA DEL FILTRO DE ENTRADA AL VÚMETRO:

A continuación, se puede ver la respuesta en frecuencia del filtro paso

bajo calculado anteriormente:

Ilustración 53: Respuesta en frecuencia del filtro del vúmetro.

Como se puede observar, la atenuación es más que suficiente para

poder obtener a su salida una tensión analógica, libre de frecuencias.

La respuesta para un ciclo de trabajo del 50 %:

Ilustración 54: Respuesta para un ciclo de trabajo del 50 %.

En la gráfica se puede visualizar que el rizado es menor a 0,2 V y que la

velocidad de respuesta es de 0,45 segundos, más que suficiente para ver la

tensión en los ultracondensadores.

Page 63: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 63

ARCHIVOS PARA LA FABRICACIÓN DE LA PCB: Se ha decidido realizar la placa de circuito impreso mediante una máquina

de control numérico, la cual va a realizar la serigrafía mediante una fresa, los

taladros, el aislado de las pistas y finalmente el corte de la placa.

Para realizar todo esto, se han creado los archivos gerber con EAGLE y

posteriormente se han modificado con el software ISOCAM.

Lo primero que procede hacer es calcular la anchura de las pistas y las

distancia entre ellas, según la norma IPC-2221.

La máxima corriente que va a circular por las pistas, calculada

anteriormente, es de 320,18·10-3 A, y que el máximo incremento de

temperatura por circulación de corriente sea de 10 ºC y el tamaño de las pistas,

con un espesor de 35 µm, es de:

𝑤 =1

1,378· (

320,18 · 10−3

0,048 · 100,44)

10,725

= 2,458 𝑚𝑖𝑙𝑒𝑠𝑖𝑚𝑎𝑠

Ecuación 31

Que, pasando ese valor a milímetros, se tiene una anchura de pista de

0,06239 mm, para sobredimensionar las pistas por seguridad, estas se han

escogido con una anchura de 0,635 mm.

Para el clearance, distancia mínima entre pistas, se escogerá en función

de la siguiente tabla:

Ilustración 55: Distancias entre pistas según la norma IPC-2221.

Teniendo en cuenta que el sobre pico máximo de tensión se va producir

cuando los ultracondensadores estén cargados a la máxima tensión de 48 Vdc.

Eligiendo el modo de operación por encima de los 3050 m por encima del nivel

del mar y siendo pistas externas sin recubrimiento, hay que fijarse en la

columna B3, que esta indica que tiene que haber una distancia entre pistas de

Page 64: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 64 ROBERTO JIMÉNEZ PERALTA

0,6 mm, que pasado a milésimas de pulgada es de 23,622. El tamaño elegido

para el clearance es de 35 milésimas.

El acabado de la placa por la cara de soldadura tendría un aspecto

parecido al siguiente:

Ilustración 56: Aspecto final de la cara de soldadura.

En la cara de componentes deberán que ir colocados unos puentes, por

haber realizado esta placa por una sola cara. Estos puentes estarán

representados en trazos de color rojo.

Ilustración 57: Aspecto final de la cara de componentes.

De igual forma, se han realizado los cálculos para el conector. Al disponer

de espacio suficiente, se han elegido las pistas del mismo tamaño que las

elegidas para la máxima circulación de corriente en el control. El aspecto de la

placa es el siguiente:

Page 65: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 65

Ilustración 58: Aspecto final del conector por la cara de soldadura.

Para el caso de la cara de componentes hay una pista, pero en la

construcción final del prototipo se usará una PCB por una sola cara por lo que

esa pista se corresponderá con un puente:

Ilustración 59: Aspecto final del conector por la cara de componentes.

En los anexos se incluirán los planos necesarios para la construcción de la

placa de circuito impreso, incluyendo los archivos gerber para el taladrado y el

fresado.

MODIFICACIÓN DEL CÓDIGO: Para poder visualizar la velocidad el modo de funcionamiento y la

potencia en la rueda delantera por la pantalla LCD, se ha tenido que incluir dos

librerías para poder controlar correctamente dicha pantalla.

Además, durante las pruebas, se detectó que en los modos de

funcionamiento de 2x1 ON y 2x2 ON, cuando se estaba usando una aceleración

media, la rueda delantera se quedaba acelerada continuamente a una

velocidad constante, no respondiendo a la señal que se mandaba por el

acelerador y para evitar el error había que resetear el arduino o cambiar de

modo a 2x1 OFF. Por lo que se revisó el código entero en busca de ese fallo.

La primera librería es Wire.h, esta sirve para comunicarse con los

dispositivos periféricos con protocolo I2C. A la pantalla LCD se le ha añadido un

dispositivo para poder ahorrar pines de arduino (más adelante se hablará de

este elemento), ya que ahora sólo se necesitan cuatro pines, alimentación (5

voltios y tierra), la línea de datos, comúnmente denominada SDA (pin 4

Page 66: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 66 ROBERTO JIMÉNEZ PERALTA

analógico de arduino) y línea de reloj, denominada SCL (pin 5 analógico de

arduino) y de esta forma se puede comunicar con la pantalla por protocolo I2C.

Para realizar esta comunicación, se necesita conocer la dirección de

memoria de la pantalla LCD, para ello se ha tenido que utilizar un sketch ya

realizado y comprobar qué dirección de memoria tiene adjudicada: el código

usado es el siguiente:

#include <Wire.h>

void setup()

Wire.begin();

Serial.begin(9600);

Serial.println("\nI2C Scanner");

void loop()

byte error, address;

int nDevices;

Serial.println("Scanning...");

nDevices = 0;

for(address = 1; address < 127; address++ )

Wire.beginTransmission(address);

error = Wire.endTransmission();

if (error == 0)

Serial.print("I2C device found at address 0x");

if (address<16)

Serial.print("0");

Serial.print(address,HEX);

Serial.println(" !");

nDevices++;

else if (error==4)

Serial.print("Unknow error at address 0x");

if (address<16)

Serial.print("0");

Serial.println(address,HEX);

if (nDevices == 0)

Serial.println("No I2C devices found\n");

else

Serial.println("done\n");

Page 67: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 67

delay(5000); // wait 5 seconds for next scan

Lo siguiente que se ha hecho es incluir la librería LiquidCrystal_I2C.h, con

esta lo que se consigue es controlar la pantalla basada en el Hitachi HD44780.

De esta forma se puede controlar la pantalla LCD con las mismas funciones

que una pantalla sin protocolo I2C.

Una vez hecho esto, se ha procedido a cambiar los pines analógicos para

poder usar el protocolo I2C, y también añadir nuevas funciones como la

medición de la carga en los ultracondensadores o la medida de potencia

entregada a la rueda delantera

Las nuevas funciones que se han llevado a cabo son:

4.5.1 MUESTRA VELOCIDAD:

void muestra_velocidad ()

//Se producen 16 interrupciones en una vuelta, por lo que habra que tenerlo

en cuenta

if ((millis() - t_actual) > 1000) //se pone a cero cuando se pasa el tiempo de

un segundo

cli(); //deshabilitamos las interrupciones globales para realizar los calculos

vel_lineal = rpm * pi / 8 * 3.6 * DIAMETRO_RUEDA / 2; //V=R*W por lo que

hay que pasar las rpm a rad/s y despues la velocidad lineal que esta en m/s a

Km/h

sei(); //habilitamos las interrupciones de nuevo

lcd.setCursor(0, 0); //Se empieza en el caracter 0, de la linea 1

if (vel_lineal < 10)

lcd.print("Speed: ");

lcd.setCursor(7, 0);

lcd.print(vel_lineal);

else

lcd.print("Speed:");

lcd.setCursor(6, 0);

lcd.print(vel_lineal);

lcd.setCursor(11, 0);

lcd.print(" Km/h");//muestra la velocidad con 2 decimal

rpm = 0; //se pone a cero las rpm

Page 68: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 68 ROBERTO JIMÉNEZ PERALTA

t_actual = millis(); //se actualiza el tiempo

De esta forma, se mide la velocidad en la rueda delantera, aprovechando

las interrupciones producidas por el sensor hall. Para ello, conociendo las

interrupciones que se producen en un segundo, y que cada rueda tiene

dieciséis imanes, por lo que por cada revolución se producirán dieciséis

interrupciones, sabiendo esto, se hace la siguiente ecuación para determinar

la velocidad lineal:

𝑣 =𝑖𝑛𝑡𝑒𝑟𝑟𝑢𝑝

𝑠·

60𝑠

1 𝑚𝑖𝑛·

1 𝑣𝑢𝑒𝑙𝑡𝑎

16 𝑖𝑛𝑡𝑒𝑟𝑟𝑢𝑝·

2𝜋 𝑟𝑎𝑑

𝑣𝑢𝑒𝑙𝑡𝑎·

1 𝑚𝑖𝑛

60𝑠

·𝑑𝑖𝑎𝑚𝑒𝑡𝑟𝑜

3600𝑠

1ℎ·

1𝑘𝑚

1000𝑚

= 𝑖𝑛𝑡𝑒𝑟𝑟𝑢𝑝𝑐𝑖𝑜𝑛𝑒𝑠 ·𝜋

8· 3,6 ·

𝑑𝑖𝑎𝑚𝑒𝑡𝑟𝑜

2 [𝐾𝑚/ℎ]

Ecuación 32

Para realizar estos cálculos, se deshabilitan las interrupciones y así evitar

hacer lecturas erróneas de velocidad.

4.5.2 MUESTRA TENSIÓN:

Para la medición de tensión en los bornes de los ultracondensadores, se

hace un cambio de escala con la función map, es decir, se están leyendo

valores comprendidos entre 0 y 1023, y lo que se va a mostrar es el porcentaje,

por lo que a la salida se va a visualizar valores comprendidos entre 0 y 100 %,

esta potencia se mostrará por la pantalla LCD en la parte inferior derecha.

El código de esta parte es el siguiente:

void muestra_tension ()

volatile int voltaje = analogRead (lectura_voltaje);

voltaje_modificado = map (voltaje, 0, 1023, 0, 100); //se hace mapea el

voltaje para traducirlo a porcentaje

if (voltaje_modificado < 100 && voltaje_modificado > 9) //se borra otra vez el

exceso de numeros

lcd.setCursor (1,11);

lcd.print (" ");

if (voltaje_modificado < 9)

lcd.setCursor (1,10);

lcd.print (" ");

lcd.setCursor(0,1); //Se empieza en el caracter 0, de la linea 1

Page 69: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 69

lcd.print("Carga %: ");

lcd.print(voltaje_modificado);

Hay que tener en cuenta, que cuando en la pantalla LCD, se deja de

escribir un carácter, este se queda en la pantalla y no se borra, por lo que se

procede ir a esa posición y poner un espacio para así poder borrarlo.

4.5.3 SELECTOR DE MODO:

También, se ha modificado la forma de elegir los modos de

funcionamiento, ya que anteriormente se podía seleccionar todos modos,

actualmente sólo hay dos botones, uno que selecciona el modo ON-OFF y el

otro 2x1-2x2, de esta forma sólo se permite seleccionar un modo, además de

mostrar por la pantalla el modo seleccionado, se indicará mediante diodos LED

si el modo es ON-OFF o 2x1-2x2.

Las condiciones lógicas para entrar en los distintos modos son:

BOTON 2x1-2x2 BOTON ON-OFF MODO DE FUNCIONAMIENTO

HIGH HIGH 2x1 OFF

HIGH LOW 2x1 ON

LOW HIGH 2x2 OFF

LOW LOW 2x2 ON Tabla 5: Estados de los botones.

El código correspondiente a la selección de modo es:

void SELECCION_DEL_MODO()

// Leemos el valor de los botones y lo guardamos en una variable

int VALOR_ON_OFF = digitalRead (BOTON_ON_OFF);

int VALOR_2X2_2X1 = digitalRead (BOTON_2X2_2X1);

/*Hay que tener en cuenta que las resistencias pull-up

invierten la lógica de los pulsadores. En el pin obtendremos

nivel ALTO cuando el pulsador esté sin pulsar y BAJO cuando

el interruptor esté pulsado.*/

if (VALOR_ON_OFF == HIGH && VALOR_2X2_2X1 == HIGH) // SI EL SWITCH

ESTÁ EN LA POSICIÓN 2X1 OFF

if (bateria_baja == 0 || bateria_baja == 1)

lcd.setCursor(0, 1);

lcd.print("2x1 off");

if (FLAG_0 == 0) // PARA SOLO REALIZARLO UNA VEZ

Page 70: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 70 ROBERTO JIMÉNEZ PERALTA

digitalWrite (LED_ON_OFF, LOW);// DE MOMENTO COMENTADO, SE APAGA

EL LED QUE INDICA QUE EL MODO_0 ESTÁ ACTIVADO

digitalWrite (LED_2X2_2X1, LOW);

//Serial.println("MODO 2X1 OFF\t"); // SE MUESTRA POR PANTALLA QUE

ESTAMOS EN EL MODO 2X1 OFF

sei();// HABILITAMOS LAS INTERRUPCIONES

MODO_0 = 1; // ESTÁ SELECCIONADO EL MODO 0

Serial.println ("Modo 0");

FLAG_0 = 1;

PRIMERA_VEZ_MODO_0 = 1; // CADA VEZ QUE CAMBIEMOS ESTE MODO

ESTA VARIABLE SE PONDRÁ A 1

else // SI EL SWITCH NO ESTÁ EN LA POSICIÓN 2X1 OFF

if (FLAG_0 == 1) // PARA SOLO REALIZARLO UNA VEZ

FLAG_0 = 0;

MODO_0 = 0; // NO ESTÁ SELECCIONADO EL MODO 0

if (VALOR_ON_OFF == LOW && VALOR_2X2_2X1 == HIGH) // SI EL

SWITCH ESTÁ EN LA POSICIÓN 2X1 ON

if (bateria_baja == 0 || bateria_baja == 1)

lcd.setCursor(0, 1);

lcd.print("2x1 on ");

if (FLAG_1 == 0) // PARA SOLO REALIZARLO UNA VEZ

digitalWrite (LED_ON_OFF, HIGH);

digitalWrite (LED_2X2_2X1, LOW);

FLAG_1 = 1;

MODO_1 = 1; // ESTÁ SELECCIONADO EL MODO 1

Serial.println ("Modo 1");

CONTADOR_TRASERO = 0; // SE INICIALIZA EL CONTADOR CADA VEZ QUE

CAMBIEMOS DE MODO

CONTADOR_DELANTERO = 0; // SE INICIALIZA EL CONTADOR CADA VEZ

QUE CAMBIEMOS DE MODO

Page 71: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 71

tiempo_anterior = tiempo_actual; // SE ACTUALIZA EL VALOR DEL TIEMPO

EN EL QUE SE REALIZÓ EL BUCLE ANTERIOR DE COMPARACION DE FLANCOS

ENTRE LAS RUEDAS

tiempo_anterior_PID = tiempo_actual; // SE ACTUALIZA EL VALOR DEL

TIEMPO EN EL QUE SE EJECUTÓ EL PID ANTERIOR

sei();// HABILITAMOS LAS INTERRUPCIONES

//Serial.println("MODO 2X1 ON\t"); // SE MUESTRA POR PANTALLA QUE

ESTAMOS EN EL MODO 2X1 ON

else // SI EL SWITCH NO ESTÁ EN LA POSICIÓN 2X1 ON

if (FLAG_1 == 1) // PARA SOLO REALIZARLO UNA VEZ

FLAG_1 = 0;

MODO_1 = 0; // NO ESTÁ SELECCIONADO EL MODO 1

if (VALOR_ON_OFF == HIGH && VALOR_2X2_2X1 == LOW) // SI EL SWITCH

ESTÁ EN LA POSICIÓN 2X2 OFF

if (bateria_baja == 0 || bateria_baja == 1)

lcd.setCursor(0, 1);

lcd.print("2x2 off");

if (FLAG_2 == 0) // PARA SOLO REALIZARLO UNA VEZ

digitalWrite (LED_ON_OFF, LOW);

digitalWrite (LED_2X2_2X1, HIGH);

FLAG_2 = 1;

MODO_2 = 1; // ESTÁ SELECCIONADO EL MODO 2

Serial.println ("Modo 2");

CONTADOR_TRASERO = 0; // SE INICIALIZA EL CONTADOR CADA VEZ QUE

CAMBIEMOS DE MODO

CONTADOR_DELANTERO = 0; // SE INICIALIZA EL CONTADOR CADA VEZ

QUE CAMBIEMOS DE MODO

tiempo_anterior = tiempo_actual; // SE ACTUALIZA EL VALOR DEL TIEMPO

EN EL QUE SE REALIZÓ EL BUCLE ANTERIOR DE COMPARACION DE FLANCOS

ENTRE LAS RUEDAS

tiempo_anterior_PID = tiempo_actual; // SE ACTUALIZA EL VALOR DEL

TIEMPO EN EL QUE SE EJECUTÓ EL PID ANTERIOR

sei();// HABILITAMOS LAS INTERRUPCIONES

Page 72: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 72 ROBERTO JIMÉNEZ PERALTA

//Serial.println("MODO 2X2 OFF\t"); // SE MUESTRA POR PANTALLA QUE

ESTAMOS EN EL MODO 2X2 OFF

else // SI EL SWITCH NO ESTÁ EN LA POSICIÓN 2X2 OFF

if (FLAG_2 == 1) // PARA SOLO REALIZARLO UNA VEZ

FLAG_2 = 0;

MODO_2 = 0; // NO ESTÁ SELECCIONADO EL MODO 2

if (VALOR_ON_OFF == LOW && VALOR_2X2_2X1 == LOW) // SI EL SWITCH

ESTÁ EN LA POSICIÓN 2X2 ON

if (bateria_baja == 0 || bateria_baja == 1)

lcd.setCursor(0, 1);

lcd.print("2x2 on ");

if (FLAG_3 == 0) // PARA SOLO REALIZARLO UNA VEZ

digitalWrite (LED_ON_OFF, HIGH); // DE MOMENTO COMENTADO, SE

ENCIENDE EL LED QUE INDICA QUE EL MODO_1 ESTÁ ACTIVADO

digitalWrite (LED_2X2_2X1, HIGH);

FLAG_3 = 1;

MODO_3 = 1; // ESTÁ SELECCIONADO EL MODO 3

Serial.println ("Modo 3");

CONTADOR_TRASERO = 0; // SE INICIALIZA EL CONTADOR CADA VEZ QUE

CAMBIEMOS DE MODO

CONTADOR_DELANTERO = 0; // SE INICIALIZA EL CONTADOR CADA VEZ

QUE CAMBIEMOS DE MODO

tiempo_anterior = tiempo_actual; // SE ACTUALIZA EL VALOR DEL TIEMPO

EN EL QUE SE REALIZÓ EL BUCLE ANTERIOR DE COMPARACION DE PULSOS

ENTRE LAS RUEDAS

tiempo_anterior_PID = tiempo_actual; // SE ACTUALIZA EL VALOR DEL

TIEMPO EN EL QUE SE EJECUTÓ EL PID ANTERIOR

sei();// HABILITAMOS LAS INTERRUPCIONES

//Serial.println("MODO 2X2 ON\t"); // SE MUESTRA POR PANTALLA QUE

ESTAMOS EN EL MODO 2X2 ON

else // SI EL SWITCH NO ESTÁ EN LA POSICIÓN 2X2 ON

if (FLAG_3 == 1) // PARA SOLO REALIZARLO UNA VEZ

Page 73: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 73

FLAG_3 = 0;

MODO_3 = 0; // NO ESTÁ SELECCIONADO EL MODO 3

4.5.4 MOSTRAR POTENCIA:

Con esta función se indica la potencia seleccionada con el

potenciómetro que se está entregando a la rueda delantera. Esta selección de

potencia ira de 10% en 10%.

Se procede a mostrar el código:

void mostrar_potencia ()

if (bateria_baja == 0 || bateria_baja == 1)

valor_regulador = analogRead(Regulador_de_potencia); // Guardamos el

valor del acelerador

if (valor_regulador <= 100)

valor_nuevo = 0.1;

else if (100 < valor_regulador && valor_regulador <= 200)

valor_nuevo = 0.2;

else if (200 < valor_regulador && valor_regulador <= 300)

valor_nuevo = 0.3;

else if (300 < valor_regulador && valor_regulador <= 400)

valor_nuevo = 0.4;

else if (400 < valor_regulador && valor_regulador <= 500)

valor_nuevo = 0.5;

else if (500 < valor_regulador && valor_regulador <= 600)

valor_nuevo = 0.6;

else if (600 < valor_regulador && valor_regulador <= 700)

valor_nuevo = 0.7;

Page 74: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 74 ROBERTO JIMÉNEZ PERALTA

else if (700 < valor_regulador && valor_regulador <= 800)

valor_nuevo = 0.8;

else if (800 < valor_regulador && valor_regulador <= 900)

valor_nuevo = 0.9;

else// (900 < valor_regulador && valor_regulador <= 1023)

valor_nuevo = 1.0;

lcd.setCursor(0, 1); //Se empieza en el caracter 0, de la linea 2

if (valor_nuevo == 1) //Si la potencia seleccionada es 100% se hace un

espacio menos para conseguir

//El signo de % al final del todo

//lcd.print("Power: ");

lcd.setCursor(11, 1);

lcd.print(valor_nuevo * 100, 0);

else //Si la potencia seleccionada es menor del 100% se

pone un espacio de más por

//la misma razon que antes

//lcd.print("Power: ");

lcd.setCursor(11, 1);

lcd.print(" ");

lcd.setCursor(12, 1);

lcd.print(valor_nuevo * 100, 0);

lcd.setCursor(14, 1);

lcd.print(" %");

else

lcd.setCursor (0, 1);

lcd.print (“ CHARGE NEEDED! ”);

4.5.5 LECTURA DE VOLTAJE:

En esta función se lee el voltaje proveniente de los ultracondensadores,

para mandar al vúmetro la señal correspondiente e indica por la pantalla LCD

que la batería esta baja o hay que poner a cargar el prototipo. El código

correspondiente a esta sección de código es:

Page 75: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 75

void leer_tension ()

volatile int voltaje = analogRead (lectura_voltaje); //Se lee el voltaje del pin 0

analogico

voltaje_leido = map (voltaje, 0, 1023, 0, 500); //Se mapea entre 0-500 para

despues dividir entre 100 y obtener un valor con dos difras decimales

voltaje_leido = voltaje_leido / 100; //Se pasa el valor con dos decimales

voltaje_filtrado = voltaje_filtrado + (voltaje_leido - voltaje_filtrado)/

SAMPLES_TO_AVERAGE; //Se actualiza la media

voltaje_modificado = map (voltaje_filtrado, 0, 1023, 0, 100); //se hace mapea

el voltaje para traducirlo a porcentaje

if (voltaje_filtrado >= 1.88)

voltaje_filtrado = voltaje_filtrado*100; //Se vuelve a pasar con dos

decimales para tener mayor precision

volt_traducido_vumetro = map (voltaje_filtrado, 187, 500, 25, 255); //Se

mapea el valor para poner un 0 cuando en la entrada haya 16 V y un 5 para

cuando haya 0 V

voltaje_filtrado = voltaje_filtrado/100;

else

volt_traducido_vumetro = 0; //Si la tension es menor que 16 V poner 0 V a

la salida siempre

analogWrite (tension_vumetro, volt_traducido_vumetro);

if (voltaje_filtrado <= 2.60 && voltaje_filtrado >= 1.88) //Voltaje

correspondiente a 25-16 V en los ultacondensadores para indicar que la carga

esta baja

bateria_baja = 1;

lcd.setCursor (7,1);

lcd.print (" ");

lcd.write (byte (0)); //Se imprime el primer caracter de la bateria

lcd.write (byte (1)); //Se imprime el segundo caracter de la bateria

lcd.print (" ");

else if (voltaje_filtrado < 1.88) //Voltaje por debajo de los 16 V que el boost

ya no podria elevar a 36 V

bateria_baja = 2;

else

if (bateria_baja == 2) //se borra la pantalla para eliminar letras no deseadas

lcd.clear ();

else if (bateria_baja == 1) //Se borra el icono de la bateria

Page 76: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 76 ROBERTO JIMÉNEZ PERALTA

lcd.setCursor (8,1);

lcd.print (" ");

else

bateria_baja = 0;

Para indicar que la batería está baja, se ha tenido que crear un icono de

batería que como se puede ver en el código. Aparecerá cuando la batería está

comprendida entre los 18-24 V. Por debajo de los 18 V saldrá por pantalla el

aviso: “LOW BATTERY NEED CHARGE!”.

Para la creación del icono se ha necesitado dos caracteres, de los cuales

se han codificado en binario de la siguiente forma:

1. Primer

carácter:

0 0 1 0 0

1 1 1 1 1

1 0 0 0 0

1 0 1 0 0

1 1 1 1 0

1 0 1 0 0

1 0 0 0 0

1 1 1 1 1

2. Segundo

carácter:

0 0 1 0 0

1 1 1 1 1

0 0 0 0 1

0 0 0 0 1

0 1 1 0 1

0 0 0 0 1

0 0 0 0 1

1 1 1 1 1

Tabla 6: Codificación en bits de la batería.

El código para la creación del icono de batería es:

//--CREACIÓN DEL CARACTER BATERIA--//

byte bat_1[8] =

B00100,

B11111,

B10000,

B10100,

B11110,

B10100,

B10000,

B11111,

;

byte bat_2[8] =

B00100,

B11111,

B00001,

B00001,

B01101,

Page 77: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 77

B00001,

B00001,

B11111,

;

Y dentro del void setup ():

void setup()

·

·

·

//Se crean los nuevos caracteres

lcd.createChar (0,bat_1);

lcd.createChar (1,bat_2);

·

·

·

4.5.6 CAMBIO DE LOS VALORES DEL PID:

También se ha realizado un pequeño reajuste del PID debido a que se ha

tenido que cambiar el filtro de salida del acelerador delantero ya que no

proporcionaba 5 V de señal máxima, debido al alto consumo del filtro. Como

consecuencia, la rueda delantera no podía girar a la misma velocidad que la

trasera, sólo hasta que alcanzaba una velocidad máxima de 10 Km/h, que se

correspondía a una señal de 2,5 V, tensión máxima que proporcionaba el

control delantero.

Al no tener valores del sistema a regular y no poder desarrollar un estudio

matemático completo, se procede a sintonizar un PID mediante un ajuste por

aproximaciones, empezando por el valor de Kp, siguiendo con el valor de Kd y

finalizando con el valor de Ki, buscando inicialmente una buena respuesta del

control para posteriormente refinar el comportamiento buscando mejorar la

estabilidad y minimizar el error en el estado estacionario.

Otro error es que la rueda delantera empezaba a girar antes que la

trasera, por lo que se tuvo que variar los límites mínimos para que esto no

ocurriera, ya que el control tiene diseñada una función, con la cual, las dos

ruedas comienzan a girar a la vez (antes de que el control PID entre en

funcionamiento).

Con los nuevos valores seleccionados, de filtro y PID, la rueda delantera

sigue a la trasera con un error en la velocidad de 0,50 km/h, en vacío, hasta el

máximo de señal de entrada de los convertidores, que en ese instante la rueda

trasera irá más rápida debido a la diferencia de potencias entre los

convertidores.

Page 78: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 78 ROBERTO JIMÉNEZ PERALTA

CONSTRUCCION DE LAS PLACAS DE CIRCUITO IMPRESO: En las instalaciones del Departamento de Tecnología Electrónica (DTE),

en el laboratorio de métodos y herramientas del diseño electrónico, se ha

llevado a cabo el proceso de fabricación.

La primera idea que se tuvo a cerca de la fabricación era hacer todo el

proyecto con la máquina de control numérico (aislado de pistas, taladrado,

serigrafía y corte de placa), pero por diversos fallos en la misma se descartó

dicho proceso, aun así, en los anexos se van a incluir dichos ficheros de

fabricación, para hacerlo mediante este método.

Lo primero que se hizo es taladrar la placa con la máquina de control

numérico:

Ilustración 60: Taladrado con la máquina de control numérico.

El siguiente proceso es colocar el fotolito e insolar la placa, este método

se hace para debilitar la resina fotosensible que recubre el cobre para

protegerlo del ataque con ácido:

Ilustración 61: Colocación del fotolito (izquierda) e insolado (derecha).

Page 79: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 79

Lo siguiente al insolado fue dar un baño en un baño de hidróxido de

sodio disuelto en agua para eliminar las zonas de resina que no estaban

cubiertas por el fotolito. El resultado es el siguiente:

Ilustración 62: Acabado de la PCB después del atacado con sosa.

Posteriormente, se prepara una mezcla de agua (30 ml), ácido

clorhídrico (30 ml) y peróxido de hidrogeno 110 vol. (agua oxigenada, 30 ml),

para eliminar el cobre que no está cubierto por la resina fotosensible.

El proceso de atacado del cobre se realiza en una cubeta de plástico.

Con ayuda de unos guantes de látex para evitar quemaduras en la piel debido

al acido, se realiza esta operación. El residuo sobrante es de color verdoso

debido al cobre disuelto.

Ilustración 63: Proceso de atacado del cobre.

Finalmente, se sacará la placa del ácido, se limpiará con abundante

agua y seguidamente, con alcohol etílico, se eliminará la resina sobrante que

está cubriendo el cobre para poder soldar.

El resultado al final del proceso es:

Ilustración 64: Acabado final de la PCB.

Error en la resina

foto sensible

Page 80: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 80 ROBERTO JIMÉNEZ PERALTA

ERRORES OBSERVADOS/COMETIDOS:

4.7.1 BOBINA DE FILTRADO:

Se añadió una bobina de filtrado de 100 µH, en la tierra, para obtener

un menor rizado en la tensión. Se había puesto, por error, antes del

condensador de salida del buck, como se puede ver en la siguiente imagen:

Ilustración 65: Bobinas de filtrado.

La tensión de salida con la bobina de abajo conectada de esta forma,

se puede ver en la Ilustración 66:

Ilustración 66: tensión de rizado del buck con 5V/div.

La tensión de salida tenía un rizado de 5 voltios de pico a pico, sin

embargo, debería dar una tensión constante de 12 V. De esta forma, el

regulador lineal LM7808 trabajaba disipando más potencia de la prevista

(debido al comportamiento anómalo) por lo que se calentaba en exceso.

Al colocar la bobina en esa ubicación, la tensión de tierra estaba

flotando, por lo que se ha tenido que ubicar entre el condensador de salida del

buck y el condensador de entrada del LM7808 la tensión de salida del

convertidor con la posición final sería:

Page 81: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 81

Ilustración 67: Bobina de filtrado después del condensador de filtrado del buck.

Al realizar dicho cambio, la tensión de rizado el buck disminuyó bastante

hasta mantenerse prácticamente constante, como se puede apreciar en la

Ilustración 68:

Ilustración 68: Tensión de salida del convertidor buck con 2V/div.

4.7.2 FILTRADO DE LA SEÑAL DE ACELERACIÓN DEL CONVERTIDOR

DELANTERO:

Con el filtro diseñado en el anterior TFG, la señal de tensión que se

enviaba al convertidor delantero, no superaba los 2,5 V así que cuando se

necesitara imprimir más velocidad en la rueda delantera, al no poder

incrementar la tensión, esta no podía seguir a la rueda trasera, por lo que se

ha decidido cambiar el filtro. Esto es debido a que el filtro consumía más

corriente que la que el arduino podía proporcionar, debido al bajo valor de la

resistencia en paralelo.

Se ha decidido suprimir dicha resistencia, además de disminuir el valor

de los condensadores (cuatro condensadores de 47 µF en paralelo, frente a los

cuatro condensadores de 100 µF en paralelo que se tenían antes). Con estos

cambios, ahora se alcanza un valor de tensión de 5 V en la señal que se envía

al convertidor delantero. Cuando se está trabajando a plena potencia, las

Page 82: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 82 ROBERTO JIMÉNEZ PERALTA

velocidades nunca van a ser iguales debido a que las potencias de los

convertidores no son las mismas, por lo que la rueda trasera tendrá aplicada

un valor ligeramente más alto de par que la rueda delantera: ello no es

problema alguno pues en marcha, el par y por lo tanto la potencia aplicada en

cada rueda, es aditiva.

Con el nuevo filtro, al introducir una señal escalón de 5 V, el convertidor

delantero, se satura, por lo que corta la corriente de la rueda delantera y no

vuelve a permitir la circulación de corriente hasta que no se baje la señal a 0

V. Esto es un problema ya que cuando entra la tracción en la rueda delantera,

en el modo 2x1 ON, por ejemplo, la tracción no para hasta que la rueda

delantera tiene aproximadamente la misma velocidad que la trasera, en caso

de que la trasera estuviera derrapando, la rueda delantera no tendría la misma

velocidad (tendría una velocidad menor que la trasera) por lo que entraría la

tracción a la máxima potencia, pero no podría traccionar ya que el convertidor

estaría cortando la corriente.

Se ha realizado un control para limitar el escalón de 5 V y evitar que el

convertidor delantero corte la corriente.

4.7.3 FILTRADO DE LA SEÑAL DE TENSIÓN DEL DIVISOR DE LOS

ULTRACONDENSADORES:

Cuando se cuantificó la tensión de entrada de los ultracondensadores, se

observó que había mucho ruido y por lo tanto no se ejecutaba correctamente

los testigos y los avisos en la pantalla LCD. Se conectó el osciloscopio y

comprobó que había una señal de ruido con más de un voltio de amplitud pico

a pico, lo que significa una variación de 10 V en la lectura de tensión en los

ultracondensadores.

En la Ilustración 69 se puede ver el rizado de la señal (se ha seleccionado

una escala de 1 V/div.).

Ilustración 69: Voltaje de salida del divisor de tensión.

Para reducir ese ruido se ha colocado un condensador cerámico de 10

nF, y además se ha implementado en el código de arduino el filtro de la media

móvil.

La tensión de entrada por el pin analógico de arduino es de:

Page 83: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 83

Ilustración 70: Voltaje de salida del divisor de tensión filtrado.

La media móvil acumulativa se usa normalmente para suavizar las

fluctuaciones en un corto plazo de tiempo. La media móvil calculada actual

para un punto de referencia nuevo es igual al nuevo valor menos la media móvil

acumulada, todo ello dividido entre el número de puntos recibido y sumado a

la media acumulada.

MEDIDAS REALIZADAS: Se han realizado medidas para contrastar con los cálculos y las

simulaciones hechas anteriormente y comprobar que no hay errores, los datos

calculados y medidos se recogen en la siguiente tabla:

PARAMETRO VALOR

CALCULADO

VALOR

MEDIDO

CRITERIO DE

ACEPTACIÓN OBSERVACIÓN

Tensión de

alimentación 7 - 60 V 36

Dentro del

rango PASA

Salida del

convertidor 12 V 12,1 V 12 V±10 % PASA

Salida del

regulador lineal 8 V 8,06 V 8 V±10 % PASA

Sensor de

tensión

Ultracon-

densadore

5 V para 48 V

ultracon-

densadores

Varia con la

carga de los

ultracon-

densadores

No sobrepasar

5 V PASA

Temperatura

LM2576 HVT

(10 min, Tª amb

=25 ºC)

69,64 ºC 46,75 ºC No sobrepasar

125 ºC PASA

Temperatura

LM7808 CV

(10 min, Tª amb

=25 ºC)

86,08 ºC 65,19 ºC No sobrepasar

125 ºC PASA

Tabla 7: Comparación de valores medidos/ valores calculados.

Page 84: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 84 ROBERTO JIMÉNEZ PERALTA

Como se puede comprobar en la Tabla 7, se cumple con todo lo

calculado y no se supera en ningún momento el máximo, por lo que se dan por

correctos los cálculos y las simulaciones.

Page 85: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 85

DISEÑO DE LA ENVOLVENTE: Cómo se requiere un diseño personalizado de la envolvente, se ha

decidido hacerla mediante un programa de diseño mecánico (Autodesk

Inventor 2018), para posteriormente imprimirlo con una impresora 3D.

Dicha envolvente necesita cierto índice de protección ya que, al ir en un

vehículo de campo, está expuesta a salpicaduras de barro, agua de lluvia,

polvo… por lo que se diseñará lo más herméticamente posible teniendo en

cuenta estos problemas.

Por seguridad, también se requiere que sea extraíble sin necesidad de

herramientas así que se tendrá que dividir en dos partes: un soporte que

permanezca fijo en el manillar y el panel de control, extraíble fácilmente por el

usuario.

Como las dimensiones de la cama de las impresoras disponibles, son de

20x20x25, se tendrán que diseñar de tal forma que entre en la cama de las

impresoras y así no tener que hacer partes para posteriormente unirlas, lo cual

supondría hacer más uniones herméticas, lo que es difícil de conseguir.

Tomando medidas de la pcb, y teniendo en cuenta la altura de los

componentes, se han diseñado las siguientes partes de la envolvente:

4.9.1 CAJA:

La caja donde irá la PCB, atornillada para su fijación durante su uso,

tendrá forma rectangular con los bordes redondeados. Además, incluirá dos

ventanas por las cuales acceder los cables de la alimentación y de las señales

de los distintos sensores.

En la parte inferior, se ha diseñado un carril en forma de T para que

encaje en un soporte, dicho soporte estará atornillado al manillar del vehículo,

por lo que para desmontarlo se necesitaría un destornillador.

Además, en la unión de la base con la tapa, se ha hecho un surco de 2,5

mm de diámetro para poder poner una junta de estanqueidad y así asegurar

que el cierre es hermético, esta misma operación se ha llevado a cabo en la

tapa.

En la parte final del carril de la base, se ha hecho una muesca con forma

de esfera, para que pueda encajar una bola de acero y sirva de enganche y que

el sistema no se suelte con facilidad.

Page 86: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 86 ROBERTO JIMÉNEZ PERALTA

Ilustración 71: Base de la envolvente.

Un detalle de la muesca, donde encajará la bola de 5 mm de diámetro,

esta entrará hasta la profundidad de 2mm:

Ilustración 72: Muesca para la bola de 5 mm de diámetro.

Mediante este sistema, la base se podrá desmontar con facilidad del

manillar y no será necesario el uso de herramientas.

4.9.2 TAPA DE LA BASE:

De igual forma que la base, se ha diseñado la tapa teniendo en cuenta

la estanqueidad de los orificios. Para el caso del vúmetro de nivel de potencia,

los leds indicativos, se ha decidido hacer una pequeña hendidura en la parte

posterior para poder pegar una plancha de policarbonato.

También, se ha añadido carteles que indican las funciones de cada

mando o cual de las funciones está activa en cada momento. El diseño del logo

del vehículo que figurará en la base, se comentará más adelante.

A mayores, se ha incluido un pequeño voladizo para proteger la zona de

la base donde salen los cables de golpes o salpicaduras de agua, ya que esa

Page 87: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 87

parte no se pudo hacer estanca, estando únicamente protegida contra golpes

o salpicaduras de agua desde la parte superior.

Ilustración 73: Tapa de la envolvente.

Por la parte inferior, se va a poder ver las hendiduras hechas para incluir

las planchas de policarbonato.

Ilustración 74: Parte posterior de la tapa.

En los botones, potenciómetro, llave de arranque y tornillos, se incluirán

unas gomas para que quede lo más hermético posible.

4.9.3 ENGANCHE BASE-MANILLAR:

Esta pieza se ha decidido dividirla en dos partes, debido a los problemas

de impresión 3D cuando hay muchos voladizos. Por ello, para su unión se

usarán tornillos rosca-chapa. Esta unión no es necesaria que se haga estanca.

En un lado del perfil, en el perfil con forma de T, se ha hecho un

habitáculo para el muelle y la bola que harán la función de enganche, para que

la envolvente de la caja no se salga de su posición durante el funcionamiento

del vehículo.

Page 88: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 88 ROBERTO JIMÉNEZ PERALTA

En el lado contrario a donde está ubicado el muelle con la bola, se ha

hecho un tope para que la base quede ubicada en el lugar correcto y el conjunto

quede correctamente enfrentado.

Ilustración 75: Enganche entre la base y el manillar.

En la Ilustración 76, se puede ver un detalle del habitáculo donde se

encontrará alojado el muelle y la bola.

Ilustración 76: Detalle del habitáculo del muelle con la bola.

El diseño del enganche al manillar se ha hecho mediante dos piezas, ya

que así no es necesario desmontar el acelerador y los frenos para introducir el

control, el diámetro se ha seleccionado en base a los tubos utilizados

actualmente de 22 mm:

Ilustración 77: Enganche al manillar.

Page 89: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 89

Para apretarlo y que no se mueva de la posición que se ha elegido, se

ha vuelto a seleccionar los tornillos rosca-chapa. Mediante este sistema, la

sección se va haciendo progresivamente más pequeña hasta que se queda de

un diámetro algo menor que el diámetro de la barra del manillar.

4.9.4 LOGO DEL VEHÍCULO:

En el momento del diseño del logo, se tuvo en cuenta varios factores:

Se trata de un vehículo eléctrico.

Es ligero.

Está diseñado para el ocio.

En las ruedas están integrados los motores brushless.

Ilustración 78: Logo del vehículo.

Por lo tanto, en la anterior imagen, se puede ver que, hay dos ruedas

como las del vehículo prototipo, además tiene espacio suficiente en el eje como

para intuir que ahí puede ir incluido un motor, además la última rueda, forma

parte de la palabra Ocio.

La “e” de eléctrico, en su parte inferior tiene las clavijas de un enchufe

macho estándar europeo.

La “l” está formando un camino, por el cual podría circular dicho

prototipo.

La pluma que está encima, representa la ligereza como y se ha dicho

antes, además de “unir” las dos ruedas, imitando un chasis.

Todo el logo ira en sobre relieve en la tapa, con una altura de 2 mm.

4.9.5 CAJA DE CONEXIONES:

En el diseño de la caja de conexiones también se ha priorizado la

estanqueidad, por lo que de la misma forma que antes se han incluido juntas

de estanqueidad y orificios para introducir los cables.

Page 90: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 90 ROBERTO JIMÉNEZ PERALTA

Se ha hecho más grande de lo normal, para introducir todo el conector

VGA y que solo salga el cable:

Ilustración 79: Caja de conexiones.

Por el lado contrario, se ha incluido la serigrafía en la caja para saber

porque orificio hay que meter los correspondientes cables de las diferentes

señales.

Ilustración 80: Serigrafía en la caja de conexiones.

La sujeción al bastidor del vehículo se llevará a cabo mediante bridas

por no saber el perfil que forma el bastidor ni las dimensiones.

Page 91: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 91

5 COSTE DEL EQUIPO:

A continuación, se va a mostrar una lista de los materiales desglosado en

cantidad precio unitario y precio total:

Componente Cantidad Precio

unitario Precio

Arduino uno Rev. 3 1 19,95 19,95

Pantalla LCD 16x2 con I2C 1 3,37 3,37

Convertidor DC-DC LM2576HVT 1 3,742 3,742

Bobina 100 uH 2 0,444 0,888

Diodo 1N5819RLG 2 0,088 0,176

Condensador aluminio 100 uF 50 Vdc 1 0,112 0,112

Condensador aluminio 1000 uF 16 Vdc 1 0,622 0,622

Regulador lineal 7808C 1 0,447 0,447

Condensador electrolítico 0,33 uF 50 Vdc 1 0,025 0,025

Condensador electrolítico 0,1 uF 50 Vdc 1 0,043 0,043

LM3914 1 1,762 1,762

Array 10 leds 1 4,93 4,93

Resistencia 1K 1 0,028 0,028

Resistencia 2,7K 1 0,126 0,126

Condensador 2,2 uF 50 V dc 1 0,354 0,354

LED plano azul 1 0,202 0,202

LED circular verde 2 0,1 0,2

Potenciómetro 10k PCB 1 2,18 2,18

Potenciómetro 10k para PCB 1 1,69 1,69

Resistencia 1,7 K 1 0,192 0,192

Resistencia 100 k 1 0,126 0,126

Condensador filtro 47uF tántalo 4 0,75 3

Interruptor palanca 2 1,46 2,92

Condensador de desacoplo 100nF polimérico 5 0,49 2,45

Condensador de desacoplo 47uF electrolítico 2 1,092 2,184

Interruptor con llave 1 3,85 3,85

Conector VGA hembra 2 7 14

Conector cable hembra PCB 3 vías 3 0,964 2,892

Conector cable hembra PCB 2 vías 1 0,568 0,568

Cable VGA 1 21,61 21,61

Tira de pines hembra 1 0,636 0,636

Tira de pines macho 1 0,804 0,804

Enganche alimentación 1 0,381 0,381

PCB 15x20 insolado una cara 1 7,55 7,55

Ultracondensadores Maxwell 1 1335,35 1335,35

Piezas impresas en 3D 1 20 20

Suma: 1459,36 € I.V.A (21%): 306,4656 €

Total: 1765,8256 € Tabla 8: Presupuesto de ejecución material.

Page 92: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 92 ROBERTO JIMÉNEZ PERALTA

Se realiza una estimación del coste de los recursos humanos empleados

en la realización completa del prototipo (diseño, fabricación y revisión). El coste

a la hora se ha fijado según el convenio de ingeniería industrial6, que establece

un salario mínimo anual de 17.544,24 € para un diplomado y titulado de 1er

ciclo7 universitario. Jefe superior. Estipulando 1800 horas anuales ordinarias.

Los cargos sobre el salario son:

1. Seguridad social8: 28,30 %

2. Absentismo: 0,8 %

3. Otros conceptos: 19 %

El coste de un trabajador por lo tanto sale a 14,44 €/h.

Descripción: Horas Coste (€/h) Subtotal (€)

Tiempo estimado en la revisión: 20 14,4350108 288,700216

Tiempo estimado en el diseño: 100 14,4350108 1443,50108

Tiempo estimado en la fabricación: 100 14,4350108 1443,50108

Suma: 3175,70238 € I.V.A (21 %): 666,897499 €

Total: 3842,59987 € Tabla 9: Presupuesto honorarios trabajadores.

El total del coste del producto, sin tener en cuenta los costes indirectos

generados por la fabricación, estos no se tienen en cuenta ya que no se trata

de un proyecto para fabricación, sino que es de carácter académico. Por este

motivo, no se conocen los recursos con los que se dispone para la

manufacturación, no pudiendo asignar gastos fijos y variables:

Descripción: Subtotal (€)

Ejecución material 1459,36

Horarios profesionales 3175,702376

Suma: 4635,062376 € I.V.A. (21 %): 973,363099 €

Beneficio industrial (6 %) 278,1037426 €

Gastos generales (13 %) 602,5581089 €

Total: 6489,087326 €

Tabla 10: Presupuesto final.

6 El coste a la hora se ha fijado según el convenio de ingeniería industrial, que establece un

salario mínimo anual de 17.544,24 € para un diplomado y titulado de 1er ciclo universitario.

Jefe superior. Y estipulando 1800 horas anuales ordinarias. Fuente BOE A_2017-542. 7 Un Grado en Ingeniería Electrónica Industrial y Automática se corresponde con un titulado de

1er ciclo universitario por el plan pre-Bolonia. Fuente BOE A_2015-9042. 8 Porcentaje total de cotización a la seguridad social en 2017.

Page 93: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 93

6 CONCLUSIÓN:

En la actualidad, lo que se está llevando a cabo es el paso del vehículo de

combustión interna a un modo de transporte en el cual no se produzca ninguna

emisión de carbono, al menos local, es decir los vehículos eléctricos no

producen emisiones de CO2 en su zona de circulación, pero sí que se producen

emisiones de CO2 al producir la energía para cargar dichos vehículos.

Con este vehículo lo que se ha intentado es hacer un cambio de concepto:

baja autonomía-rápida recarga frente a autonomía media-recarga lenta de los

vehículos convencionales. Esto es posible gracias a la inserción de

ultracondensadores ya que tienen unas altas tasas de carga y descarga de

energía.

Los ultracondensadores incluidos en el vehículo tienen como principal

función el almacenamiento de energía, que en la actualidad se utilizan en la

movilidad eléctrica destinados al frenado regenerativo, debido a que ofrece una

protección a las baterías, que como ya se ha dicho anteriormente, los

ultracondensadores permiten una alta tasa de carga y descarga de corriente.

Dicho vehículo no incluye frenado regenerativo, debido a los motores de las

ruedas, aunque si se cambiasen los motores, sí que se podría hacer un frenado

regenerativo.

Con el presente proyecto, se pueden realizar investigaciones acerca de

sistemas de recarga rápida para baterías, nuevas filosofías de circulación como

la baja autonomía y la rápida recarga, mejoras en los sistemas de frenado

regenerativo, inserción en una ciudad de una matriz de puntos de recarga,

estudios de nuevos convertidores para el control de motores brushless…

Una idea que he generado con este Trabajo Final de Grado es la necesidad

seguir desarrollando la movilidad eléctrica por ello creo que se debería realizar

más Trabajos Final de Grado relacionados con este tema, ya que es un

beneficio para todos a corto y largo plazo, y que en un futuro los vehículos de

combustión interna se verán relegados por los vehículos electicos y los únicos

que queden en funcionamiento se encontrarán en los museos y los amantes

del motor que puedan permitirse pagar el precio del combustible (que será

elevado puesto que habrá pocas reservas de petróleo).

MEJORAS DEL PROYECTO: Como aspectos a mejorar:

1. En primer lugar, se podría reducir el tamaño de la placa de circuito

impreso, escogiendo para el control un arduino nano o incluso

incluir el chip atmega directamente (previamente programado).

2. Mejorar la pantalla LCD, esta podría ser mayor para incluir más

información.

Page 94: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 94 ROBERTO JIMÉNEZ PERALTA

3. Envolvente podría ser más estanca la que se ha diseñado para

hacer pruebas es más que válida pero no estaría mal que, en la

zona de conexión de cables, fuera completamente estanca.

4. Utilizar motores que permitan frenado regenerativo, ya que de esta

forma se podría incrementar la autonomía del vehículo, ya que este

incluye los ultracondensadores que permiten una alta variación de

energía sin tener daños.

Los aspectos positivos son: el control se puede intercambiar para cualquier

tipo de motor y potencia de este (no sólo sirve para motores brushless) ya que

el control solo envía una señal comprendida entre los 0-5 V al convertidor

delantero. Si se usara otro tipo de motor o convertidor lo que habría que

cambiar es el tipo de respuesta, para ello, lo único que habría que hacer es

modificar las constantes del PID (de igual forma que se ha hecho en el presente

proyecto), también se podrían incluir una batería junto con los

ultracondensadores para poder obtener una buena eficiencia en el frenado

regenerativo como en una carga rápida y así no se dañarían las baterías

además del aumento de autonomía del prototipo.

Como conclusión final, con dicho TFG se ha conseguido la mejora tanto de

software como de hardware del TFG anterior, se ha diseñado una envolvente

con un alto índice de protección IP además de incluir una gran

intercambiabilidad con otros tipos de vehículos 2x2 eléctricos y por su puesto

la posibilidad de realizar investigaciones con dicho vehículo.

Page 95: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 95

7 BIBLIOGRAFÍA:

Apuntes de la asignatura Métodos y herramientas de diseño electrónico 2015.

Diseño de circuitos impresos.

Mínguela Benito, I. (abril de 2016). Trabajo Final de Grado. Diseño eléctrico y

electrónico de una motocicleta eléctrica infantil 2x2.

Vázquez, J. A. (2016). Apuntes de la asignatura Electrónica Industrial. Historia

del vehículo eléctrico.

Zalama Casanova, E. (2016). Apuntes de Autodesk Inventor.

RECURSOS WEB:

Anning, J. Evolve Skateboards. Obtenido de:

http://www.evolveskateboardsspain.es

Anónimo en Wordpress. Patinetes eléctricos. Obtenido de:

https://patinetes.wordpress.com/page/2/

Anónimo. Arduino y bus I2C. Obtenido de: http://www.prometec.net/bus-i2c/

Anónimo. Definición de interface hombre-máquina. Obtenido de:

http://iaci.unq.edu.ar/materias/laboratorio2/HMI%5CIntroduccion%20HMI.p

df

Anónimo. Librería LiquidCrystal arduino. Obtenido de:

https://www.arduino.cc/en/Reference/LiquidCrystal

Anónimo. Librería Wire arduino. Obtenido de:

https://www.arduino.cc/en/Reference/Wire

Boletín Oficial del Estado (12 de agosto de 2015). Determinación del nivel de

correspondencia al nivel del Marco Español de Cualificaciones para la

Educación Superior del Título Universitario Oficial de Ingeniero Técnico

Industrial, Especialidad en Electrónica Industrial. Obtenido de:

https://www.boe.es/boe/dias/2015/08/12/pdfs/BOE-A-2015-9042.pdf

Boletín Oficial del Estado (18 de enero 2017). Convenio colectivo del sector

de empresas de ingeniería y oficinas de estudios técnicos. Obtenido de:

https://www.boe.es/boe/dias/2017/01/18/pdfs/BOE-A-2017-542.pdf

Boullosa, N. (15 de noviembre de 2011). Girocoches. Obtenido de:

https://faircompanies.com/articles/girocoches-autos-de-2-ruedas-que-

mantienen-el-equilibrio/

Condensadores Maxwell. Ultracondensador Maxwell 48 Vdc serie 0083 P048.

Obtenido de: http://www.maxwell.com/products/ultracapacitors/48v-

modules/documents

Page 96: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 96 ROBERTO JIMÉNEZ PERALTA

COPADATA, empresa de HMI. Definición de interface hombre-máquina.

Obtenido de: https://www.copadata.com/es-es/soluciones-hmi-

scada/interfaz-hombre-maquina-hmi/

Crespo, E. (13 de noviembre de 2016). Interrupciones en arduino. Obtenido

de: https://aprendiendoarduino.wordpress.com/category/interrupciones/

Crespo, E. (24 de marzo de 2015). Alimentación de arduino. Obtenido de:

https://aprendiendoarduino.wordpress.com/tag/electronica/

Eloísa (23 de diciembre de 2015). Caracteres en pantalla LCD. Obtenido de:

https://fabricadigital.org/2015/12/como-mostrar-caracteres-en-un-pantalla-

lcd-1602/

Grimstad Bang, F. (última modificación 5 de marzo de 2017). I2C scanner.

Obtenido de: http://playground.arduino.cc/Main/I2cScanner

Ibáñez (28 de noviembre de 2013). Girocoches. Obtenido de:

https://www.motorpasionfuturo.com/coches-del-futuro/asi-iba-a-ser-el-coche-

del-futuro-ford-gyron

Javacasm. Dividir código de arduino. Obtenido de:

http://blog.elcacharreo.com/2016/06/23/dividir-proyecto-arduino-en-varios-

ficheros/

Kamen, D. (3 de diciembre de 1990). Segway Inc. Obtenido de:

http://www.segway.es/es/

LGM studio. Empresa de vehículos eléctricos. Obtenido de:

http://lgmestudio.com/wp-archivos/

LOCAL MOTORS. Verrado Electric Drift Trike. Obtenido de:

https://www.kickstarter.com/projects/103675254/verrado-electric-drift-trike-

by-local-motors?ref=category

Mellow Boards. Empresa de patinetes eléctricos. Obtenido de:

https://www.kickstarter.com/projects/1800147378/mellow-the-electric-

drive-that-fits-under-every-sk?ref=card

Pérez, D. (30 de mayo de 2012). Sensor HALL. Obtenido de:

http://se2amm.blogspot.com.es/2012/05/sensor-de-efecto-hall.html

Puerto, K. (7 de noviembre de 2014). Patinete eléctrico. Obtenido de:

https://www.xataka.com/otros/boosted-board-longboarding-con-motor-

electrico

Riazor R., Rafecas J. y Sudrià A. (marzo de 2009). Ultracondensadores.

Obtenido de:

http://www.cinergia.coop/sites/default/files/2009_03_aei_2009_ultracaps_j

_rafecas_0.pdf

Page 97: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 97

Seguridad Social (2017). Régimen general de la Seguridad Social. Obtenido

de: http://www.seg-

social.es/Internet_1/Trabajadores/CotizacionRecaudaci10777/Basesytiposd

ecotiza36537/index.htm

Tomás Piqué, A. (2001). Grados de protección IP e IK. Obtenido de:

http://www.insht.es/InshtWeb/Contenidos/Documentacion/FichasTecnicas/

NTP/Ficheros/501a600/ntp_588.pdf

Urban Fox. Empresa de patinetes eléctricos. Obtenido de:

http://www.urbanfox.es/

Villagrán, E. (9 de agosto de 2012). Crear caracteres para pantalla LCD.

Obtenido de: http://blog.gotencool.com/2012/08/crear-caracteres-para-lcd-

16x2-en.html

Wikipedia. Media móvil. Obtenido de:

https://en.wikipedia.org/wiki/Moving_average

Page 98: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 98 ROBERTO JIMÉNEZ PERALTA

Page 99: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 99

8 ANEXOS:

MANUAL DE USUARIO: A continuación, en la siguiente página se mostrará el manual de usuario:

MANUAL DE USUARIO:

La información que se ofrece en esta documentación contiene

descripciones de carácter general y/o características técnicas sobre

el rendimiento de los productos incluidos en ella.

La presente documentación no debe emplearse para determinar su

idoneidad o fiabilidad. Los usuarios tienen la responsabilidad de

llevar a cabo un análisis de riesgos adecuado y completo, así como

la evaluación y las pruebas de los productos en relación con la

aplicación o el uso de dichos productos en cuestión.

Si tiene sugerencias de mejoras o modificaciones o ha hallado

errores en esta publicación, le rogamos que nos lo notifique. No se

podrá reproducir este documento de ninguna forma, ni en su

totalidad ni en parte, ya sea por medios electrónicos o mecánicos,

incluida la fotocopia, sin el permiso expreso y por escrito de sus

fabricantes.

Al instalar y utilizar este producto es necesario tener en cuenta

todas las regulaciones sobre seguridad correspondientes, ya sean

regionales, locales o estatales. Por razones de seguridad y para

garantizar que se siguen los consejos de la documentación del

sistema, las reparaciones solo podrá realizarlas el fabricante.

Cuando se utilicen dispositivos para aplicaciones con requisitos

técnicos de seguridad, siga las instrucciones pertinentes.

Si no se tiene en cuenta esta información, se pueden causar daños

personales o en el equipo.

Page 100: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 100 ROBERTO JIMÉNEZ PERALTA

8.1.1 SEGURIDAD:

Información importante

Aviso

Lea atentamente estas instrucciones y observe el equipo para

familiarizarse con el dispositivo antes de instalarlo, utilizarlo o realizar su

mantenimiento. Los mensajes especiales que se ofrecen a continuación

pueden aparecer a lo largo de la documentación o en el equipo para advertir

peligros potenciales o para ofrecer información que aclara o simplifica los

distintos procedimientos.

Tenga en cuenta

La instalación, manejo, puesta en servicio y mantenimiento de equipos

eléctricos deberá ser realizados sólo por el personal cualificado. Sus

fabricantes no se hacen responsables de ninguna de las consecuencias del mal

uso de este material.

Una persona cualificada es aquella que cuenta con la capacidad y los

conocimientos relativos a la construcción, el funcionamiento y la instalación de

equipos eléctricos y que ha sido formada en materia de seguridad para

reconocer y evitar los riesgos que conllevan estos equipos.

Page 101: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 101

8.1.2 UTILIDAD:

Este equipo sólo es adecuado para el uso en motores eléctricos que tengan

un convertidor que reciba señales entre 0-5 V para indicar la aceleración al

propio motor y que venga equipado con sensores para conocer la velocidad de

las ruedas.

8.1.2.1 PRINCIPIO DE FUNCIONAMIENTO:

El control está basado en un PID. El controlador mide la velocidad de la

rueda trasera, la compara con la velocidad de la rueda delantera y según el

modo que se haya elegido, el control tomará unas decisiones u otras.

8.1.2.2 ENTORNOS DE APLICACIÓN:

Dicho equipo está preparado para trabajar tanto en exterior como en

interior. Consta de un índice de protección IP 43.

A continuación, se define el significado de las cifras numéricas.

CÓDIGO IP:

El sistema de codificación para indicar los grados de protección

proporcionados por una envolvente contra el acceso a partes peligrosas, la

penetración de cuerpos extraños y penetración de agua, se identifica mediante

las siglas IP seguidas de dos cifras que pueden ser sustituidas por la letra “X”

cuando no se precisa disponer de información especial de alguna de ellas.

Opcionalmente, las cifras pueden ir seguidas de una o dos letras que

proporcionan información adicional.

El significado de los valores numéricos se indica en la siguiente imagen:

Ilustración 81: Definiciones de valores numéricos IP.

Page 102: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 102 ROBERTO JIMÉNEZ PERALTA

Las letras adicionales indican el grado de protección de las personas

contra el acceso a partes peligrosas y su utilización, que es opcional, se reserva

a aquellos supuestos en que la protección efectiva del acceso a la parte

peligrosa es más eficaz que la indicada por la primera cifra (por ejemplo,

mediante un diseño especial de las aberturas que limitan el acceso a las partes

en tensión) o cuando la primera cifra ha sido reemplazada por una X.

Estas letras se identifican con los códigos A, B, C y D y su significado se

corresponde respectivamente con el de las cifras 1, 2, 3 y 4.

Una envolvente no puede ser designada por un grado de protección

indicado por una letra adicional si no garantiza que satisfaga también todos los

grados de protección inferiores.

Las letras suplementarias, con carácter asimismo opcional, indican que

el producto satisface unas condiciones particulares que, en cualquier caso,

deben responder a las exigencias de la norma de seguridad básica aplicable.

Cuando se añaden letras suplementarias se sitúan después de la última

cifra característica o después de la letra adicional en caso de que esta se

incluyera. El significado de estas letras se presenta en la siguiente tabla:

Tabla 11: Significado de las letras adicionales a los números IP.

CÓDIGO IK:

El código IK, es un sistema de codificación para indicar el grado de

protección proporcionado por una envolvente frente a impactos mecánicos

nocivos. Se identifica mediante las siglas IK seguida de una cifra de dos dígitos

representativa de la resistencia a una determinada energía de impacto que una

envolvente puede soportar sin sufrir deformaciones peligrosas.

El significado de los valores numéricos se indica en la siguiente tabla:

Tabla 12: Significado de los números del código IK.

Page 103: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 103

8.1.3 MEDIO AMBIENTE:

Equipo respetuoso con el medio ambiente.

Dicho equipo no se puede desechar en la basura doméstica. Para evitar un

posible daño del medioambiente o la salud humana frente a una eliminación

inadecuada de residuos, tiene que trasladar el correspondiente aparato a

puntos de recogida habilitados para llevar el equipo a centros de tratamiento

de residuos electrónicos.

Este equipo contiene elementos que pueden ser reciclados.

El correcto reciclaje de los circuitos impresos que hay dentro de los

dispositivos eléctricos y electrónicos, permite recuperar no sólo el cobre y los

materiales ferrosos, sino que también permite recuperar metales preciosos

como son el oro, la plata…

Las tarjetas de circuito impreso tienen típicamente una composición

característica dada por:

- FVP (Fibra de Vidrio Polímero): < 70%

- Cobre: 16%

- Soldadura (Estaño 63% / Plomo 37%): 4%

- Acero: 3%

- Níquel: 2%

- Plata: 0.05%

- Oro: 0.03%

- Paladio: 0.01%

- Otros componentes (bismuto, antimonio, tantalio, etc.): < 0.01%

Page 104: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 104 ROBERTO JIMÉNEZ PERALTA

8.1.4 CARACTERÍSTICAS TÉCNICAS:

Tabla13:Característica técnicas del producto.

CARACTERÍSTICAS ELECTRICAS

Tensión nominal de alimentación del control: 55 - 7 V DC

Consumo de corriente: 320 mA

CARACTERISTÍCAS TÉRMICAS

Temperatura de funcionamiento ambiente -10 ºC + 40 ºC

Temperatura de almacenaje -20 ºC + 70 ºC

Altura sobre el nivel del mar > 3050 m

CARACTERÍSTICAS MECÁNICAS

Índice de protección IP43

Protección contra impactos IK IK06

Anchura 188 mm

Profundidad 140 mm

Altura 63,5 mm

Peso 650g

Page 105: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 105

8.1.5 MONTAJE Y CONEXIÓN ELÉCTRICA:

8.1.5.1 MONTAJE DE LA ENVOLVENTE DEL CONTROL:

Lo primero, se tiene que introducir la bola de acero de 5 mm de diámetro

en el hueco situado en un costado del perfil central, seguidamente se debe

comprimir el muelle para después alojarlo dentro de la muesca practicada en

el lateral del perfil y dejarlo libre para que presione a la bola contra la superficie

superior del perfil.

En la siguiente imagen se puede observar cómo quedaría montado:

Ilustración 82: Aspecto de la bola con el muelle montado.

Seguidamente hay que montar la envolvente para colocarlo en el

manillar del vehículo eléctrico. Se toma el soporte del manillar y el enganche

del mismo y se fijan entre sí con tornillos autorroscantes de métrica 3,

introduciendo dichos tornillos en los orificios practicados en la superficie de la

base.

En la siguiente imagen se puede ver un pequeño esquema:

Page 106: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 106 ROBERTO JIMÉNEZ PERALTA

Ilustración 83: Tornillos de fijación para el enganche y el soporte.

Seguidamente, se debe apretar el tornillo del enganche para que el

manillar quede fijo al soporte. ¡CUIDADO!, se debe colocar esta pieza en la

dirección correcta para que los carteles de la tapa de la base se puedan leer

correctamente (obsérvese que, la bola de acero, quede hacia la derecha del

centro del manillar).

A continuación, se colocará la placa de circuito impreso dentro de la

base y se fijará a la esta mediante tres tornillos autorroscantes de métrica 3.

Ilustración 84: Tornillos de fijación de la PCB.

Después se deben introducir los botones, el selector de potencia, la llave

y encajarlo para que queden inmóviles, incluyendo sus respectivas juntas de

estanqueidad.

Se debe conectar los elementos en sus correspondientes clavijas.

Page 107: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 107

Ilustración 85: Conexión de los botones, llave y selector de potencia.

El penúltimo paso será fijar la tapa a la base incluyendo la junta de

estanqueidad en la tapa y en los tornillos para asegurar que no entre agua:

Ilustración 86: Tornillos de fijación de la tapa.

Finalmente, se debe fijar la envolvente en la base enganchada en el

manillar, teniendo en cuenta que la envolvente tiene una pequeña muesca en

la parte inferior y esta debe quedar justo encima de la bola de acero. Para

concluir, se debe alojar el cable VGA en su correspondiente conector y el cable

proveniente de los ultra condensadores en el orificio restante.

8.1.5.2 MONTAJE DE LA CAJA DE CONEXIONES:

Para montar la caja de conexiones, lo primero que hay que se debe hacer

es colocar el cable VGA al conector correspondiente y seguidamente, se tiene

que atornillar la PCB a la envolvente:

Botón ON-OFF Botón 2x1 2x2

Llave de contacto

Selector de

potencia

Junta de

estanqueidad

Page 108: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 108 ROBERTO JIMÉNEZ PERALTA

Ilustración 87: Tornillos de fijación de la PCB.

A continuación, se deben introducir los cables correspondientes a los

sensores, según está indicado en el lateral (como se puede ver en la siguiente

imagen) de la envolvente y atornillar los bornes correspondientes para que los

cables queden fijos:

Ilustración 88: Indicación de la conexión de los sensores.

Seguidamente, se debe alojar el cable VGA en el canal practicado en el

lateral de la envolvente, depositar la junta de estanqueidad entre la tapa y la

base e introducir las juntas correspondientes a los tornillos y fijar la tapa:

Ilustración 89: Tornillos para la fijación de la tapa de la caja de conexiones.

Finalmente, se debe fijar la caja de conexiones al bastidor del vehículo

mediante bridas (se realiza esta unión para que se pueda adaptar a cualquier

tipo de bastidor).

Junta de

estanqueidad

Page 109: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 109

8.1.6 PUESTA EN SERVICIO:

Para poner en marcha el vehículo, una vez seguidos los pasos anteriores,

sólo se tiene que introducir las llaves en el bombín y girarlo.

8.1.6.1 LUCES Y TESTIGOS:

8.1.6.1.1 PANTALLA LCD:

En la pantalla LCD, se puede ver la información sobre el modo de

funcionamiento, la potencia entregada a la rueda delantera y la velocidad a la

que se está circulando:

Ilustración 90: Información pantalla LCD.

Los convertidores para funcionar tienen que tener una tensión mínima

de 31 V, como el convertidor intermedio no puede aumentar la tensión hasta

36 V para cualquier valor de entrada, en la pantalla LCD se mostrará un icono

de batería cuando esta esté entre los 24 y los 16 V, por lo que el usuario tendrá

que poner a cargar el prototipo:

Ilustración 91: Testigo de la batería.

Cuando la tensión de la batería se encuentre por debajo de los 16 V,

aparecerá un mensaje en la pantalla en el que indica: “Batería baja, necesita

carga”:

Ilustración 92: Indicación de poner a cargar el aparato.

8.1.6.1.2 ARRAY DE LEDS:

Este array de luces led, representa la carga de la batería (entre los 18-

48 V) con una resolución del 10 %. Si la medida mostrada en dicho array no es

Velocidad

Modo de

funcionamiento

Potencia de la

rueda delantera

Page 110: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 110 ROBERTO JIMÉNEZ PERALTA

correcta, podrá usarse un potenciómetro situado a la izquierda de la PCB para

hacer un pequeño ajuste:

Ilustración 93: Ubicación el potenciómetro de ajuste.

Este array tiene 10 leds, de los cuales son 3 de color rojo, 4 de color

amarillo y 3 de color verde que dependiendo del estado de la carga habrá más

o menos leds encendidos. El aspecto que tiene encendido es el siguiente:

Ilustración 94: Array de leds encendido.

8.1.6.1.3 LEDS INDICADORES DE MODO:

Además de mostrarse por la pantalla el modo de funcionamiento, hay

dos leds que también lo indican. El led situado más a la derecha, cuando está

encendido indica modo 2x2, si está apagado se está en el modo 2x1.

El led situado en la parte central, cuando está encendido indica modo

ON, si está apagado se está en OFF.

8.1.6.1.4 LED INDICADOR DE TRACCIÓN:

Este led, situado en la parte superior derecha, se enciende cuando ha

entrado la tracción en la rueda delantera y hasta que las velocidades de las dos

ruedas se igualen o hayan pasado tres segundos desde que entró, este led no

se apagará. El aspecto que tiene encendido es:

Pot de ajuste

Page 111: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 111

Ilustración 95: Led de tracción encendido.

Led indicador de

tracción

Page 112: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 112 ROBERTO JIMÉNEZ PERALTA

8.1.7 ERRORES FRECUENTES:

En la siguiente tabla se describe el funcionamiento anómalo y el

diagnóstico con sus correspondientes posibles acciones correctoras:

PROBLEMA DIAGNÓSTICO ACCIÓN

El equipo no

se enciende

No se enciende la

pantalla LCD ni

ninguna

de las luces

Comprobar que está dado el

contacto de la llave de arranque

Comprobar que la batería está

totalmente cargada

Comprobar que se respeta la

polaridad del conexión del equipo

Comprobar que el cableado está

correcto, es decir, que no tiene

fracturas

Se enciende el

equipo

pero no funcionan

los motores

El equipo funciona

correctamente

pero no es capaz de

controlar los

motores

Comprobar el estado de la

batería, los motores no pueden

funcionar por debajo de 18 V de

carga (ver testigo de batería)

Comprobar la correcta

conexión de los sensores en la

caja de conexiones

Cambiar cable VGA, puede estar

internamente fracturado

Acelerador en mal estado,

cambiar

uno nuevo

Diodos no

se encienden

Los diodos de

selección de

modo, indicador de

tracción o el array de

carga en la batería

no se encienden

Posible diodo quemado, ponerse

en contacto con la empresa

distribuidora

del equipo para una posible

reparación

Rueda trasera

funciona

pero la delantera

no

La rueda trasera

responde al

acelerador pero la

delantera no

Está seleccionado el modo de

funcionamiento 2x1 OFF,

cambiar

de modo y comprobar si se ha

solucionado

Los cables del sensor del

acelerador de la rueda delantera

están mal colocados

El convertidor delantero está

dañado

El selector de

potencia funciona

al contrario que las

indicaciones de la

tapa

Cuando se gira hacia

la derecha la potencia

disminuye y cuando se

gira hacia la izquierda

la potencia aumenta

Abrir la tapa, desconectar el

selector

de potencia y conectar el

cableado

al revés. Tabla 14: Errores frecuentes.

Page 113: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 113

CÓDIGO: Se va a mostrar el código dividido en funciones, para una mejor

compresión. El código está ordenado de la siguiente forma:

1. Código principal.

2. Código cabecera.h

3. Selección modo de funcionamiento.

4. Cálculo diferencia de pulsos.

5. Toma de decisiones.

6. PID.

7. Regulación de potencia.

8. Compensar esfuerzo.

9. Tracción proporcional.

10. Inicializar.

11. Mandar al controlador.

12. Leer tensión.

13. Muestra velocidad.

14. Muestra tensión.

15. Muestra potencia.

Page 114: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 114 ROBERTO JIMÉNEZ PERALTA

8.2.1 CÓDIGO PRINCIPAL:

/*--------------------------------------------------------------- */

/* CONTROL DE TRACCIÓN VEHÍCULO 2X2 */

/*-------------------------------------------------------------- */

/* */

/* FECHA: JUNIO DE 2017 */

/* Grado en ingeniería eléctronica industrial y automática */

/* Universidad de Valladolid */

/* */

/*AUTOR: Roberto Jiménez Peralta */

/* Iván Minguela Benito */

/*[email protected] */

/*-------------------------------------------------------------- */

#include "Control_de_traccion.h"

//---CONFIGURACIÓN DE LOS PINES, DE LAS INTERRUPCIONES Y DEL PUERTO

SERIE---///

void setup()

// Se configura el puerto serie

Serial.begin(9600);

// Se configuran los pines como entradas, salidas y se activan las resistencia

interna pull-up, LOS PINES ANALÓGICOS NO HACE FALTA CONFIGURARLOS

COMO ENTRADAS O COMO SALIDAS

pinMode(HALL_TRASERO, INPUT); // Declaramos el pin donde se conecta el

sensor hall trasero como entrada. Es analógico no es necesario configurarlo

como entrada o salida

pinMode(HALL_DELANTERO, INPUT); // Declaramos el pin donde se conecta

el sensor hall delantero como entrada.

pinMode(BOTON_ON_OFF, INPUT_PULLUP); // Declaramos el pin del botón

como entrada y habilitamos la resistencia pull-up interna

pinMode(BOTON_2X2_2X1, INPUT_PULLUP); // Declaramos el pin del botón

como entrada y habilitamos la resistencia pull-up interna

pinMode(LED_2X2_2X1, OUTPUT); //declaramos el pin del led como salida

pinMode(LED_ON_OFF, OUTPUT); //declaramos el pin del led como salida

pinMode(TRACCION, OUTPUT); //declaramos el pin del led como salida

pinMode(controlador_delantero, OUTPUT); // Declaramos el pin al que se

conectará el motor delantero como salida

pinMode(tension_vumetro, OUTPUT);

/*CONFIGURACIÓN DE LAS INTERRUPCIONES*/

cli(); //deshabilitamos las interrupciones globales

EIMSK |= (1 << INT0); //Declaramos el uso de las interrupcion 0

EICRA |= ((1 << ISC01) | (1 << ISC00)); //Definimos que la deteccion sea por

flanco ascendente. Tambien podemos usar cualquiera de los dos o "EICRA" o

"MCUCR" -> MCUCR |= ((1<<ISC01) |(1<<ISC00));

PCICR |= (1 << PCIE1); // SE HABILITA INTERRUPCION POR CAMBIO DE PIN Y

AHORA SE UBICARA LA INTERRUPCION 1 ENTRE LOS PINES PCINT14-8 CON EL

Page 115: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 115

CAMBIO DE PIN AHORA LA DETECCIÓN SERÁ POR CAMBIO DE ESTADO YA SEA

ASCENDENTE O DESCENDENTE Y ESTO NO SE PUEDE CAMBIAR

PCMSK1 |= (1 << PCINT8); //SELECCIONAMOS EN PIN PCINT 11 PARA QUE

SEA LA INTERRUPCIÓN 1 QUE QUIVALE AL PIN A3.

sei(); // habilitamos las interrupciones globales

lcd.begin (16, 2); //se inicializa la pantalla LCD de 16 caracteres y dos filas

lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE); //Se enciende la luz de fondo

de la pantalla

lcd.setBacklight(LED_ON);

//Se crean los nuevos caracteres

lcd.createChar (0, bat_1);

lcd.createChar (1, bat_2);

lcd.setCursor(4, 0);

lcd.print("WELCOME");

lcd.setCursor(5, 1);

lcd.print("VELO");

delay (2000);

//La lectura de voltaje tiene mucho ruido, por lo que se va a usar la media

móvil para filtrar el ruido

for (int i = 0; i < SAMPLES_TO_AVERAGE; i++)

volatile int voltaje = analogRead (lectura_voltaje);

voltaje_leido = map (voltaje, 0, 1023, 0, 500); //Se mapea entre 0-500 para

despues dividir entre 100 y obtener un valor con dos difras decimales

voltaje_leido = voltaje_leido / 100; //Se deja el valor con dos

decimales

voltaje_filtrado = voltaje_filtrado + (voltaje_leido - voltaje_filtrado)/

SAMPLES_TO_AVERAGE; //Se emplea la fórmula de la media móvil

acumulativa

lcd.clear();

/*FUNCIONES A LAS QUE SE LLAMA CON LAS INTERRUPCIONES*/

ISR(PCINT1_vect) // SENSOR TRASERO AL PIN 3

// Rutina de servicio de interrupción. Cada PCInt 8..14

//UN CAMBIO EN LOS PINES ANALÓGICOS DEL 0 AL 5 generará una

interrupción: pero esto

//será siempre la misma rutina de interrupción

// handle pin change interrupt for A0 to A5 here

if (digitalRead(HALL_TRASERO) == HIGH)// MIRAR SI SE PUEDE PONER COMO

IF (PINC & (1<<PINC3) == 1) QUE SUPUESTAMENTE REALIZARÍA LO MISMO ES

SI EL PIN A3 HA CAMBIADO Y ESTÁ A 1

Page 116: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 116 ROBERTO JIMÉNEZ PERALTA

/* PCINT11 HA TENIDO UN FLANCO POSITIVO */

CONTADOR_TRASERO++;

rpm++; //Se cuentan las revoluciones por minuto para calcular la velocidad

ISR(INT0_vect) // SENSOR DELANTERO AL PIN 2

CONTADOR_DELANTERO++; // AUMENTAMOS EL CONTADOR DE FLANCOS

ASCENDENTES DE LA RUEDA DELANTERA

/*FIN DE FUNCIONES A LAS QUE SE LLAMA CON LAS INTERRUPCIONES*/

/*---------------------------------------------*/

//---PROGRAMA PRINCIPAL---//

void loop()

SELECCION_DEL_MODO(); //Se selecciona el modo de funcionamiento en

funcion de los interruptores

CALCULO_DIFERENCIA(); //Se calcula la diferencia de pulsos de la rueda

delantera y trasera

muestra_velocidad(); //Se muestra a la velocidad a la que se esta circulando

por la pantalla LCD

mostrar_potencia (); //Se muestra la potencia que se está enviando a la

rueda delantera

leer_tension (); //Funcion que lee el voltaje restante en los

ultracondensadores

//muestra_tension(); //Se muestra el porcentaje de tension en los

ultracondensadores por si se usara una pantalla de 20x4

//que se podria mostrar mas parametros, aunque ahora no fuera necesario

por poder usar el vumetro

//---FIN DEL PROGRAMA PRINCIPAL---//

/* CALCULO DE LA DIFERENCIA DE PULSOS */ // SIN TESTEAR

/*

void CALCULO_DIFERENCIA_DE_PULSOS()

if (tiempo_diferente >= 500000)

if (velocidad_rueda_delantera_final <= 2)

diferencia_pulsos_limite = 1;

Page 117: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 117

else if (2 < velocidad_rueda_delantera_final <= 4.5)

diferencia_pulsos_limite = 2;

else if (4.5 < velocidad_rueda_delantera_final <= 9)

diferencia_pulsos_limite = 3;

else if (9 < velocidad_rueda_delantera_final <= 12)

diferencia_pulsos_limite = 4;

else if (342857.14 <= tiempo_diferente < 500000)

diferencia_pulsos_limite = 3;

else if (230769.24 <= tiempo_diferente < 342857.14)

diferencia_pulsos_limite = 3;

else if (171428.57 <= tiempo_diferente < 230769.24)

diferencia_pulsos_limite = 2;

else if (137931.03 <= tiempo_diferente < 171428.57)

diferencia_pulsos_limite = 2;

*/

/* FIN DEL CALCULO DE LA DIFERENCIA DE PULSOS */

Page 118: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 118 ROBERTO JIMÉNEZ PERALTA

8.2.2 CODIGO CABECERA:

//--- LIBRERÍAS UTILIZADAS --- //

#include <avr/interrupt.h> // Librería necesaria para el uso de las

interrupciones

#include <avr/io.h> // Librería necesaria para la definición de entradas y

salidas y para poder realizar el cambio de pin de la interrupción

#include <Wire.h> //Librería necesaria para la comunicacion por protocolo I2C

con el modulo soldado a la pantalla

#include <LiquidCrystal_I2C.h> //Libreria para utilizar la pantalla LCD con el

protocolo I2C

// --------------------------- //

//---ASIGNACIÓN DE LOS PINES UTILIZADOS---//

const int HALL_DELANTERO = 2; //Sensor de efecto hall delantero,

INTERRUPCIÓN 0

const int HALL_TRASERO = A0; //Sensor de efecto hall trasero EN EL PIN A0,

INTERRUPCIÓN 1

const int controlador_delantero = 5; //Pin al que se conectará el controlador

delantero

const int tension_vumetro = 9; //Pin al que se ha conectado la entrada del

vumetro

//se van a añadir solo dos botones y borrar los demas

const int BOTON_ON_OFF = 8;

const int BOTON_2X2_2X1 = 7;

//cuando este activado el on, el funcionamiento depende del otro es decir del

2x2 o el 2x1

//lo mismo se va a hacer con los LED

const int LED_ON_OFF = 12;

const int LED_2X2_2X1 = 11;

const int TRACCION = 13;

const int Regulador_de_potencia = 3; //Pin del regulador es el A3(Analog IN),

COMENTADO

const int Acelerador = 2; // Pin del acelerador es el A2(Analog in)

const int lectura_voltaje = 1; //Pin por donde se lee la carga de los

ultracondensadores

int voltaje_modificado; //Variable donde se guarda el porcentaje de carga que

queda

int bateria_baja = 0; //Variable que indica si el convertidor no puede aumentar

la tension hasta 36 V

//Cero cuando esta bien, 1 cuando esta baja y 2 cuando ya no

pueden funcionar los motores

int volt_traducido_vumetro; //Voltaje a sacar por el pin 9 de arduino para que

cuando haya 18 V, en la salida haya 0 V

Page 119: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 119

float voltaje_leido = 0; //Voltaje entre 0 y 5 voltios que se tiene en el pin de

lectura

float voltaje_filtrado = 0;

#define SAMPLES_TO_AVERAGE 15

//----------------------------------------//

//---VARIABLES UTILIZADAS---//

int FLAG_0 = 0; // Bandera para solo realizar una vez ciertas acciones cuando

el MODO_0 está activado o desactivado

int FLAG_1 = 0; // Bandera para solo realizar una vez ciertas acciones cuando

el MODO_1 está activado o desactivado

int FLAG_2 = 0; // Bandera para solo realizar una vez ciertas acciones cuando

el MODO_2 está activado o desactivado

int FLAG_3 = 0; // Bandera para solo realizar una vez ciertas acciones cuando

el MODO_3 está activado o desactivado

int MODO_0 = 0; //CUANDO MODO_0 = 1, NOS ENCONTRAMOS EN EL MODO_0

--> 2X1 OFF

int MODO_1 = 0; //CUANDO MODO_1 = 1, NOS ENCONTRAMOS EN EL MODO_1

--> 2X1 ON

int MODO_2 = 0; //CUANDO MODO_2 = 1, NOS ENCONTRAMOS EN EL MODO_2

--> 2X2 OFF

int MODO_3 = 0; //CUANDO MODO_3 = 1, NOS ENCONTRAMOS EN EL MODO_3

--> 2X2 ON

int PRIMERA_VEZ_MODO_0 = 0; // Variable que indica que el MODO_0 a

pasado de inactivo a activo

int UNA_VEZ = 0; // Variable para mantener durante 3 segundos la señal de

Tracción Total

int BLOQUEO = 0; // Variable con la que en Funcionamiento Tracción Total, se

indica que si en 3 segundos se produce funcionamiento normal se ignora.

int valor_regulador = 0; // Variable en la que se almacena el valor del regulador

de potencia

double valor_nuevo = 1.0; // Variable con la que indicaremos el valor de

nuestro regulador ente 0 y 1 con escalones de 0.1

int valor_acelerador = 0; // Variable en la que se almacena el valor del

acelerador

int valor_acelerador_traducido = 0; // Variable en la que se almacena el valor

de tensión que se deberá de mandar al controlador delantero

double valor_acelerador_traducido_float = 0.0; // Variable en la que se

almacena el valor de tensión que se deberá de mandar al controlador delantero

pero del tipo coma flotante

double proporcion_acelerador = 0.8; //Este valor sería ajustable por el piloto

vía software. Es el valor por el cual se multiplica la señal en modo Tracción

Proporcional

int diferencia = 0; // variable en la que guardamos la diferencia entre los

contadores de flancos ascendentes entre la rueda trasera y la rueda delantera

Page 120: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 120 ROBERTO JIMÉNEZ PERALTA

double diferencia_filtrada = 0.0; // Variable en la que guardamos la diferencia

entre los contadores de los flancos ascendentes de la rueda trasera y los de la

rueda delantera, depués del filtro

const long tiempo_calculo_diferencia = 200000; // Tiempo en el que se cuenta

los flancos positivos para después realizar la comparación de ellos. LA

COMPARACIÓN DE FLANCOS SE REALIZA CADA 0.5 SEGUNDOS

long tiempo_diferente = 0; // Variable en la que guardamos el tiempo en que

se tarda en entrar de nuevo en el bucle de comparación de velocidades desde

la última vez

long tiempo_anterior = 0; // Tiempo en el que se realizó el último bucle

unsigned long tiempo_actual = 0; // Tiempo actual del programa

volatile int CONTADOR_TRASERO; // Contador de la rueda trasera en el que se

contabiliza el número de flancos ascendentes detectados en la señal que

manda el sensor hall trasero.

volatile int CONTADOR_DELANTERO; // Contador de la rueda delantera en el

que se contabiliza el número de flancos ascendentes detectados en la señal

que manda el sensor hall delantero.

int PULSOS_LIMITE = 12; // PULSOS LÍMITE CON LOS QUE PARTIMOS

INICIALMENTE HASTA LOS CUALES CONTARAN LOS CONTADORES SI NO SE

SUPERA EL MEDIO SEGUNDO, ESTE SEMANTIENE CONSTANTE

int diferencia_pulsos_limite = 3; // DIFERENCIA DE FLANCOS ASCENDENTES

CON LA CUAL SE TOMARÁN LAS DECISIONES.

volatile int velocidad_rueda_trasera = 0; // Aquí se guarda el contaje de flancos

ascendentes de la rueda trasera

volatile int velocidad_rueda_delantera = 0; // Aquí se guarda el contaje de

flancos ascendentes de la rueda delantera

double velocidad_rueda_trasera_final = 0.0; // Contaje de flancos

ascendentes de la rueda trasera filtrado

double velocidad_rueda_delantera_final = 0.0; // Contaje de flancos

ascendentes de la rueda delantera filtrado

double velocidad_rueda_trasera_final_anterior = 0.0; // Cantidad de flancos

ascendentes de la rueda trasera filtrada contabilizados en la anterior

comparación de velocidades

double velocidad_rueda_delantera_final_anterior = 0.0; // Cantidad de flancos

ascendentes de la rueda delantera filtrada contabilizados en la anterior

comparación de velocidades

long t_actual = millis (); //se guarda en esta variable el tiempo actual para

saber la diferencia entre los pulsos

volatile int rpm = 0; //variable donde se va a guardar la velocidad en rpm de la

rueda delantera

float vel_lineal = 0; //Se guarda la velocidad lineal en esta variable

float pi = 3.1416; // Número PI

float DIAMETRO_RUEDA = 0.4064; // Diámetro de la rueda

Page 121: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 121

float velocidad_RD_float = 0.0; // SEÑAL A COMANDAR AL MOTOR DELANTERO

EN COMA FLOTANTE

int velocidad_RD_int = 0; // SEÑAL A COMANDAR AL MOTOR DELANTERO

(ENTERO)

unsigned long tiempo_anterior_PID = 0.0; // Tiempo en el que finalizó el último

control realizado por el PID

unsigned long Ahora_PID = 0.0; // tiempo en el que se está volviendo a ejecutar

el nuevo control del PID

volatile double Error = 0.0; // Diferencia de flancos ascendentes filtrados entre

la rueda trasera y delantera

volatile double salida = 0.0, errorDer = 0.0, Error_anterior = 0.0, errorsum =

0.0, errorProp = 0.0; // Definición de distintas variables para la realización el

PID

double kp = 0.08, ki = 0.9, kd = 10000; // Término proporcional, integral y

derivativo

double dT = 0.0; // Tiempo que tarda en volverse a ejecutar el control

double dT_distinto = 0.0; // Tiempo que tarda en volverse a ejecutar la

comparación de flancos ascendentes para los filtros de las señales de los

sensores Hall

unsigned long tiempo_anterior_mantener_traccion = 0.0; // tiempo anterior

para mantener la señal al motor delantero en caso de pérdida de tracción de

la rueda trasera

unsigned long tiempo_mantener_traccion = 0.0; // tiempo para mantener la

señal al motor delantero en caso de pérdida de tracción de la rueda trasera

//---VARIABLES PARA IDENTIFICAR CUANDO SE DA TENSÍON AL MOTOR

DELANTERO UTILIZANDO EL PID Y CUANDO NO---//

boolean Automatico = false; // INICIALIZAMOS LA VARIABLE

boolean nuevo_Automatico = false; // INICIALIZAMOS LA VARIABLE

#define FuncionamientoManual 0 // SE PROPORCIONA TENSIÓN MÍNIMA O

PROPORCIONAL AL ACELERADOR AL MOTOR DELANTERO

#define FuncionamientoAutomatico 1 // SE PROPORCIONA TENSÍON A TRAVÉS

DEL PID AL MOTOR DELANTERO

//--- ---//

//----------------------------------------//

//---DECLARACION DE LA PANTALLA LCD Y SUS VARIABLES---//

#define I2C_ADDR 0x3F //Direccion comprobada con otro sketch para saber

la direccion de memoria del modulo 0x3F 0x27

#define BACKLIGHT_PIN 3

#define En_pin 2

#define Rw_pin 1

#define Rs_pin 0

#define D4_pin 4

#define D5_pin 5

#define D6_pin 6

Page 122: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 122 ROBERTO JIMÉNEZ PERALTA

#define D7_pin 7

#define LED_OFF LOW

#define LED_ON HIGH

LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin,

D6_pin, D7_pin);

//--CREACIÓN DEL CARACTER BATERIA--//

byte bat_1[8] = //Primer caracter de bateria

B00100,

B11111,

B10000,

B10100,

B11110,

B10100,

B10000,

B11111,

;

byte bat_2[8] = //Segundo caracter de bateria

B00100,

B11111,

B00001,

B00001,

B01101,

B00001,

B00001,

B11111,

;

Page 123: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 123

8.2.3 SELECCIÓN DEL MODO DE FUNCIONAMIENTO:

/* FUNCIÓN CON LA QUE SELECCIONAMOS EL MODO DE FUNCIONAMIENTO */

void SELECCION_DEL_MODO()

// Leemos el valor de los botones y lo guardamos en una variable

int VALOR_ON_OFF = digitalRead (BOTON_ON_OFF);

int VALOR_2X2_2X1 = digitalRead (BOTON_2X2_2X1);

/*Hay que tener en cuenta que las resistencias pull-up

invierten la lógica de los pulsadores. En el pin obtendremos

nivel ALTO cuando el pulsador esté sin pulsar y BAJO cuando

el interruptor esté pulsado.*/

if (VALOR_ON_OFF == HIGH && VALOR_2X2_2X1 == HIGH) // SI EL SWITCH ESTÁ EN

LA POSICIÓN 2X1 OFF

if (bateria_baja == 0 || bateria_baja == 1) //Si la bateria es correcta o esta baja

lcd.setCursor(0, 1);

lcd.print("2x1 off");

if (FLAG_0 == 0) // PARA SOLO REALIZARLO UNA VEZ

digitalWrite (LED_ON_OFF, LOW);// DE MOMENTO COMENTADO, SE APAGA EL LED

QUE INDICA QUE EL MODO_0 ESTÁ ACTIVADO

digitalWrite (LED_2X2_2X1, LOW);

//Serial.println("MODO 2X1 OFF\t"); // SE MUESTRA POR PANTALLA QUE ESTAMOS

EN EL MODO 2X1 OFF

sei();// HABILITAMOS LAS INTERRUPCIONES

MODO_0 = 1; // ESTÁ SELECCIONADO EL MODO 0

Serial.println ("Modo 0");

FLAG_0 = 1;

PRIMERA_VEZ_MODO_0 = 1; // CADA VEZ QUE CAMBIEMOS ESTE MODO ESTA

VARIABLE SE PONDRÁ A 1

else // SI EL SWITCH NO ESTÁ EN LA POSICIÓN 2X1 OFF

if (FLAG_0 == 1) // PARA SOLO REALIZARLO UNA VEZ

FLAG_0 = 0;

MODO_0 = 0; // NO ESTÁ SELECCIONADO EL MODO 0

if (VALOR_ON_OFF == LOW && VALOR_2X2_2X1 == HIGH) // SI EL SWITCH ESTÁ EN

LA POSICIÓN 2X1 ON

Page 124: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 124 ROBERTO JIMÉNEZ PERALTA

if (bateria_baja == 0 || bateria_baja == 1)//Si la bateria es correcta o esta baja

lcd.setCursor(0, 1);

lcd.print("2x1 on ");

if (FLAG_1 == 0) // PARA SOLO REALIZARLO UNA VEZ

digitalWrite (LED_ON_OFF, HIGH);

digitalWrite (LED_2X2_2X1, LOW);

FLAG_1 = 1;

MODO_1 = 1; // ESTÁ SELECCIONADO EL MODO 1

Serial.println ("Modo 1");

CONTADOR_TRASERO = 0; // SE INICIALIZA EL CONTADOR CADA VEZ QUE

CAMBIEMOS DE MODO

CONTADOR_DELANTERO = 0; // SE INICIALIZA EL CONTADOR CADA VEZ QUE

CAMBIEMOS DE MODO

tiempo_anterior = tiempo_actual; // SE ACTUALIZA EL VALOR DEL TIEMPO EN EL

QUE SE REALIZÓ EL BUCLE ANTERIOR DE COMPARACION DE FLANCOS ENTRE LAS

RUEDAS

tiempo_anterior_PID = tiempo_actual; // SE ACTUALIZA EL VALOR DEL TIEMPO EN

EL QUE SE EJECUTÓ EL PID ANTERIOR

sei();// HABILITAMOS LAS INTERRUPCIONES

//Serial.println("MODO 2X1 ON\t"); // SE MUESTRA POR PANTALLA QUE ESTAMOS

EN EL MODO 2X1 ON

else // SI EL SWITCH NO ESTÁ EN LA POSICIÓN 2X1 ON

if (FLAG_1 == 1) // PARA SOLO REALIZARLO UNA VEZ

FLAG_1 = 0;

MODO_1 = 0; // NO ESTÁ SELECCIONADO EL MODO 1

if (VALOR_ON_OFF == HIGH && VALOR_2X2_2X1 == LOW) // SI EL SWITCH ESTÁ EN

LA POSICIÓN 2X2 OFF

if (bateria_baja == 0 || bateria_baja == 1)//Si la bateria es correcta o esta baja

lcd.setCursor(0, 1);

lcd.print("2x2 off");

if (FLAG_2 == 0) // PARA SOLO REALIZARLO UNA VEZ

digitalWrite (LED_ON_OFF, LOW);

digitalWrite (LED_2X2_2X1, HIGH);

FLAG_2 = 1;

Page 125: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 125

MODO_2 = 1; // ESTÁ SELECCIONADO EL MODO 2

Serial.println ("Modo 2");

CONTADOR_TRASERO = 0; // SE INICIALIZA EL CONTADOR CADA VEZ QUE

CAMBIEMOS DE MODO

CONTADOR_DELANTERO = 0; // SE INICIALIZA EL CONTADOR CADA VEZ QUE

CAMBIEMOS DE MODO

tiempo_anterior = tiempo_actual; // SE ACTUALIZA EL VALOR DEL TIEMPO EN EL

QUE SE REALIZÓ EL BUCLE ANTERIOR DE COMPARACION DE FLANCOS ENTRE LAS

RUEDAS

tiempo_anterior_PID = tiempo_actual; // SE ACTUALIZA EL VALOR DEL TIEMPO EN

EL QUE SE EJECUTÓ EL PID ANTERIOR

sei();// HABILITAMOS LAS INTERRUPCIONES

//Serial.println("MODO 2X2 OFF\t"); // SE MUESTRA POR PANTALLA QUE ESTAMOS

EN EL MODO 2X2 OFF

else // SI EL SWITCH NO ESTÁ EN LA POSICIÓN 2X2 OFF

if (FLAG_2 == 1) // PARA SOLO REALIZARLO UNA VEZ

FLAG_2 = 0;

MODO_2 = 0; // NO ESTÁ SELECCIONADO EL MODO 2

if (VALOR_ON_OFF == LOW && VALOR_2X2_2X1 == LOW) // SI EL SWITCH ESTÁ EN

LA POSICIÓN 2X2 ON

if (bateria_baja == 0 || bateria_baja == 1)//Si la bateria es correcta o esta baja

lcd.setCursor(0, 1);

lcd.print("2x2 on ");

if (FLAG_3 == 0) // PARA SOLO REALIZARLO UNA VEZ

digitalWrite (LED_ON_OFF, HIGH); // DE MOMENTO COMENTADO, SE ENCIENDE EL

LED QUE INDICA QUE EL MODO_1 ESTÁ ACTIVADO

digitalWrite (LED_2X2_2X1, HIGH);

FLAG_3 = 1;

MODO_3 = 1; // ESTÁ SELECCIONADO EL MODO 3

Serial.println ("Modo 3");

CONTADOR_TRASERO = 0; // SE INICIALIZA EL CONTADOR CADA VEZ QUE

CAMBIEMOS DE MODO

CONTADOR_DELANTERO = 0; // SE INICIALIZA EL CONTADOR CADA VEZ QUE

CAMBIEMOS DE MODO

tiempo_anterior = tiempo_actual; // SE ACTUALIZA EL VALOR DEL TIEMPO EN EL

QUE SE REALIZÓ EL BUCLE ANTERIOR DE COMPARACION DE PULSOS ENTRE LAS

RUEDAS

Page 126: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 126 ROBERTO JIMÉNEZ PERALTA

tiempo_anterior_PID = tiempo_actual; // SE ACTUALIZA EL VALOR DEL TIEMPO EN

EL QUE SE EJECUTÓ EL PID ANTERIOR

sei();// HABILITAMOS LAS INTERRUPCIONES

//Serial.println("MODO 2X2 ON\t"); // SE MUESTRA POR PANTALLA QUE ESTAMOS

EN EL MODO 2X2 ON

else // SI EL SWITCH NO ESTÁ EN LA POSICIÓN 2X2 ON

if (FLAG_3 == 1) // PARA SOLO REALIZARLO UNA VEZ

FLAG_3 = 0;

MODO_3 = 0; // NO ESTÁ SELECCIONADO EL MODO 3

/* FIN FUNCIÓN CON LA QUE SELECCIONAMOS EL MODO DE FUNCIONAMIENTO */

Page 127: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 127

8.2.4 CALCULO DE LA DIFERENCIA DE PULSOS:

void CALCULO_DIFERENCIA ()

tiempo_actual = micros(); // GUARDAMOS EL TIEMPO ACTUAL

if ((MODO_0 == 1) && (PRIMERA_VEZ_MODO_0 == 1)) // SI NOS ESTAMOS EN EL

MODO 0 Y ES LA PRIMERA VEZ QUE SE HA ENTRADO EN EL MODO0

COMPENSAR_ESFUERZO();

UNA_VEZ = 0;

BLOQUEO = 0;

PRIMERA_VEZ_MODO_0 = 0;

if (((tiempo_actual - tiempo_anterior >= tiempo_calculo_diferencia) ||

(CONTADOR_DELANTERO >= PULSOS_LIMITE)) && (MODO_0 == 0) && (MODO_1 ==

1 || MODO_2 == 1 || MODO_3 == 1)) // SI ESTAMOS EN LOS MODOS 1,2,3 Y SI HA

PASADO UN TIEMPO DE 0.2 SEGUNDOS O SE HAN CONTADO 12 PULSOS O MAS EN LA

RUEDA DELANTERA

cli();//DESHABILITAMOS INTERRUPCIONES

tiempo_diferente = (tiempo_actual - tiempo_anterior);

dT_distinto = tiempo_diferente;

velocidad_rueda_trasera = CONTADOR_TRASERO;

velocidad_rueda_delantera = CONTADOR_DELANTERO;

diferencia = (velocidad_rueda_trasera - velocidad_rueda_delantera);

velocidad_rueda_trasera_final = (((velocidad_rueda_trasera * 50 * dT_distinto /

1000000) + (velocidad_rueda_trasera_final_anterior)) / (1 + ((50 * dT_distinto) /

1000000)))/** (TRACCION_PROP*valor_regulador_potencia)*/;

velocidad_rueda_delantera_final = ((velocidad_rueda_delantera * 50 * dT_distinto

/ 1000000) + (velocidad_rueda_delantera_final_anterior)) / (1 + ((50 * dT_distinto) /

1000000));

diferencia_filtrada = (velocidad_rueda_trasera_final -

velocidad_rueda_delantera_final);

//CALCULO_DIFERENCIA_DE_PULSOS; // DE MOMENTO LO QUITO DESPUÉS

PONERLO

FUNCION_REGULACCION_DE_POTENCIA;

TOMA_DE_DECISIONES;

CONTADOR_TRASERO = 0;

CONTADOR_DELANTERO = 0;

tiempo_anterior = tiempo_actual;

velocidad_rueda_delantera_final_anterior = velocidad_rueda_delantera_final;

velocidad_rueda_trasera_final_anterior = velocidad_rueda_trasera_final;

sei();// HABILITAMOS INTERRUPCIONES

/* FIN FUNCIÓN CON LA QUE CALCULAMOS LA DIFERENCIA DE PULSOS */

Page 128: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 128 ROBERTO JIMÉNEZ PERALTA

8.2.5 TOMA DE DECISIONES:

/* FUNCIÓN CON LA QUE TOMAMOS LAS DECISIONES */

void TOMA_DE_DECISIONES()//La toma de decisiones sólo se realiza en los modos 0,

1 y 2

if ((-diferencia_pulsos_limite < diferencia_filtrada) && (diferencia_filtrada <

diferencia_pulsos_limite) && (BLOQUEO == 0)) // FUNCIONAMIENTO NORMAL

// SI LAS VELOCIDADES DE LAS RUEDAS SON APROXIMADAMENTE IGUALES Y NO

SE HA DETECTADO TRACCIÓN TOTAL ANTERIORMENTE DURANTE 3 SEGUNDOS

UNA_VEZ = 0;

digitalWrite (TRACCION, LOW);

if (MODO_1) // SI ESTAMOS EN EL MODO 1

//Serial.println(" FUNCIONAMIENTO NORMAL, COMPENSANDO ESFUERZO EN

MODO 1\t");

COMPENSAR_ESFUERZO();

// SE LLAMA A ESTA FUNCIÓN PARA DAR UNA TENSIÓN MÍNIMA A LA RUEDA

DELANTERA

else if (MODO_2 || MODO_3) // SI ESTAMOS EN EL MODO 2 Ó 3

//Serial.println("FUNCIONAMIENTO NORMAL, TRACCIÓN PROPORCIONAL EN

MODO 2 Ó 3\t");

TRACCION_PROPORCIONAL();

//LA TRACCIÓN DELANTERA ES UN TANTO POR CIENTO PROPORCIONAL AL

ACELERADOR Y PROPORCIONAL AL REGULADOR DE POTENCIA

// FIN FUNCIONAMIENTO NORMAL

else if (diferencia_filtrada <= -diferencia_pulsos_limite) // SI LA RUEDA DELANTERA

VA MAS DEPRISA QUE LA RUEDA TRASERA

// FUNCIONAMIENTO RUEDA DELANTERA EN EL AIRE

//Serial.println("FUNCIONAMIENTO RD AL AIRE COMPENSANDO ESFUERZO EN

MODO 1 2 Ó 3\t");

COMPENSAR_ESFUERZO(); // SE LLAMA A ESTA FUNCIÓN PARA DAR UNA TENSIÓN

MÍNIMA A LA RUEDA DELANTERA

BLOQUEO = 0;

UNA_VEZ = 0;

digitalWrite (TRACCION, LOW);

// FIN FUNCIONAMIENTO RUEDA DELANTERA EN EL AIRE

else if ((diferencia_filtrada >= diferencia_pulsos_limite) || (BLOQUEO == 1)) // SI LA

RUEDA TRASERA VA MAS DEPRISA QUE LA RUEDA DELANTERA

// FUNCIONAMIENTO PÉRDIDA DE TRACCIÓN EN LA RUEDA TRASERA (DERRAPE)

digitalWrite (TRACCION, HIGH);

if ((MODO_2) && (diferencia_filtrada >= diferencia_pulsos_limite)) // SI ESTAMOS

EN EL MODO 2

//Serial.println("FUNCIONAMIENTO DERRAPE, TRACCION PROPORCIONAL MODO

2\t");

TRACCION_PROPORCIONAL();

//LA TRACCIÓN DELANTERA ES UN TANTO POR CIENTO PROPORCIONAL AL

ACELERADOR Y PROPORCIONAL AL REGULADOR DE POTENCIA

Page 129: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 129

else if (MODO_1 || MODO_3) // SI ESTAMOS EN EL MODO 1 Ó 3

if (diferencia_filtrada > -diferencia_pulsos_limite) // PARA QUE PUEDA OCURRIR

TANTO EN DERRAPE COMO EN NORMAL DURANTE 3 SEGUNDOS

//SI NO ESTÁ LA RUEDA DELANTERA EN EL AIRE

tiempo_mantener_traccion = micros();

if (UNA_VEZ == 0)

BLOQUEO = 1; // PARA MANTENER LA SEÑAL DURANTE 3 SEGUNDOS A

EXCEPCCIÓN DE QUE LA RUEDA DELANTERA GIRE MÁS DEPRISA QUE LA TRASERA

tiempo_anterior_mantener_traccion = tiempo_mantener_traccion;

UNA_VEZ = 1;

if (tiempo_mantener_traccion - tiempo_anterior_mantener_traccion > 3000000)

BLOQUEO = 0; // PASADOS 3 SEGUNDOS LA SEÑAL NO SE MANTIENE A NO SER

QUE VUELVA A DETECTARSE PÉRDIDA DE TRACCIÓN EN LA RUEDA TRASERA

//Serial.println("FUNCIONAMIENTO DERRAPE, TRACCION TOTAL MODO 1 Y 3\t");

PID(); // SE LLAMA A LA FUNCIÓN PID

// FIN DE SI NO ESTA LA RUEDA EN EL AIRE

//FIN MODO 1 Ó 3

//FIN FUNCIONAMIENTO PÉRDIDA DE TRACCIÓN EN LA RUEDA TRASERA (DERRAPE)

/* FIN FUNCIÓN CON LA QUE TOMAMOS LAS DECISIONES */

Page 130: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 130 ROBERTO JIMÉNEZ PERALTA

8.2.6 PID:

/* REALIZACIÓN DEL PID*/

void PID()

nuevo_Automatico = FuncionamientoAutomatico;

Ahora_PID = micros(); // Tiempo actual en el que se produce el PID

dT = (Ahora_PID - tiempo_anterior_PID); // ASÍ SE GUARDA EN UNA VARIABLE EL

TIEMPO DESDE QUE SE PRODUJO EL PID ANTERIOR Y EL NUEVO

Error = (velocidad_rueda_trasera_final - velocidad_rueda_delantera_final); // PARA

CALCULAR EL ERROR O DIFERENCIA DE FLANCOS ASCENDENTES CONTABILIZADOS EN

UN TIEMPO DETERMINADO ENTRE LAS RUEDAS

if (nuevo_Automatico && !Automatico) // SI SE PROVIENE DE UN MODO DE DAR

TENSIÓN AL CONTROLADOR DELANTERO QUE NO SEA MEDIANTE EL PID

Inicializar(); // Para inicializar el PID cada vez que pasemos de un modo de

funcionamiento en el que no se utilice el PID

//Serial.println("Inicializamos PID");

errorProp = kp * Error; // SE CALCULA LA PARTE PROPORCIONAL DEL PID

// se limita el error proporcional

if (errorProp > 3.8)

errorProp = 3.8; // Límite superior

else if (errorProp < -3.8)

errorProp = -3.8; // Límite inferior

errorsum += (Error * dT * ki / 1000000); // es igual que errorsum = errorsum +

Error*dT*ki/1000000000 la división entre 1000000000 es para ponerlo en función

de microsegundos

// SE CALCULA LA PARTE INTEGRAL DEL PID

//hay que limitar el error integral que es el errorsum

if (errorsum > 3.8)

errorsum = 3.8; // Límite superior

else if (errorsum < 0.54)

errorsum = 0.54; // Límite inferior

errorDer = ((Error - Error_anterior) * kd) / dT; // no se multiplica por 1000000 porque

kd lo va a absorber // SE CALCULA LA PARTE DERIVATIVA DEL PID

// se limita el error derivativo

if (errorDer > 2)

errorDer = 2; // Límite superior

else if (errorDer < -2)

Page 131: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 131

errorDer = -2; // Límite inferior

salida = ((errorsum) + errorProp + errorDer); // LA SALIDA DEL PID TOTAL ES LA SUMA

DE TODAS LOS TÉRMINOS, EL PROPORCIONAL, EL INTEGRAL Y EL DERIVATIVO

//hay que limitar la salida total

if (salida > 3.8)

salida = 3.8; // Límite superior

else if (salida < 0.54)

salida = 0.54; // Límite inferior

else

//No se hace nada pues se queda como está

velocidad_RD_float = ((salida * (31.4)) + 80); // SE TRADUCE ESA SEÑAL DE TENSIÓN

A VALORES ENTRE 0 Y 255 (0 Y 5 VOLTIOS) Y SE REALIZA DE ESTA FORMA PARA QUE

AMBOS MOTORES EMPIECEN A FUNCIONAR A LA VEZ

velocidad_RD_int = velocidad_RD_float;

if (velocidad_RD_float - velocidad_RD_int > 0.5)

velocidad_RD_int += 1;

velocidad_RD_int = constrain(velocidad_RD_int, 0, 165); // Se limita la señal a

comandar al motor delantero

Mandar_al_controlador();

//--------------------------------------------------

Error_anterior = Error; // Se guarda la diferencia de flancos ascendentes anterior

Automatico = nuevo_Automatico;

tiempo_anterior_PID = Ahora_PID; // Se guarda el tiempo en el que se realizó el

último PID

/* FIN REALIZACIÓN DEL PID*/

Page 132: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 132 ROBERTO JIMÉNEZ PERALTA

8.2.7 REGULACIÓN DE POTENCIA:

/* FUNCIÓN REGULACIÓN DE POTENCIA */

void FUNCION_REGULACCION_DE_POTENCIA()

valor_regulador = analogRead(Regulador_de_potencia); // Guardamos el valor del

acelerador

if (valor_regulador <= 100)

valor_nuevo = 0.1;

else if (100 < valor_regulador && valor_regulador <= 200)

valor_nuevo = 0.2;

else if (200 < valor_regulador && valor_regulador <= 300)

valor_nuevo = 0.3;

else if (300 < valor_regulador && valor_regulador <= 400)

valor_nuevo = 0.4;

else if (400 < valor_regulador && valor_regulador <= 500)

valor_nuevo = 0.5;

else if (500 < valor_regulador && valor_regulador <= 600)

valor_nuevo = 0.6;

else if (600 < valor_regulador && valor_regulador <= 700)

valor_nuevo = 0.7;

else if (700 < valor_regulador && valor_regulador <= 800)

valor_nuevo = 0.8;

else if (800 < valor_regulador && valor_regulador <= 900)

valor_nuevo = 0.9;

else// (900 < valor_regulador && valor_regulador <= 1023)

valor_nuevo = 1.0;

//Serial.println(valor_regulador);

//Serial.println(valor_nuevo);

/* FIN FUNCIÓN REGULACIÓN DE POTENCIA */

Page 133: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 133

8.2.8 COMPENSAR ESFUERZO:

/*-----FUNCIÓN COMPENSAR ESFUERZO-----*/

void COMPENSAR_ESFUERZO()

Automatico = FuncionamientoManual;

nuevo_Automatico = FuncionamientoManual;

velocidad_RD_int = 80; // esto es lo que tenía calculado inicialmente QUE

CORRESPONDE A LA TENSIÓN MÍNIMA QUE DAR A LA RUEDA DELANTERA PARA QUE

LOS IMANES DEJEN DEEJERCER OPOSICIÓN AL GIRO DE LA RUEDA

analogWrite(controlador_delantero, velocidad_RD_int);

tiempo_anterior_PID = micros();

/*-----FIN FUNCIÓN COMPENSAR ESFUERZO-----*/

Page 134: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 134 ROBERTO JIMÉNEZ PERALTA

8.2.9 TRACCIÓN PROPORCIONAL:

/* FUNCION PARA DAR UNA TRACCIÓN UN TANTO POR CIENTO PROPORCIONAL */

void TRACCION_PROPORCIONAL()

Automatico = FuncionamientoManual;

nuevo_Automatico = FuncionamientoManual;

valor_acelerador = analogRead(Acelerador); // LEEMOS EL VALOR QUE LLEGA POR

EL PIN AL QUE SE CONECTA EL ACELERADOR

valor_acelerador_traducido = map(valor_acelerador, 0, 1023, 18, 255); // Con el

mapeado conseguimos que ambas ruedas empiecen a funcionar a la vez pero no

significa que ambas ruedas circulen constantemente a la misma velocidad.

Serial.println(valor_acelerador_traducido);

if (valor_acelerador_traducido >= 165) // SE LIMITA EL MÁXIMO

valor_acelerador_traducido = 165;

/*valor_acelerador_traducido_float =

valor_acelerador_traducido*proporcion_acelerador*valor_nuevo;

valor_acelerador_traducido = valor_acelerador_traducido_float;

if(valor_acelerador_traducido_float - valor_acelerador_traducido > 0.5)

valor_acelerador_traducido += 1;

*/

analogWrite(controlador_delantero, valor_acelerador_traducido);

tiempo_anterior_PID = micros();

/* FIN FUNCION PARA DAR UNA TRACCIÓN UN TANTO POR CIENTO PROPORCIONAL */

Page 135: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 135

8.2.10 INICIALIZAR:

/* FUNCION QUE INICIALIZA ALGUNOS PARÁMETRO DEL PID AL PASAR DEL MODO

MANUAL AL AUTOMATICO */

void Inicializar()

errorsum = 0.0;

Error_anterior = 0.0;

/* FIN FUNCION QUE INICIALIZA ALGUNOS PARÁMETRO DEL PID AL PASAR DEL MODO

MANUAL AL AUTOMATICO */

Page 136: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 136 ROBERTO JIMÉNEZ PERALTA

8.2.11 MANDAR AL CONTROLADOR:

/*-----FUNCIÓN QUE MANDA LA SEÑAL AL CONTROLADOR-----*/

void Mandar_al_controlador()

if (velocidad_RD_int * valor_nuevo >= 165) // SE LIMITA EL MÁXIMO

valor_acelerador_traducido = 165;

analogWrite(controlador_delantero, 165);

analogWrite(controlador_delantero, (velocidad_RD_int * valor_nuevo));

/*-----FIN FUNCIÓN QUE MANDA LA SEÑAL AL CONTROLADOR-----*/

Page 137: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 137

8.2.12 LEER TENSIÓN:

void leer_tension ()

volatile int voltaje = analogRead (lectura_voltaje); //Se lee el voltaje del pin 0

analogico

voltaje_leido = map (voltaje, 0, 1023, 0, 500); //Se mapea entre 0-500 para

despues dividir entre 100 y obtener un valor con dos difras decimales

voltaje_leido = voltaje_leido / 100; //Se pasa el valor con dos

decimales

voltaje_filtrado = voltaje_filtrado + (voltaje_leido - voltaje_filtrado)/

SAMPLES_TO_AVERAGE; //Se actualiza la media

voltaje_modificado = map (voltaje_filtrado, 0, 1023, 0, 100); //se hace mapea

el voltaje para traducirlo a porcentaje

if (voltaje_filtrado >= 1.88)

voltaje_filtrado = voltaje_filtrado*100; //Se vuelve a pasar con dos

decimales para tener mayor precision

volt_traducido_vumetro = map (voltaje_filtrado, 187, 500, 25, 255); //Se

mapea el valor para poner un 0 cuando en la entrada haya 16 V y un 5 para

cuando haya 0 V

voltaje_filtrado = voltaje_filtrado/100;

else

volt_traducido_vumetro = 0; //Si la tension es menor que 18 V poner 0 V a

la salida siempre

analogWrite (tension_vumetro, volt_traducido_vumetro);

Serial.print (voltaje_filtrado);

Serial.print (" ");

Serial.println (volt_traducido_vumetro);

if (voltaje_filtrado <= 2.60 && voltaje_filtrado >= 1.88) //Voltaje

correspondiente a 25-18 V en los ultacondensadores para indicar que la carga

esta baja

bateria_baja = 1;

lcd.setCursor (7,1);

lcd.print (" ");

lcd.write (byte (0)); //Se imprime el primer caracter de la bateria

lcd.write (byte (1)); //Se imprime el segundo caracter de la bateria

lcd.print (" ");

else if (voltaje_filtrado < 1.88) //Voltaje por debajo de los 18 V que el boost

ya no podria elevar a 36 V

Page 138: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 138 ROBERTO JIMÉNEZ PERALTA

bateria_baja = 2;

else

if (bateria_baja == 2) //se borra la pantalla para eliminar letras no deseadas

lcd.clear ();

else if (bateria_baja == 1) //Se borra el icono de la bateria

lcd.setCursor (8,1);

lcd.print (" ");

else

bateria_baja = 0;

Page 139: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 139

8.2.13 MUESTRA VELOCIDAD:

void muestra_velocidad ()

if (bateria_baja == 0 || bateria_baja == 1) //Si la bateria es correcta o esta baja

//Se producen 16 interrupciones en una vuelta, por lo que habra que tenerlo en

cuenta

if ((millis() - t_actual) > 1000) //se pone a cero cuando se pasa el tiempo de un

segundo

cli(); //deshabilitamos las interrupciones globales para realizar los calculos

vel_lineal = rpm * pi / 8 * 3.6 * DIAMETRO_RUEDA / 2; //V=R*W por lo que hay

que pasar las rpm a rad/s y despues la velocidad lineal que esta en m/s a Km/h

sei(); //habilitamos las interrupciones de nuevo

lcd.setCursor(0, 0); //Se empieza en el caracter 0, de la linea 1

if (vel_lineal < 10)

lcd.print("Speed: ");

lcd.setCursor(7, 0);

lcd.print(vel_lineal);

else

lcd.print("Speed:");

lcd.setCursor(6, 0);

lcd.print(vel_lineal);

lcd.setCursor(11, 0);

lcd.print(" Km/h");//muestra la velocidad con 2 decimal

rpm = 0; //se pone a cero las rpm

t_actual = millis(); //se actualiza el tiempo

else //si no hay bateria

lcd.setCursor (0, 0);

lcd.print(" LOW BATTERY ");

Page 140: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 140 ROBERTO JIMÉNEZ PERALTA

8.2.14 MUESTRA TENSIÓN:

void muestra_tension ()

lcd.setCursor (0, 0);

if (voltaje_modificado < 100 && voltaje_modificado > 9) //Para cuando la tension

este comprendida entre el 10 y el 99 %

lcd.print ("Carga: ");

lcd.setCursor(12, 0);

lcd.print(voltaje_modificado);

else if (voltaje_modificado < 9) //Para cuando la tension este comprendida entre el

0 y el 9%

lcd.print ("Carga: ");

lcd.setCursor(13, 0);

lcd.print(voltaje_modificado);

else //Para cuando la bateria sea del 100%

lcd.print ("Carga: ");

lcd.setCursor(11, 0);

lcd.print(voltaje_modificado);

lcd.setCursor(14, 0); //Se empieza en el caracter 0, de la linea 1

lcd.print(" %");

Page 141: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 141

8.2.15 MUESTRA POTENCIA:

void mostrar_potencia ()

if (bateria_baja == 0 || bateria_baja == 1) //Si la bateria es correcta o esta

baja

valor_regulador = analogRead(Regulador_de_potencia); // Guardamos el

valor del acelerador

if (valor_regulador <= 100)

valor_nuevo = 0.1;

else if (100 < valor_regulador && valor_regulador <= 200)

valor_nuevo = 0.2;

else if (200 < valor_regulador && valor_regulador <= 300)

valor_nuevo = 0.3;

else if (300 < valor_regulador && valor_regulador <= 400)

valor_nuevo = 0.4;

else if (400 < valor_regulador && valor_regulador <= 500)

valor_nuevo = 0.5;

else if (500 < valor_regulador && valor_regulador <= 600)

valor_nuevo = 0.6;

else if (600 < valor_regulador && valor_regulador <= 700)

valor_nuevo = 0.7;

else if (700 < valor_regulador && valor_regulador <= 800)

valor_nuevo = 0.8;

else if (800 < valor_regulador && valor_regulador <= 900)

valor_nuevo = 0.9;

else// (900 < valor_regulador && valor_regulador <= 1023)

valor_nuevo = 1.0;

Page 142: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 142 ROBERTO JIMÉNEZ PERALTA

lcd.setCursor(0, 1); //Se empieza en el caracter 0, de la linea 2

if (valor_nuevo == 1) //Si la potencia seleccionada es 100% se hace un

espacio menos para conseguir

//El signo de % al final del todo

//lcd.print("Power: ");

lcd.setCursor(11, 1);

lcd.print(valor_nuevo * 100, 0);

else //Si la potencia seleccionada es menor del 100% se

pone un espacio de más por

//la misma razon que antes

//lcd.print("Power: ");

lcd.setCursor(11, 1);

lcd.print(" ");

lcd.setCursor(12, 1);

lcd.print(valor_nuevo * 100, 0);

lcd.setCursor(14, 1);

lcd.print(" %");

else //Si no hay bateria

lcd.setCursor (0, 1);

lcd.print (" CHARGE NEEDED! ");

Page 143: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

ROBERTO JIMÉNEZ PERALTA Página | 143

PLANOS: A continuación, se mostrarán los planos en un fichero .pdf aparte

necesarios para la fabricación de dicho control y su correspondiente

envolvente, el orden de estos será:

8.3.1 PLANOS CONTROL:

Planos necesarios para la fabricación del control de los convertidores de

los motores, el orden de estos planos es:

PLANO 1 DIMENSIONES.

PLANO 2 SERIGRAFIA.

PLANO 3 COMPONENTES.

PLANO 4 SOLDADURA.

PLANO 5 MÁSCARA DE SOLDADURA TOP.

PLANO 6 MÁSCARA DE SOLDADURA BOTTON.

PLANO 7 TALADRADO.

Page 144: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 146 ROBERTO JIMÉNEZ PERALTA

8.3.2 PLANOS CONECTOR:

De igual forma que en el punto anterior, se incluye el orden de los planos

para la fabricación del conector de los sensores y las señales de los

aceleradores.

PLANO 1 DIMENSIONES.

PLANO 2 SERIGRAFIA.

PLANO 3 COMPONENTES.

PLANO 4 SOLDADURA.

PLANO 5 MÁSCARA DE SOLDADURA TOP.

PLANO 6 MÁSCARA DE SOLDADURA BOTTON.

PLANO 7 TALADRADO.

Page 145: “Implementación de un control de tracción 2x2 en un
Page 146: “Implementación de un control de tracción 2x2 en un

“Implementación de un control de tracción 2x2 en un vehículo prototipo”

Página | 154 ROBERTO JIMÉNEZ PERALTA

8.3.3 PLANOS ENVOLVENTE:

Se incluyen los planos de la envolvente del control y del conector,

necesarios para la fabricación de las mismas.

PLANO 1 UNIÓN MANILLAR-BASE.

PLANO 2 ENGANCHE MANILLAR 1.

PLANO 3 ENGANCHE MANILLAR 2.

PLANO 4 BASE CONTROL.

PLANO 5 TAPA CONTROL.

PLANO 6 BASE CONECTOR.

PLANO 7 TAPA CONECTOR.

PLANO 8 JUNTA ESTANQUEIDAD CONROL.

PLANO 9 JUNTA ESTANQUEIDAD CONECTOR.