ULtra Compact 1800W charger + Eltek programming

Anyone here tried a Cotek AEK power supply? Kinda pricey, the 120/240 3000W 60V version is US$825 on Amazon. (There are a bunch of lower voltage versions as well)

Datasheet: http://www.kepcopower.com/specs/aek-3000w-specs.pdf

Looks like an exceedingly easy PSU to use. Has a bunch of communications stuff if you want to use it. Easy to parallel. Not overly huge in size.
 
I have a 48VDC flatpack 2 HE 2000W version with Arduino and CANBUS shield. I have used the info in this forum to log in and control the rectifier to some degree. I have figured out how to get additional status info. If the rectifier sends

CanID 0x05014004 + (Status data as previously described) then it is operating normally

CanID 0x05014008 + (Status data as previously described) then it has a warning - remmie got this when in current limit mode which is a warning.

CanID 0x0501400C + (Status data as previously described) then it has an alarm. remmie got this when mains failed which is an alarm.

CanID 0x05014010 + (Status data as previously described) then it is in Walk in mode (as previously described).

If you then send the rectifier

CanID 0x0501BFFC + data 0x08, 0x04, 0x00,

it will send you back

CanID 0x0501BFFC + data 0x0E, 0x04, 0x00, 0xYY, 0xZZ, 0x00, 0x00
where each bit of YY relates to the following WARNINGS
80 = Current limit
40 = low temp
20 = High temp
10 = Low Mains
08 = High Mains
04 = Mod Fail Secondary
02 = Mod Fail Primary
01 = OVS Lock Out
and each bit of the of ZZ relates to the following WARNINGS
80 = Inner Volt
40 = Fan3 Speed low
20 = Sub Mod1 fail
10 = Fan2 Speed low
08 = Fan1 Speed low
04 = Mod Fail Secondary
02 = Module fail
01 = Internal Voltage

if you send CanID 0x0501BFFC + data 0x08, 0x08, 0x00

it will send you back

CanID 0x0501BFFC + data 0x0E, 0x08, 0x00, 0xYY, 0xZZ, 0x00, 0x00

where each bit of YY relates to the following ALARMS
80 = Current limit
40 = low temp
20 = High temp
10 = Low Mains
08 = High Mains
04 = Mod Fail Secondary
02 = Mod Fail Primary
01 = OVS Lock Out
and each bit of ZZ relates to the following ALARMS
80 = Inner Volt
40 = Fan3 Speed low
20 = Sub Mod1 fail
10 = Fan2 Speed low
08 = Fan1 Speed low
04 = Mod Fail Secondary
02 = Module fail
01 = Internal Voltage

I don't think all the warnings and alarms are relevant to all rectifiers but it will help you to find out what is going on if the rectifier sends you a CanID 0x05014008 or 0x0501400C.

I have also found ways to get other status info like firmware versions, max current, max voltage, converter part number, converter type etc but these are not that interesting.


Would anyone know how you can individually control the rectifiers or turn the output off on a specific rectifier? Remmie has showed how to send a broadcast to all rectifiers using canID 0x5FF4004, but I want to be able to control individual rectifiers and turn their output off if not required.

Any ideas?
 
remmie1972 said:
The procedure for permanent default voltage change is :
You have to have a connection to the CAN-bus (obviously)
if the serial number of your unit is 123456789012

send 0x05004804 0x12 0x34 0x56 0x78 0x90 0x12 0x00 0x00 (to log in to the rectifier)
send 0x05009C02 0x2B 0x15 0x00 0x80 0x16 (to set the permanent default voltage)

After about 10 seconds or so the output voltage should change to the new default voltage.
Now wait 30 seconds and disconnect the power to the rectifier.
When you start up again the voltage will default to (in the example) 57.5 Volt. The default voltage is determined by the last 2 bytes of the second command. Multiply your desired voltage with 100 (57.50 => 5750). Convert this number to HEX values (5700 => 0x1680). switch the two bytes (0x1680 => 0x80 0x16) and you have your code for setting the voltage

Remmie, do you know the procedure to do this for a Flatpack2 HE? All other commands seems to be working, but nothing happens when I send the second command (to permanently) change voltage....
 
I need help to long in to flatpack 2 . I need to set one of them to 47 volts but every time I try to use any of the codes that have been provided I get a can bus fail message. when I send this code i can receive the serial number on the Serial monitor part of the arduino.


void setup()
{
Serial.begin(115200);

while (CAN_OK != CAN.begin(CAN_125KBPS)) // init can bus : baudrate = 125k
{
Serial.println("CAN BUS Shield init fail");
Serial.println(" Init CAN BUS Shield again");
delay(100);
}
Serial.println("CAN BUS Shield init ok!");
}


void loop()
{
unsigned char len = 0;
unsigned char buf[8];

if(CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming
{
CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf

unsigned int canId = CAN.getCanId();

Serial.println("-----------------------------");
Serial.print("Get data from ID: ");
Serial.println(canId, HEX);

for(int i = 0; i<len; i++) // print the data
{
Serial.print(buf, HEX);
Serial.print("\t");
}
Serial.println();
}
}


I get :

CAN BUS Shield init ok!
-----------------------------
Get data from ID: 929
5B 6 16 71 1 49 29 0
-----------------------------
Get data from ID: 929
5B 6 16 71 1 49 29 0
-----------------------------
Get data from ID: 929
5B 6 16 71 1 49 29 0
-----------------------------
Get data from ID: 929

but when I send any of the codes provided here I get an error message :
CAN BUS Shield init fail
Init CAN BUS Shield again
CAN BUS Shield init fail
Init CAN BUS Shield again
CAN BUS Shield init fail
Init CAN BUS Shield again
CAN BUS Shield init fail
Init CAN BUS Shield again

or I don't get anything at all.

my serial number is : 061671014929
 
elanimal28 said:
I need help to long in to flatpack 2 . I need to set one of them to 47 volts but every time I try to use any of the codes that have been provided I get a can bus fail message. when I send this code i can receive the serial number on the Serial monitor part of the arduino.

This might have to do that my code uses an other pin for initializing the CAN-interface.

these 2 lines determine the pin for the CAN-interface in my code (it is for pin 10)
const int SPI_CS_PIN = 10;
MCP_CAN CAN(SPI_CS_PIN);

It seems your board requires another pin (possibly #9)
There should be some lines of code above the code you've published where the SPI_CS_PIN is configured. Either try my code with the correct SPI_CS_PIN or add the following 5 lines to your code in the void SETUP section, NOT IN THE LOOP SECTION !. Place it right behind the 'Serial.println("CAN BUS Shield init ok!");' line

unsigned char login[8] = {0x06, 0x16, 0x71, 0x01, 0x49, 0x29, 0x00, 0x00}; //this is for logging into your flatpack
CAN.sendMsgBuf(0x05004805, 1, 8, login);
delay(2000);
unsigned char setdefaultvolt[5] = {0x29, 0x15, 0x00, 0x5C, 0x12}; //this is the command for setting the default output voltage 47v (0x125C = 4700 Last two bytes, LSB first). 80 16 is the maximum voltage of 57.6 V
CAN.sendMsgBuf(0x05019C00, 1, 5, setdefaultvolt);

this code will log in into your Flatpack and send the command for using 47 volts as default voltage.
The codes from the flatpack should now come every 0,2 seconds and have a different format (because you've logged in). wait about 15 seconds until the messages come much more slowly (about every 2 seconds) the output voltage should have changed to 47 volts.
Now switch off the flatpack, wait about a minute and switch it back on. It should now default to 47 volt.

Good luck.
 
sparkiesweden said:
remmie1972 said:
The procedure for permanent default voltage change is :
You have to have a connection to the CAN-bus (obviously)
if the serial number of your unit is 123456789012

send 0x05004804 0x12 0x34 0x56 0x78 0x90 0x12 0x00 0x00 (to log in to the rectifier)
send 0x05009C02 0x2B 0x15 0x00 0x80 0x16 (to set the permanent default voltage)

After about 10 seconds or so the output voltage should change to the new default voltage.
Now wait 30 seconds and disconnect the power to the rectifier.
When you start up again the voltage will default to (in the example) 57.5 Volt. The default voltage is determined by the last 2 bytes of the second command. Multiply your desired voltage with 100 (57.50 => 5750). Convert this number to HEX values (5700 => 0x1680). switch the two bytes (0x1680 => 0x80 0x16) and you have your code for setting the voltage



Remmie, do you know the procedure to do this for a Flatpack2 HE? All other commands seems to be working, but nothing happens when I send the second command (to permanently) change voltage....

Try the following 2 commands instead. The second command is slightly different in the identifier and the first byte of the command (29 instead of 2B)

send 0x05004804 0x12 0x34 0x56 0x78 0x90 0x12 0x00 0x00 (to log in to the rectifier, use your own serial number!!!)
send 0x05019C00 0x29 0x15 0x00 0x80 0x16 (to set the permanent default voltage to 57.5 Volt)
 
Checkout my Zero SR "homemade supercharger" consisting of 4 Flatpack S units.

http://electricmotorcycleforum.com/boards/index.php?topic=6405.0

index.php


index.php
 
remmie1972 said:
elanimal28 said:
I need help to long in to flatpack 2 . I need to set one of them to 47 volts but every time I try to use any of the codes that have been provided I get a can bus fail message. when I send this code i can receive the serial number on the Serial monitor part of the arduino.

This might have to do that my code uses an other pin for initializing the CAN-interface.

these 2 lines determine the pin for the CAN-interface in my code (it is for pin 10)
const int SPI_CS_PIN = 10;
MCP_CAN CAN(SPI_CS_PIN);

It seems your board requires another pin (possibly #9)
There should be some lines of code above the code you've published where the SPI_CS_PIN is configured. Either try my code with the correct SPI_CS_PIN or add the following 5 lines to your code in the void SETUP section, NOT IN THE LOOP SECTION !. Place it right behind the 'Serial.println("CAN BUS Shield init ok!");' line

unsigned char login[8] = {0x06, 0x16, 0x71, 0x01, 0x49, 0x29, 0x00, 0x00}; //this is for logging into your flatpack
CAN.sendMsgBuf(0x05004805, 1, 8, login);
delay(2000);
unsigned char setdefaultvolt[5] = {0x29, 0x15, 0x00, 0x5C, 0x12}; //this is the command for setting the default output voltage 47v (0x125C = 4700 Last two bytes, LSB first). 80 16 is the maximum voltage of 57.6 V
CAN.sendMsgBuf(0x05019C00, 1, 5, setdefaultvolt);

this code will log in into your Flatpack and send the command for using 47 volts as default voltage.
The codes from the flatpack should now come every 0,2 seconds and have a different format (because you've logged in). wait about 15 seconds until the messages come much more slowly (about every 2 seconds) the output voltage should have changed to 47 volts.
Now switch off the flatpack, wait about a minute and switch it back on. It should now default to 47 volt.

Good luck.
I still can't get it to change! the only change I see when I upload the code is this new response:
Get data from ID: 9C00
2B 15 0 5C 12 0 0 0
-----------------------------

normally I get :
Get data from ID: 929
5B 6 16 71 1 49 29 0
-----------------------------
Get data from ID: 929
5B 6 16 71 1 49 29 0
-----------------------------
Get data from ID: 929
5B 6 16 71 1 49 29 0
-----------------------------
Get data from ID: 929
5B 6 16 71 1 49 29 0
-----------------------------
Get data from ID: 929
5B 6 16 71 1 49 29 0
-----------------------------
Get data from ID: 4400
6 16 71 1 49 29 0 0

here is the code I am using:

// demo: CAN-BUS Shield, receive data with check mode
// send data coming to fast, such as less than 10ms, you can use this way
// loovee, 2014-6-13


#include <SPI.h>
#include "mcp_can.h"


// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const int SPI_CS_PIN = 9;

MCP_CAN CAN(SPI_CS_PIN); // Set CS pin

void setup()
{
Serial.begin(115200);

while (CAN_OK != CAN.begin(CAN_125KBPS)) // init can bus : baudrate = 125k
{
Serial.println("CAN BUS Shield init fail");
Serial.println(" Init CAN BUS Shield again");
delay(100);
}
unsigned char login[8] = {0x06, 0x16, 0x71, 0x01, 0x49, 0x29, 0x00, 0x00}; //this is for logging into your flatpack
CAN.sendMsgBuf(0x05004805, 1, 8, login);
delay(2000);
unsigned char setdefaultvolt[5] = {0x29, 0x15, 0x00, 0x5C, 0x12}; //this is the command for setting the default output voltage 47v (0x125C = 4700 Last two bytes, LSB first). 80 16 is the maximum voltage of 57.6 V
CAN.sendMsgBuf(0x05019C00, 1, 5, setdefaultvolt);
Serial.println("CAN BUS Shield init ok!");
}


void loop()
{
unsigned char len = 0;
unsigned char buf[8];

if(CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming
{
CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf

unsigned int canId = CAN.getCanId();

Serial.println("-----------------------------");
Serial.print("Get data from ID: ");
Serial.println(canId, HEX);

for(int i = 0; i<len; i++) // print the data
{
Serial.print(buf, HEX);
Serial.print("\t");
}
Serial.println();
}
}

/*********************************************************************************************************
END FILE
*********************************************************************************************************/
 
Try a delay(100); right before the line with
unsigned char login[8] = {0x06, 0x16, 0x71, 0x01, 0x49, 0x29, 0x00, 0x00}; //this is for logging into yo

This gives the can shield a little extra time to initialize.
 
remmie1972 said:
Try a delay(100); right before the line with
unsigned char login[8] = {0x06, 0x16, 0x71, 0x01, 0x49, 0x29, 0x00, 0x00}; //this is for logging into yo

This gives the can shield a little extra time to initialize.
I tried it and nothing happened. I'm really puzzled here. I'm thinking that some how I'm not logged in and that is why it's not accepting the command to chnage the voltage . How can I tell if i am logged on?
 
Anyone find a source for the ELTEK 1.8kW flatpack S ? Searched around and came up empty. Looking to mount one on the bike, and this one is about the only one that will fit.
Thanks.
 
elanimal28 said:
remmie1972 said:
Try a delay(100); right before the line with
unsigned char login[8] = {0x06, 0x16, 0x71, 0x01, 0x49, 0x29, 0x00, 0x00}; //this is for logging into yo

This gives the can shield a little extra time to initialize.
I tried it and nothing happened. I'm really puzzled here. I'm thinking that some how I'm not logged in and that is why it's not accepting the command to chnage the voltage . How can I tell if i am logged on?


Is this a FP2 or the new FP2HE ?

I have tried to set permanent voltage on the older FP2 that has the silver front with two fans.
Those codes has not worked so far.....

But for the FP2HE it works.

Regards
/Per
 
Merlin said:
you have to carry the coil also with you.
not worth the weight and i dont think its an good idea for a psu "riding offroad" with it.


Good points to consider. Most of my riding is on roads and bike paths, and not much off road riding, so if I do decide to carry the PS on the bike , maybe it will hold up.
 
pm_dawn said:
elanimal28 said:
remmie1972 said:
Try a delay(100); right before the line with
unsigned char login[8] = {0x06, 0x16, 0x71, 0x01, 0x49, 0x29, 0x00, 0x00}; //this is for logging into yo

This gives the can shield a little extra time to initialize.
I tried it and nothing happened. I'm really puzzled here. I'm thinking that some how I'm not logged in and that is why it's not accepting the command to chnage the voltage . How can I tell if i am logged on?


Is this a FP2 or the new FP2HE ?

I have tried to set permanent voltage on the older FP2 that has the silver front with two fans.
Those codes has not worked so far.....

But for the FP2HE it works.

Regards
/Per
That's the problem! I have the FP2 they have the silver front and two fans. It figures, Murphy law is my faithful companion. So they put out 107 volts and my set up calls for 100v. I guess I can wire up a relay and have the bms cut the power to the FP2 when the battery reaches 100 volts.
 
Are you in a big hurry to get it working or can you put them aside for a while ?

I have the SMart pack controller athome and can try to have a look at the traffic going to the FP2.
I have a couple of these FP2 units that I would like to do fixed settings on too.

Regards
/Per
 
I am not in a big hurry but I found a FP2HE for $110 and my plan is to program it for 47v since I cannot change the FP2 from 53v. That would give me the voltage I need 100v. They should be ok connected in series whith the different voltage? :shock:
The plan is to buy a 4th and charge my 60 ah pack in 1 hour :mrgreen:

But please let me know if you find the code that will work on the old FP2 . I for know I'll have 2 and a spare :wink:
 
remmie1972 said:
Try a delay(100); right before the line with
unsigned char login[8] = {0x06, 0x16, 0x71, 0x01, 0x49, 0x29, 0x00, 0x00}; //this is for logging into yo

This gives the can shield a little extra time to initialize.

Thank you remmie and pm_dawn. Yesterday I received the flatpack2he and the code worked just like it's supposed to.
 
circuit said:
If anyone is interested in this CAN-UART converter and flatpack board, let me know:

https://www.energusps.com/shop/product/eltek-flatpack-2-can-kit-47

Does it work by simply connecting it to the BMS sold on the same site?

That BMS also has a bluetooth module. Would I need to disconnect one to connect the other? (I'm wondering if I would leave it hooked on the BMS side or the FP2 side)

sorry... programer lvl=0. just looking for a plug-in solution
 
Ok guys, you are horny about the "S"?

i got also the bad news from eltek about the price BUT if i take enough(50!!!) i could sell them for 275€ each.

still not that cheap. but theres no other PSU out there to beat that power/size.


how many guys are interessted if i can get that price?
 
Merlin said:
Ok guys, you are horny about the "S"?

i got also the bad news from eltek about the price BUT if i take enough(50!!!) i could sell them for 275€ each.

still not that cheap. but theres no other PSU out there to beat that power/size.


how many guys are interessted if i can get that price?

$290USD?
That would be a hell of a good deal.
 
yes. in dollar 290.
maybe i try to ask in the electric motorcycle forum to find enough ppl who wants them.


i can ask for the 3000w version. but not that cheap as the 2000w version...pretty sure.
 
Merlin said:
yes. in dollar 290.
maybe i try to ask in the electric motorcycle forum to find enough ppl who wants them.


i can ask for the 3000w version. but not that cheap as the 2000w version...pretty sure.

That would be a good place to ask. $600 USD to charge a zero at 3.6kw is a great deal.
that said... two 3kw units to charge at 6kw would be an even better deal, even if it costs $900.
 
Back
Top