Publicado el 1 comentario

RCWL0515/RCWL0516: Sensores de Movimiento con Radar por Microondas

Los módulos RCWL0515 y RCWL0516 son sensores de movimiento basados en la tecnología de radar de microondas. Aunque son similares en muchos aspectos, hay algunas diferencias notables entre ellos.

RCWL0515:

  1. Rango de Frecuencia: El RCWL0515 generalmente opera en un rango de frecuencia de 5.8 GHz.
  2. Ajuste de Sensibilidad: Tiene un potenciómetro que permite ajustar la sensibilidad del sensor.
  3. Modo de Operación: Puede funcionar en dos modos: H (alta sensibilidad) y L (baja sensibilidad). El usuario puede seleccionar el modo según sus necesidades.

RCWL0516:

  1. Rango de Frecuencia: El RCWL0516 opera en un rango de frecuencia más amplio, típicamente de 4.7 GHz a 5.8 GHz.
  2. Ajuste de Sensibilidad: A diferencia del RCWL0515, el RCWL0516 no tiene un potenciómetro de ajuste de sensibilidad. La sensibilidad se ajusta automáticamente.
  3. Modo de Operación: No tiene modos de operación seleccionables como el RCWL0515; en su lugar, el RCWL0516 ajusta automáticamente su sensibilidad según las condiciones ambientales.

Módulo RCWL0516 Descripción de pines

Número de PINPin NameDescription
1.3V3Regulated 3.3V output
2.GNDGround reference for module
3.OUTAnalog output from the sensor
4.VINVoltage input for the module
5.CDSSensor Disable

Ambos módulos comparten características comunes, como el uso de la tecnología Doppler para la detección de movimiento y la capacidad de salida de señales de activación. Pueden ser utilizados en proyectos de electrónica y domótica para la detección de presencia y movimiento.

El sensor RCWL0515 sería una versión reducida del RCWL0516, no provee fuente de alimentación auxiliar de 3.3V ni acceso al pin CDS.

Detectando con un microcontrolador:

-> Funciona con el mismo ejemplo de Sensor PIR

Publicado el Deja un comentario

Módulo HC05: Un mal necesario

Varias veces prometí no volver a usar este módulo, aunque cuando está funcionando, es encantador.

Un ESP32 ya trae BLE. Pero es más complicado.

Ergo una placa tipo Wemos D1 Mini es ideal. Económica, masiva, pequeña, siempre sube el sketch. Con este modulito me convertí en profesor mientras mis alumnos me pedían que se las deje luego de cada clase en Barcelona, entre los años 2018 y 2022

/* HC-05 Conecxión con NodeMCU ESP8266 */

#include <SoftwareSerial.h>

SoftwareSerial btSerial(D2, D3); // Rx,Tx

int led = D4;   // led also the internal led of NodemCU

int ledState = LOW;   // led state to toggle

String estado = "";

unsigned long previousMillis = 0;  // millis instaed of delay

const long interval = 500;  // blink after ecery 500ms

void setup() {

  delay(1000);

  Serial.begin(9600);

  btSerial.begin(9600);     // bluetooth module baudrate

  pinMode(led, OUTPUT);

  Serial.println("Started...");

}

void loop() {

  if (btSerial.available() > 0) {    // check if bluetooth module sends some data to esp8266

    char caracterRecibe = btSerial.read();  // read the data from HC-05

    switch (caracterRecibe) {
      case 'B':         // Si recibo 'B'
        estado = "blink";   //parpadea
        break;
      case 'S':              // Si llega una 'S'
        estado = "stop"; //para
        break;
      default:
        break;
    }

  }


  if (estado == "blink") {          // if received data is 'B' the start blinking


    if (millis() - previousMillis >= 150) {

      previousMillis = millis();

      if (ledState == LOW) {
        ledState = HIGH;
        Serial.println("PARPADEO GATO MIAU");

      } else {

        ledState = LOW;

      }

      digitalWrite(led, ledState);

    }

  }

}
Publicado el Deja un comentario

ESP32 con ESP.restart()

 

El microcontrolador ESP32 combina WiFi, Bluetooth, toneladas de memoria e integración con toda una IDE de desarrollo para tener cada vez menos límites en nuestro proyecto.

Pero a veces se cuelga,

O preferimos reiniciar, pues un microcontrolador comienza cuando se reinicia. Como el Fénix que surge de sus cenizas, el micro se enciende un hará lo mismo. Una y otra vez. Este es el mejor lugar donde poner lo que necesitamos, ya tenga un treigger o no.

Descripción general del software que restablece ESP32 utilizando la práctica función ESP.restart().


Introducción a ESP32

En un entorno IDE de Desarrollo se proporciona fácil acceso a las entradas, salidas, pila WiFi, sistema de archivos y más del chip. Los SKETCH o BOCETOS escritos para otros microcontroladores, generalmente se pueden adaptar para funcionar en el ESP32. Esta combinación de potencia y accesibilidad es lo que hace que el ESP32 sea tan atractivo.
Por qué es útil reiniciar el software con ESP.restart()

La capacidad de restablecer el ESP32 a pedido mediante software puede resultar extremadamente útil en determinadas situaciones.

Algunos ejemplos:

  * Reiniciar según un cronograma, Por ejemplo cada 24 horas
   * Recuperarse de Crash (Error Fatal)
   * Reinicie antes de entrar en suspensión de bajo consumo, para evitar dejar procesos que consuman
   * Reiniciar antes de actualizar el firmware
   * Simulación de ciclos
   * Actualiza la conexión WiFi periódicamente

En lugar de tener que presionar un botón de reinicio físico cada vez, podemos llamar a ESP.restart() desde el código cada vez que queramos reiniciar.

Reiniciar el software borra la RAM e inicia el programa desde el principio. La memoria flash no volátil persiste, igual que durante un reinicio normal.
ESP.restart() Ejemplo de código de reinicio

Para un reinicio de software básico, aquí hay un Sketch de un que reinicia el ESP32 después de un retraso de 5 segundos:

 

void setup() {

  Serial.begin(115200);

  Serial.println("Reiniciando en 5 segundos");

  delay(5000);

  ESP.restart(); 

}

void loop() {

}

 

 

Publicado el Deja un comentario

Radar LDTR20: Comunicación RS485 + Convertidor MAX485

Los radares de velocidad de tramo sistemas de control de velocidad de tramo son herramientas  para monitorear el tráfico en carreteras y áreas urbanas. Estos sistemas se basan en tecnología de radar y cámaras para detectar la velocidad de los vehículos.

A veces tenemos que conectar dos microcontroladores a través de un cable que deba resistir algunos cuántos metros o interferencias.

Otras veces, tenemos que leer un sensor como por ejemplo un Radar LDTR20. Este último fue utilizado por un colega al que he ayudado a medir la velocidad de los vehículos que circulan por su pueblo, cerca de Albacete, España 🇪🇸

Sensor LDTR20.

Sensor LDTR20. Se alimenta a 12V y se comunica por RS485. Para poder leer la información que transmite, se utiliza el módulo MAX485

El  RS485

RS485 es un estándar de comunicación ampliamente utilizado en la industria que se puede utilizar con procesadores como Atmega o Espressif, para leer o escribir en otros dispositivos. RS485 es sencillo, robusto y, a diferencia de otras tecnologías propietarias, su uso es gratuito.

Esquema de montaje

La conexión de los módulos con MAX485 es sencilla. Primero, alimentamos el módulo conectando Vcc y Gnd, respectivamente, a los 5V y GND.

Hay que conectar los conductores A y B del par trenzado que forman el bus RS485, al que se conectarán todos los dispositivos pertenecientes al mismo bus.

Debe configurarse el módulo como transmisor o receptor, para lo cual utilizamos los pines RE (receiver enable) y DE (driver enable). Si conectamos estos pines a Vcc, el módulo actuará como transmisor, y si los conectamos a Gnd, actuará como receptor.

Finalmente, tendremos que conectar la entrada de datos al módulo DI (entrada del variador) en el caso de actuar como transmisor, o la salida de datos del módulo RO (salida del receptor) en el caso de actuar como receptor.

Por tanto, si estamos utilizando la UART, la conexión en modo transmisor es la siguiente:

 

Mientras que la conexión en modo receptor es la siguiente:

Publicado el 1 comentario

¿Cómo es hacer un proyecto Mecatrónico, IoT, Electrónico?

A veces necesitamos activar o desactivar un relay, una decisión binaria.

Pero otras, hay que llegar al límite del hardware. Por ejemplo, podemos crear un sensor touch con una Atmega328 (El que usa una placa uno) con solo una resistencia, una entrada y una salida. Pero hay que ver cómo reacciona el Hardware pues el procesamiento del sensor se debe hacer todo el tiempo, esperando que una persona toque el conductor.

Otro ejemplo puede ser un sistema mediante el cual un microcontrolador con Bluetooth detecta el teléfonos móviles, y de acuerdo a quién esté en la habitación. En este caso habría que buscar la MAC Adress o identificador del dispositivo Bluetooth (y considerando que está activado y reconocible) hay que buscar contínuamente los dispositivos para que cuando se logre establecer una conexión podamos decir quién está dentro.

Estos ejemplos, si bien podríamos tenerlos ahora mismo funcionando en el compilador y subidos en el microcontrolador, cuando uno los arma, debe probarlos, testearlos, ver cómo ser comporta, cuánto detecta, en qué rango, si por ejemplo «toco y veo que los valores pasan de un rando de 20-30 a 1000 claramente hay una detección». Si entro a una habitación y el bluetooth detecta un nuevo dispositivo… y si no hay interferencia con los demás bluetooth de la habitación* podré decir que encontré la solución al problema.

El proceso de creación de un proyecto que combina programación con electrónica se puede encarar con un tipo de diseño incremental. lo que permite tener primero lo más importante y luego ir mejorando ese Sketch.

Por ejemplo, antes de tener un sensor touch en un sistema más grande, puedo tener un pulsador simple y trabajar en aspectos que por el momento son más importantes; pues sin ellos el resto de ideas no tendrían sentido en el Dispositivo.

Publicado el 2 comentarios

Mosfet IRLB 3034: El preferido de Ger.ar

Los MOSFET (Metal-Oxide-Semiconductor Field-Effect Transistor) se utilizan comúnmente en aplicaciones de potencia, como amplificadores de audio, controladores de motor, fuentes de alimentación conmutadas y otros dispositivos electrónicos de alta potencia.

El IRLB3034 es un MOSFET de potencia fabricado por la empresa Infineon Technologies.

Características clave del IRLB3034:

  1. Tipo: N-Channel (Canal N)
  2. Tensión de drenaje a fuente (VDS): Hasta 40V
  3. Corriente continua del drenaje (ID): 195 amperios
  4. Resistencia de encendido (RDS(on)): 1.4 mΩ (miliohmios) típicos a 10V de compuerta
  5. Tensión de compuerta a fuente (VGS): ± 20V

Ventajas sobre los transistores tradicionales:

Capacidades de conmutación: Este MOSFET tiene una alta capacidad de conmutación, lo que lo hace adecuado para aplicaciones donde se requiere una rápida conmutación, como en convertidores de energía y sistemas de control de motores.

Protección contra sobrecalentamiento: Algunas versiones de MOSFETs pueden incluir características de protección contra sobrecalentamiento, aunque esto puede variar según el modelo específico. Es importante verificar la hoja de datos para conocer las características de protección específicas.

Temperatura de operación: La hoja de datos proporcionará la temperatura máxima de operación permitida para garantizar un rendimiento estable y confiable.

Curvas de transferencia y características dinámicas: Estos gráficos y curvas en la hoja de datos te brindarán información sobre cómo responde el MOSFET a diferentes niveles de voltaje de compuerta, corriente de drenaje, etc.

El IRLB3034 generalmente viene en un encapsulado TO-220, que es común y facilita la instalación en placas de circuito impreso y disipadores de calor.

Código para probar con IDE

/*
  Prueba para Usar MOSFET IRLB3034 como interruptor digital con microcontrolador
*/
 
 
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);
}
Publicado el 3 comentarios

Comunicación por modulo CAN MCP2515

MCP2515 es un controlador de red de área de controlador (Controller Area Network o CAN) que se utiliza comúnmente en sistemas embebidos para facilitar la comunicación entre dispositivos a través del protocolo CAN.

Años atrás, los coches tenían cientos y cientos de metros de cable, conectando cada interruptor directamente con, por ejemplo, las luces o la bocina. A medida que los automóviles se volvieran más complejos, esta simple lógica ya no funcionaría.

En 1986, Bosch introdujo el sistema de bus CAN, que resolvió este problema y abarató y facilitó la fabricación de automóviles. CAN es ahora el estándar de la industria y se utiliza en todo, desde automóviles y camiones hasta autobuses y tractores, e incluso aviones y barcos.

Saber cómo leer y analizar mensajes CAN en con un microcontrolador, permite obtener datos de un automóvil, como la temperatura del refrigerante, la posición del acelerador, la velocidad del vehículo y las rpm del motor, y utilizarlos en sus proyectos en el tablero.

El módulo de interfaz de bus CAN MCP2515 es la mejor solución para agregar conectividad CAN a un Microcontrolador con interfaz SPI. Este tutorial le mostrará cómo conectar el módulo MCP2515 a un Microcontrolador , pero primero, una introducción rápida al protocolo CAN.
Conceptos básicos del sistema de bus CAN

Una red de área de controlador (bus CAN) es un estándar de comunicaciones diseñado para permitir que los dispositivos del vehículo se comuniquen entre sí sin una computadora host.

Para comprender mejor el bus CAN, piense en su automóvil como un cuerpo humano. En este contexto, el bus CAN es el sistema nervioso.

Topología del bus CAN

La comunicación física se produce a través del mazo de cables del bus CAN, que consta de dos cables, CAN bajo y CAN alto. Ambos cables están trenzados firmemente para que la interferencia electromagnética afecte la señal en ambos cables de manera uniforme, minimizando así los errores.
puede par trenzado.

Los extremos más alejados del cable están terminados con resistencias de 120 ohmios. Debido a que el bus CAN es un bus de datos de alta velocidad, si el bus no está terminado, la señal se reflejará e interferirá con la siguiente señal de datos que baja por la línea, lo que podría interrumpir las comunicaciones.

La red CAN (Controller Area Network) típicamente utiliza dos cables para la transmisión de datos bidireccional: el cable CAN alto (CAN-High) y el cable CAN bajo (CAN-Low). Estos cables forman un par diferencial que permite la comunicación robusta y resistente a interferencias electromagnéticas.

La velocidad de comunicación en una red CAN puede variar. Los estándares CAN admiten velocidades de transmisión que van desde 50 Kbps (kilobits por segundo) hasta 1 Mbps (megabit por segundo). La elección de la velocidad dependerá de los requisitos específicos de la aplicación.

También es importante tener en cuenta que la distancia de la comunicación en una red CAN puede variar según la velocidad de transmisión. A velocidades más altas, la distancia efectiva de la comunicación puede ser más corta debido a la atenuación de la señal. Por ejemplo, como mencionaste, a 1 Mbps, la distancia típica puede ser de hasta 40 metros, mientras que a 50 Kbps, podría extenderse hasta 1000 metros.

Esquema del módulo de bus CAN MCP2515

Antes de ver el esquema del módulo, debe comprender un par de cosas sobre los circuitos integrados, es decir, MCP2515 y TJA1050.

MCP2515 IC es el controlador principal que internamente consta de tres subcomponentes principales: el módulo CAN, la lógica de control y el bloque SPI.

El módulo CAN es responsable de transmitir y recibir mensajes en el bus CAN. Control Logic maneja la configuración y operación del MCP2515 interconectando todos los bloques. El bloque SPI es responsable de la interfaz de comunicación SPI.

En cuanto al IC TJA1050, dado que actúa como interfaz entre el controlador CAN MCP2515 y el bus CAN físico, este IC es responsable de tomar los datos del controlador y transmitirlos al bus.

La siguiente imagen muestra el esquema del módulo CAN MCP2515 y muestra cómo MCP2515 IC y TJA1050 IC están conectados en el módulo.

Estructura del mensaje CAN:

  1. Campo de Encabezado (Header):
    • Inicio del Trama (SOF – Start of Frame): Es un bit dominante (0) que indica el inicio de la trama.
    • Campo de Arbitraje: Contiene la Identificación del Mensaje (ID) que determina la prioridad del mensaje. Los bits de menor valor tienen mayor prioridad.
    • Bit de Control: Indica si el mensaje es estándar o extendido.
    • Bit RTR (Remote Transmission Request): Indica si el mensaje es una solicitud de transmisión remota.
  2. Campo de Control: Contiene información sobre la longitud de los datos y otros bits de control.
  3. Campo de Datos (Data Field): Contiene los datos que se están transmitiendo. La longitud de este campo puede ser de 0 a 8 bytes.
  4. Campo de CRC (Cyclic Redundancy Check): Contiene bits de verificación de redundancia cíclica para garantizar la integridad de la trama.
  5. Campo de Confirmación (ACK): Después de la transmisión de la trama, los nodos receptores envían un ACK para confirmar que recibieron correctamente la trama.
  6. Campo de Separación entre Tramas (Interframe Space): Espacio entre tramas para distinguir entre tramas sucesivas.
  7. Campo de Fin de Trama (EOF – End of Frame): Indica el final de la trama.

Ahora bien: ¿Hace falta saber toda la estructura?

Podemos quedarnos con esto:

Formato del mensaje CAN:

En la comunicación CAN, los datos se transmiten en la red como un formato de mensaje particular. Este formato de mensaje contiene muchos segmentos, pero dos segmentos principales son los identificador y datos que ayuda a enviar y responder mensajes en el bus CAN.

Identificador o CAN ID:

El Identificador CAN (también conocido como CAN ID o PGN – Parameter Group Number) es crucial en la red CAN para identificar los mensajes y asignar prioridades. Aquí hay más detalles:

  1. Longitud del Identificador:
    • Puede tener una longitud de 11 bits (CAN estándar) o 29 bits (CAN extendido).
    • En CAN estándar, el identificador es de 11 bits y en CAN extendido, el identificador es de 29 bits.
  2. Prioridad:
    • En una red CAN, los mensajes con identificadores más bajos tienen mayor prioridad.
    • Los bits de menor valor en el campo de arbitraje del encabezado determinan la prioridad del mensaje.
  3. Tipos de Identificadores:
    • Estándar (11 bits): Utilizado para redes CAN estándar.
    • Extendido (29 bits): Se utiliza en redes CAN extendidas para manejar un mayor número de nodos y mensajes.
  4. Parameter Group Number (PGN):
    • En el contexto de J1939, un protocolo basado en CAN utilizado comúnmente en vehículos comerciales, el identificador se conoce como PGN.
    • El PGN se encuentra en los bits de mayor valor del identificador y agrupa mensajes relacionados.

Ejemplo de Identificador CAN estándar (11 bits): | ID10 | ID9 | ID8 | ID7 | ID6 | ID5 | ID4 | ID3 | ID2 | ID1 | ID0 |

Ejemplo de Identificador CAN extendido (29 bits): | ID28 | ID27 | ... | ID2 | ID1 | ID0 |

La combinación de identificador y bits de control en el campo de arbitraje ayuda a determinar qué mensaje tiene prioridad en el bus CAN, permitiendo una comunicación eficiente y organizada en entornos con múltiples nodos.

Datos:

los datos en un mensaje CAN representan la información real que se está transmitiendo desde un dispositivo a otro. Aquí están los detalles adicionales sobre los datos en un mensaje CAN:

  1. Campo de Datos:
    • Contiene los datos reales del sensor o control que se están transmitiendo.
    • La longitud de este campo puede variar de 0 a 8 bytes, dependiendo de la cantidad de datos que se estén enviando.
  2. Código de Longitud de Datos (DLC):
    • Indica la longitud de los datos en el campo de datos.
    • Puede tener un valor entre 0 y 8, lo que significa que el campo de datos puede contener entre 0 y 8 bytes de información.

Cables:

En sistemas CAN, se utilizan cables específicos para garantizar una transmisión de datos confiable y resistente a interferencias electromagnéticas. Aquí hay algunas características clave de los cables utilizados en redes CAN:

  1. Apantallamiento:
    • Los cables CAN suelen tener una capa de apantallamiento para proteger la señal de posibles interferencias electromagnéticas (EMI).
    • El apantallamiento ayuda a prevenir la entrada o salida de ruido electromagnético que podría afectar la integridad de las señales CAN.
  2. Pares Trenzados:
    • Los cables CAN suelen ser de par trenzado, lo que significa que hay dos conductores entrelazados a lo largo del cable.
    • La torsión de los pares ayuda a reducir la interferencia electromagnética entre los cables, mejorando la calidad de la señal.
  3. Impedancia Característica:
    • Los cables CAN están diseñados para tener una impedancia característica específica (generalmente 120 ohmios) para minimizar las reflexiones de la señal y garantizar una transmisión de datos adecuada.
    • La impedancia característica se mantiene constante a lo largo del cable para evitar distorsiones en la señal.
  4. Conectores:
    • Los conectores utilizados son generalmente del tipo macho-hembra y cumplen con estándares específicos.
    • Los conectores comunes incluyen conectores de 9 pines en aplicaciones automotrices y conectores de tipo D-sub en aplicaciones industriales.
  5. Longitud del Cable:
    • La longitud del cable CAN está limitada por la velocidad de transmisión y la calidad de la señal que se desea mantener.
    • En redes CAN estándar, la longitud máxima típica es de 40 metros, pero en aplicaciones específicas, como en vehículos, se pueden usar repetidores para extender la longitud total del bus CAN.
  6. Resistencia de Terminación:
    • Al final del bus CAN, se suelen colocar resistencias de terminación de 120 ohmios para evitar reflexiones de la señal y mejorar la integridad de la transmisión.

Es importante seleccionar cables adecuados y seguir las especificaciones recomendadas para garantizar un rendimiento confiable en las redes CAN. Las características específicas pueden variar según el entorno de aplicación, como automoción, industrial o sistemas embebidos.

Conexión con Placa de Desarrollo tipo Uno (Atmega328P)

Código para compilar con IDE:

Si bien ya vamos por la versión 2.veintipico, soy fan de la 1.8.19 ¿Por qué será?

Código para Transmitir

#include <SPI.h>
#include <mcp2515.h>

struct can_frame canMsg;
MCP2515 mcp2515(10);


void setup() {
  Serial.begin(115200);
  
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS);
  mcp2515.setNormalMode();
  
  Serial.println("------- Escribir tecnología CAN ----------");
  Serial.println("ID  DLC   DATA");
}

void loop() {
  if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
    Serial.print("El ID es: "); // print ID
    Serial.print(canMsg.can_id, HEX); // print ID
    Serial.print(", dlc:  "); 
    Serial.print(canMsg.can_dlc, HEX); // print DLC
    Serial.print(", mensaje: ");
    
    for (int i = 0; i<canMsg.can_dlc; i++)  {  // print the data
      Serial.print(canMsg.data[i],HEX);
      Serial.print(" | ");
    }

    Serial.println();      
  }
}

ver en github

Código para recibir:

#include <SPI.h>
#include <mcp2515.h>

struct can_frame canMsg1;
struct can_frame canMsg2;
MCP2515 mcp2515(10);


void setup() {
  canMsg1.can_id  = 0x0F6;
  canMsg1.can_dlc = 8;
  canMsg1.data[0] = 0x8E;
  canMsg1.data[1] = 0x87;
  canMsg1.data[2] = 0x32;
  canMsg1.data[3] = 0xFA;
  canMsg1.data[4] = 0x26;
  canMsg1.data[5] = 0x8E;
  canMsg1.data[6] = 0xBE;
  canMsg1.data[7] = 0x86;

  canMsg2.can_id  = 0x036;
  canMsg2.can_dlc = 8;
  canMsg2.data[0] = 0x0E;
  canMsg2.data[1] = 0x00;
  canMsg2.data[2] = 0x00;
  canMsg2.data[3] = 0x08;
  canMsg2.data[4] = 0x01;
  canMsg2.data[5] = 0x00;
  canMsg2.data[6] = 0x00;
  canMsg2.data[7] = 0xA0;
  
  while (!Serial);
  Serial.begin(115200);
  
  mcp2515.reset();
  mcp2515.setBitrate(CAN_125KBPS);
  mcp2515.setNormalMode();
  
  Serial.println("Ejemplo: Leer tecnología CAN");
}

void loop() {
  mcp2515.sendMessage(&canMsg1);
  mcp2515.sendMessage(&canMsg2);

  Serial.println("Messages sent");
  
  delay(1000);
}

ver en github

Publicado el Deja un comentario

¿Qué placa de Desarrollo con ESP32 uso?

El microcontrolador ESP32 es el dispositivo electrónico que más me sorprende. Más que esto ya sería un microprocesador de última generación o algún «Sensor de control Mental». Pero de estos últimos, uno es algo caro como para experimentar (Mi PC tiene un Intel i5) y el otro no se ha inventado aún.

El ESP32 cuesta entre 3 y 8 dólares, tiene WiFi, BLE (que es mejor que solo Bluetooth), y dos núcleos, lo cuál lo hace muy versátil y simplificaría trabajo de programación en determinados proyectos (pues se puede dedicar un núcleo entero a una tarea que resulte compleja y lo demás ponerlo en el otro).

El microcontrolador ESP32 es lo que está dentro de la cubierta metálica. Lo que comúnmente se conoce como ESP32, sería el módulo completo, por ejemplo ESP32F o ESP32U

Este módulo, por ejemplo el ESP32U o ESP-WROOM-32U es todo un microcontrolador+WiFi+BLE. Esta versión (32U) Cuenta con una salida para conexión de antena en su placa. Funciona a 3.3V y se puede conectar (a través de soldadura SMD) y programarlo con una IDE de desarrollo,

Las que he probado:

La ventaja de utilizar así el módulo es muy clara: su tamaño. Abre las puertas a infinidad de proyectos en un espacio recucido para cualquier tipo de dispositivo portable, prendas de vestir, drones donde el peso es mandatario evitar y un sinfín de aplicaciones más.

Las desventajas son para el desarrollador. Por eso sería redundante mas correcto decir que «Una placa de Desarrollo, facilita el desarrollo»

-Suelen tener regulador de tensión de 5V a 3.3V

-Incorporan pines espaciados 2.54mm (el estándar de Du Pont) lo que facilita mucho las conexiones

-Chip FTDI y puerto USB para rápida y fácil conexión a la computadora (requiere drivers)

-Incorporan un LED, que está para usarlo! Reprochable al fabricante que no lo incorpora.

ESP32 ESP-32S

(el módulo más genérico que encontré) se vende en Mercadolibre Argentina al precio más bajo, y en España se consigue en Amazon con la misma configuración de pines, así como en AliExpress, de un montón de fabricantes (viene de diferentes colores), para todo el mundo.

Publicado el Deja un comentario

Controlar Motor Paso a Paso con DRV8826

Un motor paso a paso es un tipo de motor eléctrico que realiza movimientos discretos o «pasos» en respuesta a señales eléctricas. Cada paso corresponde a un ángulo específico de rotación. Estos motores son ampliamente utilizados en aplicaciones que requieren un posicionamiento preciso, como impresoras 3D, máquinas CNC, robots, etc.

El DRV8826 es un controlador de motor paso a paso que se utiliza para controlar y gestionar la operación de motores paso a paso.

Paso a paso para el paso a paso (cuac):

Componentes básicos:

  1. Motor paso a paso: Este es el componente que realizará el movimiento. Los motores paso a paso tienen un número específico de pasos por revolución.
  2. Controlador de motor paso a paso (por ejemplo, DRV8826): Este componente se encarga de recibir las señales de control y alimentar el motor paso a paso de acuerdo con esas señales.
  3. Microcontrolador o Placa de Desarrollo: Se utiliza para enviar comandos al controlador del motor.
  4. Fuente de alimentación: Proporciona la energía necesaria para alimentar tanto el controlador como el motor.

Conexiones básicas:

  1. Conectar el motor al controlador: Conecta las bobinas del motor a las salidas del controlador. Asegúrate de seguir la secuencia correcta para las bobinas.
  2. Conectar el controlador al microcontrolador: Conecta los pines de control (pasos, dirección, etc.) del controlador al microcontrolador.
  3. Conectar la fuente de alimentación: Asegúrate de que tanto el controlador como el motor reciban la alimentación necesaria.

Configuración y código (ejemplo para compilar con IDE de desarrollo):

  • Se definen los pines de control (stepPin y dirPin).
  • En el bucle principal (loop), se establece la dirección del movimiento, y luego se realizan 200 pasos en esa dirección.
  • Se espera un segundo antes de cambiar la dirección del movimiento y realizar 200 pasos en la dirección opuesta.
  • Se repite este patrón.
// Definir pines de control
const int stepPin = 2;
const int dirPin = 3;

void setup() {
  // Configurar pines como salidas
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
}

void loop() {
  // Establecer la dirección del movimiento
  digitalWrite(dirPin, HIGH);  // Cambiar a LOW para invertir la dirección

  // Realizar 200 pasos
  for (int i = 0; i < 200; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(500);  // Ajustar según la velocidad del motor
    digitalWrite(stepPin, LOW);
    delayMicroseconds(500);  // Ajustar según la velocidad del motor
  }

  // Esperar un segundo
  delay(1000);

  // Cambiar la dirección del movimiento
  digitalWrite(dirPin, LOW);

  // Realizar 200 pasos en la dirección opuesta
  for (int i = 0; i < 200; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(500);  // Ajustar según la velocidad del motor
    digitalWrite(stepPin, LOW);
    delayMicroseconds(500);  // Ajustar según la velocidad del motor
  }

  // Esperar un segundo
  delay(1000);
}
Publicado el Deja un comentario

Sensor ACS712: Medir intensidad y consumo eléctrico con IDE de Desarrollo

El ACS712 es una herramienta útil para medir la corriente en un circuito, lo que lo hace adecuado para diversas aplicaciones en electrónica y proyectos con microcontroladores como los que vienen en las Placas de Desarrollo con Atmega328P o ESP32 y ESP8266, por nombrar algunos microcontroladores mainstream.

Es importante tener en cuenta el rango de medición adecuado y considerar lo intrudivo que puede llegar a ser el sensor al planificar su implementación en un proyecto.

El ACS712 es un sensor de corriente que se utiliza para medir la intensidad de corriente en un circuito, ya sea en corriente continua (CC) o alterna (CA). Aquí hay más detalles sobre sus características y aplicaciones:

Principio de Funcionamiento:

Rangos Disponibles:

Existen diferentes versiones del ACS712 que tienen diferentes rangos de medición, como 5A, 20A y 30A.

La corriente máxima que puede manejar el sensor es 5 veces el rango de medición especificado.

Salida Proporcional a la Corriente:

La salida del sensor es una señal analógica proporcional a la corriente que fluye a través del conductor. La relación es generalmente de 185 mV por amperio.

Aislamiento Galvánico:

El ACS712 proporciona un aislamiento galvánico entre el camino conductor y el circuito interno del sensor, lo que significa que el conductor puede estar conectado a un potencial diferente sin afectar la medición.

Calibración de Fábrica

Viene calibrado de fábrica, pero para obtener mediciones precisas, puede ser necesario ajustar la calibración.

Desventajas


Es un sensor intrusivo, ya que debe insertarse en el conductor, lo que podría requerir cortar un cable. Puede ser menos conveniente en comparación con sensores no intrusivos como los transformadores de corriente.

El ACS712 utiliza un sensor Hall para medir el campo magnético generado por la corriente que fluye a través de un conductor.

Internamente, tiene un camino conductor (cobre) que está expuesto al flujo de corriente que se desea medir.




Aplicaciones Típicas:

Control de motores.

Control de cargas eléctricas.

Monitoreo del consumo de corriente en fuentes de alimentación.

Protección contra sobrecorrientes.