RoadTest: TI Fuel Tank BoosterPack & MSP430F5529 Launchpad
Author: peteroakes
Creation date:
Evaluation Type: Independent Products
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: For the TI Launch pads there are no comparable boards supporting battery power for use away from power adapters without building a custom one
What were the biggest problems encountered?: For Part one of the review (Excluding the un-boxing), the problem has been documentation being inaccurate or misleading, In part one I reviewed the documentation quite thoroughly to evaluate its accuracy and level of detail. It is important with an evaluation board and supporting material that there is sufficient material to help the developer of the hardware or software to complete a design or evaluation quickly and with least risk. As such one must be able to have confidence in the board and documentation, there is room for improvement. In part two I will be performance testing the Fuel Tank Booster to determine how long you could run without re-charging and what kind of loads can be supported. The documentation is currently not to forthcoming with these details. My hope is that coupled with reviews from myself and other reviewers we can close this gap. Even without docking the board with a launchpad, I have identified a few areas of concern that can be fed back into the documentation to improve it and also alert other developers as to the few limitation that one must be aware of when using the board.
Detailed Review:
This is my first ever product review with Element 14 and my first ever video review too so I have a lot to learn about presentation and producing videos and writing reviews. Constructive criticism about my techniques are more than welcome but try to remember it is about reviewing the product and also sharing findings on how they work and what to expect when you too with have the chance to use one. If the review helps you learn something and avoids a few issues along the way then it has done its job. helping to improve the product and support is a nice bonus. It would also be remiss of me not to point out words of caution, errors and omissions along the way. i am not one to say something is great just to gain favor, it will bite me in the long run. so here goes, I hope you enjoy and find it useful
My Ratings are not final as I have not completed my review, the scores are based on initial finding with certain areas being middle of the road until I complete the evaluation, so please don't read too much into them until the review is complete
This review is going to be separated into many parts,
Summary findings and recommendations - Fuel Tank
Un-Boxing
Part 1:- Document and Board overview
Part 2:- Demo Program for Energia (Not everyone know or uses CCS)
Part 3:- Reducing the quiescent current to last weeks instead of days
Part 4:- The MSP430F5529
Summary review of the Fuel Tank booster pack
Product Performed to expectations: Well no not really at least not my initial expectations from the initial advertising etc. It is a booster pack designed to provide power to launch pads of which many are ultra-low power. So it was assumed (My Bad) it would be the load that would be the factor governing how long it would take to discharge the battery, whereas in its current design, it is the booster pack itself that will be flat in no more than four or five days from its own internal power requirements.
With very little modification to the board (actual Jumpers on R17 and R19 or connect to GPIO pins) this can easily be resolved and allow the run time to be extended to maybe over 100 Days (That was my expectation) and even be able to shut down one of the regulators (5V) in situations where it is not required.
The Gas Gauge has a resolution of 1mA or 1mV, its range is up to 16 or 32Amps so it can be monitoring quite large batteries if needed. With an ultra-low power launch pad it cannot give an accurate reading as the device current draw is down in the noise range, only fractions of a percent inaccurate based on full scale but way off at the low end, in my tests it was showing 4mA but my 4.5 Digit meter was reading only about 300uA. As a consequence it will not give an accurate run time indication but you can be sure it will be more than it says. If the booster pack is loaded up with devices of course then all that changes, if you have sensors, LEDs, LCD Displays etc. connected, much more power will be drawn and the readings are much more accurate.
Either way it is more than enough for a trip to the library to do some work, work for a couple hours on a Quad copter or other autonomous vehicle taking sensor reading or other similar activity
Specifications were sufficient to design with: There were no specifications to speak of provided with the unit except for the capacity of the battery, but links to some of the chips data sheets where provided, the rest I had to discover from schematics then get the datasheets from TI. It would have been nice to have the basic design specifications included like Charge Current, Max design load current for each supply. The fact it has 5V and 3v3 available etc., the ability to connect an actual Solar panel if you so desire (Charger chip can handle it after all).
The provision of a full schematics was nice even if there were numerous errors or confusion elsewhere in the documentation, the schematic was accurate and clear. Overall the documentation was a little disappointing. There were many areas that where confusing and that could cause in-experience users to damage components or at least waste time in figuring out why things don’t work. Much of this is detailed in the fuller review below.
Demo Software was of good quality: well it seems to be, well commented and well organized, shame I could not get the fuel tank demos to successfully run. They were all in CCS which I am not used to but I do understand the code and reading through it, it seems to be pretty good. Good enough for me to port it to Energia.
Demo was easy to use: While I did have some luck with none fuel tank related demos for the MSP430F5529, I could not get the TiviaC Fuel tank demo to compile or the MSP430G2 Demo to output correctly on the console (All gibberish, and I did try all common baud rates. I am not well versed with CCS so could be my fault but I’m not the only one pointing out this flaw) therefor I wrote my own using Energia. If the creators of the fuel tank read this, please provide demos in Energia, You will attract a much wider range of users even Arduino users looking at alternatives and yes I did have the Fuel tank hooked up to an UNO as well without a single line of code change, worked great. As the CCS and IAR software development tools are constrained unless you fork out a substantial amount of money (From a hobbyist perspective) new users and educators will want to stick with Energia, this is one of the reasons Arduinos are so popular. TI please take the hint and get on board with the hobbyist, they are your future business customers and will thank you for it. Even with fun projects at home, I still struggle to fit code into a 32K atmega328, never mind constrained to 16K when the chip has 128K??
Support materials were available: Yes, It was easy to find all the support material I needed from the TI web site, I have always liked how easy it is to get to application notes and Data sheets from TI and Element 14, Bravo on that one. Without this I would have been prodding in the dark as to the performance characteristics of the buck/boost regulators etc.
The price to performance ratio was good: Well this is an easy answer, most defiantly a good price / performance.
Recommendations:- The product itself is a great addition to the booster packs and with a little effort in redesign, better demo code (Energia) and updating of documentation it could have received a much higher mark from me. If your good with soldering on SMD based boards and can work around the documentation issues, much of the deficiencies can be overcome easily
Detailed Review:-
The Un-Boxing
It seems the first thing is always the "Un Boxing so here is mine", I am not counting this as part of the review but putting it here for completeness.
So with the official un-boxing out of the way, lets begin with Part 1, an overview of the documentation and the Fuel Tank board itself, this will not be powered up or plugged in yet, that will come in part two. The intention here is to understand what is on the board, how it works and if the documentation aligns with the board and how to use it.. As you will see there are a few errors that need to be addressed.
I am highlighting them in order to avoid issues for newcomers to micro-controllers or people who can not fully understand schematics and may be early in their education with this technology, If you are a skilled with electronics then you will probably pickup on the errors yourself but anyone not realizing may get caught unaware and could cause damage to there launchpads or added devices. there are also a few design choices that may lead to issues if the board is used under any significant load
Document and Board overview
I noticed in the video that some of the diagrams where not too readable so to help with that all the documents and additional diagrams I produced are available below at full resolution
the following links are for the components on the board and the products themselves
Fuel tank user guide: http://www.ti.com/lit/ug/slvua32/slvua32.pdf
Buck/Boost regulators http://www.ti.com/lit/ds/symlink/tps63001.pdf
Gas Gauge http://www.ti.com/lit/ds/symlink/bq27510-g2.pdf
LIPO Charger http://www.ti.com/lit/ds/symlink/bq24210.pdf
Schottky Diode http://en.wikipedia.org/wiki/Schottky_diode
In order to be better understood by a larger audience I created a simpler block diagram of the Fuel Tank booster pack, second diagram highlighting a potential issue described int he video
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>
the User guide for the board has a few errors that hopefully the following view will resolve, I mention it in the video but this will provide a much clearer view and will hopefully help prevent users from plugging in components to the wrong pins, I have shown both the Fuel Tank Booster and the MSP-EXP430F5529LP eval board both marked with he same connections
what is immediately obvious from the pictures is that the Battery Booster board must mount upside down on the launch pad or be connected to the underside of it where possible. the Booster does have pins and sockets so supports stacking with other booster boards.
While I was reviewing the circuit diagram, I noticed that there where diodes between the output of the regulators and the pins feeding the attached launchpad or additional booster board. this lead me to test the effect of these diodes under load and it was discovered that if sufficient load was drawn through the Fuel Tank booster pack, there would be enough voltage drop across the diodes to potentially cause instability with some attached components. With a load of 500mA (10ohm resistor) on the 5V output or 330mA on the 3.3V rail, there was as much as 300mV dropped across the diodes. this could defiantly cause issues and instability in certain scenarios. In the load testing video to come, i will test the drop with various launch pads to see the affect (If any). The MSP430F5529 is capable of working down to 1.8V so it should be ok but the same may not be true for USB, external ADCs or other devices.
Part 2, Demo Energia Program.
So I down loaded the demo programs for the Fuel tank that uses CCS. Unfortunately I have yet been able to get one to compile or the other to output readable text to the console. As I am not too familiar with CCS, I decided the easiest thing would be to grab demos using the Energia IDE. Unfortunately I was unable to find any for the fuel tank... Time to write my own
Why I chose to roll my own with Energia
Reading through the CCS Code, porting to the Energia IDE using the Energia libraries for Wire (I2C), i got the basic framework up and running, now comes my next issue, if i try to read more than one parameter at a time in the code it would output invalid data (Readable but invalid), if i only asked for one parameter like cell volts then it worked 100% see this for details:- Fuel Tank BoosterPack With Rechargeable LION Battery and CCS or Energia - I2C issues
Initially thinking maybe it was the I2C library, I ported over to an Arduino micro, hooked up to the Fuel tank and WAM... same results, obviously not the I2C library
On carefully reviewing the CCS code I found a comment in one of the demos referring to the fact you need to ignore the first read as it will be unstable...
This is the reference in the CCS code to the instability of the reading from the fuel gauge:
// //First reading of numerical instability,discard // LM4F120_bq27510_read(bq27510CMD_TEMP_LSB, 2); temperature = (transBytes2Int(Rxdata[1], Rxdata[0]))/10 - 273; while(1) { valid_data = 1; // //Read temperature again(units = 0.1K) // if(!LM4F120_bq27510_read(bq27510CMD_TEMP_LSB, 2)) { // //convert K to ¡æ // temperature = (transBytes2Int(Rxdata[1], Rxdata[0]))/10 - 273; } else {.......
more experimentation, it appeared this applies to any parameter, if you only ask for one your ok, more than one you have to ask twice. and no mention in the data sheets
I applied this to my demo code and now it all works great (With the little work around to get the parameter to output the right values.)
So here is the code for your reference, please use as you want. It has been proven to work on Tivia C, MSP430G, MSP430F and Arduino Uno (ATMEGA 328) using the Energia IDE to compile and upload to the device (Arduino IDE of course for the 328)
it is also added as an attachment for convenience
#include <stdio.h> #include <Wire.h> #define bq27510CMD_CNTL_LSB 0x00 #define bq27510CMD_CNTL_MSB 0x01 #define bq27510CMD_AR_LSB 0x02 #define bq27510CMD_AR_MSB 0x03 #define bq27510CMD_ARTTE_LSB 0x04 #define bq27510CMD_ARTTE_MSB 0x05 #define bq27510CMD_TEMP_LSB 0x06 #define bq27510CMD_TEMP_MSB 0x07 #define bq27510CMD_VOLT_LSB 0x08 #define bq27510CMD_VOLT_MSB 0x09 #define bq27510CMD_FLAGS_LSB 0x0A #define bq27510CMD_FLAGS_MSB 0x0B #define bq27510CMD_NAC_LSB 0x0C #define bq27510CMD_NAC_MSB 0x0D #define bq27510CMD_FAC_LSB 0x0E #define bq27510CMD_FAC_MSB 0x0F #define bq27510CMD_RM_LSB 0x10 #define bq27510CMD_RM_MSB 0x11 #define bq27510CMD_FCC_LSB 0x12 #define bq27510CMD_FCC_MSB 0x13 #define bq27510CMD_AI_LSB 0x14 #define bq27510CMD_AI_MSB 0x15 #define bq27510CMD_TTE_LSB 0x16 #define bq27510CMD_TTE_MSB 0x17 #define bq27510CMD_TTF_LSB 0x18 #define bq27510CMD_TTF_MSB 0x19 #define bq27510CMD_SI_LSB 0x18 #define bq27510CMD_SI_MSB 0x19 #define bq27510CMD_STTE_LSB 0x1A #define bq27510CMD_STTE_MSB 0x1B #define bq27510CMD_SOH_LSB 0x1C #define bq27510CMD_SOH_MSB 0x1D #define bq27510CMD_CC_LSB 0x1E #define bq27510CMD_CC_MSB 0x1F #define bq27510CMD_SOC_LSB 0x20 #define bq27510CMD_SOC_MSB 0x21 #define bq27510CMD_INSC_LSB 0x22 #define bq27510CMD_INSC_MSB 0x23 #define bq27510CMD_ITLT_LSB 0x28 #define bq27510CMD_ITLT_MSB 0x29 #define bq27510CMD_RS_LSB 0x2A #define bq27510CMD_RS_MSB 0x2B #define bq27510CMD_OPC_LSB 0x2C #define bq27510CMD_OPC_MSB 0x2D #define bq27510CMD_DCAP_LSB 0x2E #define bq27510CMD_DCAP_MSB 0x2F #define bq27510_ADR 0x55 void setup() { Wire.begin(); // join i2c bus (address optional for master) Serial.begin(9600); // start serial for output } int Volts = 0; int Amps = 0; int Temp = 0; int SOC = 0; int DCAP = 0; int RCAP = 0; unsigned int TTE = 0; unsigned int TTF = 0; void loop() { Temp = getValue(bq27510_ADR, bq27510CMD_TEMP_LSB )/ 10 - 273; Volts = getValue(bq27510_ADR, bq27510CMD_VOLT_LSB ); Amps = getValue(bq27510_ADR, bq27510CMD_AI_LSB); SOC = getValue(bq27510_ADR, bq27510CMD_SOC_LSB); DCAP = getValue(bq27510_ADR, bq27510CMD_DCAP_LSB); RCAP = getValue(bq27510_ADR, bq27510CMD_RM_LSB); TTE = getValue(bq27510_ADR, bq27510CMD_TTE_LSB); TTF = getValue(bq27510_ADR, bq27510CMD_TTF_LSB); char output[80]; sprintf(output, "Temp= %2d, V=%u , mA=%4d , SOC=%2d, RCAP=%d, DCAP=%d, TTE=%u, TTF=%u\n", Temp ,Volts ,Amps ,SOC, RCAP, DCAP, TTE, TTF); Serial.print(output); delay(2000); } int getValue(int port, int cmd) { int tmp1=0; int tmp2 = 0; int response = 0; Wire.beginTransmission(port); Wire.write(byte(cmd)); Wire.endTransmission(true); // according to all the demos, first reading is unstable so ignore it ?? // Seems yo have to do this twice to get it to work, if you dont is gets screwed up Wire.beginTransmission(port); Wire.write(byte(cmd)); // request 2 bytes from slave device port response = Wire.requestFrom(port, 2); Wire.endTransmission(true); while(Wire.available()) // slave may send less than requested { tmp1 = Wire.read() ; tmp2 = Wire.read() ; } return transBytes2Int(tmp2, tmp1); } /** * @brief Translate two bytes into an integer * @param * @retval The calculation results */ unsigned int transBytes2Int(unsigned char msb, unsigned char lsb) { unsigned int tmp; tmp = ((msb << 8) & 0xFF00); return ((unsigned int)(tmp + lsb) & 0x0000FFFF); }
This is an example of the output including a period where I disconnected the battery (Loads of 0 values). All of the values where verified correct using my DVM and Temp Probe, some values where a little out but withing a few % in most cases. This can all be calibrated to be more accurate if the user wants to. The fuel Gauge supports a full set of adjustment values for this purpose.
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>
I will request some help with TI on this but for now I am able to continue
Notice the 300mA load, there is nothing connected, the 5V buck regulator has decided to be my load, so I am in the process of replacing the 3mm*3mm Chip in order to fix the board, if your interested you can see the repair being done here (2 parts, removal and validation, then replacement when the chip arrives) http://www.element14.com/community/videos/11461/l/reparing-a-suicidal-boost-regulator-on-the-fuel-tank-ti-booster-pack-pt1--removal
Part three:- Reducing the quiescent current
Having removed my suicidal boost regulator I am now able to tryout reducing the current being drawn from the battery even when there is no connected load, without finding a fix for this the board will never be able to last more than four to five days without being re-charged and that's with no external load
the following video shows the results of taking the PS/SYNC pin of the buck/Boost regulators to 0 causing the regulator to run in power save mode. this does come at a cost of increased ripple but as I discovered it also reduces the load enough to get weeks of run time. Note in the video I quote 100 Days but there is only one regulator in circuit for the test as I removed one due to a problem and it is not yet replaced. This would effectively double the quiescent load and probably reducing the no load time to about 50 days which is still pretty good.
In case your wondering, none of the MSP430 or Tivia C chips required 5V so not having this chip in place has no affect on the running of these launch pads. The same could not be guaranteed for he array of Booster packs out there.
Changes Overview (Circuit References to PS/SYNC)
And the results where we see that grounding the PS/SYNC pin indeed improves the quiescent current to the point where the board will last weeks rather than days assuming a minimal load from the connected launchpads and booster pack stack (It will no longer self discharge in 4 or 5 days.
Top Comments
If I recall correctly with trying to use the CC3200 and TivaC boards with the Sharp LCD displays, there may be issues with the I2C not working as expected, this would account for your results
I have not…