COMENZANDO CON CAN INTERFAZ CON ARDUINO

Este artículo tiene como objetivo que los lectores exploren cómo conectar el bus CAN con Arduino, que se utiliza para comunicar sensores, actuadores y controladores en un automóvil.

Este proyecto ayuda a comprender los conocimientos de la interfaz del protocolo CAN con Arduino. Controller Area Network o protocolo CAN es una metodología de comunicación entre diversos dispositivos electrónicos como sistemas de gestión del motor, control de marchas, suspensión activa, ABS, control de iluminación, aire acondicionado, airbags, cierre centralizado, etc. Para obtener más aprendizajes, consulte este artículo.

Aquí obtendrá una idea sobre cómo programar Arduino para que interactúe con el controlador CAN (MCP2515) para que actúe como un transceptor.

DESCRIPCIÓN:

Requisitos previos y equipo:

Necesitará lo siguiente:

  1. Dos placas Arduino o un clon de Arduino (aquí tienes una guía si la necesitas)

  2. Un módulo Bluetooth TTL-UART de 5v.

  3. Arduino IDE para programación.

  4. Dos tranciever CAN MCP2515.

Características del transistor CAN MCP2515:

  1. Implementa CAN V2.0B a hasta 1 Mb/s

  2. Interfaz SPI hasta 10 MHz

  3. Datos estándar (11 bits) y extendidos (29 bits) y tramas remotas

  4. Dos buffers de recepción con almacenamiento de mensajes priorizados

  5. Dos indicadores LED

Demostración:

Protótipo de circuitos transmissores e receptores baseados em Arduino para comunicação através de interface CAN

Fig. 1: Prototipo de circuitos transmisores y receptores basados ​​en Arduino para comunicación a través de la interfaz CAN

1. Descargue el archivo de código de biblioteca CAN-BUS para Arduino 1.0 y descomprímalo en el directorio de bibliotecas de la carpeta IDE de Arduino. Para la configuración de mi computadora, está en este directorio.

Bibliotecas XXXarduino-1.0.1

Después de copiar los archivos, el directorio

XXXarduino-1.0.1bibliotecasDHT

2. Abra Arduino-1.0 y navegue hasta Ejemplos donde encontrará ejemplos: recibir_blink, recibir_verificar, recibir_interrupt, Enviar, Enviar_blink. Aquí usaremos send y Receiver_check para verificar nuestro bus CAN.

Captura de tela da navegação para o código de amostra do receptor CAN no Arduino IDE

Fig. 2: Captura de pantalla del código de ejemplo de navegación para el receptor CAN en Arduino IDE

3. Subir Enviar ejemplos a una placa Arduino. Elija la placa navegando a: Herramientas -> Puerto serie -> COMX.

Nota: Recuerde qué tablero seleccionó como nodo “enviador” y qué tablero seleccionó como nodo “receptor”.

4. Abra el "Monitor serie" seleccionando el puerto Com que seleccionó para el receptor, recibirá el mensaje predefinido "0 1 2 3 4 5 6 7" que se envía desde el nodo "enviar". Esto se puede ver en la siguiente imagen.

Captura de tela da porta serial do Arduino recebendo mensagens predefinidas pela interface CAN

Fig. 3: Captura de pantalla del puerto serie Arduino que recibe mensajes predefinidos a través de la interfaz CAN

Funciones en la biblioteca CAN:

1. Establecer la velocidad en baudios

Para inicializar la velocidad en baudios del sistema CAN Bus, utilice las siguientes funciones.

Las tarifas de transmisión disponibles son:

CAN_5KBPS, CAN_10KBPS, CAN_20KBPS, CAN_40KBPS, CAN_50KBPS, CAN_80KBPS, CAN_100KBPS, CAN_125KBPS, CAN_200KBPS, CAN_250KBPS, CAN_500KBPS y CAN_1000KBPS

2. Verificar Recibir

MCP2515 tiene dos modos de verificación de recepción, uno es Sondeo donde el código verifica la trama recibida y el otro modo es el modo Interrupción donde se usa un pin de interrupción separado para notificar la trama recibida.

A continuación se muestra el método de sondeo para obtener la trama recibida.

INT8U MCP_CAN::checkReceive(nulo);

La función devolverá 1 si se recibe una trama y 0 si no se recibe nada.

3. Obtenga la identificación CAN

Si desea conocer el CAN ID del nodo emisor cuando se recibe un mensaje, puede utilizar la siguiente función.

INT32U MCP_CAN::getCanId(nulo)

4. Enviar datos

La siguiente función es enviar datos al bus:

CAN.sendMsgBuf (ID INT8U, extensión INT8U, len INT8U, data_buf);

Dónde,

"id" proporciona la ID CAN de los nodos emisores.

“ext” '0' significa marco estándar. '1' significa marco extendido.

"len" da la longitud de este marco.

“data_buf” es el contenido principal de este mensaje.

Por ejemplo, en el ejemplo de 'enviar', tenemos:

carácter sin firmar stmp(8) = {0, 1, 2, 3, 4, 5, 6, 7};

CAN.sendMsgBuf(0x00, 0, 8, stmp); //envía el mensaje 'stmp' al bus y le dice a otros dispositivos que se trata de una trama estándar 0x00.

5. Recibir datos

La siguiente función se utiliza para recibir datos del bus:

CAN.readMsgBuf (char len sin firmar, char buf sin firmar);

"len" da la longitud de los datos.

“bueno” es el contenido principal de este mensaje.

Protótipo de circuito transmissor CAN baseado em Arduino projetado em uma placa de ensaio

Fig. 4: Prototipo de circuito transmisor CAN basado en Arduino diseñado en una placa de pruebas

Protótipo de circuito receptor CAN baseado em Arduino projetado em uma placa de ensaio

Fig. 5: Prototipo de circuito receptor CAN basado en Arduino diseñado en una placa de pruebas

Diagramas de circuito

circuito_30

Vídeo del proyecto

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.