Termination Resistor and source address for multi-node CAN network

Started by anothernord, June 25, 2018, 02:29:19 PM

anothernord

I'm working on integrating the LBB into a system that uses this very cool standalone ECU for the Mercedes OM606 engine https://controls.is/shop/dsl1.

I'd like to remove the terminating resistor on the LBB, but I can't find it.  I'm still learning here so maybe I'm missing something obvious

Also, is there a way to change the  source address of the LBB?  Or is that hard-coded into the Arduino CAN library or something?

Thanks in advance. 

hakcenter

TS2009 Deḇarim 8:2
"And you shall remember that יהוה your Elohim led you all the way these forty years in the wilderness, to humble you, prove you, to know what is in your heart, whether you guard His commands or not.

anothernord

Quote from: hakcenter on June 25, 2018, 05:30:01 PM
Termination resistor for what?

The 120 ohm CAN bus termination resistor.  Does the LBB have one?  I'm assuming it would need one, correct? 

hakcenter

Shield or the Standalone.

They both have a 1watt 60ohm resistor across the High and Low. But that's it.

The standalone, it's R14, the SMD component bridging the 2 traces connected to 1 / 9 on the pinout.
The shield, it's R6, the gigantic resistor next to the pinouts.

I found it necessary to make canbus communication work.

If you're looking to setup some canbus communication, you need to brush up on the can library.


void read_can_data(unsigned long id, byte length) {
  if (CAN1.msgAvailable() == true) {
    CAN1.read(&id, &length, can_data);
    // 419,415,298 = 0x18FFC502 is turbo output
    // 419,367,426 = 0x18FF0A02 is no idea
    can_id = id;
    if (can_id == 419415298) {
      can_timeout = 0;
      memcpy(turbo_flags, can_data, 8);
      turbo_position = (turbo_flags[2] << 8) + turbo_flags[1];
      turbo_temp = turbo_flags[3];
      turbo_cmd_position = (turbo_flags[6] << 8) + turbo_flags[5];
      turbo_feedback = (turbo_flags[7] / 127.0) * 100;
    } else {
      timeout_can();
    }
  } else {
    timeout_can();
  }
}


It listens to the entire canbus network it is connected to. Technically you could connect it to your vehicles bus and spy on stuff.
TS2009 Deḇarim 8:2
"And you shall remember that יהוה your Elohim led you all the way these forty years in the wilderness, to humble you, prove you, to know what is in your heart, whether you guard His commands or not.

anothernord

Quote from: hakcenter on June 26, 2018, 09:00:39 AM
Shield or the Standalone.

They both have a 1watt 60ohm resistor across the High and Low. But that's it.

The standalone, it's R14, the SMD component bridging the 2 traces connected to 1 / 9 on the pinout.
The shield, it's R6, the gigantic resistor next to the pinouts.

I found it necessary to make canbus communication work.

If you're looking to setup some canbus communication, you need to brush up on the can library.


void read_can_data(unsigned long id, byte length) {
  if (CAN1.msgAvailable() == true) {
    CAN1.read(&id, &length, can_data);
    // 419,415,298 = 0x18FFC502 is turbo output
    // 419,367,426 = 0x18FF0A02 is no idea
    can_id = id;
    if (can_id == 419415298) {
      can_timeout = 0;
      memcpy(turbo_flags, can_data, 8);
      turbo_position = (turbo_flags[2] << 8) + turbo_flags[1];
      turbo_temp = turbo_flags[3];
      turbo_cmd_position = (turbo_flags[6] << 8) + turbo_flags[5];
      turbo_feedback = (turbo_flags[7] / 127.0) * 100;
    } else {
      timeout_can();
    }
  } else {
    timeout_can();
  }
}


It listens to the entire canbus network it is connected to. Technically you could connect it to your vehicles bus and spy on stuff.

I'm using the shield, and I see the big 60 ohm guy on there.  Thanks for that, and for the code.  I think it makes sense so I'll play with it.

The DSL1 controller that I linked has a PID boost control system that can use a PWM output for a solenoid or whatever, but I might just have the LBB read that signal and set the vane position proportionally.  It's kinda hokey but if the command frequency on the LBB is set much higher than the boost control loop, I think it'll work fine.