VOLVO+ Development Story (5), low power is HARDER than expected

After the low power prototype completed, I put VOLVO+ on my car over night. In the next day, I found the battery voltage dropped deeper than expected. It seems VOLVO+ drained too much current. Measuring low current consumption is not equal to low-power design completed...

I put a LED blinking every 0.1 seconds as receiving CAN bus packet. I sit in the driver seat as the car is locked. Several minutes later, the car entered sleep mode but I saw the LED still blinking. The car alarm system detected something moving and triggered the alarm. I can't stop the alarm and finally the OBD2 fuse was broken and I can't do any experiment

There are 3 possible reasons that LED blinking as the door locked

  1. LED blinking makes car send CAN bus packet
  2. The car still sends CAN bus packet, if it enters sleep mode
  3. VOLVO+ wakes up the car, so CAN bus packet appeared

Repair the car

My OBD2 connector lost power because fuse is broken. Although the car is still in warranty, it's probably not good idea to repair it in the dealer. An expert helped me to replace the fuse and clear the error code, and the car fixed. This the broken 5A fuse, the wire within is cut off




I discussed the experiment with the expert, he is confident that LED blinking won't trigger the alarm. So the possibility remained:

  1. LED blinking makes car send CAN bus packet
  2. The car still sends CAN bus packet, if it enters sleep mode
  3. VOLVO+ wakes up the car, so CAN bus packet appeared

ELM327 is handy utility

ELM327 had a handy command called "ATMA", monitor all, which showed all traffic in the terminal. So I connected a one-to-two OBD2 cable from the car, and did two experiments
  • If I connected ELM327 only, after the car locked, I observed NO CAN bus packeton ELM327 terminal
    • This means as the car entering sleep mode, no traffic is sent
  • If I connected both ELM327 and VOLVO+, ELM327 and VOLVO+ tells me some CAN bus packet appeared
    • The packets appeared in periods of several seconds

This means VOLVO+ wakes up the car periodically, and the car went to sleep very soon. So my first over night test kept waking up the car, which drained the car battery too much


Engineering Report

The CAN transceiver IC had a pin canned "CAN-TX", as 0v appeared on the pin, the transceiver sends "dominant" signal on the CAN bus to wake up all other devices. So as the car enters sleep, CAN-TX pin shall keep 1 in order NOT to wake up other devices

With a series of debug trial, here's the error reason
  • In the boot time, CAN transceiver is not enabled, CAN-TX pin can be either 0 or 1
  • Event A: enable CAN transceiver
    • CAN-TX pin default value is 0
    • As CAN transceiver enabled, it saw CAN-TX pin=0, which sends dominant signal to wake up others
  • Event B: enable MCU internal CAN controller
    • Since no packet to send, CAN-TX pin becomes 1
It's ironic, my low power design consumes more power. It's also easy to fix the problem, just exchange event A/B and the problem is gone
  • In the boot time, CAN transceiver is not enabled, CAN-TX pin can be either 0 or 1
  • Event B: enable MCU internal CAN controller
    • Since no packet to send, CAN-TX pin becomes 1
  • Event A: enable CAN transceiver
    • CAN-TX pin is 1, it doesn't send dominant to wake up others

5 minutes to solve, but 5 hours to debug

In hindsight, I ever considered the start sequence of CAN transceiver & controller at the beginning. At that time, low power design is not considered and I neglected the problem. The problem is obviously some pitfall as designing car electronic devices

I fixed the FW defect and re-do the experiment. Now the LED was no longer blinking as the car enters sleep mode. Plugged in the device, and continue long-term testing

Comments

Popular posts from this blog

OBD-II and ELM327 (1)

OBD-II and ELM327 (3), try to decode CAN package recorded by ELM327

OBD-II and ELM327 (2), the underlying interface of ELM327