ULtra Compact 1800W charger + Eltek programming

Batteries, Chargers, and Battery Management Systems.
john61ct   10 MW

10 MW
Posts: 2216
Joined: Dec 18 2018 2:06pm

Re: ULtra Compact 1800W charger + Eltek programming

Post by john61ct » Apr 24 2019 11:26am

Don't hardwire the plugs. This style, one per rectifier, would give greater flexibility, ensure ampacity for max output @3kW whether 115 or 230Vac input.
Picture_20190424_122545998.jpg
Picture_20190424_122545998.jpg (17.3 KiB) Viewed 982 times

john61ct   10 MW

10 MW
Posts: 2216
Joined: Dec 18 2018 2:06pm

Re: ULtra Compact 1800W charger + Eltek programming

Post by john61ct » Apr 24 2019 11:29am

Dimensions are in the spec sheets.

Maybe Smartpack as an optional addon, just put threaded holes (rivnut) to allow choice of side vs top attachment?

Ability to mount in a stock Pelican-clone case for portability and weatherproofing would be nice.

J_haggerty   10 mW

10 mW
Posts: 22
Joined: Dec 04 2018 4:41pm

Re: ULtra Compact 1800W charger + Eltek programming

Post by J_haggerty » Apr 24 2019 11:43pm

Yup that’s the c13/c14 standard. I’m running a similar port but specd for 20 amps and a panel mount snap in rather than bolts. Easy removal and replaceable nearly anywhere. If I can figure out how to upload a photo through my phone later I will.

dakoal   10 µW

10 µW
Posts: 6
Joined: Nov 04 2016 2:42am

Re: ULtra Compact 1800W charger + Eltek programming

Post by dakoal » May 16 2019 10:57pm

Hi,

I found a source of some Flatpack2, Revision 1.2 / FW 1.10 / 1.10
All of these 9 can't be programmed for the fix start voltage.

But I also have a Revision 3.3 / FW 1.12 / 1.14.
This one can be programmed.

Does anyone think we can read out the Firmware of the 3.3 and flash it to the 1.2?
Attachments
IMG_5080.JPG
IMG_5080.JPG (78.66 KiB) Viewed 911 times
IMG_5081.JPG
IMG_5081.JPG (79.74 KiB) Viewed 911 times
IMG_5083.JPG
IMG_5083.JPG (98.23 KiB) Viewed 911 times
IMG_5084.JPG
IMG_5084.JPG (114.02 KiB) Viewed 911 times

john61ct   10 MW

10 MW
Posts: 2216
Joined: Dec 18 2018 2:06pm

Re: ULtra Compact 1800W charger + Eltek programming

Post by john61ct » May 16 2019 11:18pm


J_haggerty wrote: If I can figure out how to upload a photo through my phone later I will.
Post to Imgur, helper apps abound.

Then link from your posts, per photo, or to a gallery.

Google Drive similar but not conducive to privacy if you haven't let go of that fantasy yet.


J_haggerty   10 mW

10 mW
Posts: 22
Joined: Dec 04 2018 4:41pm

Re: ULtra Compact 1800W charger + Eltek programming

Post by J_haggerty » May 22 2019 9:13am

Has anyone used CAN to program two of these at once? I'd like to program the bottom half of my 2s2p stack using one arduino/CAN shield pair and the top half with another pair, but I don't know how to use CAN appropriately to communicate with multiple chargers and can't easily find other people's posts on the topic.

john61ct   10 MW

10 MW
Posts: 2216
Joined: Dec 18 2018 2:06pm

Re: ULtra Compact 1800W charger

Post by john61ct » Jun 08 2019 6:44pm

Edit, sorry noticed this is the S thread

User avatar
multifrag   100 W

100 W
Posts: 119
Joined: Feb 19 2016 5:44am
Location: London, UK

Re: ULtra Compact 1800W charger + Eltek programming

Post by multifrag » Jun 18 2019 7:33am

I'm having trouble with reading CAN data after plugging in my battery. The charger stops sending CAN data in CV state. When battery charging switches to CC the data starts appearing. Electrically everything works, but I can't display the data on the screen for the CV period.

coolice   100 µW

100 µW
Posts: 7
Joined: Feb 19 2018 5:35pm

Re: ULtra Compact 1800W charger + Eltek programming

Post by coolice » Jul 03 2019 7:57am

dakoal wrote:
May 16 2019 10:57pm
Hi,

I found a source of some Flatpack2, Revision 1.2 / FW 1.10 / 1.10
All of these 9 can't be programmed for the fix start voltage.

But I also have a Revision 3.3 / FW 1.12 / 1.14.
This one can be programmed.

Does anyone think we can read out the Firmware of the 3.3 and flash it to the 1.2?
Hey Buddy.

Seems I may have a single 2000W HE unit the same as you, won't respond to the fixed voltage setting, but will respond to Remi's original code and change voltage as long as you stay logged in.

Has anyone had this same issue and found a fix?

Cheers.

Ian

J_haggerty   10 mW

10 mW
Posts: 22
Joined: Dec 04 2018 4:41pm

Re: ULtra Compact 1800W charger + Eltek programming

Post by J_haggerty » Nov 01 2019 12:26pm

Haven’t found a fix for that but I wanted to update on the charger housing. I reprinted with nylon and made a few modifications to inlets and outlets. It now has a deutsch 4 pin connector for CAN and direct cable inlet for higher gauge wire and higher safe charging amps.

I’m currently testing at 33 amps using two 110V flatpack2’s in parallel that I graciously got from a fellow former forum member.

I’m using these in conjunction with the ANT SmartBMs that I found out about from this forum to safely cut off charging in case of single cell overvoltage. It was cheap and works very well.

Image

J_haggerty   10 mW

10 mW
Posts: 22
Joined: Dec 04 2018 4:41pm

Re: ULtra Compact 1800W charger + Eltek programming

Post by J_haggerty » Nov 10 2019 4:31pm

Hi folks,

I've taken Remmie's code and modified it to make it a little easier to change the default voltage of most of these chargers. It has worked well for both my 1800W Flatpack 2's and my 110-120V 2000W HE Flatpack 2's. It doesn't currently incorporate the display code, so you still have to use a multimeter or the other code with a display to verify voltage, but it does do automatic serial number recognition.

Code: Select all

/* unsigned char login[8] = {0x14, 0x14, 0x71, 0x11, 0x08, 0x20, 0x00, 0x00};     //this is the serial number of the unit + 2 added bytes of 00 each, sernr on the unit reads 141471110820)
  CAN.sendMsgBuf(0x05005804, 1, 8, login);                                       //send message to log in and assign ID=1 (last 04 means ID=1, for ID=2 use 05004808 )

  unsigned char setdefaultvolt[5] = {0x29, 0x15, 0x00, 0x80, 0x16};              //this is the command for setting the default output voltage (Last two bytes, LSB first). 16 80 is the maximum voltage of 57.6 V
  CAN.sendMsgBuf(0x05019C00, 1, 5, setdefaultvolt);                             //send message to set ouput voltage to all chargers connected to the CAN-bus */
#include <mcp_can.h>
#include <mcp_can_dfs.h>
#include <SPI.h>
word defaultvoltage =9550; //11550;                                                         // set default voltage (divide by 100) (may not need both default and output)
//word outputvoltage = 4350;                                                         // set output voltage to (divide by 100)
word maxcurrent = 50;                                                              // set initial maxcurrent to 12.5A output
word overvoltage = 11750;
const int SPI_CS_PIN = 17;                                                          // Set CS pin to pin 10 (could be 9 for other CANshields)
unsigned char len = 0;
unsigned char serialnr[8];
unsigned char buf[8] ;
int msgreceived;
bool longwalkin = HIGH;                                                         //Choose HIGH for 60 second walkin and LOW for 5 second
long walkin = 0x05FF4005;
MCP_CAN CAN(SPI_CS_PIN);                                                            // Set CS pin for CANBUS shield

void setup()                                                                        // Initialisation routine
{ bool flag = LOW;                                                                  // set flag to low
  if (longwalkin == LOW)
  {
    walkin = 0x05FF4004;
  }
START_INIT:

  if (CAN_OK == CAN.begin(CAN_125KBPS))                                           // init can bus : baudrate = 125k !!
  {
  }
  else
  {
    delay(100);
    goto START_INIT;
  }

  //This next section sends one initial message that should set the default voltage.
  while (flag == LOW)                                                                  // cycle through until correct Canid allows message transmission
  {
    if (CAN_MSGAVAIL == CAN.checkReceive())                                             // check if data coming
    {
      CAN.readMsgBuf(&len, buf);                                                    // read data,  len: data length, buf: data buf
      INT32U canId = CAN.getCanId();                                                // read the CAN Id


      if (canId == 0x05014400)                                                          //this is the request from the Flatpack rectifier during walk-in (start-up) or normal operation when no log-in response has been received for a while
      {
        for (int i = 0; i < 8; i++)
        {
          serialnr[i] = buf[i];                                                        // transfer the message buffer to the serial number variable
        }
        CAN.sendMsgBuf(0x05004805, 1, 8, serialnr);                                  //send message to log in (DO NOT ASSIGN AN ID use 00) use 4805 for 60 second walkin and 4804 for 5 second
        msgreceived++;                                                               // increase the variable "msgreceived"
        unsigned char setdefaultvolt[5] = { 0x29, 0x15, 0x00, lowByte(defaultvoltage), highByte(defaultvoltage)};   //this is the command for setting the default output voltage (Last two bytes, LSB first). qnd long walk-in 4005 or short walk in 4004
        CAN.sendMsgBuf(0x05019C00, 1, 5, setdefaultvolt);                                                                     //(last 4 in header is for 5 sec walkin, 5 is for 60 second walkin)                                                                     //(last 4 in header is for 5 sec walkin, 5 is for 60 second walkin)
        flag = HIGH;
      }                                                                              // set flag to say that message has been sent
      else delay(100);
    }
  }
}

void loop()                                                                        // main program (LOOP)
{ delay( 20000);
  if (CAN_MSGAVAIL == CAN.checkReceive())                                             // check if data coming
  {
    CAN.readMsgBuf(&len, buf);                                                    // read data,  len: data length, buf: data buf
    INT32U canId = CAN.getCanId();                                                // read the CAN Id


    if (canId == 0x05014400)                                                          //this is the request from the Flatpack rectifier during walk-in (start-up) or normal operation when no log-in response has been received for a while
    {
      for (int i = 0; i < 8; i++)
      {
        serialnr[i] = buf[i];                                                        // transfer the message buffer to the serial number variable
      }
      CAN.sendMsgBuf(0x05004805, 1, 8, serialnr);                                  //send message to log in (DO NOT ASSIGN AN ID use 00) use 4805 for 60 second walkin and 4804 for 5 second
      msgreceived++;                                                               // increase the variable "msgreceived"
      unsigned char stmp7[8] = {lowByte(maxcurrent), highByte(maxcurrent), lowByte(defaultvoltage), highByte(defaultvoltage), lowByte(defaultvoltage), highByte(defaultvoltage), lowByte(overvoltage), highByte(overvoltage)};    // set rectifier to maxcurrent 57,0V (16 44) and OVP to 59.5V (17 3E) qnd long walk-in 4005 or short walk in 4004
      CAN.sendMsgBuf(walkin, 1, 8, stmp7);
    }                                                                              // nothing to do :)
  }
}
/*********************************************************************************************************
  END FILE
  Voltage settings
  80 16 => 1680 HEX = 57,60 Volt (= highest possible voltage
  E6 14 => 14E6 HEX = 53,50 Volt (= factory set voltage)
  FE 10 => 10FE HEX = 43,50 Volt (= lowest possible voltage)
*********************************************************************************************************/

Camon   1 mW

1 mW
Posts: 10
Joined: Nov 18 2017 6:31pm

Re: ULtra Compact 1800W charger + Eltek programming

Post by Camon » Nov 10 2019 4:36pm

Wow amazing thank you.
Where do you get the 110-120V 2000W ??

J_haggerty   10 mW

10 mW
Posts: 22
Joined: Dec 04 2018 4:41pm

Re: ULtra Compact 1800W charger + Eltek programming

Post by J_haggerty » Nov 10 2019 10:34pm

Hey Camon

You get really lucky. Lol. There is a thread about it on electricmotorcycle.com by Dr Bass and I happened to message one of the people that posted there that lived in my area who had sold his Zero and he gave three of them to me. A very nice guy. It solves some of the issue that you normally see of not being able to take the full change in voltage of the battery from full to empty with a stack of two 57V units.

That’s the main benefit, as it would actually be more powerful to use two 57V 3000W HE’s stacked in series, but you wouldn’t be able to current limit them fully on my pack. Additionally, having the two 110v units in parallel reduces the amperage through each PCB. Since the PCBs I had made are probably best used at or below 35 Amps or so.

I’m planning to upload my CAD files for the charger housing. I won’t be uploading the PCB files yet, because I still have around 25 of them for the Flatpack2's and would like to sell off some of the extras before making the files public. Anyone is welcome to duplicate them if they can, but it’s probably as cheap and quicker to buy them from me if you plan to use my charger housing design.
Last edited by J_haggerty on Nov 13 2019 10:46am, edited 1 time in total.

J_haggerty   10 mW

10 mW
Posts: 22
Joined: Dec 04 2018 4:41pm

Re: ULtra Compact 1800W charger + Eltek programming

Post by J_haggerty » Nov 10 2019 10:47pm

What would be really cool is if someone found a CANbus for Arduino that had isolated CAN inputs. Then you could current limit from 98V-115V—ideal for people with, say, 14 Nissan Leaf modules in series on their motorcycles...

Post Reply