Chademo Controller Development
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
Here's a first test version -- I've stripped out most of the extra functionality. This should be able to run Chademo correctly, and not much else.
It's using the SAM3X EEPROM (which should work, not tested at all). I need to do a little more research before adding the I2C EEPROM - seems like write speeds are very low.
Please test whether parameters actually save.
Serial commands have been reduced, please only use them over SerialUSB else weird things might happen.
Working commands:
V - sets chademo target
VMAX - sets chademo max
AMIN - sets min charge current
AMAX - sets max charge current
CAPAH - sets capacity
CAPKWH - sets KWH capacity
DBG - sets debug level (this one isn't super useful afaik)
SAVE - saves EEPROM
FULLRESET (don't know about this one - it resets the eeprom to the hardcoded values)
z - resets charge state (whatever that means)
p - prints settings
u - updates Chademo with new voltage/current targets
Would you prefer commands to be used over USB or wifi? Either is possible but using both adds a lot of complication.
-Isaac
It's using the SAM3X EEPROM (which should work, not tested at all). I need to do a little more research before adding the I2C EEPROM - seems like write speeds are very low.
Please test whether parameters actually save.
Serial commands have been reduced, please only use them over SerialUSB else weird things might happen.
Working commands:
V - sets chademo target
VMAX - sets chademo max
AMIN - sets min charge current
AMAX - sets max charge current
CAPAH - sets capacity
CAPKWH - sets KWH capacity
DBG - sets debug level (this one isn't super useful afaik)
SAVE - saves EEPROM
FULLRESET (don't know about this one - it resets the eeprom to the hardcoded values)
z - resets charge state (whatever that means)
p - prints settings
u - updates Chademo with new voltage/current targets
Would you prefer commands to be used over USB or wifi? Either is possible but using both adds a lot of complication.
-Isaac
- Attachments
-
- LeafVCUChademo01.zip
- (13.34 KiB) Downloaded 122 times
- Jack Bauer
- Posts: 3563
- Joined: Wed Dec 12, 2018 5:24 pm
- Location: Ireland
- Has thanked: 1 time
- Been thanked: 87 times
- Contact:
Re: Chademo Controller Development
Looks fantastic:) Will begin testing. Picked up a chademo port yesterday so will install this on the E39 as this has an ISA shunt fitted. Commands need to go over usb only. Wifi is just for display purposes.
One request would be to move the ISA to CAN0 and leave CAN1 just for chademo as chademo chargers provide one end of the 120 ohm termination.
One request would be to move the ISA to CAN0 and leave CAN1 just for chademo as chademo chargers provide one end of the 120 ohm termination.
I'm going to need a hacksaw
- Jack Bauer
- Posts: 3563
- Joined: Wed Dec 12, 2018 5:24 pm
- Location: Ireland
- Has thanked: 1 time
- Been thanked: 87 times
- Contact:
Re: Chademo Controller Development
Loaded up on a leaf vcu. Just two observations so far :
1- Had to comment out this line as it was spamming the serial monitor : // SerialUSB.println("Chademo looped");
2- Dueflashstorage seems to lock the flash necessitating use of the erase pin function to clear it for a reprogram.
1- Had to comment out this line as it was spamming the serial monitor : // SerialUSB.println("Chademo looped");
2- Dueflashstorage seems to lock the flash necessitating use of the erase pin function to clear it for a reprogram.
I'm going to need a hacksaw
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
Done and done.Jack Bauer wrote: ↑Tue Jul 21, 2020 6:45 am Looks fantastic:) Will begin testing. Picked up a chademo port yesterday so will install this on the E39 as this has an ISA shunt fitted. Commands need to go over usb only. Wifi is just for display purposes.
One request would be to move the ISA to CAN0 and leave CAN1 just for chademo as chademo chargers provide one end of the 120 ohm termination.
(also found a typo which might have prevented CAN from working at all, fixed that too).
1. Oops, that was just a debugging thingy. Good thing it works. Removed now.Jack Bauer wrote: ↑Tue Jul 21, 2020 8:09 am Loaded up on a leaf vcu. Just two observations so far :
1- Had to comment out this line as it was spamming the serial monitor : // SerialUSB.println("Chademo looped");
2- Dueflashstorage seems to lock the flash necessitating use of the erase pin function to clear it for a reprogram.
2. I'll switch it to the i2c EEPROM. EDIT I'm an idiot, was looking at the chademo controller instead of leaf vcu.
Once I have the flash sorted v0.2 will be up.
-Isaac
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
Version 0.2:
-Removed extra debugging
-Removed more legacy garbage
-Moved Chademo to CAN1, ISA is on CAN0
-I2C EEPROM added (no idea if it will work)
Hope it works!
-Isaac
-Removed extra debugging
-Removed more legacy garbage
-Moved Chademo to CAN1, ISA is on CAN0
-I2C EEPROM added (no idea if it will work)
Hope it works!
-Isaac
- Attachments
-
- LeafVCUChademo02.zip
- (12.59 KiB) Downloaded 106 times
-
- Posts: 391
- Joined: Sun Aug 25, 2019 12:39 pm
- Location: Finland
- Has thanked: 49 times
- Been thanked: 10 times
Re: Chademo Controller Development
How nice to see more people attend to making stuff happen!
Thank you Isaac96!
Thank you Isaac96!
Any opinions are my own, unless stated otherwise. I take no responsibility if you follow my way of doing things and it doesn't work. Please double check with someone who knows what they are doing.
- Jack Bauer
- Posts: 3563
- Joined: Wed Dec 12, 2018 5:24 pm
- Location: Ireland
- Has thanked: 1 time
- Been thanked: 87 times
- Contact:
Re: Chademo Controller Development
Good news is we are reading from the ISA shunt. Seems we have a problem with the menu saving. It wont update no matter what it try e.g. V395 etc. Not just that it wont save to eeprom but it wont update on screen when p brings up the values. But yeah. Great progress and many thanks:)
I'm going to need a hacksaw
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
Hmm.. I'll look some more at the EEPROM coding. Not sure if the chip is compatible.
I assume you've verified that the EEPROM on the VCU works in general? If not, try one of the Wire_EEPROM examples (https://github.com/collin80/Wire_EEPROM)
Good to see the ISA reading correctly
-Isaac
EDIT I've done some looking through datasheets and schematics... Leaf VCU uses TWI0 for the EEPROM so that should all be correct. Please test functionality of example code.
I am using a struct rather than a class for the settings holder, if the EEPROM works with the example just let me know and I'll switch the Chademo code over.
I assume you've verified that the EEPROM on the VCU works in general? If not, try one of the Wire_EEPROM examples (https://github.com/collin80/Wire_EEPROM)
Good to see the ISA reading correctly
-Isaac
EDIT I've done some looking through datasheets and schematics... Leaf VCU uses TWI0 for the EEPROM so that should all be correct. Please test functionality of example code.
I am using a struct rather than a class for the settings holder, if the EEPROM works with the example just let me know and I'll switch the Chademo code over.
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
Just took another look -- with the EEPROM code removed the settings update correctly.
Are you typing "V395" or "V=395"?
The latter works for me - the "=" is the marker for end of command/start of value.
-Isaac
Are you typing "V395" or "V=395"?
The latter works for me - the "=" is the marker for end of command/start of value.
-Isaac
- Jack Bauer
- Posts: 3563
- Joined: Wed Dec 12, 2018 5:24 pm
- Location: Ireland
- Has thanked: 1 time
- Been thanked: 87 times
- Contact:
Re: Chademo Controller Development
Ok, so I wasn't using the "=" sign which was the problem with the serial monitor ignoring the commands. What happens now is if I type say "V=395" and hit enter the serial monitor freezes and the SAM3 locks up. However, if I then reboot and hit "p" it has actually updated and saved the parameter so it must be hanging on return from the eeprom routine. I also ran the eeprom test and it works fine so I don't think its hardware.
Isaac96, really appreciate your help. This project has been crying out to be ported to a more capable micro since 2015.
In other news my Chademo port turned up so will have a car ready to do some actual testing soon.
Isaac96, really appreciate your help. This project has been crying out to be ported to a more capable micro since 2015.
In other news my Chademo port turned up so will have a car ready to do some actual testing soon.
I'm going to need a hacksaw
- mdrobnak
- Posts: 692
- Joined: Thu Mar 05, 2020 5:08 pm
- Location: Colorado, United States
- Has thanked: 1 time
- Been thanked: 5 times
Re: Chademo Controller Development
That looks awfully like the port I have from a Leaf...
Glad to see my 'hey can't we simplify this' theory wasn't crazy in the end.
Thanks Isaac for taking this on.
-Matt
Glad to see my 'hey can't we simplify this' theory wasn't crazy in the end.
Thanks Isaac for taking this on.
-Matt
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
Well at least it's saving now...Jack Bauer wrote: ↑Thu Jul 23, 2020 8:28 am Ok, so I wasn't using the "=" sign which was the problem with the serial monitor ignoring the commands. What happens now is if I type say "V=395" and hit enter the serial monitor freezes and the SAM3 locks up. However, if I then reboot and hit "p" it has actually updated and saved the parameter so it must be hanging on return from the eeprom routine. I also ran the eeprom test and it works fine so I don't think its hardware.
Isaac96, really appreciate your help. This project has been crying out to be ported to a more capable micro since 2015.
In other news my Chademo port turned up so will have a car ready to do some actual testing soon.
There's a "noInterrupts()" call at the beginning of the save() function. Then "interrupts()" gets called again at the end.
Are you getting a "SAVED" message after setting a parameter? (probably not since the monitor is locking up).
Also I'm a blithering idiot - my GEVCU hardware actually has a M24M02 EEPROM on it already. I'll start testing with that in about 5 minutes. Should be able to solve these issues quite easily.
-Isaac
EDIT Uploaded the code, I'm getting the same issue. Will add more debugging messages and see what's going on.
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
Here's version 0.3, with more improvements and still less clutter.
-Added help menu - shows when a wrong command is entered and on startup
-Fixed EEPROM - turned out to be something weird about the delays and the interrupt() function.
-Improved AH/KWH counters (just uses ISA numbers now, resets them to zero at certain times)
-Took out some extra functions that did nothing
I'm trying to strip this down to the bare minimum while retaining the configuration capabilities. Not messing with the Chademo (though that might be necessary) but allowing lots of room for expansion in whatever direction anyone wants.
Let me know how this works!
-Isaac
-Added help menu - shows when a wrong command is entered and on startup
-Fixed EEPROM - turned out to be something weird about the delays and the interrupt() function.
-Improved AH/KWH counters (just uses ISA numbers now, resets them to zero at certain times)
-Took out some extra functions that did nothing
I'm trying to strip this down to the bare minimum while retaining the configuration capabilities. Not messing with the Chademo (though that might be necessary) but allowing lots of room for expansion in whatever direction anyone wants.
Let me know how this works!
-Isaac
- Attachments
-
- LeafVCUChademo03.zip
- (12.64 KiB) Downloaded 86 times
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
Disregard previous attachment please - it's got the wrong logic on the inputs and the outputs are swapped. The old JLD505 has optocoupled inputs, Leaf VCU has none.
Here's the corrected version (v0.3b?).
-Isaac
Here's the corrected version (v0.3b?).
-Isaac
- Attachments
-
- LeafVCUChademo03.zip
- (12.71 KiB) Downloaded 86 times
- Jack Bauer
- Posts: 3563
- Joined: Wed Dec 12, 2018 5:24 pm
- Location: Ireland
- Has thanked: 1 time
- Been thanked: 87 times
- Contact:
Re: Chademo Controller Development
Working perfectly (at least on the bench). Added this line to Setup() to give a heartbeat led : pinMode(13, OUTPUT); //led
Will be a few weeks before I have the E39 kitted out with a Chademo "exhaust" for testing. If anyone else is going to get there quicker and willing to help with testing,I'll donate a leaf vcu. In the meantime I'll get my wifi guy to do some wifi firmware so we can have a display ready to go.
Isaac96, if you are happy I'll throw this up on Github?
Will be a few weeks before I have the E39 kitted out with a Chademo "exhaust" for testing. If anyone else is going to get there quicker and willing to help with testing,I'll donate a leaf vcu. In the meantime I'll get my wifi guy to do some wifi firmware so we can have a display ready to go.
Isaac96, if you are happy I'll throw this up on Github?
I'm going to need a hacksaw
- Kevin Sharpe
- Posts: 1345
- Joined: Fri Dec 14, 2018 9:24 pm
- Location: Ireland and US
- Been thanked: 4 times
Re: Chademo Controller Development
I can probably help in a few weeks if no one else is ready.Jack Bauer wrote: ↑Fri Jul 24, 2020 7:54 am Will be a few weeks before I have the E39 kitted out with a Chademo "exhaust" for testing. If anyone else is going to get there quicker and willing to help with testing,I'll donate a leaf vcu.
I'm making a CHAdeMO to CCS adaptor which in it's first iteration could simply bypass the CCS functionality. We could also jury rig a CHAdeMO interface into the bus directly for testing
This is a personal post and I disclaim all responsibility for any loss or damage which any person may suffer from reliance on the information and material in this post or any opinion, conclusion or recommendation in the information and material.
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
Yup, go ahead. I've checked through the code a couple times now, all seems correct.Jack Bauer wrote: ↑Fri Jul 24, 2020 7:54 am Working perfectly (at least on the bench). Added this line to Setup() to give a heartbeat led : pinMode(13, OUTPUT); //led
Will be a few weeks before I have the E39 kitted out with a Chademo "exhaust" for testing. If anyone else is going to get there quicker and willing to help with testing,I'll donate a leaf vcu. In the meantime I'll get my wifi guy to do some wifi firmware so we can have a display ready to go.
Isaac96, if you are happy I'll throw this up on Github?
I can probably start testing Chademo in a couple of days (with my different hardware) but first I have to get a shunt hooked up and add a few CAN messages (only in my version) to get voltage readings.
The Chademo stations will probably not be happy if my voltage readings are too far off... My custom BMS has quite a slow sample rate (it's talking to 12 different things at 9600, one at a time) so I might have to add some hacks to make that work.
-Isaac
- arturk
- Posts: 146
- Joined: Wed Oct 02, 2019 3:58 am
- Location: United States, MD
- Has thanked: 1 time
- Been thanked: 2 times
Re: Chademo Controller Development
I have car ready to test it and all other components except Leaf VCU...Jack Bauer wrote: ↑Fri Jul 24, 2020 7:54 am Working perfectly (at least on the bench). Added this line to Setup() to give a heartbeat led : pinMode(13, OUTPUT); //led
Will be a few weeks before I have the E39 kitted out with a Chademo "exhaust" for testing. If anyone else is going to get there quicker and willing to help with testing,I'll donate a leaf vcu.
1998 Jaguar XJR, GS450h drivetrain, 48kWh/96s BMW battery
Re: Chademo Controller Development
I must have been working in IT projects for too long, I really enjoyed reading through the last couple of days on this thread.
Fantastic collaboration happening here. Big kudos to Isaac96 for stepping up to the plate and sharing his skills.
I'll throw my hat into the ring as a potential tester (assuming it's still needed) as soon as I have the battery installed in the Porsche, I have a Leaf Chademo port just waiting to be put back to use.
Fantastic collaboration happening here. Big kudos to Isaac96 for stepping up to the plate and sharing his skills.
I'll throw my hat into the ring as a potential tester (assuming it's still needed) as soon as I have the battery installed in the Porsche, I have a Leaf Chademo port just waiting to be put back to use.
This seemed like a great idea at the time
https://www.youtube.com/channel/UCca95a ... 33wJBAMe5g
https://www.youtube.com/channel/UCca95a ... 33wJBAMe5g
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
I'm doing some bench testing... Some very weird things happening.
I am testing with my GEVCU hardware, so pins 48-51 are usable as inputs.
For some reason 48 and 50 don't work with the rest of the Chademo code. When read by a simple DigitalReadSerial they read the inputs just fine but when the Chademo code is set to use them, no readings (they stay high).
I'm fairly sure this is caused by some of the libraries in use but don't have the time right now to test all that properly.
The problem here is that the Leaf VCU uses pins 49 and 48 as outputs, so I don't know if those will work, and can't fully test the output side.
(48 and 50 don't appear to work as outputs, 49 and 51 probably do work).
Yes, I'm very confused. Going to set off to the local Chademo station and see if the init sequence is acceptable at the altar of EVGo.
-Isaac
I am testing with my GEVCU hardware, so pins 48-51 are usable as inputs.
For some reason 48 and 50 don't work with the rest of the Chademo code. When read by a simple DigitalReadSerial they read the inputs just fine but when the Chademo code is set to use them, no readings (they stay high).
I'm fairly sure this is caused by some of the libraries in use but don't have the time right now to test all that properly.
The problem here is that the Leaf VCU uses pins 49 and 48 as outputs, so I don't know if those will work, and can't fully test the output side.
(48 and 50 don't appear to work as outputs, 49 and 51 probably do work).
Yes, I'm very confused. Going to set off to the local Chademo station and see if the init sequence is acceptable at the altar of EVGo.
-Isaac
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
I think the inputs are reading correctly. However, the charger is timing out.
IN1 gets pulled high by the station, the car begins sending CAN, then the station shuts down with a 'communication error'.
I'm going to test CAN more properly -- it certainly receives properly, but I may or may not have reversed the wiring, and haven't tested sending yet.
Getting close to full communication though.
-Isaac
IN1 gets pulled high by the station, the car begins sending CAN, then the station shuts down with a 'communication error'.
I'm going to test CAN more properly -- it certainly receives properly, but I may or may not have reversed the wiring, and haven't tested sending yet.
Getting close to full communication though.
-Isaac
- Jack Bauer
- Posts: 3563
- Joined: Wed Dec 12, 2018 5:24 pm
- Location: Ireland
- Has thanked: 1 time
- Been thanked: 87 times
- Contact:
Re: Chademo Controller Development
Excellent work and thanks everyone for offers of assistance.
I'm going to need a hacksaw
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
Thanks for the kind words guys, it's not quite there yet though.
Found the issue with pins 48/50 - the due_can library defaults to using them for CAN enable.
So I'm setting the CAN enable pins to 255 (which nulls them out).
ISA.h also needed changes since it also defaults to 48/50. Modified version is attached.
(That library is weird, it seems to autosave/autorecover amp-hours on power reset. No idea if that works, I don't have an ISA shunt yet).
I also seem to have forgotten that the CAN mailboxes needed to be set up -- I just added that in along with a little more debugging (since there are plenty of bugs).
v0.4 is attached.
I'm going off for another test at the station. I do hope it works this time, it's such a pain to move the whole setup.
Note - when there's a 1.0 release I'd like to include copies of all the libraries, since at least one will end up modded and that's no fun for anyone else.
-Isaac
Found the issue with pins 48/50 - the due_can library defaults to using them for CAN enable.
So I'm setting the CAN enable pins to 255 (which nulls them out).
ISA.h also needed changes since it also defaults to 48/50. Modified version is attached.
(That library is weird, it seems to autosave/autorecover amp-hours on power reset. No idea if that works, I don't have an ISA shunt yet).
I also seem to have forgotten that the CAN mailboxes needed to be set up -- I just added that in along with a little more debugging (since there are plenty of bugs).
v0.4 is attached.
I'm going off for another test at the station. I do hope it works this time, it's such a pain to move the whole setup.
Note - when there's a 1.0 release I'd like to include copies of all the libraries, since at least one will end up modded and that's no fun for anyone else.
-Isaac
- Attachments
-
- LeafVCUChademo04.zip
- (12.74 KiB) Downloaded 106 times
-
- ISA.zip
- (8.56 MiB) Downloaded 119 times
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: Chademo Controller Development
Went out for a test run, one station was in use by a Bolt and the other has a dead credit card reader...
I'll try again in an hour or so.
-Isaac
I'll try again in an hour or so.
-Isaac
- mdrobnak
- Posts: 692
- Joined: Thu Mar 05, 2020 5:08 pm
- Location: Colorado, United States
- Has thanked: 1 time
- Been thanked: 5 times
Re: Chademo Controller Development
Glad to see you've got that mostly going.Isaac96 wrote: ↑Sat Jul 25, 2020 10:11 pm (That library is weird, it seems to autosave/autorecover amp-hours on power reset. No idea if that works, I don't have an ISA shunt yet).
I also seem to have forgotten that the CAN mailboxes needed to be set up -- I just added that in along with a little more debugging (since there are plenty of bugs).
The auto save/recover is to try and compute accurate State of Health or Charge. Not sure which.
I didn't realize CAN mailboxes were "a thing" in most micro-controllers.. I have definitely have seen them on ST C167 16-bit processors. (Bosch ME 7.5/7.8 ECUs)
How, like, 90s man. Don't you know apps are the future?
-Matt