Eltek/Volvo charger [SOLVED]
-
- Posts: 3478
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 113 times
- Been thanked: 314 times
- Contact:
ELTEK EV Charger 360/3000 HE 241121.030
I found a Chineese supplier on Aliexpress that sold 3kW CAN controlled chargers with DC voltage limit at 420Vdc.
I bought one to try it and figure how to implement CAN control for three such chargers. I need them to charger my 104S battery.
That is charger module meant to be installed into racks where it has cooling and command infrastructure prepared.
CAN control is completely the same as Volvo chargers, with difference in telegram response time. Even data rate is the same at 500kbps. Only instead of command msg at 800ms this charger works with 02FF telegram at 100ms rate.
My intention was originaly to get two of the same chargers and reprogram them to work from different phases at parallel output.
I would have liked to make a central plate where both chargers would bolt to. Inside that plate i would drill channels for cooling and plug most of them. Finally i would cover the whole assembly with formed alu cover to seal it from the outside. I would get 2x 3kW chargers from 2 phases.
In the end my first Volvo charger failed and i decided to install this unit into its housing.
I had to get the housing trimmed down to install additional 10mm plate as thermal interface.
Now it looks almost identical to original Volvo charger and it didnt require complex drilling and sealing.
https://leafdriveblog.wordpress.com/202 ... 41121-030/
https://leafdriveblog.wordpress.com/202 ... d-cooling/
I bought one to try it and figure how to implement CAN control for three such chargers. I need them to charger my 104S battery.
That is charger module meant to be installed into racks where it has cooling and command infrastructure prepared.
CAN control is completely the same as Volvo chargers, with difference in telegram response time. Even data rate is the same at 500kbps. Only instead of command msg at 800ms this charger works with 02FF telegram at 100ms rate.
My intention was originaly to get two of the same chargers and reprogram them to work from different phases at parallel output.
I would have liked to make a central plate where both chargers would bolt to. Inside that plate i would drill channels for cooling and plug most of them. Finally i would cover the whole assembly with formed alu cover to seal it from the outside. I would get 2x 3kW chargers from 2 phases.
In the end my first Volvo charger failed and i decided to install this unit into its housing.
I had to get the housing trimmed down to install additional 10mm plate as thermal interface.
Now it looks almost identical to original Volvo charger and it didnt require complex drilling and sealing.
https://leafdriveblog.wordpress.com/202 ... 41121-030/
https://leafdriveblog.wordpress.com/202 ... d-cooling/
-
- Posts: 3478
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 113 times
- Been thanked: 314 times
- Contact:
Volvo charger
Volvo IP67 charger can be found under those PNs
31394702
30659929
31453939
Charger is 3kW or 10A max, but in every instance the max i could get out of it was 8A. In the end of charge it automaticaly tapers current to stay inside the 3kW limit.
CAN protocol for those chargers is very well described in Eltek documents. I posted them in my blog.
It is essentially plug and play CAN music . Command telegram is very simple and charger reports back with DC and AC voltage, current, temperature etc...
I have tested it up to 415Vdc battery and it still provided 7A.
https://leafdriveblog.wordpress.com/201 ... w-charger/
31394702
30659929
31453939
Charger is 3kW or 10A max, but in every instance the max i could get out of it was 8A. In the end of charge it automaticaly tapers current to stay inside the 3kW limit.
CAN protocol for those chargers is very well described in Eltek documents. I posted them in my blog.
It is essentially plug and play CAN music . Command telegram is very simple and charger reports back with DC and AC voltage, current, temperature etc...
I have tested it up to 415Vdc battery and it still provided 7A.
https://leafdriveblog.wordpress.com/201 ... w-charger/
-
- Posts: 3478
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 113 times
- Been thanked: 314 times
- Contact:
Re: Eltek/Volvo charger
It took me a little longer with this, but i finally figured out Eltek CAN instructions i got here: https://www.rec-bms.com/datasheet/EVPow ... otocol.pdf
My goal was to find out how to open charger to change of configuration of whatever parameter. Notably i wanted to change "charger address" so i would get CAN data on various return telegrams. That way i would be able to observe each charger for its parameters.
Instructions state you need to transmitt a series of bytes so that charger will open its config to a single change for 1s. When time elapses window for change is closed. So i setup CANframeUrgent telegram to trigger by timer every 800ms whatever i do next. Then i wired my DUE so that i could start an input which would send a telegram with instruction what to change. Telegram named CANframeB
I successfully changed charger address from 1(default) to 2 which is shown in charger reports. Before charger would report on 0x301 address and now it uses 0x311!
Here is what you need to send explicedly. Not 0x01, but exactly 1!
void sendCANframeC()
{
outframe.id = 0x303; // Set our transmission address ID
outframe.length = 3; // Data payload 8 bytes
outframe.extended = 0; // Extended addresses - 0=11-bit 1=29bit
outframe.rtr=1; //No request
outframe.data.bytes[0]=0;
outframe.data.bytes[1]=1;
outframe.data.bytes[2]=0;
// outframe.data.bytes[3]=0x00;
// outframe.data.bytes[4]=0x00;
// outframe.data.bytes[5]=0x00;
// outframe.data.bytes[6]=0x00;
// outframe.data.bytes[7]=0x00;
if(debug) {printFrame(&outframe,1);} //If the debug variable is set, show our transmitted frame
if(myVars.CANport==0) Can0.sendFrame(outframe); //Mail it
else Can1.sendFrame(outframe);
}
void sendCANframeB()
{
outframe.id = 0x303; // Set our transmission address ID
outframe.length = 3; // Data payload 8 bytes
outframe.extended = 0; // Extended addresses - 0=11-bit 1=29bit
outframe.rtr=1; //No request
outframe.data.bytes[0]=1;
outframe.data.bytes[1]=4;
outframe.data.bytes[2]=2;
// outframe.data.bytes[3]=0x00;
// outframe.data.bytes[4]=0x00;
// outframe.data.bytes[5]=0x00;
// outframe.data.bytes[6]=0x00;
// outframe.data.bytes[7]=0x00;
if(debug) {printFrame(&outframe,1);} //If the debug variable is set, show our transmitted frame
if(myVars.CANport==0) Can0.sendFrame(outframe); //Mail it
else Can1.sendFrame(outframe);
}
void sendCANframeURGENT()
{
outframe.id = 0x303; // Set our transmission address ID
outframe.length = 8; // Data payload 8 bytes
outframe.extended = 0; // Extended addresses - 0=11-bit 1=29bit
outframe.rtr=1; //No request
outframe.data.bytes[0]=1;
outframe.data.bytes[1]=22;
outframe.data.bytes[2]=0xF1;
outframe.data.bytes[3]=0xE2;
outframe.data.bytes[4]=0xD3;
outframe.data.bytes[5]=0xC4;
outframe.data.bytes[6]=0xB5;
outframe.data.bytes[7]=0xA6;
if(debug) {printFrame(&outframe,1);} //If the debug variable is set, show our transmitted frame
if(myVars.CANport==0) Can0.sendFrame(outframe); //Mail it
else Can1.sendFrame(outframe);
My goal was to find out how to open charger to change of configuration of whatever parameter. Notably i wanted to change "charger address" so i would get CAN data on various return telegrams. That way i would be able to observe each charger for its parameters.
Instructions state you need to transmitt a series of bytes so that charger will open its config to a single change for 1s. When time elapses window for change is closed. So i setup CANframeUrgent telegram to trigger by timer every 800ms whatever i do next. Then i wired my DUE so that i could start an input which would send a telegram with instruction what to change. Telegram named CANframeB
I successfully changed charger address from 1(default) to 2 which is shown in charger reports. Before charger would report on 0x301 address and now it uses 0x311!
Here is what you need to send explicedly. Not 0x01, but exactly 1!
void sendCANframeC()
{
outframe.id = 0x303; // Set our transmission address ID
outframe.length = 3; // Data payload 8 bytes
outframe.extended = 0; // Extended addresses - 0=11-bit 1=29bit
outframe.rtr=1; //No request
outframe.data.bytes[0]=0;
outframe.data.bytes[1]=1;
outframe.data.bytes[2]=0;
// outframe.data.bytes[3]=0x00;
// outframe.data.bytes[4]=0x00;
// outframe.data.bytes[5]=0x00;
// outframe.data.bytes[6]=0x00;
// outframe.data.bytes[7]=0x00;
if(debug) {printFrame(&outframe,1);} //If the debug variable is set, show our transmitted frame
if(myVars.CANport==0) Can0.sendFrame(outframe); //Mail it
else Can1.sendFrame(outframe);
}
void sendCANframeB()
{
outframe.id = 0x303; // Set our transmission address ID
outframe.length = 3; // Data payload 8 bytes
outframe.extended = 0; // Extended addresses - 0=11-bit 1=29bit
outframe.rtr=1; //No request
outframe.data.bytes[0]=1;
outframe.data.bytes[1]=4;
outframe.data.bytes[2]=2;
// outframe.data.bytes[3]=0x00;
// outframe.data.bytes[4]=0x00;
// outframe.data.bytes[5]=0x00;
// outframe.data.bytes[6]=0x00;
// outframe.data.bytes[7]=0x00;
if(debug) {printFrame(&outframe,1);} //If the debug variable is set, show our transmitted frame
if(myVars.CANport==0) Can0.sendFrame(outframe); //Mail it
else Can1.sendFrame(outframe);
}
void sendCANframeURGENT()
{
outframe.id = 0x303; // Set our transmission address ID
outframe.length = 8; // Data payload 8 bytes
outframe.extended = 0; // Extended addresses - 0=11-bit 1=29bit
outframe.rtr=1; //No request
outframe.data.bytes[0]=1;
outframe.data.bytes[1]=22;
outframe.data.bytes[2]=0xF1;
outframe.data.bytes[3]=0xE2;
outframe.data.bytes[4]=0xD3;
outframe.data.bytes[5]=0xC4;
outframe.data.bytes[6]=0xB5;
outframe.data.bytes[7]=0xA6;
if(debug) {printFrame(&outframe,1);} //If the debug variable is set, show our transmitted frame
if(myVars.CANport==0) Can0.sendFrame(outframe); //Mail it
else Can1.sendFrame(outframe);
-
- Posts: 621
- Joined: Sat Jun 06, 2020 6:54 pm
- Location: UK/EU
- Has thanked: 34 times
- Been thanked: 29 times
Re: Eltek/Volvo charger
Hi, did you find the volvo v60 charger and the one you are using now is essentially the same charger? Do you have dimensions?
-
- Posts: 3478
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 113 times
- Been thanked: 314 times
- Contact:
Re: Eltek/Volvo charger
Bah! They are totally the same. Even protocol is the same. Difference is only in keep alive time between telegrams. On ip67 it is 800ms and on ip20 it is 200ms. And Volvo model has additional HV connector. Persumably to power the heater for battery heating.
Dimensions are all in the data specs.
https://www.rec-bms.com/datasheet/EltekGuideIP20.pdf
https://leafdriveblog.files.wordpress.c ... 710111.pdf
Also some old data from Orion
https://www.orionbms.com/charger-integr ... -chargers/
-
- Posts: 621
- Joined: Sat Jun 06, 2020 6:54 pm
- Location: UK/EU
- Has thanked: 34 times
- Been thanked: 29 times
Re: Eltek/Volvo charger
Thanks! Trying to decide on a charger. If I have 40 ah cells that can be charged at 1C and my battery is 2P96S what would be suitable charging power?
-
- Posts: 3478
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 113 times
- Been thanked: 314 times
- Contact:
Re: Eltek/Volvo charger
If you use 96S the most affordable option would be outlander charger which has dcdc built in. 2 devices for price of one! Later you can add eltek charger for 2phase charging. I use outlander to pull in cp signal and is followed by eltek to 17A.
- Zapatero
- Posts: 445
- Joined: Fri Oct 25, 2019 11:08 am
- Location: Germany, Ulm
- Has thanked: 25 times
- Been thanked: 42 times
- Contact:
Re: Eltek/Volvo charger
Just in case anyone is interested - i've got one left over water cooling plate for these chargers! If interested PM me
I'm using two of these 3 Kw Chargers on 2 phases, works perfectly fine.
I'm using two of these 3 Kw Chargers on 2 phases, works perfectly fine.
-
- Posts: 3478
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 113 times
- Been thanked: 314 times
- Contact:
Re: Eltek/Volvo charger
Are they from Volvo or Eltek? How dod you seal them from the enviroment? Any pics?
tnx
- Zapatero
- Posts: 445
- Joined: Fri Oct 25, 2019 11:08 am
- Location: Germany, Ulm
- Has thanked: 25 times
- Been thanked: 42 times
- Contact:
Re: Eltek/Volvo charger
The cooling plate is designed for the IP20 charger, i'm using it with the IP67 charger anyways, just squeezed it inbetween my 2 chargers I ordered the last 2 available ones from EV Europe but only used one. One of them was 125โฌ.
My Chargers are Eltek Valere, i'm charging with 2 phases 6 Kw per hour.
IP20 vs IP67 - technically exactly the same charger, the IP67 though has the better housing in my opinion
This is the cooling Plate:
My Chargers are Eltek Valere, i'm charging with 2 phases 6 Kw per hour.
IP20 vs IP67 - technically exactly the same charger, the IP67 though has the better housing in my opinion
This is the cooling Plate:
-
- Posts: 621
- Joined: Sat Jun 06, 2020 6:54 pm
- Location: UK/EU
- Has thanked: 34 times
- Been thanked: 29 times
Re: Eltek/Volvo charger
Yes I have got an outlander charger already but I ended up not needing it's dcdc and 3.3 kw is not enough. I would like to have at least 10 kw charging capability for public charging so I'm deciding on which route to take. I could get 3 eltek chargers or tesla gen2 or use a toyota prius inverter as a charger which I already have. Can eltek charger also pull in CP? You are having trouble with same CAN ids when using more than 1 eltek charger?
-
- Posts: 3478
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 113 times
- Been thanked: 314 times
- Contact:
Re: Eltek/Volvo charger
I heared about Elteks biting the dust in parallel. There was never any explanation. But i didnt wanted to take the chance and i reprogrammed one charger o have a different address. I hope this would be ok. I am now sending command at 150ms.m.art.y wrote: โMon Oct 25, 2021 8:11 pm Yes I have got an outlander charger already but I ended up not needing it's dcdc and 3.3 kw is not enough. I would like to have at least 10 kw charging capability for public charging so I'm deciding on which route to take. I could get 3 eltek chargers or tesla gen2 or use a toyota prius inverter as a charger which I already have. Can eltek charger also pull in CP? You are having trouble with same CAN ids when using more than 1 eltek charger?
No Elteks do not pull Cp in. You need to have a circuit to do that. I use my DUE board with Cp relay.
-
- Posts: 621
- Joined: Sat Jun 06, 2020 6:54 pm
- Location: UK/EU
- Has thanked: 34 times
- Been thanked: 29 times
Re: ELTEK EV Charger 360/3000 HE 241121.030
Hi, have you got a 3 phase type 2 socket in your car to achieve this? From which car is that socket?
-
- Posts: 3478
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 113 times
- Been thanked: 314 times
- Contact:
Re: ELTEK EV Charger 360/3000 HE 241121.030
It is a new Type 2 car socket with rubber boot and 1M cable 5x 6mm2 2x 0.75mm2. I boought it from Dostar Duosida at the time.
-
- Posts: 3478
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 113 times
- Been thanked: 314 times
- Contact:
Re: Eltek/Volvo charger
I have researched a flag operation within my DUE so i can use a single button and toggle between chargers.
I have 3x Eltek chargers wired 3phase in star circuit with common neutral. Each can pull 3kW from its phase. Now in my house i have various loads distributed between phases. To avoid overloading my system i decided to make a loop in my DUE code that will allow me to toggle between chargers with a single button. This will only take one input pin and toggle between 3 CAN addresses in any ombination.
CheckButton function is used with flags
I also added three LEDs to signify each charger channel and provide visual UI.
I coded them to transistor pins of the ULN2003 chip so DUE provides pulldown and 12V is connected to each LED.
When i push the button it changes state and switches to the next case. Thus i can toggle between various combinations of 3 chargers and LEDs show me which chargers are lit. The green button is there for DUE reset.
I have 3x Eltek chargers wired 3phase in star circuit with common neutral. Each can pull 3kW from its phase. Now in my house i have various loads distributed between phases. To avoid overloading my system i decided to make a loop in my DUE code that will allow me to toggle between chargers with a single button. This will only take one input pin and toggle between 3 CAN addresses in any ombination.
CheckButton function is used with flags
Code: Select all
//Charger flags
bool Charger1 = false; //flag for charger1
bool Charger2 = false; //flag for charger2
bool Charger3 = false; //flag for charger3
//Then i call function
checkButton();
Now function i declare with all options and debouncing
void checkButton()
{
buttonState = digitalRead(button);
if (lastButtonState != buttonState)
{
lastButtonState = buttonState;
//has the button been released (HIGH is not pushed)
if (buttonState == HIGH)
{
buttonCounter++;
if (buttonCounter == 1) {
Charger1 = true;
Charger2 = false;
Charger3 = false;
}
else if (buttonCounter == 2) {
Charger1 = false;
Charger2 = true;
Charger3 = false;
}
else if (buttonCounter == 3) {
Charger1 = false;
Charger2 = false;
Charger3 = true;
}
else if (buttonCounter == 4) {
Charger1 = true;
Charger2 = true;
Charger3 = false;
}
else if (buttonCounter == 5) {
Charger1 = false;
Charger2 = true;
Charger3 = true;
}
else if (buttonCounter == 6)
{
Charger1 = true;
Charger2 = false;
Charger3 = true;
}
else
{
buttonCounter = 0;
Charger1 = true;
Charger2 = true;
Charger3 = true;
}
}
}
}
//Now i can see all combinations and toggle code for CAN bus telegram
if(digitalRead(PP_pin) == LOW) { // if PP_pin senses EVSE
digitalWrite(PP_relay,HIGH); // turn on Cp_relay
if(millis()-lastime > myVars.transmitime) //Nominally set for 120ms - do stuff on 120 ms non-interrupt clock
{
if(Charger1 == true){
lastime=millis();
sendCANframeA();
printstatus();
digitalWrite(LED1_pin, HIGH);
}
else {
digitalWrite(LED1_pin, LOW);
}
if(Charger2 == true){
lastime=millis();
sendCANframeB();
printstatus();
digitalWrite(LED2_pin, HIGH);
}
else {
digitalWrite(LED2_pin, LOW);
}
if(Charger3 == true){
lastime=millis();
sendCANframeC();
printstatus();
digitalWrite(LED3_pin, HIGH);
}
else {
digitalWrite(LED3_pin, LOW);
}
}
}
else {
digitalWrite(PP_relay,LOW); // turn off PP_relay
}
I coded them to transistor pins of the ULN2003 chip so DUE provides pulldown and 12V is connected to each LED.
When i push the button it changes state and switches to the next case. Thus i can toggle between various combinations of 3 chargers and LEDs show me which chargers are lit. The green button is there for DUE reset.
Re: Eltek/Volvo charger
Hi @arber, no issues with 3x eltek on same canbus? or do they need individual canbus per charger?
I have to build a big charger for a boat, with sets of 3 chargers to enable for 16A / 32A and later even 63A three phase and have to decide what I'm going to use. (on a small budget)
I do already have 3x eltek in stock...
I have to build a big charger for a boat, with sets of 3 chargers to enable for 16A / 32A and later even 63A three phase and have to decide what I'm going to use. (on a small budget)
I do already have 3x eltek in stock...
-
- Posts: 3478
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 113 times
- Been thanked: 314 times
- Contact:
Re: Eltek/Volvo charger
They are wonderfull little chargers.boekel wrote: โWed Feb 09, 2022 9:19 pm Hi @arber, no issues with 3x eltek on same canbus? or do they need individual canbus per charger?
I have to build a big charger for a boat, with sets of 3 chargers to enable for 16A / 32A and later even 63A three phase and have to decide what I'm going to use. (on a small budget)
I do already have 3x eltek in stock...
I am using 3 eltek chargers for some time without any issues. There were occasions when EVSE tripped and went into some error, but it was traced to bad firmware on the EVSE side.
If you just want to use all of them in 3phase wiring at the same time.you can connect them on the same CAN bus and command them with 0x2FF telegram. It is common to all af them.
I would recommend you to reprogramm them to unique IDs the way i did it. So you would get 0x300, 0x310 and 0x320 chargers. Up to 16 chargers can be used on the same bus. They would still respond to 0x2FF telegram, but would transmitt on separate telegrams on the same CAN bus. That way there wouldnt be any collision on that data link. I read about some Eltek chargers went crazy in star wiring, persumably due to CAN control malfunction. I havent had that here. I am keeping control on charger voltage, current and temperature via CAN bus. If i remove telegram 0x2FF chargers would stop.
Be carefull to keep ends of CAN bus wiring short. Under 15cm if possible.....
Re: Eltek/Volvo charger
"would recommend you to reprogramm them to unique IDs the way i did it. So you would get 0x300, 0x310 and 0x320 chargers. Up to 16 chargers can be used on the same bus. They would still respond to 0x2FF telegram, but would transmitt on separate telegrams on the same CAN bus"
hello, i have a can interface but i didn't know how i can reprogramm them ? i have to replace one of 3 chargers on my car
hello, i have a can interface but i didn't know how i can reprogramm them ? i have to replace one of 3 chargers on my car
-
- Posts: 3478
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 113 times
- Been thanked: 314 times
- Contact:
Re: Eltek/Volvo charger
First you would need CAN controler that can spit out two msg IDs at asynchronus rate.
Keep open at 800ms and Command at 500ms.
Here you see what i did with firmware for my DUE control board.
https://leafdriveblog.wordpress.com/202 ... ogramming/
You need to read up on Eltek CAN protocol first. You can see that you need to send a trigger msg ID 0x303 (unchanged charger) to unlock configuration for 1s.
That is the 0x303 1 22 0xF1 0xE2 0xD3 0xC4 0xB5 0xA6 telegram i am sending repeatedly as urgent. Notice byte0 and byte1 are straight numbers. I dont know why is that, but i couldnt get the process to work with 0x22 byte so i just input the value 22 and it works!
During that second you send the new parameters, in my case i set one charger ID from 1 to 2 by commanding 0x303 1 4 2 telegram. Byte1 is reserved, i keep it at (1), byte2 (4) is the process command and byte2 is the adress.
If you like to have various chargers at different adresses i advise you to setup different command messages bound to different input pins. Then connect each charger alone to your CAN control and command them.
I repeat the "keep open" msg at 800ms and transmitt "command" msg at 500ms when i trigger one pin on my DUE.
Several other options can also be changed, for example CAN bus speed...
-
- Posts: 3478
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 113 times
- Been thanked: 314 times
- Contact:
Re: Eltek/Volvo charger
Sure i knew that, but i didnt know why they would use some bytes in hex and some direct. Probably to stop some moron indiscriminately changing settings...
Re: Eltek/Volvo charger
Thank you for your answer, I have a can interface module named "USBtin" and has some free software. What software you use for your can interface?