Ir a contenido
📢 ¡Nos mudamos! 🏢✨ Av. Lapislázuli 2074-Interior 7, colonia Victoria, Guadalajara, Jal. Lunes - viernes 10am - 6:30pm
📢 ¡Nos mudamos! 🏢✨ Av. Lapislázuli 2074-Interior 7, colonia Victoria, Guadalajara, Jal. Lunes - viernes 10am - 6:30pm
Tutorial modulo CAN MCP2515 arduino

Tutorial modulo CAN MCP2515 arduino

En ocasiones tenemos la necesidad de comunicar 2 o mas arduinos para compartir datos de sensores etc.

Existen muchas opciones para lograr nuestro propósito, pero el bus CAN es ideal para aplicaciones de automatización industrial, domótica, autotrónica, mecatrónica automotriz y más.

CAN (siglas del inglés Controller Area Network) es un protocolo de comunicaciones desarrollado por Robert Bosch.

Con la ayuda de este módulo podrás recibir y enviar frames de datos en formato estándar y extendido. El controlador CAN posee mascaras y filtros de acceso, reduciendo así la carga del microcontrolador principal.

Especificaciones 

  •  Voltaje de Operación: 5 V
  •  Consumo Corriente: 500 uA (máx)
  •  Chip principal: MCP2515
  •  Tipo de Comunicación: Half-Duplex
  •  Interface: SPI
  •  Protocolo: CAN 2.0B
  •  Velocidad máxima de 10 Mbit/s (a 12 metros)
  •  Longitud máxima de alcance de 1200 metros (a 100 kbit/s)
  •  Numero de Buffers TX: 3
  •  Numero de Buffers RX: 2
  •  Implementa la capa física ISO-11898
  •  Hasta 1Mb/s de velocidad
  •  Bajo consumo de corriente en modo Stand-by
  •  Detección de corto de Tierra en la entrada TXD
  •  Un nodo sin energía no perturba el funcionamiento del bus CAN
  •  Hasta 112 nodos
  • Protección anti corto circuito

Pinout

Hoja de datos

https://ww1.microchip.com/downloads/en/DeviceDoc/MCP2515-Family-Data-Sheet-DS20001801K.pdf

Tutoriales de apoyo

Ejemplo

En este ejemplo leeremos el estado de una entrada y mandaremos el estado a otro arduino, el cual será el procesara el estado y el encargado de encender o apagar un led dependiendo de dicho estado.

Para comenzar a utilizar el modulo necesitaremos instalar la librería arduino-mcp2515 la cual esta disponible en el siguiente link.

Link librería:

https://github.com/autowp/arduino-mcp2515

 

 Diagrama de conexión transmisor

 

 

 

Funciones principales

 canMsg1.can_id  = 0x01;

Es importante que se defina el ID para determinar de donde llega el frame

canMsg1.can_dlc = 1;

Longitud de datos 

canMsg1.data[0] = 0x00;

El mensaje o datos que se enviara, este dato se modificara dependiendo del estado de la entrada.

mcp2515.sendMessage(&canMsg1);

Envía el mensaje, ID, LONGITUD y DATOS.

Código transmisor

 

 

Diagrama de conexión receptor

Funciones principales

mcp2515.setBitrate(CAN_125KBPS);

Define la velocidad de transmisión se puede configurar a 

  • CAN_5KBPS,
  • CAN_10KBPS,
  • CAN_20KBPS,
  • CAN_31K25BPS,
  • CAN_33KBPS,
  • CAN_40KBPS,
  • CAN_50KBPS,
  • CAN_80KBPS,
  • CAN_83K3BPS,
  • CAN_95KBPS,
  • CAN_100KBPS,
  • CAN_125KBPS,
  • CAN_200KBPS,
  • CAN_250KBPS,
  • CAN_500KBPS,
  • CAN_1000KBPS

mcp2515.readMessage(&canMsg)

Lee el mensaje si hay datos disponibles y los almacena en la variable canMsg de tipo can_frame

 Código Receptor

Esto es solo el comienzo, puedes extender la funcionalidad con estos módulos usándola en tu proyecto.

Comparte con nosotros algún proyecto en el que lo hayas aplicado o lo vallas a aplicar.

Artículo anterior Esp32 y pantalla lcd i2c
Artículo siguiente Programar ESP32 con IDE arduino

Dejar un comentario

Los comentarios deben ser aprobados antes de aparecer

* Campos requeridos