O2Micro OZ890 Based BMS Units

Joined
Feb 20, 2012
Messages
28
Location
Isle Of Wight, UK
Good Day All.

I am working on a ApolloGroup LT-013SF BMS, and this is based on the 02Micro OZ890 chip.

The 02Micro OZ890 chip can have all the BMS parameters viewed or adjusted via the i2c bus.

I have found a copy of the CowBoy software v0.75 for use with 02Micro OZ890 chip.
In the software for the interface setup there is a dropdown box and you can select any of the following.
Disconnected.
Parallel Port + Philips.
Aardvark USB.
O2 USB.

I have done a little bit of digging around with regards to this Aardvark USB, it seems that it is based around the FTDI USB to i2c chip.

I happen to have a FTDI UMFT201XB-01, FT201XQ USB to I2C breakout board.

I have tried both the Virtual COM Port (VCP) drivers, and direct (D2XX) drivers.
I have also tried using the Aardvark FTDI drivers, that was with the CowBoy software.

But I can't seem to get any kind of com data.

So I am not really sure where to go from here.

Does anyone have any ideas?

Thanks for your time.

Best Regards.
 
The FTDI UMFT201XB-01 will not work in this case, as the UMFT201XB-01 is a I2C slave device, and not a master device.

As I am unwilling to spend $250.00 on the Aardvark I2C/SPI Host Adapter.

I am going to try and use my Arduino Uno to pull all the data.

So far I have only used to Arduino Uno to detect the 02Micro OZ890 chip on the I2C bus.
And it seems that the OZ890 chip I am working with has it's I2C address set to 0x30.
The CowBoy software v0.75 I found, Lists the device address 0x60 to 0x7E.
So I am not even sure if I was to buy the correct adaptor if I could get it to work.

So for this point in time I am just going to stick with the Arduino Uno and see what data I can pull from the 02Micro OZ890 chip.

I will report back with any updates.

Best Regards.
 
I was able to find some i2c device scanning code for the arduino over at the Arduino Playground.

Direct link: http://playground.arduino.cc/Main/I2cScanner

And here is the arduino sketch code:
Code:
// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    http://www.gammon.com.au/forum/?id=10896
// 
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//

#include <Wire.h>


void setup()
{
   Wire.begin();

   Serial.begin(9600);
   Serial.println("\nI2C Scanner");
}


void loop()
{
   byte error, address;
   int nDevices;

   Serial.println("Scanning...");

   nDevices = 0;
   for(address = 1; address < 120; address++ ) 
   {
     // The i2c_scanner uses the return value of
     // the Write.endTransmisstion to see if
     // a device did acknowledge to the address.
     Wire.beginTransmission(address);
     error = Wire.endTransmission();

     if (error == 0)
     {
       Serial.print("I2C device found at address 0x");
       if (address<16) 
         Serial.print("0");
       Serial.print(address,HEX);
       Serial.println("  !");

       nDevices++;
     }
     else if (error==4) 
     {
       Serial.print("Unknow error at address 0x");
       if (address<16) 
         Serial.print("0");
       Serial.println(address,HEX);
     }    
   }
   if (nDevices == 0)
     Serial.println("No I2C devices found\n");
   else
     Serial.println("done\n");

   delay(5000);           // wait 5 seconds for next scan
}

And as I said in my last post my OZ890 does indeed have it's i2c slave address set to "0x30".

I am now just working on reading the data from the OZ890, so I can view real time data of each cell voltage, current etc.

I have also uploaded a copy of the OZ890 Datasheet to my website: http://www.mad-professor.co.uk/Datasheets/O2Micro/OZ890.pdf

Best Regards.
 
This is really interesting, I started some development on the BMSBattery BMS last year using a TI USB to I2C adapter that I had from a previous project.

Perhaps you could get a bluetooth device for your Arduino and implement a simple serial protocol that relays the i2C messages?
This way the BMS could be controlled both from a PC and from a phone/tablet app using BT.

My idea is to implement a simple GUI pased PC app for configuring and monitoring the BMS. The next stage would be to make a simple Android app to monitor the battery pack status, just like a fuel gauge showing individual cells or pack total.
 
Mad Professor said:
And it seems that the OZ890 chip I am working with has it's I2C address set to 0x30.
The CowBoy software v0.75 I found, Lists the device address 0x60 to 0x7E.
The address is over 7 bits, the 8th (LSB) is the read/write bit. So if the real address is 0x30, the byte 0x60 or 0x61 is sent
 
Hi gents. I've got one of these BMS cards along with an Aardvark interface & OZ890 debug tool software http://www.bmsbattery.com/smart/135-smart-bms-usb-i2c-adapter-programmer-reader-writer-monitor.html I have some issues;
1) Can't read the onboard eprom, I2C bus sits at 2.5v & their is data on it but zero success getting anything on the PC screen
2) Something odd about BMS power consumption, sits at less than 1mA till Vcc gets above 18v then current spikes appear, by the time I crank it up to 48v pack voltage its drawing 5mA continuous
 
there is a zener on the power rail i suspect that is there to limit the voltage on the mosfet gate. the power for most BMSs comes off of the first 4 cells which is usually around 15V.
 
Hey thanks for that. I powered it up from Vcc 12v & also connected B4 to 12v so that it can wake up properly & I can read the EEPROM. But it draws 20mA continuous now, surely I can't leave it connected permanently across a pack with that sort of stdby current?
 

It says it's drawing 191 mA but my multimeter says 20mA. Whatever the current is the chip is way too hot. This product strikes me as way too tempremental for robust battery management.
 
This thread is pages of this kinda thing http://endless-sphere.com/forums/viewtopic.php?f=14&t=20971&hilit=oz890&start=50

I can't find that lead and software for more than $100 yet everyone says at least double that. BMSbattery both supply and use them. Buy from them, then fly over to get some sense out of them.

Perhaps this is the lead someone on this thread has? Sounding no less troublesome than any other so called solution. Or it could be time to stop messing around if all you want is for it to work.
 
i wish someone would use this BMS and see if they can get the info displayed that this processor keeps track of. i noticed that it actually keeps track of the internal drain down of each of the cells i think. maybe it monitors the total time the shunt transistor is on and makes a determination of the coulombs it puts into each cell. i think an arduino hack would read it.

http://bestekpower.com/fuelgasgauge/BMS-D141.html
 
good to know. I'll get the I2C programmer form BMSbattery next week. Let's see if this may help us to get further here :?

A friend has problems with his OZ890 atm, does not conduct both charger and discharger. Cells seem to be ok... maybe we just connected balancer wires and power wire in the wrong order and now the chip blew :x
 
It says it's drawing 191 mA but my multimeter says 20mA. Whatever the current is the chip is way too hot. This product strikes me as way too tempremental for robust battery management.

the current readings may not be so accurate... anyway it shuts down if one cell reaches a dangerous discharge condition, that is my primary aim.

- It should also be possible to read the charge state very accurately via I2C and display it on a bicycle computer.

- Also, the bicycle computer needs no more shunt like the CA or the speedict, since it can read the amps flowing through the battery
 
for using these BMS at higher currents, it would be possible to bypass the discharge FET by a high current relay :? I'd like to use my BMS at 100amps, but the three IRFB4410 would burn I guess.

When connecting two BMS in series, it should be possible to even switch a relaiy on the top side by the upper lever voltage BMS and the ground side by the lower one. One would have to insert a shunt for the current readings, at least for the lower side BMS :? I wonder how dr Bass did that.

But there is one problem: The upper BMS can still not shut down the relay, since the Fet is connected in the wrong direction. The B- lead and the positive pole of the relay coil have to be swapped

Or: Unsolder the N-channel fet and replace it by a P-channel one :D
 

Attachments

  • smartBMS-S5-13_sm.jpg
    smartBMS-S5-13_sm.jpg
    24.6 KB · Views: 14,275
Ok so just to clarify your request:

-you want use two battery in serie with each having their own seperate BMS
-You want ensure that the current detection limit of one or the other can work without having problem with the other bms in serie that could try to do the same job and create problem
- You want to use an external relay/contactor to boost the current of your BMS but want to use only one contactor for both bms at a time

From what i see why not just put some diode in parallel with the output of each BMS to protect them from reverse current and to insyall smaller very low current relay with the coil connected on the output of each BMS, and than to have the N-O contact of each of these two small relay connected in serie ( doing the job of an AND gate) and that these two relay contact in serie would control your Main high current contactor coil :wink:
In that way you need both bms output to be active to allow the contactor to be energized. :wink:

Doc
 
why not just buy a 24S BMS instead of using two of them in series to make one BMS. you can get up to 180A throught the output mosfets on the D131:

http://www.bestekpower.com/768v24spcmbmspcbforlifepo4batterypack/PCM-D131.html

and it is cheaper than the BMS battery BMSs. $58
 
dnmun said:
why not just buy a 24S BMS instead of using two of them in series to make one BMS. you can get up to 180A throught the output mosfets on the D131:

http://www.bestekpower.com/768v24spcmbmspcbforlifepo4batterypack/PCM-D131.html

and it is cheaper than the BMS battery BMSs. $58
Because you are pointing to a very crappy BMS. Actually not a BMS, but PCM.
 
everyone has their own opinion especially when their financial interests are involved. i have examined it fairly closely and don't see the defects in quality you are referring to. just compact and cheap. and well built imo.
 
thx for your answers! docs idea is brilliant :) i can then just move the FETs to an own PCB and connect the FET source and drain solder pads to a shunt for better current readings, then recalibrate the BMS for the new shunt.

Another idea was to change the FETs for three IRFB4110, then it's capable of 85amps I want :) I would not need any reverse diode then i guess :?

For testing, I can just connect two of these in series?

about the other BMS:
The smartBMS has I2C and can be used for Lipo. I dislike LiFePo ;)
 
crossbreak said:
A friend has problems with his OZ890 atm, does not conduct both charger and discharger. Cells seem to be ok... maybe we just connected balancer wires and power wire in the wrong order and now the chip blew :x

My bmsbattery smart 5-13s unit came set up for 12s, and would not charge or discharge. It was not converted properly. They had done the capacitor mod, but not tied the 12th cell to P+ So it just sat there doing nothing. After putting the bridging link between B12 and B13 I had to reset the chip and away it went. Perhaps yours is similar.



Does anyone offer programming of these chip's in the EU? In the UK would be nice. I don't think they set my software as requested. I can't charge my lipo anywhere near the 4.2v hvc I specified.
 
Back
Top