Tabla de contenido:
- Suministros
- Paso 1: el circuito del transceptor
- Paso 2: lectura y escritura en el bus CAN
- Paso 3: Conexión de nodos
- Paso 4: haz la PCB
- Paso 5: expandir la placa
- Paso 6: Solicite sus PCB a JLCPCB
- Paso 7: ¡Consiga sus tablas
Video: Interfaz CAN STM32: 7 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
El bus Controller Area Network, o bus CAN, es un protocolo de comunicación muy efectivo gracias a sus capacidades de alta velocidad, confiabilidad de largo alcance e inmunidad al ruido. Por estas razones, la comunicación CAN se ha convertido en el estándar en tecnologías automotrices y entornos de alto ruido. Los dispositivos en el bus CAN se denominan nodos. Todos los nodos del bus CAN están conectados en paralelo, lo que significa que cada nodo está conectado a todos los demás nodos de la red. Un solo bus CAN puede tener hasta 115 nodos a la vez, dependiendo de la velocidad de transmisión de mensajes, pero para la mayoría de las aplicaciones, se recomienda tener hasta 32 dispositivos. También se recomienda mantener la longitud entre el primer y último nodo a menos de 40 metros de distancia.
Este tutorial paso a paso le mostrará cómo configurar un nodo CAN utilizando el microcontrolador STM32, incluido el circuito y el código C simple para leer y escribir en el bus CAN
Suministros
Para cada nodo CAN:
- 1x placa de ruptura STM32 (Nucleo, Blue Pill, otros)
- 1x transceptor CAN MCP2551 IC
- 1x condensador de 0,1 µF
- 1x resistencia de 120Ω
- 1 resistencia de 1 kΩ
- 1+ entrada legible (botón, interruptor, potenciómetro, etc.) o salida (LED, MOSFET, etc.)
- 1x conector Dsub9
Paso 1: el circuito del transceptor
Para comunicarnos con el bus CAN, usaremos el IC del transceptor CAN MCP2551. El IC actúa como un par de transmisor / receptor intermedio para conectar el STM32 al bus CAN. El circuito para configurar este IC es bastante simple, pero hay algunas cosas a tener en cuenta:
-
CAN_RX (pin 4) y CAN_TX (pin 1) en el chip MCP2551 solo pueden ir a ciertos pines del STM32.
- En el STM32F1 Nucleo, conecte la línea RX al pin PB8 y la línea TX al pin PB9.
- En la pastilla azul STM32F1, conecte RX al pin PA11 y TX al pin PA12.
- Tenga en cuenta que estas asignaciones de pines tienen alternativas. Consulte los manuales del microcontrolador para determinar qué pines son capaces de CAN_RD y CAN_TD
- Si usa un Arduino o una placa sin un comunicador CAN incorporado, se requerirá el chip IC MCP2515 para convertir otros protocolos de mensajes a CAN.
- El pin CANL debe conectarse a los otros pines CANL de los otros nodos de bus. Lo mismo ocurre con los pines CANH.
- La resistencia de 120 Ω a través de los pines CANH y CANL solo se requiere si el nodo es un nodo terminal. Esto significa que está al final del cableado de conexión en paralelo. En otras palabras, el bus CAN solo debe tener dos resistencias de 120 Ω y deben estar lo más alejadas posible entre sí.
- Por último, la resistencia de 1 kΩ en RS (pin 8) se puede cambiar por una resistencia de 10 kΩ para controlar el tiempo de subida / bajada de los bits del mensaje CAN. Consulte la hoja de datos del chip MCP2551 para obtener más detalles.
Paso 2: lectura y escritura en el bus CAN
Ahora que el circuito del transceptor está conectado al STM32, podemos comenzar a escribir mensajes en el bus CAN. Esta guía instructiva no profundizará en el código STM32. Sin embargo, asegúrese de consultar nuestro código para ver ejemplos aquí. El uso del STM32 como nodo CAN requerirá un archivo de encabezado CAN. Escribimos el nuestro, que se puede encontrar en nuestro github aquí. Aquí, daremos una breve descripción general del proceso de lectura / escritura.
Para leer desde el bus CAN, primero necesitamos conocer el ID del mensaje CAN. Cada mensaje debe tener un ID único, y los ID más bajos tienen mayor prioridad. El fragmento de código que se muestra aquí está esperando un mensaje CAN con ID 0x622. En nuestro sistema, si el primer bit del sexto byte es alto, entonces queremos establecer el pin A10 alto.
Al escribir un mensaje CAN, debemos recordar que los mensajes CAN son multibyte. Cada mensaje escrito debe tener una identificación y una longitud. En el segundo fragmento de código que se muestra, escribimos datos en cada byte y luego enviamos el mensaje (los parámetros de ID y longitud se definieron anteriormente en el código).
Paso 3: Conexión de nodos
Al conectar varios nodos CAN, se debe prestar especial atención a la longitud de los cables. Los dos nodos más lejanos pueden estar a una distancia de hasta 40 m entre sí. Los nodos intermedios que se conectan al bus deben estar a 50 cm de las líneas principales del bus.
Las conexiones CAN siguen un estándar de la industria de usar un conector Dsub9 con la línea CANL en el pin 2 y la línea CANH en el pin 7. La opción de línea CANGND puede ir en el pin 3.
Paso 4: haz la PCB
Al enrutar señales CAN en una PCB, recuerde que CAN es una señal diferencial y, por lo tanto, se deben seguir cuidadosamente las pautas de enrutamiento para CANH y CANL.
Paso 5: expandir la placa
Junte algunos nodos más, agregue algunas entradas / salidas y conecte todos sus pines CANH y CANL. Tenga en cuenta que cada STM32 u otro microcontrolador requiere su propio chip MCP2551; no se pueden compartir.
Dicho esto, intente mantener sus PCB más pequeños que el que se muestra aquí
Paso 6: Solicite sus PCB a JLCPCB
JLCPCB ofrece un servicio rápido y de alta calidad a precios muy razonables. ¡Obtenga 5 tableros, de cualquier color con toneladas de personalización, por solo $ 2! Y si es tu primer pedido, ¡obtén 10 tablas por el mismo precio!
¡Simplemente cargue sus gerbers y obtenga una cotización instantánea! Envíe su pedido y sus tableros serán revisados para producción dentro de una hora. Una vez que pague, puede esperar sus tablas de alta calidad en tan solo tres días.
Compruébalo aquí
Paso 7: ¡Consiga sus tablas
Enorme agradecimiento a JLCPCB por patrocinar este proyecto. JLCPCB (ShenzhenJLC Electronics Co., Ltd.), es la empresa de prototipos de PCB más grande de China y un fabricante de alta tecnología que se especializa en la creación rápida de prototipos de PCB y la producción de PCB en lotes pequeños. Tuvieron la amabilidad de proporcionar a UBC Solar nuestros nuevos PCB para nuestro auto de carreras con energía solar. ¡Hicimos nuestro pedido el viernes y recibimos las tablas el miércoles!
Recomendado:
Interfaz del sensor capacitivo de huellas dactilares con Arduino UNO: 7 pasos
Interfaz del sensor capacitivo de huellas dactilares con Arduino UNO: ¡Hola, chicos! Akarsh aquí de CETech. Hoy vamos a agregar una capa protectora a nuestros proyectos. No se preocupe, no vamos a nombrar guardaespaldas para lo mismo. Será un lindo sensor de huellas dactilares de DFRobot. Así que
Interfaz del sensor de gas con Arduino: 4 pasos
Interfaz del sensor de gas con Arduino: El sensor de humo MQ-2 es sensible al humo y a los siguientes gases inflamables: GLP, butano, propano, metano, alcohol, hidrógeno. La resistencia del sensor es diferente según el tipo de gas. El sensor de humo tiene un potenciómetro incorporado
Interfaz con una pantalla LCD M4Inclusión: 5 pasos
Interfaz con una pantalla LCD M4Inclusión: Este tutorial nos permitirá controlar una pantalla LCD a través de Wi-Fi desde nuestro teléfono inteligente.Si no tenemos el controlador pequeño podemos usar el arduino, pero debajo del enlace para el desarrollo del Drivemall. prefiriendo el Drivemall sobre el cla
Introducción a la interfaz del sensor I2C - Interfaz de su MMA8451 usando ESP32s: 8 pasos
Introducción a la interfaz del sensor I2C - Interfaz de su MMA8451 usando ESP32s: en este tutorial, aprenderá todo sobre cómo iniciar, conectar y hacer que el dispositivo I2C (acelerómetro) funcione con el controlador (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Interfaz del sensor ADXL335 en Raspberry Pi 4B en 4 pasos: 4 pasos
Interfaz del sensor ADXL335 en Raspberry Pi 4B en 4 pasos: En este Instructable vamos a interconectar un sensor ADXL335 (acelerómetro) en Raspberry Pi 4 con Shunya O / S