BMW M5 Forum and M6 Forums banner
41 - 54 of 55 Posts
Sí, esa es la terminación adecuada para el K-can. Echa un vistazo al boceto de arduino aquí.

https://github.com/pavelmalik/BMWCanBridge

Déjame adivinar, ¿quieres atar las salidas de escape al modo m? :
¡Gracias por la respuesta tan rápida!
Sí... has dado en el clavo - quiero hacer como rt7085 e implementar un modo M y un funcionamiento de la válvula de escape dependiente de las RPM. Mi configuración actual se opera convenientemente desde mis botones Homelink en mi espejo retrovisor, sin embargo, quiero un poco más de inteligencia en torno a la conmutación (principalmente solo por la diversión de jugar, para ser honesto).


¡Gracias por el enlace a tu código! Parece que estás usando el Due, que creo que tiene bus can incorporado. Usaré un módulo Nano + MC2515, pero creo que podré usar algunos elementos de tu código.

Esta es mi primera incursión en Arduino, así que tal vez estoy tratando de correr antes de poder caminar.
 
Hola a todos,

Básicamente, quiero que mi escape funcione de la siguiente manera:
Cuando el modo M está desactivado, el escape permanecerá cerrado (silencioso), pero se abrirá (ruidoso) cuando RPM>4000 y acelerador>50%
Cuando el modo M está activado, el escape permanecerá abierto (ruidoso) en todas las condiciones.

He podido oler el K-Can usando la combinación Arduino Nano + MCP2515 sin demasiados problemas. Puedo determinar las RPM del ArbID 0xAA y el modo M del 0x399 como se sugirió, sin embargo, también me gustaría determinar la posición del acelerador (pedal).
Estoy determinando los estados de la siguiente manera:
Modo M probando el valor del byte 1 (byte[1] = 81 entonces la unidad M está desactivada, si byte[1] = 82 entonces la unidad M está activada) en ArbID 0x399

RPM calculando (byte[5]*256+byte(4))/4 de ArbID 0xAA

Según el increíble trabajo en este sitio Códigos de BUS CAN, debería poder calcular la posición del acelerador a partir de los bytes 2 y 3 de ArbID 0xAA, sin embargo, no puedo determinar la función de transferencia correcta.

¿Alguien tiene alguna sugerencia sobre cómo determinar la posición del acelerador?

Publicaré mi boceto de Arduino aquí una vez que lo haya completado para que otros lo usen.
 
Discussion starter · #43 ·
Hola a todos,


Básicamente, quiero que mi escape funcione de la siguiente manera:
Cuando el modo M está desactivado, el escape permanecerá cerrado (silencioso), pero se abrirá (ruidoso) cuando RPM>4000 y acelerador>50%
Cuando el modo M está activado, el escape permanecerá abierto (ruidoso) en todas las condiciones


He podido oler el K-Can usando la combinación Arduino Nano + MCP2515 sin demasiados problemas. Puedo determinar las RPM del ArbID 0xAA y el modo M del 0x299 como se sugirió, sin embargo, también me gustaría determinar la posición del acelerador (pedal).
Estoy determinando los estados de la siguiente manera:
Modo M probando el valor del byte 1 (byte[1] = 81 entonces la unidad M está desactivada, si byte[1] = 82 entonces la unidad M está activada) en ArbID 0x399

RPM calculando (byte[5]*256+byte(4))/4 de ArbID 0xAA


Según el increíble trabajo en este sitio CAN BUS Codes, debería poder calcular la posición del acelerador a partir de los bytes 2 y 3 de ArbID 0xAA, sin embargo, no puedo determinar la función de transferencia correcta.


¿Alguien tiene alguna sugerencia sobre cómo determinar la posición del acelerador?

Publicaré mi boceto de Arduino aquí una vez que lo haya completado para que otros lo usen.
pedal del acelerador para otros módulos es:
ArbID 0xAA
byte 3
bit 0-3

Pedal % = hex * 0,39063
 
pedal del acelerador para otros módulos es:
ArbID 0xAA
byte 3
bit 0-3


Pedal % = hex * 0,39063
Muchas gracias Jim.


Lo estaba calculando usando Pedal % = (byte[3]*256+byte[2])/(256^2), ya que según el sitio loopybunny el acelerador se distribuía en un byte alto/byte bajo.

Probaré tu método en su lugar, que es matemáticamente equivalente a la fórmula anterior al ignorar el byte 2.
 
Hola a todos,

He terminado de compilar algo de código para oler el K-CAN y cambiar el escape en las condiciones descritas.

Usé la biblioteca del módulo de bus CAN MCP2515 y el código de ejemplo de esta fuente: https://github.com/autowp/arduino-mcp2515#library-installation
ya que es un poco más flexible que el boceto de SparkFun; el módulo MCP2515 que tengo tiene un oscilador de 8 MHz, a diferencia de la placa SparkFun, que usa un oscilador de 16 MHz.


Tenga en cuenta que mi código debe considerarse beta, ya que aún no lo he probado en carretera. Solo he confirmado su funcionamiento usando un emulador CAN.

<spi.h><mcp2515.h><canmsg.can_dlc; i++) { print the data
<spi.h><mcp2515.h><canmsg.can_dlc; i++) { print the data
</canmsg.can_dlc;></mcp2515.h></spi.h>
 

Attachments

Actualización: He probado mi configuración y mi código en carretera y funciona exactamente como se esperaba. ¡Estoy muy contento con el resultado!

Para aquellos que estén interesados en agregar un tercer modo (quizás cambiando de forma más agresiva, es decir, a un régimen más bajo y umbral del acelerador), el ArbID para el modo P400/500 es 0x315. Sorprendentemente, el estado no es transmitido por el DME, sino por el módulo de la consola central (SZM).
El estado está disponible en el byte[2], que es F1 en hexadecimal (241 en decimal) cuando está en P400 y FA en hexadecimal (250 en decimal) cuando está en P500.

Edición: Intenté activar 0x315 en mi coche sin éxito. Sin el modo M, transmitiría el byte[2] como F2, independientemente del estado del botón de encendido, y cambiaría a FA en el modo M (supongo que esto significa P500).

Esto es realmente extraño, ya que espero ver un tercer estado en el modo P400.

¿Alguna idea?
 
Así que, tomó un tiempo, pero finalmente me decidí a soldar los pines del encabezado en mi Sparkfun CAN Shield.

CAN-BUS Shield - DEV-13262 - SparkFun Electronics

Esta placa es un "shield" (placa de expansión) para un Arduino (microcontrolador de código abierto) y le permite conectar un Arduino a un bus CAN. Dependiendo del programa escrito para el Arduino, puede registrar los paquetes CAN (señales) a través del bus del automóvil. Una vez que se obtiene una gran cantidad de datos, se necesita algo de trabajo para revisarlos e interpretar cuáles son las señales, para quién (qué módulo) están destinadas y qué contienen. La mayoría de la gente se sorprendería de la cantidad de datos que circulan en su automóvil si no están familiarizados con esto.

Mi objetivo es averiguar qué señales se generan en el automóvil cuando se presionan ciertos botones. Quién sabe, ¡tal vez podamos hacer algo genial con eso!

Además, una vez que esté familiarizado con las señales y las interprete, me gustaría construir un probador de banco para los actuadores del acelerador y los actuadores de ralentí.

View attachment 208241

View attachment 208249

View attachment 208257

View attachment 208265

View attachment 208273

View attachment 208281

View attachment 208289
En su lugar, pruebe un ESP32 con cpu de doble núcleo, Wifi/Bluetooth integrado y pantalla OLED. La marca Heltec es barata y está bien, ya que viene con oled, pero Lolin D32 es más una calidad, un chipset un poco más potente y capaz con opción de memoria flash.

gracias después. También se ejecuta en la plataforma/IDE de Arduino, pero envuelto alrededor del sistema operativo Espressif. Es increíble porque es igual de fácil de usar y tiene toneladas de potencia para su tamaño. Especialmente teniendo en cuenta la huella (tamaño) del esp32 en comparación con Arduino Uno/Mega, etc.

Desde que me mudé a Puerto Rico hace unos 2 meses... yo también he estado pensando en qué se puede hacer con un arduino + bmw, pero más en la línea de un dispositivo de rastreo de automóviles antirrobo que utiliza una conexión de operador móvil y una pequeña batería de respaldo si la batería de 12v del automóvil está desconectada. Los robos y robos de automóviles son bastante frecuentes aquí, por lo que empiezo a pensar en un posible producto de rastreo de automóviles antirrobo barato
 
Esto podría ser de interés: Varex Smart Box | XForce USA
Ya construí una unidad funcional, que se conecta al bus K-CAN, con conmutación disponible para el estado M-Mode, RPM y acelerador. De hecho, tengo una unidad de repuesto a la venta, pero nadie parece estar interesado (no estoy seguro de por qué; es, con mucho, una de las mejores modificaciones que he hecho en mi coche).
 
Hola chicos, estoy construyendo un sistema de arranque remoto desde cero y tengo una pregunta.

Si la llave está en la ranura pero no presionada, ¿es posible enviar un comando a través del OBD con la herramienta 32, INPA o ISTA para activar el KL15 (encendido)? Quiero capturar esta señal en el K-CAN.

En ISTA he visto esto varias veces haciéndolo por sí mismo (lo mismo para ISTA P).

Quizás alguien lo sepa y realmente ayudaría.

Saludos cordiales

Aquí está el proyecto en marcha (
)
 
41 - 54 of 55 Posts