Categoría: Ingeniería mecatrónica

  • Circuito, Programación, Fabricación de PCB de Máquina Contadora de Tarjetas.

    Circuito, Programación, Fabricación de PCB de Máquina Contadora de Tarjetas.

    En entornos de producción, la precisión en el conteo de insumos es crítica para evitar fugas financieras y errores logísticos. Este proyecto surge como una solución robusta para automatizar el conteo de tarjetas plásticas y hojas mediante un sistema embebido basado en el ESP32. El objetivo principal fue desarrollar un dispositivo que no solo fuera preciso, sino también capaz de operar en condiciones industriales, integrando sensores ópticos de alta velocidad y una lógica de control avanzada para garantizar la integridad de los datos en tiempo real.

    El proyecto consta de un ESP32 con un sistema contador de hojas y 2 foto-células/sensores para el procedimiento de trabajo.

    El núcleo del sistema reside en una Máquina de Estados Finitos (FSM) programada en el ESP32, la cual gestiona el ciclo de trabajo evitando falsos positivos mediante el filtrado de señales de dos fotocélulas dispuestas en configuración diferencial. La arquitectura de hardware se centraliza en una PCB diseñada específicamente para este propósito, que integra una interfaz I2C para la visualización en LCD, una botonera industrial de cuatro comandos y salidas optoacopladas mediante relays para el control de actuadores externos. Este enfoque modular permite una alta mantenibilidad y una inmunidad superior al ruido electromagnético, factor común en plantas de fabricación.

    La lista de Hardware de este proyecto es:

    -ESP32

    -Sensores digitales/fotocélulas

    -LCD 1602 con módulo I2C

    -Botonera de 4 salidas simple

    -Salidas con relay

    SUMINISTRO CONTROLADO

    Fabricado en España

    El resultado es un equipo compacto, escalable y de alta fiabilidad, Fabricado que transforma un proceso manual propenso a errores en una operación automatizada y auditable. La implementación de este sistema demuestra cómo la integración de microcontroladores modernos y un diseño de hardware dedicado puede optimizar costos en la pequeña y mediana industria. Actualmente, el diseño se encuentra optimizado para su integración en líneas de producción existentes, reafirmando el compromiso con la ingeniería de precisión y la eficiencia operativa.

  • Leer ángulos con sensor MPU6050 sin recurrir a librerías (Excepto Wire)

    Leer ángulos con sensor MPU6050 sin recurrir a librerías (Excepto Wire)
    MPU6050

    Medir el ángulo de inclinación usando el giroscopio/acelerómetro MPU6050 y Arduino

    Se puede medir el ángulo de inclinación usando MPU6050 simplemente conectando el sensor giroscópico/acelerómetro de 6 ejes MPU6050. El acelerómetro envía fuerzas de aceleración X, Y y Z. Necesitamos convertir las fuerzas en ángulos 3D X, Y, Z para determinar la orientación 3D del sensor.

    El giroscopio mide la velocidad de rotación o la tasa de cambio de la posición angular a lo largo del tiempo, a lo largo de los ejes X, Y y Z. Utiliza tecnología MEMS y el efecto Coriolis para medir. Las salidas del giroscopio están en grados por segundo, por lo que para obtener la posición angular, sólo necesitamos integrar la velocidad angular.

    El acelerómetro puede medir la aceleración gravitacional a lo largo de los 3 ejes y usando algunas matemáticas de trigonometría podemos calcular el ángulo en el que está posicionado el sensor. Entonces, si fusionamos o combinamos los datos del acelerómetro y el giroscopio del MPU6050, podemos obtener información muy precisa sobre la orientación del sensor. Por lo tanto, MPU6050 con Arduino puede medir el ángulo de inclinación.

    Giroscopio/acelerómetro MPU6050

    El sensor InvenSense MPU-6050 contiene un acelerómetro MEMS y un giroscopio MEMS en un solo chip. Es muy preciso, ya que contiene un hardware de conversión de analógico a digital de 16 bits para cada canal. Por lo tanto, captura los canales x, y y z al mismo tiempo. El sensor utiliza el bus I2C para interactuar con Arduino.

    El MPU-6050 no es caro, especialmente teniendo en cuenta que combina un acelerómetro y un giroscopio.


    Distribución de pines del MPU6050:

    El módulo MPU-6050 tiene 8 pines:
    INT: Interrumpe el pin de salida digital.
    AD0: pin LSB de dirección esclava I2C. Este es el bit 0 en la dirección esclava de 7 bits del dispositivo. Si está conectado a VCC, se lee como uno lógico y la dirección del esclavo cambia.
    XCL: Pin de reloj serie auxiliar. Este pin se utiliza para conectar el pin SCL de otros sensores habilitados para interfaz I2C al MPU-6050.
    XDA: Pin de datos serie auxiliar. Este pin se utiliza para conectar el pin SDA de otros sensores habilitados para interfaz I2C al MPU-6050.
    SCL: pin de reloj serie. Conecte este pin al pin SCL del microcontrolador.
    SDA: pin de datos serie. Conecte este pin al pin SDA del microcontrolador.
    GND: clavija de tierra. Conecte este pin a la conexión a tierra.
    VCC: Pin de fuente de alimentación. Conecte este pin al suministro de +5 V CC.
    Giroscopio de 3 ejes:

    El MPU6050 consta de un giroscopio de 3 ejes con tecnología Micro Electro Mechanical System (MEMS). Se utiliza para detectar la velocidad de rotación a lo largo de los ejes X, Y, Z como se muestra en la siguiente figura.

    Oreintation y Polaridad de rotación - MPU6050
    Oreintation y Polaridad de rotación – MPU6050

    Acelerómetro de 3 ejes:

    El MPU6050 consta de un acelerómetro de 3 ejes con tecnología microelectromecánica (MEM). Solía ​​detectar el ángulo de inclinación o inclinación a lo largo de los ejes X, Y y Z como se muestra en la siguiente figura.

    Ángulo de inclinación
    Ángulo de inclinación

    Diagrama de circuito y conexión

    MPU6050 tiene pines I2C. Por lo tanto, debe estar conectado a los pines I2C de Arduino. Conecte los pines SDA de MPU6050 a A4 de Arduino y SCL a A5. Suministre una entrada de 5 V al MPU6050 y también conecte el GND como se muestra en la siguiente figura.

    Conexión del MPU6050 con el Microcontrolador

    Ejemplos: Wemos D1 Mini y Arduino Uno

    Código fuente/programa


    A continuación se muestra el código para medir el ángulo de inclinación usando MPU6050 y Arduino. Copie el código y cárguelo en la placa Arduino.

    #include<Wire.h>
    
    const int MPU_addr = 0x68;
    int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ;
    
    int minVal = 265;
    int maxVal = 402;
    
    double x;
    double y;
    double z;
    
    
    void setup() {
      Wire.begin();
      Wire.beginTransmission(MPU_addr);
      Wire.write(0x6B); //Dirección de memoria del Sensor
      Wire.write(0);
      Wire.endTransmission(true);
      Serial.begin(115200);
    
      pinMode(LED_BUILTIN, OUTPUT);
    
    }
    void loop() {
    
      String textoAImprimir; //Imprime el resultado por consola.
      delay (2);
      unsigned long tiempoInicio = millis();
      Wire.beginTransmission(MPU_addr);
      Wire.write(0x3B);
      Wire.endTransmission(false);
      Wire.requestFrom(MPU_addr, 14, true);
      AcX = Wire.read() << 8 | Wire.read();
      AcY = Wire.read() << 8 | Wire.read();
      AcZ = Wire.read() << 8 | Wire.read();
    
      if (AcX == -1 && AcY == -1 && AcZ == -1 ) {
        Serial.println("No conection MPU6050");
        delay (1000);
      }
    
      else {
        int xAng = map(AcX, minVal, maxVal, -90, 90);
        int yAng = map(AcY, minVal, maxVal, -90, 90);
        int zAng = map(AcZ, minVal, maxVal, -90, 90);
    
          x = RAD_TO_DEG * (atan2(-yAng, -zAng) + PI);
        y = RAD_TO_DEG * (atan2(-xAng, -zAng) + PI);
           z = RAD_TO_DEG * (atan2(-yAng, -xAng) + PI);
    
           Serial.print("x="+(String)x);
           Serial.print(", y="+(String)y);
           Serial.println(", z="+(String)z);
    
    
      }
    
    
      //////////Parpadeo//////////////////Parpadeo//////////////////Parpadeo//////// 
      
      static unsigned long timerBlink;
      if (millis() > timerBlink + 500) {
        digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
        timerBlink = millis();
      }
    
    
    }
    
    
    
    
    
    
    
    
    
    
  • Bicicleta que hace los cambios automáticamente

    Bicicleta que hace los cambios automáticamente

    Desarrollo de un sistema de transmisión automatizada para bicicletas, diseñado para optimizar la experiencia de pedaleo sin necesidad de intervención manual. El núcleo de la propuesta reside en la capacidad del sistema para interpretar el ritmo del ciclista y ajustar los cambios de marcha de forma autónoma, permitiendo una conducción más fluida y eficiente, especialmente en terrenos variables donde la gestión constante de la cadencia es crucial.

    📍 Barcelona

    Trabajo realizado por Alumno de Tutoría

    Incluye Sensor PAS, Placa Arduino Uno, Módulo de LCD OLED, Switch, Bicicleta.

    A nivel técnico, la solución integra ingeniería mecatrónica avanzada utilizando una placa Arduino Uno como cerebro del sistema. La lectura del entorno se realiza mediante un sensor PAS (Pedal Assist Sensor), que monitorea la velocidad de pedaleo en tiempo real. Esta información es procesada algorítmicamente para determinar el momento exacto del cambio, mientras que un módulo de pantalla OLED proporciona al usuario una interfaz visual clara del estado del sistema y la marcha activa.

    Más allá de su funcionalidad mecánica, este desarrollo destaca como una aplicación práctica de habilidades STEM (Ciencia, Tecnología, Ingeniería y Matemáticas), demostrando cómo componentes accesibles pueden modernizar mecanismos de transporte tradicionales. El resultado es un prototipo funcional que no solo resuelve el problema de la gestión de marchas para ciclistas novatos o distraídos, sino que también sirve como una base sólida para futuras implementaciones en movilidad eléctrica y sistemas de asistencia inteligente.

  • Prototipo Mecatrónica: Máquina Encapsuladora de Café

    Prototipo Mecatrónica: Máquina Encapsuladora de Café

    El núcleo del desarrollo se centró en la creación de un sistema capaz de gestionar múltiples variables críticas en tiempo real: desde el movimiento coordinado de motores paso a paso para el posicionamiento de las cápsulas, hasta el control de un motor DC y una resistencia de sellado térmico. Este prototipo no solo buscaba la funcionalidad mecánica, sino establecer una base sólida de automatización industrial a pequeña escala.

    Electrónica y programación para prototipo con ESP32, LCD, Controladoras de Motor paso a paso y transistor para motor DC y resistencia de sellado.

    A nivel técnico, la arquitectura del sistema evolucionó hacia el uso de un ESP32, aprovechando su potencia de procesamiento y versatilidad frente a soluciones más limitadas. La implementación incluyó el diseño de placas de circuito impreso (PCB) personalizadas para organizar la electrónica de potencia, controladores de motores y la interfaz de usuario mediante una pantalla LCD. El software, permitió sincronizar las etapas de llenado y sellado, garantizando que cada componente actuara en el milisegundo exacto para mantener la integridad del producto final.

    Lo que comenzó como un prototipo de laboratorio terminó validando conceptos complejos de control de temperatura y torque, demostrando que es posible construir maquinaria funcional de alta complejidad con herramientas accesibles. Este proyecto no solo resolvió una necesidad técnica de encapsulado, sino que sirvió como prueba de concepto para la integración total entre el diseño de hardware, la programación robusta y la ejecución mecánica.

  • Brazo robótico

    📍Barcelona 2022

    Proyecto de programación de acciones e iteraciones en Software para ubicar las esferas en diferentes posiciones.

    Un brazo robótico es un dispositivo mecánico controlado por computadora que se utiliza para manipular objetos de manera similar a un brazo humano. Estos brazos robóticos se pueden programar para realizar una variedad de tareas, desde simples movimientos hasta operaciones más complejas. La programación de acciones e iteraciones en software es fundamental para controlar y coordinar los movimientos del brazo robótico.

    Arduino es una plataforma electrónica de código abierto que se utiliza ampliamente en proyectos de robótica, incluidos los brazos robóticos. Proporciona una forma fácil de controlar y programar componentes electrónicos, lo que permite a los ingenieros y aficionados crear sus propios sistemas robóticos.

    La ingeniería mecatrónica es una disciplina que combina elementos de ingeniería mecánica, electrónica y de control para diseñar y construir sistemas automatizados. Los brazos robóticos son un ejemplo común de aplicación de la ingeniería mecatrónica, ya que requieren conocimientos en estas áreas para su diseño y programación.

  • Sistemas embebidos

    Sistemas embebidos

    Circuitos dedicados a objetos, sistemas computacionales diseñados para realizar funciones dedicadas cubriendo necesidades específicas. Al contrario de lo que ocurre con los ordenadores de propósito general (PC)

    Con algunos conocimientos del lenguaje C, se pueden programar estos «CHIP» para interactuar con cualquier objeto del mundo.

    La comunicación adquiere gran importancia en los sistemas embebidos. Lo normal es que el sistema pueda comunicarse mediante interfaces estándar de cable o inalámbricas. Así un SI normalmente incorporará puertos de comunicaciones del tipo RS-232, RS-485, SPI, I²C, CAN, USB, IP, Wi-Fi, GSM, GPRS, DSRC, etc.

    El subsistema de presentación tipo suele ser una pantalla gráfica, táctil, LCD, alfanumérico, etc

    Se denominan actuadores a los posibles elementos electrónicos que el sistema se encarga de controlar. Puede ser un motor eléctrico, un conmutador tipo relé etc. El más habitual puede ser una salida de señal PWM para control de la velocidad en motores de corriente continua

    El módulo de E/S analógicas y digitales suele emplearse para digitalizar señales analógicas procedentes de sensores, activar diodos ledes, reconocer el estado abierto cerrado de un conmutador o pulsador, etc

    El módulo de reloj es el encargado de generar las diferentes señales de reloj a partir de un único oscilador principal. El tipo de oscilador es importante por varios aspectos: por la frecuencia necesaria, por la estabilidad necesaria y por el consumo de corriente requerido. El oscilador con mejores características en cuanto a estabilidad y coste son los basados en resonador de cristal de cuarzo, mientras que los que requieren menor consumo son los RC. Mediante sistemas PLL se obtienen otras frecuencias con la misma estabilidad que el oscilador patrón

    El módulo de energía (power) se encarga de generar las diferentes tensiones y corrientes necesarias para alimentar los diferentes circuitos del SE. Usualmente se trabaja con un rango de posibles tensiones de entrada que mediante conversores ac/dc o dc/dc se obtienen las diferentes tensiones necesarias para alimentar los diversos componentes activos del circuito

    Además de los conversores ac/dc y dc/dc, otros módulos típicos, filtros, circuitos integrados supervisores de alimentación, etc

    El consumo de energía puede ser determinante en el desarrollo de algunos sistemas embebidos que necesariamente se alimentan con baterías, con lo que el tiempo de uso del SE suele ser la duración de la carga de las baterías

  • Secuenciómetro para máquina industrial programado en Arduino IDE + Código en C++

    Secuenciómetro para máquina industrial programado en Arduino IDE + Código en C++

    El proyecto consta de 2 versiones para mover 8 y 16 solenoides con una espera regulable. Se hicieron 2 circuitos: El prototipo con un ESP32 y el diseño final duplicando las salidas con un Arduino Mega

    PROTOTIPO I

    Microcontrolador ESP32

    PROTOTIPO 2

    Arduino Mega 2560