# eltek charger canbus communication through bluetooth,



## Tomdb (Jan 28, 2013)

get a real can bus adapter, way easier to use. 
you need to send message described op page 5 with the id 0x2FF

http://lithiumate.elithion.com/php/eltek.php


----------



## bigmotherwhale (Apr 15, 2011)

Thanks for the quick reply 

could you give me an example of what to write in hyper terminal?


----------



## Tomdb (Jan 28, 2013)

No.

As i told you, no clue if your eob2 scanner will even out put signals. You could atleast tell us what eob2-bluetooth scanner you have. 

However I would suggets getting a real usb-canbus converter. Something like this one : http://www.ebay.co.uk/itm/USB-CAN-U...869696?hash=item1c2f503440:g:f2QAAOSw8cNUUgW7


----------



## bigmotherwhale (Apr 15, 2011)

its a Vgate OBD scan, its a little blue box. I was actually planning on getting an usb to can.

I have no idea whether it will work either but it was a freebie so i thought i would give it ago.

I dont know how to convert to hex and how to format correctly with msb and lsb 

would i type 02ff or 0x2ff?

then 0 or 1 to enable 

how do i work out the next values? 

the next two bytes are charger power reference in % divided by 10 so if i wanted 10% the next number i would put in would be 01?


----------



## z_power (Dec 17, 2011)

If you have basic knowledge (or want to get it) on microcontrollers and programming then any arduino clone + CAN board (~$25 for both) will control your charger. I'm very poor at programming but had first communication after 2 hrs...


----------



## planetaire (Aug 2, 2010)

bigmotherwhale said:


> I have an eltek charger and i have connected it to a Bluetooth ODB 2 scanner
> via the can interface.
> 
> I have got it to connect to the module using hyper terminal in windows at least i think it has. It gives numbers when the charger is connected to the mains and i issue the ATMA command....
> ...


Hi,

So i suppose you use an elm327.

For an elm327 you need to
-at least define the can speed: AT SP6 (speed 500 kb/s, header 11bits)
-monitor the bus: AT MA
-before sending commands, define the header AT SH 00 03 00. I suppose you don't know the charger number, so 0x300 is a broadcast header
-then you can send commands to the charger in order to control voltage/power/enable. 8 bytes need to be send, according eltek power charger doc. These 8 bytes are send in hexa
After sending, usually elm327 stop receiving. So you have to send AT MA after each sending.

(I have not tested all I have write above...Don't have a power charger and don't like elm327. But this could be ok )

*Eltek Doc:*
2.1 Charger control
The EV Powercharger is controlled by the charger control message. The charger control message instructs the charger to turn on/off, deliver a specified amount of
power and not exceed the provided DC voltage and current limit.
Once an EV Powercharger receives a charger control message it starts transmitting its status messages. If the charger suddenly stops receiving charger control messages
from the control system it considers itself logged off . When logged off the charger stops sending status messages and turns off (CHARGER_ENABLE = 0). The charger
communication timeout is 1 second after the last received charger control message.
CAN identifier: Broadcast: Base CAN identifier
Individual charger control: 1 + base CAN identifier + (charger address – 1) * 16 (individual charger control)
Length: 7 bytes
Reception interval: 1000 ms (used for communication timeout)
Sender: Control system
Receiver: Charger
Bit 7 (MSB) Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 (LSB)
Byte 7 RESERVED
Byte 6 CHARGER_MAXDCCURRLIMIT_MSB
Byte 5 CHARGER_MAXDCCURRLIMIT_LSB
Byte 4 CHARGER_MAXDCVOLTLIMIT_MSB
Byte 3 CHARGER_MAXDCVOLTLIMIT_LSB
Byte 2 CHARGER_POWER_REFERENCE_MSB
Byte 1 CHARGER_POWER_REFERENCE_LSB
Byte 0 CHARGER_ENABLE
Table 1 Charger control message
Signal Description Min Max Data conversion
CHARGER_ENABLE Turns the charger on or off (PFC and DC/DC on/off) 0 1 Physical = (HEX)
CHARGER_POWER_REFERENCE Power reference demand in percent of maximum power 0.0% 100.0% Physical = (HEX / 10) [%]


----------



## bigmotherwhale (Apr 15, 2011)

Hello all

Yes Tomdb you are right it would be much easier with a CAN to USB, I have on order a module similar to what you linked, its good advice.

z_power this is also a good idea, i do need to learn programming, but i cant help feel like i would be better off getting someone to do it for me, if im going to use the charger i think it would be best to use it with a simple microprocessor rather than windows, can i ask how you have programmed the charger to deactivate when full? 

Planitare

The ATI command gives LM327 ver 1.4 or something similar 

I set the can speed to 500kbs and 11bits through the ATSP command

the ATMA command gives a chain of numbers starting in 350 which i assume is the broadcast header you speak of. 

I think i am actually communicating with the charger, its just what i am entering is gibberish as i don't know the correct syntax and i dont understand MSB and LSB, if i put in stuff starting with 02ff there is communication betwen the module and the charger, i presume its sending an error message saying the data entered is not valid. 

What i really need is an example. 

the charger is controlled by "ox2ff" would i enter 02ff, 02 ff or 02xff?

the next part is just a zero or a 1 to enable or disable the charger.

say if i wanted a max voltage of 250V and a current of 1 amp what would i write next? 

The datasheet says its HEX/10 does that mean i divide the voltage i want by 10 and convert to hex or times the voltage by 10 and convert to hex? 

do i need spaces between each of the bytes? 

Thankyou all for your suggestions and help  its much appreciated.


----------



## planetaire (Aug 2, 2010)

Can you give the data the charger send 03 50 ...... ?

When using a can bus you have to send two groups of numbers:
-header (11 bits for the Eltek powercharge)
-data 1 to 8 bytes

11 bits is completed up to 12 with a zero and then send in hexa: xyz (3 numbers/letters). For exemple 2FF for broadcast (or 300 for the charger number 1). Don't send a "x" like 0x2FF. Just send 3 hexa, each for 4 bits. (It was wrong in my previous message)

With some dongle (for exemple canusb) the header and the data are send in one command line
With elm327 I think you have to send first the header with the command AT SH xyz (xyz=3 numbers/letters for the header). Exemple AT SH 2FF
Then send the data in an other line in hexa.

I think the line is 01 E8 03 VV VV CC CC 00
-01 for enable
- E8 03 for the max power range 0 to 1000 decimal, 1000=100%, so 0000 to 03E8 in hexa but you have to reverse 03 and E8
- max current same coding as power. For 1 amp send 10 decimal so 00 0A hex then remplace CC CC by 0A 00
- max voltage same coding as power. I suppose that for 250v send 2500 decimal so 09C4 then remplace VV VV by C4 09
- I am not sure you need to send the last 00.

So the command could be 01 E8 03 C4 09 0A 00 00 or 01 E8 03 C4 09 0A 00

After sending the data send AT MA and you will receive three responses: Status1 Status2 and Error. Hope these 3 messages will not be lost betwen you send the 7-8 bytes data and the following AT MA.

I can not test all this so, I am absolutly not 100% sure.

You have to send more then at least once a second the data 7-8 bytes. If not the charge is stopped.
I think you don't need to repeat the AT SH command. I believe it is stored in the elm327 and automaticaly send.


----------



## bigmotherwhale (Apr 15, 2011)

Hello 

Thankyou so much, this is exactly what i needed 

AT MA command gives this string repeated

350 10 10 71 12 58 09


----------



## planetaire (Aug 2, 2010)

hi, Big mother whale

I found this on Elithion:

```
Transmit to charger anchor
ID     Bytes    Byte 0          Byte 1 Byte 2   Byte 3 Byte 4   Byte 5 Byte 6
2FFh	7	Enable (1)	Max power (2)	Max voltage (3)	Max current (4)

Notes:
Period: 100 ms
Control flags. Only 1 bit is used, all others are 0:
Bit 0: 1 to enable charging; 0 to disable charging
Maximum power [0.1 %] little-endian
Fixed at 100 %
Maximum DC output voltage [100 mV] little-endian
Set to the pack voltage when all the cells are full and balanced (Max cell voltage x number of cells in series)
Maximum DC output current [100 mA] little-endian
Set at the Charge Current Limit

Receive from charger anchor
The BMS controller looks for battery current information on the CAN bus from a single charger. 
(If multiple chargers are used, and they use different CAN IDs, the BMS can only read current from only one charger.)


ID	Bytes	Byte 0	Byte 1	Byte 2	Byte 3	Byte 4	Byte 5	Byte 6	Byte 7
305h	8		Current (1)	

Notes:

[100 mA], + = into battery, little-endian.
```
So I think my previous post is ok. Forget the 7 after the 2FFh because this is the length of the data (Enable, Power, Voltage, Amperage). Elm327 send it automaticaly. So I think the data is 7 bytes, not 8 so you have to send 01 E8 03 C4 09 0A 00


----------



## bigmotherwhale (Apr 15, 2011)

I have tried what you suggested and i cant get it to work, everything seems to check out and i think what you have worked out is correct, I have a can to usb on order im sure it will work with what you suggest with that. 

thank you for your help you have been most kind.

I will let you know when the can to usb arrives and tell you how i get on with it.


----------



## z_power (Dec 17, 2011)

This is strange, planetaire's instructions seem OK and should do the job.

I'd start with listening to te bus - powered charger sends periodic (~1 sec.) message with its serial number and base CAN ID. Even without your own activity you should read this msg from the bus. If your device doesn't read valid messages try changing bus speed setting, your charger might have had it altered in the past from standard 500 kbps to one of the others possible.

Do you have oscilloscope? It IS very hepful  First part of this publication: http://www.keil.com/download/files/canprimer_v2.pdf is a good tutorial on CAN basics and gives some good debugging hints.


----------



## bigmotherwhale (Apr 15, 2011)

The ATMA command gives the serial number without a problem.

350 10 10 71 12 58 09 
the first bit is the address? the second part is written on the outside of the charger.

i seem to have one way communication at least.

i do have a scope yes i could use it to check if anything is being sent from the module.

I hope im inputting the right commands, it could be user error.


----------



## planetaire (Aug 2, 2010)

May be it is because you don't repeat the 7 bytes. On elithion they say each 100mS.
I have a eltek flatpack and it need several second to jump to the amperage/voltage that I send.


----------



## bigmotherwhale (Apr 15, 2011)

planetaire said:


> May be it is because you don't repeat the 7 bytes. On elithion they say each 100mS.
> I have a eltek flatpack and it need several second to jump to the amperage/voltage that I send.



Yes this could be it. i had a look to find if there was any way to repeat the command after a time interval but i found nothing.

this is what im inputting in hyperterminal once i have connection:

AT SH 2FF folowed by enter 

i get an OK 

01 E8 03 C4 09 0A 00 enter

is this correct?

it seems to either say "no data" or it repeats the serial number.


----------



## planetaire (Aug 2, 2010)

In my opinion what you send is ok. Just repeat severall times per second the 
01 E8 03 C4 09 0A 00 enter

But what you receive is strange for me:



bigmotherwhale said:


> ...350 10 10 71 12 58 09
> the first bit is the address? the second part is written on the outside of the charger....


How can you get 350 ? According eltek powercharge doc this would be 308 318 ...3E8...3F8.
And you would receive 8 bytes not 6.

Is 10 10 71 12 58 09 the serial number of you device ?


----------



## bigmotherwhale (Apr 15, 2011)

yes its the serial number and its written on the outside of the charger.

as for the 350 i have no idea. 

i would say the reader is giving me bad data but the serial is exact.


----------



## bigmotherwhale (Apr 15, 2011)

I have now got a USB to can bus module like the one suggested.

It reads from the charger, and gives the same as the Bluetooth module. with 350 and the charger serial number for the data 

I have tried entering 2ff in the ID and 01 E8 03 C4 09 0A 00 in the data and 
repeating it on a cycle every second, i am still getting nothing from the charger, 

I have a meter connected to it to measure its output

i can post some screenshots of how i have set it up, im not sure what i am doing wrong


----------



## z_power (Dec 17, 2011)

bigmotherwhale said:


> It reads from the charger, and gives the same as the Bluetooth module. with 350 and the charger serial number for the data


What is the identifier value of received message? This 350 value, is it hex or decimal? It could be programmed base CAN ID, so you can try sending 350 instead of 2FF and then 01 E8 03 C4 09 0A 00.


----------



## bigmotherwhale (Apr 15, 2011)

z_power said:


> What is the identifier value of received message? This 350 value, is it hex or decimal? It could be programmed base CAN ID, so you can try sending 350 instead of 2FF and then 01 E8 03 C4 09 0A 00.


 That is exactly what i thought it was the second thing i tried with no effect. 

Im probably doing something stupid, I will connect it up to this PC and post a screen shot....


----------



## planetaire (Aug 2, 2010)

If you think there is a modified can base adress, remember that if the charger send his serial number at 350h, you should send at 350h-8 =348h the voltage and so on.

But 2ff is a broadcast so all charger would use it.

And you receive only 6 bytes, so this is not what is described in the power charger doc.
So is there several model of power charger ?
Or your power charger have been re configured ? for example active can protocol (0=car , 1=eltek). Or header 29 bits not 11.

You could also try to receive some read only parameters.
protocol version, Charger version


----------



## z_power (Dec 17, 2011)

I guess we must wait for screenshot... As I understood 350 is value of b0 and b1 of data field, but if it's msg id then you're right. We need to know all values of CAN frame fields to interpret it properly so screenshots would be helpful.


----------



## bigmotherwhale (Apr 15, 2011)

the mode i have it working in is extended frame, if i select normal frame it stop reciving from the charger..


----------



## z_power (Dec 17, 2011)

This looks strange, doesn't comply with available pdf document from Eltek. This message you're reading should contain 8 bytes of data. As planetaire suggested there may be different protocol enabled; did you try mentioned 0x348 id for control?

edit: your setting of standard vs extended shouldn't change anything about received frames but i'm not 100% sure now...


----------



## planetaire (Aug 2, 2010)

I would too send normal frames, not extended. *With Id=348h on top of your screen*. Also less then 1000mS between two send.
Use "send a single frame"

I don't have infos about your can usb dongle. Is it able to receive and send "at the same time" unlike the elm327 ?

Try also to receive infos from the charger, protocol version, charger version ...

Have you connected a load on the charger ?


----------



## bigmotherwhale (Apr 15, 2011)

Sorry about the delay have been busy with xmas i hope you all have had good holidays.

Yes there is a load on the charger, but i have seen people power them up with just a multi meter attached to the output, i did think about under voltage protection but i cant imagine this to be the case. 

I have had a good play and couldn't get a response from the charger so i looked about on the internet and found this on a brammo forum 

http://brammoforum.com/index.php?topic=2791.msg21594#msg21594

therer is a guy there called athlon who says 

"first packet required by an Eltek is a "login to charger" and contains the charger serial number and ID. after the logi you can control an Eltek by regular packet but you need to specify the charger Id"

there is also a screenshot of some can packets sent and received. 

Also This charger might be OEM i got it cheap on ebay and there seems to be a surplus from the BMW i3 which could be an important bit of info.

any suggestions on how to "login"?


----------



## planetaire (Aug 2, 2010)

They use a Eltek *Flatpack*. I use too several 2kW of them. But you have a Eltek *Powercharge*.
Yes the Flatpack need a login. But not the powercharge in standard mode.



> Also This charger might be OEM i got it cheap on ebay and there seems to be a surplus from the BMW i3 which could be an important bit of info.


I my opinion you explain why you receive only 6 bytes : they use a special protocol. May be bmw proprietary. (With a flatpack we receive 8 bytes, the can bus speed is 125 kb/s and the header have 29 bits)

So you have to find this protocol, or may be it is possible to reverse the protocol to Eltek one, this is describe in the power charge doc.


----------



## bigmotherwhale (Apr 15, 2011)

The one on the brammo forum looks like a powercharger to me, its Identical to the one i have on the outside, are you sure that its flatpack?


----------



## planetaire (Aug 2, 2010)

Yes. 

Ac on the left, Can on the middle and DC on the right

Can you post a picture of the rear, where are the wires ?


----------



## bigmotherwhale (Apr 15, 2011)

its identical to the one on the bramo forum as far as i can see in every way. 

with the heat transfer side to the floor, mine has can on the left, dc middle, and ac right. i can post a pic if you want. 

thanks


----------



## z_power (Dec 17, 2011)

I have both types of PowerCharger - one enclosed (IP67) with Eltek protocol active and working and another IP20 (ventilated) probably from the same Singapore guy. I wonder if there's a way in OEM's protocol to return to Eltek's set of commands, they (authors of OEM one) could have ommited commands for protocol choice and firmware upgrade, who knows.


----------



## bigmotherwhale (Apr 15, 2011)

z_power said:


> I have both types of PowerCharger - one enclosed (IP67) with Eltek protocol active and working and another IP20 (ventilated) probably from the same Singapore guy. I wonder if there's a way in OEM's protocol to return to Eltek's set of commands, they (authors of OEM one) could have ommited commands for protocol choice and firmware upgrade, who knows.


That would be the one, im glad there is more than one of us in the same boat, it would be good to get these working as if you paid the same as i did they are quite a bargain.


----------



## planetaire (Aug 2, 2010)

This is the rear of a power charger (air cooled):











This is the rear of a flatpack:


----------



## bigmotherwhale (Apr 15, 2011)

mine is most definately a powercharger, just like they are using on the brammo.


----------



## bigmotherwhale (Apr 15, 2011)

How exactly would you go about changing the Active CAN protocol like in the ev powercharger doc? 

Im finding the document very difficult to understand, but it seems it can be set back to the stock eltek commands as you say.


----------



## athlon (Feb 27, 2012)

Hello from the brammo forum 

So , the Eltek can be controlled by an Arduino + canbus shied or by some usb-canbus adapter (I use this http://www.peak-system.com/PCAN-USB.199.0.html?&L=1 )


----------



## bigmotherwhale (Apr 15, 2011)

athlon said:


> Hello from the brammo forum
> 
> So , the Eltek can be controlled by an Arduino + canbus shied or by some usb-canbus adapter (I use this http://www.peak-system.com/PCAN-USB.199.0.html?&L=1 )



Hello Athlon
Glad to have you here. 

I actually called eltek and they were helpfull but the guy who i spoke to didn't know what i was on about and has sent an email to someone in germany, we will see if this gets anywhere. 
I also requested a copy of "eltek powercharger tools" which can control or reconfigure the charger from windows. fingers crossed.

I believe this charger is communicative with 29bit not 11. it will only work on extended frame.
in the eltek document it says that "TBCM" version is 29 bit and that seems to be true as that is what i have. 

would the frame address be any different with a 29 bit identifier? 

What i would like to do is automatically send the same charger message on different frame ID automatically and record a response to see what address the charger is on. does anyone know if this is possible to do? the sodftware i have with my usb can dongle doesnt seem to have that option, is there any software that does? i dont want to enter hundreds of numbers manually...


----------



## Doctorbass (Dec 12, 2008)

I'm happy i found this thread about these 3kW Eltek.

We have just received a box of 10 of these (a group buy) and bought from the guy on Ebay.

I have the IXXAT CAN Adapter V1.6 like the one to use for the Sevcon gen 4 controllers on the Zero motorcycles.

I have never programmed for canbus, it's nearly new for me to write command and communicate with that... I was using the IXXAT device with the DVT customer software to program my controllers so the software was doing all the "terminal type" job and i only had to click some places and enter desired parameters value..

So if one of you can get these to work and be programmed with desired current and ... i other words "DO THE JOB" i will be interested alot.

I am welling to trade one of the units to the person who can make an arduino interface to get it to work in a simple way for me. ex: to set current, voltage and power and turn it ON and enable the output... 

Send me an email: [email protected]
Doc


----------



## Tomdb (Jan 28, 2013)

Mind posting what exact version you have Doctorbass?


----------



## Doctorbass (Dec 12, 2008)

Tomdb said:


> Mind posting what exact version you have Doctorbass?


Part name is TBCM 360/3000 HE
Part no is 241121.000
Batch no is 793828
100 to 250vac in 250 to 420vdc out
Sn is 104271100239

Revision 2.1

Ip67

Doc


----------



## Tomdb (Jan 28, 2013)

Have a look at this. Got any simple canbus program with the ixxat can-usb converter?

http://lithiumate.elithion.com/php/eltek.php

Should not be too hard to figure out 

Im willing to help but I am in europe so shipping is a hassle.

Found the install guide, with wires out

http://evolveelectrics.com/PDF/Eltek/Eltek%20Guide%20IP67.pdf


----------



## z_power (Dec 17, 2011)

This would be too good to be true... 
As bigmotherwhale has found, messaging protocol of "Singapore chargers" (241121.000) is different from Eltek's "official" one; this means basic principles mentioned are true but message IDs and maybe also frame syntax are changed.
I have an idea of attacking a charger with sequence of control messages and listening for response:

while (id < max) {
sendmsg (ID, control_bytes);
listen for response 1 second;
if ((response != nul) && (response != (the message with serial number)) break; // we've got contact!
id++;
}

I got into deep depression yesterday when tried to crimp terminals for CAN plug - Molex MicroFit. I don't have right crimping tool and soldering didn't do the trick either; I know it's not PicoFlex but hey, weren't there a friendlier socket/plug type to choose from? Next day I've found a pre-crimped 30cm cables with two female ends for ~50c/pc at local distributor, now waiting for postman


----------



## Tomdb (Jan 28, 2013)

You guys know these chargers are configured for certain voltage ranges right?

241121.010 EV Power Charger 110/3000 HE IP20 G2 3000W 70 – 122Vdc 25A
241121.110 EV Power Charger 110/3000 HE IP67 G2 3000W 70 – 122Vdc 25A
241121.020 EV Power Charger 220/3000 HE IP20 G2 3000W 150 – 250Vdc 16A
241121.120 EV Power Charger 220/3000 HE IP67 G2 3000W 150 – 250Vdc 16A
241121.030 EV Power Charger 360/3000 HE IP20 G2 3000W 250 – 420Vdc 10A
241121.130 EV Power Charger 360/3000 HE IP67 G2 3000W 250 – 420Vdc 10A

.000 from Docbass alligns with .130 or 0.030 if not IP67

Now I wonder what the .000 will do plus also the chargers will most likely work below these voltage levels but not be self terminating or tapering. Easily solved with a microcontroller control.


----------



## z_power (Dec 17, 2011)

Tomdb said:


> Now I wonder what the .000 will do plus also the chargers will most likely work below these voltage levels but not be self terminating or tapering. Easily solved with a microcontroller control.


It was mentioned here: http://www.diyelectriccar.com/forums/showthread.php/eltek-charger-swap-anyonei-166834.html

So it works but not in optimal way.


----------



## bigmotherwhale (Apr 15, 2011)

z_power said:


> This would be too good to be true...
> As bigmotherwhale has found, messaging protocol of "Singapore chargers" (241121.000) is different from Eltek's "official" one; this means basic principles mentioned are true but message IDs and maybe also frame syntax are changed.
> I have an idea of attacking a charger with sequence of control messages and listening for response:
> 
> ...


This little program you wrote is exactly what i wanted to try but i have no option for it using the can-bus adapter i have. Very neat, i think this could work. Is this program for arduino? 

these chargers seem to use an extended 29 bit protocol.

there are only two car manufacturers i can find using these are brammo and volvo brammo uses stock eltek command list, so it is my belief that these are from a volvo plug in, not a BMW i3 like i was told originally. 

I had an idea about flashing the microprocessor with the software from an eltek configured charger, however i have no idea if this is possible to do? 

For the Connectors i used an old pc motherboard connector and just filed an edge flat, seems to do for now. 

there is an option to configure the charger back to eltek, however im not sure it will be listening at that address, (2ff) it needs to be unlocked to a write operation to be able to do this. and the command must be sent withing a second after its unlocked, Has anyone else tried this?


----------



## z_power (Dec 17, 2011)

Some news:

- AC side inrush current trips breaker in my apt. - must make a precharge circuit with bulb because it's annoying.

- I got some response from charger, although not quite as expected... 

First check was receiving serial number; it worked exactly as bigmotherwhale described: periodic msg with ID 0x350 and six data bytes.

I prepared a control message with 7 bytes, those were copied from previous experiments with "genuine" Eltek and proven to be proper working content. then I started sending it with ID from 0 to FFF and listening for response. Got some reaction after sending 0x68B but due to my poor programming skills it has not been logged.
The behaviour of charger has changed and these changes seem to be permanent for now - they don't reverse after power-off, even with a few minutes delay for draining residual charge in logic power supply.
1st thing is that there's no regular 0x350 and serial number broadcast any more.
2nd is a relay click when powering on/off the charger - it wasn't present before my attempts; actually I couldn't notice slightest hum or wizz or click when switching power.

Till now I've only found reaction on one msg ID: 0x668. Sending message with this ID and any data length/contents causes response with the same ID and data bytes A0 50 1F 01 01 00 00 00. It works only once after powering on, then I'm not able to cause any interaction anymore. This is strange, because I suppose different nodes shouldn't be allowed to send messages with the same IDs (except maybe RTR requests/responses - I may be wrong on this).

Will keep on updating 

Edit: just found that 0xE68 gives the same answer as 0x668 in the same conditions (just once after powering)


----------



## Tomdb (Jan 28, 2013)

Please post the message it responds. 

Are you sure that the id is 0xE68, this would be an extended ID. 
So you went all the way through all the possible ID's?

What does the output do? (attach a load, a bulb and test)


----------



## z_power (Dec 17, 2011)

yay, I made a mistake...
11 bit range is 2^11 - 1, not 2^12 -1 as I assumed in a hurry... 
0xE68 chopped to 11 bits equals 0x668
This is a good reason for data validation at every place; my program works with both extended and standard ids, should have checked if value is in proper range according to "extended" bit setting.
I'm still fighting bugs in my software so it'll take a few hours to post any valuable info.
No load attached except multimeter, showing no significant voltage; I'll connect 12V battery trough 230V bulb and fuse tommorow.


----------



## z_power (Dec 17, 2011)

I'm getting better in bricking electronic devices...

Manual precharge circuit works ok but I think it is needed just because of my poor "hacking"; I remember that before CAN harassment it powered off without any symptoms of too big surge and there were no relay clicking either. After first attempt with message sending it changed into present state.

Today I had some small success - got a bit more than one response:


```
start
Tx: 668 7 00 40 00 00 01 32 00 RxCnt: 0
Tx: 668 7 01 40 00 00 01 32 00 RxCnt: 0
Tx: 668 7 02 40 00 00 01 32 00 RxCnt: 0
Rx: 668 8 A2 02 01 01 00 00 00 00 
Tx: 668 7 03 40 00 00 01 32 00 RxCnt: 1
Rx: 668 8 A2 03 01 01 00 00 00 00 
Tx: 668 7 04 40 00 00 01 32 00 RxCnt: 2
Rx: 668 8 A2 04 01 01 00 00 00 00 
Tx: 668 7 05 40 00 00 01 32 00 RxCnt: 3
Rx: 668 8 A2 05 01 01 00 00 00 00 
Tx: 668 7 06 40 00 00 01 32 00 RxCnt: 4
Rx: 668 8 A2 06 01 01 00 00 00 00 
Tx: 668 7 07 40 00 00 01 32 00 RxCnt: 5
Rx: 668 8 A2 07 01 01 00 00 00 00 
...
```
First byte of tx msg was increasing, and so was B1 of answer. This was the same when tx msg contained only 1 byte (like 668 1 nn). Next I tried sending values from 0xFF down to 0 but somewhere during this part I saw "buffer busy!" - no ack was heard from charger. Resetting trough power cycling doesn't bring back communication; tried different speeds without success either.

So now I have nice looking aluminium brick and so far no ideas on recovering it. Ouch!

Edit: I didn't try 1Mbps because of only 8MHz quartz on MCP2515 module. I'll try to upgrade it and check if by any chance charger responds.

Maybe I got somehow into firmware upgrade and ruined it? I'd expect it to have some safety features preventing this situation, but you know, I'm a lucky man


----------



## z_power (Dec 17, 2011)

While waiting for parts I took a look inside. If you want more detailed pics let me know till the cover is out. There's a subboard with PFC processor, main controller (or "communication" one) is also easy to find but it's next to impossible to decipher its description thanks to large inductor obstructing view. Nearby each uP is its programming connector with 7 pins. I wonder if there's third one somewhere, factory manual on firmware update mentions three separate fw packages.
Lots of questions without answers in this topic; I have a feeling that these chargers are leaving factory as unoperative "blank" devices and require some kind of pre-coding after instalation in vehicle; kinda like with new parts in "mainstream" cars, need to enter VIN etc. to get new part working.
I wish I could copy firmware from my other working Eltek but I'm worried about possible hardware differences and calibration values.


----------



## Doctorbass (Dec 12, 2008)

I wish i could help with firmware as i have 3 brand new units of these chargers here but i have zero skill actually with CanBus programming.. except when there is an existing software and that i dong have to convert all value in HEX etc... I have few documents that explain the CAn bus comm for these eltek but i guess you already have these? it is called "EV Powercharger CAN protocol" by Eltek.

Doc


----------



## Doctorbass (Dec 12, 2008)

OK guys I have a great new about Eltek!

After hours of searching i have found on a website with many software for Eltek products! I actually found the software to program the firmware on most of the Eltek rectifier and charger!! It is called "FWloader" and i have all version for 32 and 64 bits and it does detect my IXXAT can interface =)) I also have Powersuite v3.6

Pm me for more info! i'll see if i post that link here or if it is too risky to get it removed.

Doc


----------



## Tomdb (Jan 28, 2013)

got it working with a charger you have?


----------



## Doctorbass (Dec 12, 2008)

Tomdb said:


> got it working with a charger you have?


yes, From now i connected it to one of my Flatpack S 1800/48 and i i see that the IXXAT CANbus is detected and i can monitor in real tome the value, like Voltage, current, temp etc... but i still did not tried changing a value.. more to come!

Doc


----------



## z_power (Dec 17, 2011)

I checked my "fried" charger for CAN interface function - it's deaf, not acknowledging any messages present at the bus, at all standard bitrates up to 1Mbit/s. This means CAN controller in charger (separate chip or built into main processor) isn't properly initialized and the only way of repair I can think of is uploading new firmware trough service port at PCB with use of some unobtainable factory tool - lessons learned... 
I still have another untouched virgin charger from the same source - definitely not going to try "blind message bombing" this time. Now looking for factory fw files for use with FWloader - thx Doc for this find


----------



## bigmotherwhale (Apr 15, 2011)

Doctorbass said:


> yes, From now i connected it to one of my Flatpack S 1800/48 and i i see that the IXXAT CANbus is detected and i can monitor in real tome the value, like Voltage, current, temp etc... but i still did not tried changing a value.. more to come!
> 
> Doc


I looked into getting the software to control the charger, I may be wrong here, the flatpack will work with the powersuite and the powercharger requires "eltek EV powercharger tools"


----------



## bigmotherwhale (Apr 15, 2011)

I have comunication! send the charger serial number to frame 351 and it will communicate for a second, it will send back data.
I believe this is the charger login that Athlon originally suggested this on the brammo forum.

getting close now..... 

Edit

Charger is working! its not little endian its big endian took me a while to figure that one from the data. send this: 

351 10 10 71 12 58 09 (enter your serial number after 351 once and you should recive a load of values all starting in D9 which i think is the individual charger adress 217 )

then this immediately after repeated every 900ms 

352 D9 01 03 E8 09 C4 00 0A 

and you will find the charger will turn on at 250 volts  

Happy Days


----------



## Doctorbass (Dec 12, 2008)

bigmotherwhale said:


> I have comunication! send the charger serial number to frame 351 and it will communicate for a second, it will send back data.
> I believe this is the charger login that Athlon originally suggested this on the brammo forum.
> 
> getting close now.....
> ...


Awsome!... Thanks for all that work... this is getting very interesting now ! so how to send all these info to the cahrger? arduino? i'm not very new to these Canbus communication and interface.. I only have the IXXAT and worked with existing software to program device.. but i'm alot interested to KNOW HOW and what device i need to have the charger to work like adjustable voltage and current without the need of a computer if possible..

Doc


----------



## Doctorbass (Dec 12, 2008)

Oh.. and maybe this could help: i posted on E-S forum about my Eltek Flatpack S 1800W and some guid made also great discovery so maybe these could help to discover the code needed to manage the eltek charger!

https://endless-sphere.com/forums/viewtopic.php?f=14&t=71139&hilit=eltek&start=50

Doc


----------



## planetaire (Aug 2, 2010)

bigmotherwhale said:


> I have comunication! send the charger serial number to frame 351 and it will communicate for a second, it will send back data.
> I believe this is the charger login that Athlon originally suggested this on the brammo forum.
> 
> getting close now.....
> ...


Very good find.
Usualy eltek charger send input voltage, output voltage, two temp and output amperage.

So I suggest first decoding this 351 frame. Edit: 352 frame, not 351 frame.
What was your input voltage ? Was it 217 volts ? Or 232 volts ?
You could test with two outside temp, and after waiting, say one hour, before plugin, compare the data.
This temp will slowly increase during charging.
If you did your test without any load, then output amperage was zero may be it is the 00 in the frame.

So you could discover how the frame have to be understand.


----------



## bigmotherwhale (Apr 15, 2011)

The output was connected to bulb as a load i tried values in the voltage field from 170v up to 300v it seemed to operate just fine. I haven't got a heatsink on the charger so im not pushing it too hard. 

all the data that i posted was what i sent not received, 

the data after the 351 is the serial number of my charger. 

I haven't properly worked out what each of the values that receive on 353 and 354 are, the last value on 353 i think is the output voltage, I can post a screen shot if you want to have a go it should be fairly straightforward. If we need to work out the temperature i have a hairdryer.... 

it will send these messages if the charger is enabled or not, but you have to login first.

im not exactly sure what D9 is but all the data i received started with this so this is why i sent it back, instead of using 00 as a filler at the end.

Also thank you everyone who helped and for the lesson in canbus, i couldn't have done it without all your help, and its another thing done for my conversion.


----------



## Tomdb (Jan 28, 2013)

How did you get the data to send to get the different voltages?

http://www.evolveelectrics.com/PDF/Eltek/Eltek%20CANbus%20Protocol.pdf

Any of the info in this document is applicable to what you been doing?


----------



## bigmotherwhale (Apr 15, 2011)

yes its the latter part is the same as that protocol but its big endian not little endian. 

it goes 

352 D9 enable power reference, voltage, current

all dec x 10


----------



## Tomdb (Jan 28, 2013)

Nice,

Now i just got to find a nice charger to pickup, because its better sized then the Lear one from the Volt.

Plus this would make writing the program a piece of cake. 

Can you see how low the charger will accept the voltage set?


----------



## bigmotherwhale (Apr 15, 2011)

I have tried as low as 170 volts, it wont work below and i didn't try, don't push your charger too hard at these levels, apparently they produce excessive heat below rated spec.

i have a friend writing a program for me, if you do write a control program, would you send me a copy?


----------



## Tomdb (Jan 28, 2013)

I would need a charger to test it out. But anyone somewhat handy with can and arduino can mash together a simple program in no time.

Simple program to "log in" so send the serial with message id 0x351

and then send the 0x352 with D9 enable power reference, voltage, current

With the targets set on the arduino via serial commands. And once changed programmed into Eeprom so they are saved for next restart.


----------



## z_power (Dec 17, 2011)

I tried with second charger, hoping not to fry it  If data bytes are B0-B7 then it looks like:
B0 is always charger identifier (mine is AF)

353: 
B1 is status - as in Eltek's pdf (1 - idle, 2 - charging, 3 - recoverable error, 4 - unrecoverable one)

354:
B1 and B2 are temperatures 

355:
B2 contains error info, bit 4 is high = low mains

Thank you bigmotherwhale for sharing your findings!


----------



## bigmotherwhale (Apr 15, 2011)

plug some data values and turn it on


----------



## z_power (Dec 17, 2011)

yea I did, for now it's quite sophisticated power supply for lightbulb


----------



## rossasaurus (Apr 1, 2015)

I think  these were used in the Think! City also, and believe the Volvo mentioned was the C30 ??


----------



## rossasaurus (Apr 1, 2015)

Hi all,
We have a couple of these .000 models too and had been plugging-along hand-entering Id's hoping to get 'lucky', so we're really happy you guys have cracked the nut for everyone.

We're using a GridConnect PCAN interface with their CanView software, on Windows 7 & 10.

If anyone is writing some basic code for arduino/beaglebone, I'd love to get a copy and would buy you some beers or some boards. You can find a CAN interface 'cape' for Beaglebone, and various CAN adapters for various arduino's, on ebay and elsewhere, like www.element14.com

You can find on Davide's eLithion site that it is possible to parallel these chargers, but not directly, as of course they all have the same ID's, so only one would start-up(the first on the CANbus to sense the enable command).
So I guess it would take a _µ_Px with dual CAN adapter outputs, one to each .000 charger, each sending the same command and each charger thinking it was the only charger in the world. Unless someone figures out how to blast the firmware and change ID's on individual chargers.

Thanks again to you .000 pioneers!

BTW, we're aiming to place one or two of these chargers in my '03 Rav4 , as those SPI's are few and far between!

Ross
North Bay


----------



## wernerc (Oct 28, 2014)

Has anyone an address for me where to buy these chargers or wants to sell one or more to me ?
It seems to be very interesting


----------



## bigmotherwhale (Apr 15, 2011)

wernerc said:


> Has anyone an address for me where to buy these chargers or wants to sell one or more to me ?
> It seems to be very interesting


I have some extras and can sell you some, PM me.

where are you located?


----------



## amvall (Oct 6, 2009)

I've got similar problems. have a eltek powercharger 50-122 ip67, it might have been meant for think or Volvo, but i don't know if they use that model.
when I plug it in it clicks a relay and output 111v with a fast ramp up, just meter connected, no load. I use a peak pcan-usb and pcan view, and all I receive is the serial number every 15 sec at the ID 05004400h. Doesn't respond to what's given in the manual or anything else I've come up with trying.
I tried to use the fwloader but it doesn't seem to work with pcan-usb.
Any suggestions?


----------



## bigmotherwhale (Apr 15, 2011)

try sending the serial number to +1 the address it announces itself on. that's how the others worked.


----------



## wernerc (Oct 28, 2014)

this charger seems not to have the same firmware as the other ones mentioned before and is very strange.
They don't output a voltage without correct CAN comm. This is not a problem with your Peak adapter.
Also the voltage range of 111V shows that its at least another volatge range. The ones used before here start with about 250V as a minimum.
Whats excatly written on the charger label ?
Can you perhaps send an photo ?


----------



## amvall (Oct 6, 2009)

As I mentioned before the charger is a 50v-122v version, and i am quite sure it most have been programmed for brammo. Got some more documentation yesterday and was actually able to switch back from oem-firmware to eltek-firmware.
By first unlock configuration with; id 303 data 01 16 F1 E2 D3 C4 B5 A6
following by; id 303 data 010101 within a second follwed by a reboot.










This should be working for models; 241121.010/020/030 and proved from mine (211121.111) as well.
For the charger 241121.000 you can switch between firmware's using dip inside.

So now my charger responds on id's 2ff and 300 and i can turn it on and off using control byte 0 state and 1/2 power and it responds by sending serial number every sec and status/error 5 times/sec.
Only problem left is that it doesn't respond to voltage control. Guess i shouldn't need a load to test voltage.


----------



## wernerc (Oct 28, 2014)

Still getting 111V ?
For my chargers with OEM firmware its not possible to set below the low voltage limit. If setting below, setting is ignored.


----------



## z_power (Dec 17, 2011)

amvall said:


> ...
> For the charger 241121.000 you can switch between firmware's using dip inside.
> ...


Any more details on this info? I noticed a switch inside my "toasted" charger, could give it a try.


----------



## amvall (Oct 6, 2009)

Forgot to say it's now outputting 89v instead.
I believe it's not related to the oem firmware as the behaviour changed accordingly to elteks specs exept for voltage control, but I guess I should read our all parameters from the config and make sure all seems alright.
A friend told me about how to switch firmware, Have you got any specific questions about the blown charger?


----------



## z_power (Dec 17, 2011)

I "bricked" my charger (the same kind as bigmotherwhale's) by sending random CAN messages, it stopped communicating (does not acknowledge any msg at any bus speed). I must have hit some sensitive identifier - should start playing lotto maybe? Now I'm looking for ways to restore original behaviour.
Part no. 241121.000, TBCM 360/3000HE, Rev. 2.1, sw: 1.00/1.00


----------



## Ryp (Mar 29, 2015)

z_power said:


> I "bricked" my charger (the same kind as bigmotherwhale's) by sending random CAN messages, it stopped communicating (does not acknowledge any msg at any bus speed). I must have hit some sensitive identifier - should start playing lotto maybe? Now I'm looking for ways to restore original behaviour.
> Part no. 241121.000, TBCM 360/3000HE, Rev. 2.1, sw: 1.00/1.00


z_power: Did you get the "bricked" charger working?


----------



## z_power (Dec 17, 2011)

Ryp said:


> z_power: Did you get the "bricked" charger working?


Unfortunately not...


----------



## arber333 (Dec 13, 2010)

bigmotherwhale said:


> I have comunication! send the charger serial number to frame 351 and it will communicate for a second, it will send back data.
> I believe this is the charger login that Athlon originally suggested this on the brammo forum.
> 
> getting close now.....
> ...


Hi i have Volvo charger P/N 30659929

Can you tell me which number is S/N?
I can see two numbers on a Volvo label
2809750
T14084100323

tnx

Arber


----------



## bigmotherwhale (Apr 15, 2011)

I dont think the CAN protocol is the same as the version you have.
The ones i have are not from a Volvo and are not IP67 rated.

T14084100323 is probably the serial, have you tried connecting the CAN bus to a PC and sending some commands? 

you could try here for the protocol: http://www.rec-bms.com/datasheet/EVPowerchargerCANprotocol.pdf


----------



## arber333 (Dec 13, 2010)

bigmotherwhale said:


> I dont think the CAN protocol is the same as the version you have.
> The ones i have are not from a Volvo and are not IP67 rated.
> 
> T14084100323 is probably the serial, have you tried connecting the CAN bus to a PC and sending some commands?
> ...



Yes i have the protocol thank you and i sent data like it is required. Without response. There is not even a packet going my way. Does someone know how to at least get CAN going? 

Would it be possible Volvo operates on different baud than Eltek?



tnx


----------



## bigmotherwhale (Apr 15, 2011)

Just change the baud rate to some common values and give it another go, 

Standard baud rates are 125 kbit/s, 250 kbit/s, 500 kbit/s and 1 Mbit/s

I would have thought you would have an announcement from the charger. 

Check polarity for the CAN lines too.


----------



## arber333 (Dec 13, 2010)

Hurah! I got a response. 
It is a bit strange, but i had to configure my canalyst II to bridging CAN1 and CAN2 channels. I dont know why but when i confirmed i instantly got a message train from adress x308 with data 02FF 23 03 10 84 40 01
So i gave it your message with adress x2FF data field 01 03 E8 09 C4 00 0A 

I can measure 320Vdc on one end and another 320Vdc on the other red wires. I thought those thinner wires were line to charge 12V battery. Does someone know what those are for? I see only Volvo charger uses them.

It is late. Next time i will try 360Vdc and connect full Ampera battery to charger.

A


----------



## bigmotherwhale (Apr 15, 2011)

Great, glad you got it working, can you post a picture of the other thin wires? Mine only have mains input DC out and CAN.


----------



## arber333 (Dec 13, 2010)

bigmotherwhale said:


> Great, glad you got it working, can you post a picture of the other thin wires? Mine only have mains input DC out and CAN.


Pic of the charger... Notice thin red wire pair. I thought it was 12V.


----------



## bigmotherwhale (Apr 15, 2011)

I think its an auxiliary power output that is used inside the vehicle for the fluid heater or resistive mats for cold weather charging.

Quality little units these elteks, i couldnt resist buying a couple for my project, but lack of funds and time means its on hold for now, what are you using it for? Have you got a vehicle in mind to convert?

EDit: Actually i think its more likely to be a high voltage supply for driving the compressor unit for cooling the pack as a resistive element would work fine on AC current.


----------



## arber333 (Dec 13, 2010)

bigmotherwhale said:


> I think its an auxiliary power output that is used inside the vehicle for the fluid heater or resistive mats for cold weather charging.
> 
> Quality little units these elteks, i couldnt resist buying a couple for my project, but lack of funds and time means its on hold for now, what are you using it for? Have you got a vehicle in mind to convert?
> 
> EDit: Actually i think its more likely to be a high voltage supply for driving the compressor unit for cooling the pack as a resistive element would work fine on AC current.



Hm... it seems logical. Compressor consules little if there is no other consumers and really what is the worst enemy of Li-ion cells? Their own residual heat dissipation. Next experiment will go towards changing charger operating baud rate. Do you think if i request communication at 125kbps it will use that next time it weaks up? 
Si i will send: 

CANid 03 03 data 00 00 01 

And reboot charger


----------



## rossasaurus (Apr 1, 2015)

*Re: eltek charger canbus communication*

I am using PCAN-View and I believe you can transmit one set of instructions, then send another and they will run concurrently. Discovered by accident of course. Still don't have my charger functioning though.



bigmotherwhale said:


> Hello Athlon
> Glad to have you here.
> 
> I actually called eltek and they were helpfull but the guy who i spoke to didn't know what i was on about and has sent an email to someone in germany, we will see if this gets anywhere.
> ...


----------



## rossasaurus (Apr 1, 2015)

*Re: eltek charger canbus communication*

Could someone please give a brief summary of steps for accessing the .000 Eltek PowerChargers?

I read:

500kbs
8 bits

Send:
ID=351 followed by 12 Digit Serial Number (not converted to Hex)
for instance 351 10 42 71 10 09 27 (for serial#104271100927)
Extended Format
Repeat <100ms
Should spit back my ID, correct?

thanks
Ross

PCAN-View set at 500kbs, 8 bits


----------



## bigmotherwhale (Apr 15, 2011)

Yes that looks ok however im not sure whether 8 bit is correct. 
It should announce itself every second whether you have sent anything to it or not, if you are not receiving messages from it check your settings.


----------



## rossasaurus (Apr 1, 2015)

I appreciate your reply BMW,

Oh, I hadn't realized Charger should send without receiving a request first.

So, is 351 the apparent ID for these chargers? or is that an ID that any chargers on bus should respond to, a request for reports?

I'm assuming the mfg would have used the same ID for all the chargers going to Think or BMW etc.

thanks for your time and attention, will keep plugging away at it.

Ross


----------



## SeanAdrian (Jan 24, 2011)

amvall said:


> As I mentioned before the charger is a 50v-122v version, and i am quite sure it most have been programmed for brammo. Got some more documentation yesterday and was actually able to switch back from oem-firmware to eltek-firmware.
> By first unlock configuration with; id 303 data 01 16 F1 E2 D3 C4 B5 A6
> following by; id 303 data 010101 within a second follwed by a reboot.
> 
> ...


Hi amvall, I opened up my unit and noticed there were two dip switches. Would you be able to say what position they should be in to reset to Eltek ?
My unit is a 0.030 but has 2 dip switches inside


----------



## SeanAdrian (Jan 24, 2011)

z_power said:


> Any more details on this info? I noticed a switch inside my "toasted" charger, could give it a try.


Hi z_power, I know this thread is dated, but would you have photos of your switches ?


----------



## urgi (3 mo ago)

HEUREKA WORKING - I can enable on bench without battery Bit 7 RTR off D0=01 time 1000ms  




how to make an image online


----------



## urgi (3 mo ago)

please anyone have Technical specification EV PC 3603000?

#edit 

if someone need HEX calculation


----------

