UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN
FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA
DISEÑO DE SISTEMAS MECATRONICOS
Actividad 7: Fabricación de electrónica de carro eléctrico
Nombre: Diego Acosta Galván
Matrícula: 2077858
Carrera: IMTC
Grupo: 007
Docente: Dante Ferreira Méndez
Semestre: Enero-Junio 2025
15/05/2025
INDICE
Contenido
INTRODUCCION ................................................................................................................................... 3
DESARROLLO DE LOS COMPONENTES ................................................................................................ 4
Investigación previa: ....................................................................................................................... 4
Diseño electrónico: ......................................................................................................................... 8
CONCLUSIONES ................................................................................................................................. 18
BIBLIOGRAFIA .................................................................................................................................... 19
INTRODUCCION
El desarrollo de vehículos eléctricos a escala representa una excelente oportunidad
para aplicar conocimientos de electrónica, control y programación en un sistema
real y funcional. Estos proyectos no solo permiten comprender el funcionamiento de
los componentes electrónicos, sino también cómo interactúan entre sí dentro de un
sistema mecatrónico. En este contexto, el presente reporte aborda la investigación
y diseño de un sistema de control para el PIA de esta materia DSM, que es un carrito
fabricado por nosotros mismos de manera casera, pero con calidad, desarrollamos
la placa del ESP32 como unidad central de procesamiento para todas las funciones
de nuestro carrito.
En esta ocasión se continua con la construcción del carro eléctrico que se sigue
como actividad del semestre, en el desarrollo de esta actividad se dará seguimiento
a la actividad previa donde se hablo del diseño de la electrónica de control del carro,
como paso siguiente buscamos presentar dicha electrónica de control ya terminada
e implementada en el carro, desde los componentes principales fabricados
manualmente por nuestros integrantes, como es caso del ESP32 y el SHIELD LCD,
hasta la implementación del circuito eléctrico en la plataforma y como es que se
llevo a cabo el proceso del montaje.
DESARROLLO DE LOS COMPONENTES
Investigación previa:
Empezaremos con una investigación para conocer los componentes eléctricos
principales que se utilizaran en la construcción del carro eléctrico, principalmente
aquellos del sistema de control eléctrico.
Comenzando con el microcontrolador que se utilizara para controlar el carro, se
utilizara un ESP32 “casero” fabricado por nuestro equipo, el ESP32 es un
microcontrolador de bajo costo y alto rendimiento, desarrollado por la empresa
Espressif Systems. Es un pequeño dispositivo muy versátil que permite controlar
circuitos electrónicos y conectarlos a redes Wi-Fi y Bluetooth. Gracias a estas
capacidades, se ha convertido en una herramienta muy popular en el mundo de la
electrónica y el desarrollo de proyectos de Internet de las Cosas (IoT), ya que
permite crear dispositivos inteligentes que pueden comunicarse entre sí o ser
controlados a distancia.
Características principales del ESP32:
• Procesador: Doble núcleo (dual-core) de 32 bits, basado en arquitectura
Xtensa LX6 (algunos modelos tienen solo un núcleo).
• Velocidad: Hasta 240 MHz.
• Memoria: RAM integrada y soporte para memoria externa (como flash SPI).
• Conectividad:
o Wi-Fi 802.11 b/g/n (2.4 GHz)
o Bluetooth 4.2 y BLE (Bluetooth Low Energy)
• Entradas y salidas (GPIO): Puede controlar pines digitales, analógicos,
PWM, I2C, SPI, UART, ADC, DAC, etc.
• Sensor de temperatura interno, modo de ahorro de energía, y otras
características avanzadas.
• Compatible con múltiples lenguajes de programación: Arduino (C/C++),
MicroPython, ESP-IDF (framework oficial en C), entre otros.
Este microcontrolador es uno de los más comúnmente utilizados en proyectos de
electrónica de pequeña escala como pueden ser proyectos escolares o
construcciones personales, se utilizará en esta ocasión debido a que no se necesita
software de alta potencia y se aprovecha ampliamente su versatilidad.
Se presenta a continuación la evidencia de la construcción de los componentes:
Ilustración 1 Diseño del PCB del controlador
Pasamos ahora al componente que nos servirá como interfaz para comunicar con
el usuario, se estará utilizando un “SHIELD LCD”, fabricado manualmente por
nuestro equipo a partir de un LCD 2X16. Una pantalla LCD de 2 líneas por 16
caracteres (LCD 2x16) es una interfaz visual básica y muy utilizada en sistemas
embebidos para mostrar texto, estados o mensajes al usuario. Usualmente se
conecta al microcontrolador mediante un módulo I2C, lo que simplifica el cableado.
Características:
• Pantalla alfanumérica: 2 líneas de 16 caracteres.
• Compatible con I2C mediante adaptador (requiere solo 2 pines del ESP32).
• Fácil de programar con librerías como LiquidCrystal_I2C.
Información útil para mostrar:
• Estado del sistema ("Avanzando", "Detenido", "Girando").
• Instrucciones recibidas por Bluetooth.
• Velocidad actual o dirección.
Ventajas:
• Bajo consumo.
• Aporta retroalimentación clara al usuario.
Ilustración 2 Esquema de la placa del LCD
En cuanto al regulador de potencia o el “SHIELD POTENCIA” que nos ayudara a
controlar y regular la potencia de la alimentación al motor, se utiliza un puente H
L293D como controlador para motor de potencia y motor de dirección.
El L293D es un circuito integrado de tipo driver de puente H, ideal para el control
bidireccional de motores de corriente directa (DC). Cada chip L293D puede controlar
dos motores DC independientes o un motor paso a paso, en nuestro caso
usaremos solo 1 chip para 2 motores.
Características principales:
• Control de 2 canales independientes.
• Capacidad de corriente por canal: hasta 600 mA continuo, 1.2 A pico.
• Voltaje de operación: de 4.5 V a 36 V.
Funcionamiento básico:
• Nuestro microcontrolador (ESP32) envía señales lógicas a las entradas del
L293D.
• El L293D conmuta el voltaje aplicado al motor, permitiendo cambiar su
dirección de giro o detenerlo.
• Opcionalmente, se puede aplicar una señal PWM para controlar la
velocidad del motor.
Aplicación en el carrito eléctrico:
• Motor de tracción: Controla el movimiento hacia adelante y hacia atrás.
• Motor de dirección (DC o servo modificado): Controla el giro hacia la
izquierda o derecha mediante el segundo canal.
Ilustración 3 Diseño de la placa con señalamiento de componentes
Como se observó en la ilustración 5, nuestra placa de control de potencia también
incluye un controlador ULN2003 para control de las luces delanteras y traseras.
El ULN2003 es un arreglo de 7 transistores Darlington de colector abierto,
diseñado para controlar cargas de media a alta corriente, como LEDs de alta
potencia, relés, motores pequeños, o cualquier componente que requiera más
corriente de la que un microcontrolador puede proporcionar directamente.
Características clave:
• Control de hasta 7 canales independientes.
• Funciona como un interruptor digital activado por el ESP32.
• Requiere solo señales lógicas (0 V o 3.3 V) para activarse.
Funcionamiento:
• Las salidas del ULN2003 son de tipo colector abierto, lo que permite
conectar luces con su propio voltaje de alimentación.
• Al activarse, el ULN2003 conecta la carga a tierra, encendiendo el LED.
Aplicación en el carrito eléctrico:
• Luces delanteras y traseras (LED blancos y rojos).
• Intermitentes o luces de reversa (activadas por condiciones de
movimiento).
• Permite el control independiente de cada luz.
Diseño electrónico:
Presentamos aquí primeramente el resultado de la construcción de los
componentes electrónicos principales, que son el ESP32, el LCD y la placa de
control de potencia.
Comenzando con la construcción de la placa del microcontrolador casero ESP32,
este es el resultado una vez finalizado la construcción:
Ilustración 4 Placa ESP32 fabricada
Continuamos con la construcción de la placa de la interfaz LCD2X16, tenemos aquí
la placa una vez terminada su construcción:
Ilustración 5 Placa del LCD terminada
Por último, tenemos la construcción de la placa de control de potencia para los
motores u luces del carro, tenemos aquí la placa una vez terminada su construcción:
Ilustración 6 Placa del controlador de potencia terminada
Una vez fabricados exitosamente todos los componentes principales del carro
eléctrico, tenemos que realizar la instalación de los componentes eléctricos en la
plataforma del chasis del automóvil, desde el inicio de este proyecto se diseño el
chasis con el propósito de albergar cómodamente los componentes eléctricos sin
generarles daño alguno, aquí se presenta la instalación de los componentes,
refrescando primeramente como es el chasis que se diseñó para nuestro carro.
Ilustración 7 Diseño en CAD 3D del chasis
Ilustración 8 Chasis desarmado para su ensamblaje con los componentes eléctricos
En este apartado se presenta la programación que se asignó al microcontrolador
ESP32 para el funcionamiento del sistema:
Ilustración 9 Parte del código del ESP32
#include <WiFi.h>
#include <LiquidCrystal.h>
//#include <ESP32_AnalogWrite.h> // PWM con analogWrite en ESP32
LiquidCrystal lcd(19, 21, 18, 17, 16, 15);
const char* ssid = "JORGE";
const char* password = "MEMO";
WiFiServer server(80);
// Pines motores
const int MOTOR_DIR_IN1 = 4; // Motor A - Dirección
const int MOTOR_DIR_IN2 = 13;
const int MOTOR_POT_IN3 = 5; // Motor B - Potencia
const int MOTOR_POT_IN4 = 14;
const int MOTOR_ENA = 2;
const int MOTOR_ENB = 12;
// PWM valores (0-255)
int pwmDireccion = 128;
int pwmPotencia = 128;
String header;
String estadoEntrada[4];
const int botones[] = {34, 35, 36, 39};
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear();
// Pines motores
pinMode(MOTOR_DIR_IN1, OUTPUT);
pinMode(MOTOR_DIR_IN2, OUTPUT);
pinMode(MOTOR_POT_IN3, OUTPUT);
pinMode(MOTOR_POT_IN4, OUTPUT);
analogWrite(MOTOR_ENA, pwmDireccion); // PWM dirección
analogWrite(MOTOR_ENB, pwmPotencia); // PWM potencia
digitalWrite(MOTOR_DIR_IN1, LOW);
digitalWrite(MOTOR_DIR_IN2, LOW);
digitalWrite(MOTOR_POT_IN3, LOW);
digitalWrite(MOTOR_POT_IN4, LOW);
// Botones
for (int i = 0; i < 4; i++) {
pinMode(botones[i], INPUT);
estadoEntrada[i] = digitalRead(botones[i]);
}
// Red WiFi
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid);
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP);
server.begin();
lcd.setCursor(0, 0);
lcd.print("IP:");
lcd.print(IP);
lcd.setCursor(0, 1);
lcd.print("Esperando conex");
}
void loop() {
WiFiClient client = server.available();
if (!client) return;
Serial.println("Dispositivo conectado.");
lcd.setCursor(0, 1);
lcd.print("Dispositivo OK ");
String currentLine = "";
header = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
header += c;
if (c == '\n') {
if (currentLine.length() == 0) {
// Comandos de dirección
if (header.indexOf("/derecha") >= 0) {
digitalWrite(MOTOR_DIR_IN1, HIGH);
digitalWrite(MOTOR_DIR_IN2, LOW);
} else if (header.indexOf("/izquierda") >= 0) {
digitalWrite(MOTOR_DIR_IN1, LOW);
digitalWrite(MOTOR_DIR_IN2, HIGH);
} else if (header.indexOf("/direccionoff") >= 0) {
digitalWrite(MOTOR_DIR_IN1, LOW);
digitalWrite(MOTOR_DIR_IN2, LOW);
}
// Comandos de potencia
if (header.indexOf("/adelante") >= 0) {
digitalWrite(MOTOR_POT_IN3, HIGH);
digitalWrite(MOTOR_POT_IN4, LOW);
} else if (header.indexOf("/atras") >= 0) {
digitalWrite(MOTOR_POT_IN3, LOW);
digitalWrite(MOTOR_POT_IN4, HIGH);
} else if (header.indexOf("/potenciaoff") >= 0) {
digitalWrite(MOTOR_POT_IN3, LOW);
digitalWrite(MOTOR_POT_IN4, LOW);
}
// Sliders PWM
if (header.indexOf("pwmDireccion=") >= 0) {
int pos = header.indexOf("pwmDireccion=");
pwmDireccion = header.substring(pos + 13, header.indexOf("&",
pos)).toInt();
analogWrite(MOTOR_ENA, pwmDireccion);
}
if (header.indexOf("pwmPotencia=") >= 0) {
int pos = header.indexOf("pwmPotencia=");
pwmPotencia = header.substring(pos + 12).toInt();
analogWrite(MOTOR_ENB, pwmPotencia);
}
// Página HTML
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html\n");
client.println("<!DOCTYPE html><html><head><meta charset='UTF-
8'><title>ESP32 Auto</title></head><body><center>");
client.println("<h2>Control Auto ESP32</h2>");
// Botones dirección
client.println("<p><a href='/derecha'><button>Derecha</button></a>");
client.println("<a href='/izquierda'><button>Izquierda</button></a>");
client.println("<a href='/direccionoff'><button>Parar
Direccion</button></a></p>");
// Botones potencia
client.println("<p><a href='/adelante'><button>Adelante</button></a>");
client.println("<a href='/atras'><button>Atras</button></a>");
client.println("<a href='/potenciaoff'><button>Parar
Motor</button></a></p>");
// Sliders PWM
client.println("<form action='/' method='GET'>");
client.println("<p>Direccion PWM: <input type='range' name='pwmDireccion'
min='0' max='255' value='" + String(pwmDireccion) + "'
onchange='this.form.submit()'></p>");
client.println("<p>Potencia PWM: <input type='range' name='pwmPotencia'
min='0' max='255' value='" + String(pwmPotencia) + "'
onchange='this.form.submit()'></p>");
client.println("</form>");
// Botones físicos
for (int i = 0; i < 4; i++) {
estadoEntrada[i] = digitalRead(botones[i]);
client.println("<p>Botón " + String(i + 1) + ": " + estadoEntrada[i] + "</p>");
}
client.println("</center></body></html>");
break;
} else {
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
}
}
}
delay(10);
client.stop();
Serial.println("Desconectado.");
lcd.setCursor(0, 1);
lcd.print("Esperando conex");
}
A continuación, se muestra evidencia del carro eléctrico terminado, con todas sus
conexiones eléctricas montadas apropiadamente sobre el chasis:
Ilustración 10 Toma isométrica del carro eléctrico
Ilustración 11 Toma aérea del carro eléctrico
Ilustración 12 Carro eléctrico con la interfaz de control
CONCLUSIONES
El desarrollo y construcción de este carro eléctrico nos representa la integración y
aplicación de amplios conocimientos adquiridos a lo largo de la carrera y de la clase
de sistemas mecatrónicos, construyendo cada uno de los componentes a mano, así
como comprender sus funciones e interacciones para saber y entender el rol que
tienen en el propio funcionamiento del auto.
El microprocesador ESP32 que construimos funcionara como el núcleo central del
programa, será el que a partir de la programación que se le indique, dará las
instrucciones para que todo el sistema funcione correctamente.
En caso del LCD, esta funcionara como la interfaz de comunicación con el usuario,
permitiendo transmitir y comunicar mensajes importantes relacionados con el
funcionamiento del carro.
Como ultimo de los componentes principales, tenemos la placa de control de
potencia o el “SHIELD POTENCIA”, que es el que regulara la potencia de control
que alimentara al motor del carro, permitiendo así el movimiento, controla también
entre sus funciones principales, el prendido y apagado de las luces traseras y
delanteras.
Sin embargo funciona todo en conjunto, cada uno de los componentes diseñados y
construidos juega un rol importante en el propio funcionamiento del carro eléctrico
y como los constructores nuestra tarea fue el harmonizar y dar forma a los
componentes individualmente para lograr que el sistema final funcione como es
debido.
BIBLIOGRAFIA
ESP32 Wi-Fi & Bluetooth SOC | Espressif Systems. (s. f.).
https://www.espressif.com/en/products/socs/esp32
¿Qué es y cómo funciona un L293D? (s. f.). La Electrónica.
https://laelectronica.com.gt/extras/que-es-y-como-funciona-un-
l293d?srsltid=AfmBOorgxy1uMOtm_5AH7LwIX8wA6RpYAcZYK8dMTGaC-
CE5nbruWxvU
Hoja de datos de ULN2003A, información de producto y soporte | TI.com. (s. f.).
https://www.ti.com/product/es-mx/ULN2003A
Hoja de datos de L293D, información de producto y soporte | TI.com. (s. f.).
https://www.ti.com/product/es-mx/L293D