Odd can issue affects serial comms
Posted: Sun Jan 07, 2024 6:59 pm
Outlander motor, inverter & charger, home built Teensy zombine controller. Recent convert from Prius openinverter, with maybe 100 miles covered since trouble free until DCDC stopped working, which prompted rewire...
So an issue has reappeared that I have seen before but put down to my prototype wiring, so i set about the long put-off rewire, to reduce the junction boxes and house the master arduino away in the waterproof ecu housing BMW kindly built in.
My master arduino controls the charger and when driving just provides battery gauges, estimated range on a serial Nextion display etc. Its not critical to driving but it does configure the regen etc and i consider it essential really. The zombie vcu, inverter and master arduino all share one can channel on the teensy 4.1 master.
The symptom i see is that under certain conditions the serial feed to the nextion display gets corrupted and words/numbers have random or changed characters in them, and the button presses on the screen fail to register. The processor keeps running in the back ground but the display is inoperable. When it goes wrongs, it is apparent within about 2 seconds as the update takes a while, i assume because some of the update commands get corrupted and the nextion discards them as invalid syntax. I have tried reducing the serial speed and update interval which made no difference.
I spent most of today trying to bottom out the issue and have tried many things. What i can say for sure is that if i disconnect the HV the problem is not there. If i apply the HV but then disconnect the can to either the inverter or the zombie arduino (they're on the same channel) the problem goes away. If i connect the zombie arduino to 1 can channel and the inverter to the other the problem goes away (but this is not a workable configuration without a software bridge).
I can't decide if the issue is air born emi, or cable borne. I have rerouted all cables away from the HV, and tried wrapping the HV cables in grounded aluminium foil to no avail.
the can channel shows 60ohm when power is off so appears to be correctly terminated.
My motor wires between inverter and motor have no shielding (other the foil tried) and no ferrite core, but as the issue is apparent before the inverter is woken by can i do not think emu from these cables is the issue.
I'm not sure where to go next except to use a teensy 4.1 for the VCU and use separate can channels but this seems to be a work around not a solution as such.
Any questions/ideas gratefully received.
So an issue has reappeared that I have seen before but put down to my prototype wiring, so i set about the long put-off rewire, to reduce the junction boxes and house the master arduino away in the waterproof ecu housing BMW kindly built in.
My master arduino controls the charger and when driving just provides battery gauges, estimated range on a serial Nextion display etc. Its not critical to driving but it does configure the regen etc and i consider it essential really. The zombie vcu, inverter and master arduino all share one can channel on the teensy 4.1 master.
The symptom i see is that under certain conditions the serial feed to the nextion display gets corrupted and words/numbers have random or changed characters in them, and the button presses on the screen fail to register. The processor keeps running in the back ground but the display is inoperable. When it goes wrongs, it is apparent within about 2 seconds as the update takes a while, i assume because some of the update commands get corrupted and the nextion discards them as invalid syntax. I have tried reducing the serial speed and update interval which made no difference.
I spent most of today trying to bottom out the issue and have tried many things. What i can say for sure is that if i disconnect the HV the problem is not there. If i apply the HV but then disconnect the can to either the inverter or the zombie arduino (they're on the same channel) the problem goes away. If i connect the zombie arduino to 1 can channel and the inverter to the other the problem goes away (but this is not a workable configuration without a software bridge).
I can't decide if the issue is air born emi, or cable borne. I have rerouted all cables away from the HV, and tried wrapping the HV cables in grounded aluminium foil to no avail.
the can channel shows 60ohm when power is off so appears to be correctly terminated.
My motor wires between inverter and motor have no shielding (other the foil tried) and no ferrite core, but as the issue is apparent before the inverter is woken by can i do not think emu from these cables is the issue.
I'm not sure where to go next except to use a teensy 4.1 for the VCU and use separate can channels but this seems to be a work around not a solution as such.
Any questions/ideas gratefully received.