Etiqueta: ESP8266

  • 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();
      }
    
    
    }
    
    
    
    
    
    
    
    
    
    
  • El transistor MOSFET IRLB3034

    El transistor MOSFET IRLB3034 es un componente de potencia ampliamente utilizado en aplicaciones electrónicas donde se requiere controlar cargas de alta potencia con una eficiencia y confiabilidad superiores. Con características eléctricas impresionantes y una amplia gama de aplicaciones, el IRLB3034 ha ganado popularidad entre los diseñadores y los entusiastas de la electrónica. En este artículo, exploraremos las características clave del IRLB3034 y sus aplicaciones más comunes.

    Características del IRLB3034:

    El IRLB3034 es un transistor de efecto de campo de metal-óxido-semiconductor (MOSFET) de canal N. Una de sus principales ventajas es su baja resistencia de encendido (Rds(on)), que permite un paso eficiente de la corriente cuando está activado. Esto se traduce en una menor disipación de potencia y una mayor eficiencia en comparación con otros dispositivos de potencia.

    Otra característica notable del IRLB3034 es su alta tensión de drenaje a fuente (Vds), que puede alcanzar hasta 40V, lo que lo hace adecuado para aplicaciones que requieren un manejo de voltajes más altos. Además, el IRLB3034 puede manejar corrientes de hasta 195 amperios, lo que lo convierte en una opción robusta para aplicaciones de alta potencia.

    Aplicaciones del IRLB3034:

    1. Control de motores: El IRLB3034 se utiliza comúnmente en aplicaciones de control de motores, como controladores de velocidad de motor, control de servomotores y sistemas de tracción eléctrica.
    2. Fuentes de alimentación conmutadas: Debido a su baja resistencia de encendido y alta eficiencia, el IRLB3034 es una opción popular en el diseño de fuentes de alimentación conmutadas, donde se requiere un control preciso y una alta eficiencia energética.
    3. Iluminación LED: El IRLB3034 se utiliza en circuitos de control de iluminación LED, permitiendo el ajuste de brillo y la conmutación rápida de tiras de LED, paneles o lámparas.
    4. Electrónica automotriz: Gracias a su capacidad para manejar altas corrientes y tensiones, el IRLB3034 es utilizado en aplicaciones automotrices, como sistemas de control de luces, controladores de motores y sistemas de gestión de energía.

    Consideraciones de diseño: Al utilizar el IRLB3034 en un diseño, es esencial tener en cuenta ciertos aspectos para garantizar un funcionamiento óptimo y seguro. Algunas consideraciones importantes incluyen:

    1. Disipación de calor: Dado que el IRLB3034 puede manejar altas corrientes, es fundamental proporcionar una adecuada disipación de calor mediante el uso de disipadores de calor o sistemas de enfriamiento activo para evitar el sobrecalentamiento.
    2. Protección de diodos de recuperación rápida: Para proteger el transistor de voltajes inversos y picos de tensión, se recomienda utilizar diodos de recuperación rápida (por ejemplo, diodos Schottky) en paralelo con la carga.
    3. Control de puerta: Para garantizar un adecuado encendido/apagado del transistor, se debe aplicar una tensión de compuerta (Vgs) adecuada y asegurar que la señal de control tenga una impedancia baja.

    El siguiente código fue hecho para probar una Tira de LED de alta potencia (aún sin disipador) por lo que se mantiene en valores PWM bajos.

    /*
      Prueba para Usar MOSFET IRF520como interruptor digital con Arduino IDE
    */
    
    
    int led = D0;           // the PWM pin the LED is attached to
    int brightness = 0;    // how bright the LED is
    int fadeAmount = 4;    // how many points to fade the LED by
    int maxFade = 25;
    
    // the setup routine runs once when you press reset:
    void setup() {
      // declare pin 9 to be an output:
      pinMode(led, OUTPUT);
      Serial.begin(115200);
    }
    
    // the loop routine runs over and over again forever:
    void loop() {
      // set the brightness of pin 9:
      analogWrite(led, brightness);
    
      // change the brightness for next time through the loop:
      brightness = brightness + fadeAmount;
    
      // reverse the direction of the fading at the ends of the fade:
      if (brightness <= 0 || brightness >= maxFade) {
        fadeAmount = -fadeAmount;
        if (fadeAmount>0) delay (5000);
      }
      Serial.print("brightness: ");
      Serial.println(brightness);
      delay(30);
    }
    
  • ¿Cómo funciona el wifiManager? para ESP32/ESP8266

    La librería WiFiManager simplifica el proceso de configuración y gestión de conexiones WiFi en los módulos ESP32 y ESP8266. Proporciona una forma fácil de configurar y almacenar las credenciales de red WiFi, permitiendo que los dispositivos se conecten a las redes de manera autónoma y se recuperen de forma automática en caso de desconexiones.

    El “WiFiManager” es una biblioteca diseñada para facilitar la configuración y administración del Wi-Fi en dispositivos IoT basados en los microcontroladores ESP32 y ESP8266. Esta biblioteca ofrece una forma conveniente de crear un portal de configuración basado en la web, lo que permite a los usuarios ingresar las credenciales de Wi-Fi sin necesidad de cargar un nuevo código en el dispositivo.

    El proceso de funcionamiento del WiFiManager se puede describir en los siguientes pasos:

    1. Inclusión de la biblioteca: En primer lugar, es necesario incluir la biblioteca WiFiManager en el proyecto. Esto se puede realizar descargando e instalando la biblioteca desde el administrador de bibliotecas de Arduino IDE o mediante el uso de un gestor de paquetes como PlatformIO.
    2. Creación de una instancia del WiFiManager: Se crea una instancia del objeto WiFiManager en el código del proyecto.
    #include <WiFiManager.h>
    
    WiFiManager wifiManager;
    
    

    Inicialización y conexión:

    Antes de utilizar el WiFiManager, es necesario inicializarlo y conectarlo al punto de acceso Wi-Fi existente. Si se encuentran credenciales de Wi-Fi almacenadas previamente, el dispositivo se conectará automáticamente. En caso contrario, se iniciará el portal de configuración.

    void setup() {
      // Inicializar el WiFiManager
      wifiManager.autoConnect("MiDispositivo");
    
      // Resto del código de configuración o funcionalidad
    }
    

    En el ejemplo anterior, “MiDispositivo” es el nombre del punto de acceso que se creará si no se encuentran credenciales de Wi-Fi almacenadas. Este nombre puede modificarse según las preferencias del usuario.

    Portal de configuración:

    Si no se encuentran credenciales de Wi-Fi almacenadas, el WiFiManager iniciará un portal de configuración. Esto implica que el ESP32/ESP8266 actuará como un punto de acceso Wi-Fi al cual es posible conectarse desde un dispositivo móvil o una computadora.

    Al conectarse a este punto de acceso, se abrirá automáticamente una página de configuración basada en la web, donde los usuarios pueden ingresar las credenciales de su red Wi-Fi. Una vez que las credenciales se ingresen y envíen, el ESP32/ESP8266 se conectará a la red Wi-Fi especificada y recordará estas credenciales para futuros usos.

    Almacenamiento de la configuración:

    Después de que el WiFiManager se conecte exitosamente a la red Wi-Fi especificada, almacenará las credenciales en la memoria no volátil del dispositivo (por ejemplo, en el ESP32/ESP8266). Esto permite que las credenciales se utilicen en las próximas ejecuciones, sin necesidad de ingresarlas nuevamente cada vez que se reinicie el dispositivo.

  • Manual de configuración para Wi-Fi en microcontoladores ESP8266 y ESP32: Creación de un driver LED

    Melange con Argie incorporó un sistema de configuración de sus dispositivos a través de tecnología Wi-Fi desarrollado por HUE CAT