I want to do a short video about some batteries we're working on. You might recall that we did a prototype for a Canadian company. It's an aviation firefighting battery, and we're going to start calling it the hardened aviation battery.
It's one Tesla Model S module in a box. But we want the box to be quite hardened, resistant to weather, water, foam, heat, vibration, and fire and smoke. So that's a little bit of an issue.
And it really needs to be one of the reasons we're building it for them and trying the Tesla battery module. Because it needs to put out 750 amps for 30 seconds to blow foam. And so we worked on a set for them, sent it to them, they liked it.
But they had told me that it was going to directly drive 32 motors as an inductive load. And so we didn't put a battery pre-charge in it. That apparently may have been bad advice.
Maybe they're not willing to reveal some of their secret sauce. But now they've decided they want pre-charge and two batteries. And so that's what we're building.
Let's take a look at the diagram here for a minute. We have added a 25-ohm, 50-watt pre-charged resistor across the terminals of our GigaVac GX16 BAB contactor. We use that contactor.
It's rated for 600 amps. It can do about 1,500 briefly, and 1,800 volts. And we're just going to do that on the positive terminal.
And we're also going to add a Mersen fuse to that line. But we need to be able to pre-charge, so we've added this resistor and this relay. The relay we're using is a Tyco Kilovac high-voltage 12-volt coil relay.
It's a little bit of overkill for this application, but overkill is always appropriate. We're going to connect that to a switch ground on pin 18. This is our Tesla BMS controller.
It's just an EVTV Due with a shield on it that lets us have four switch grounds, some inputs, all of them isolated, and talk to the battery, of course. And we've got that wired up with one, two, three, four, five wires to a Molex plug that connects to the BMS board on the Tesla battery. And so we can turn this pre-charge on and pre-charge at 25 ohms, and 25 volts fully charged would be about an amp.
Even large capacitors, the reason for this pre-charge, and it comes up over and over and over, is so many devices have large input capacitors. Now, as I said, I thought this was large inductors. Inductors resist a change in current.
And so there's no problem firing in an inductive load, but a capacitive load resists a change in voltage. And it can take kind of infinite current for a very brief time, and then as the voltage in the capacitor comes up, it begins to resist that current. The problem is the first 10 nanoseconds, we can see a huge 10,000 amp voltage spike, which welds our contactors and occasionally blows up their capacitors.
And so we have a necessity to pre-charge, but the capacitors, even very large capacitors, at an amp, even it's not very long, until they've risen enough in voltage that that initial surge doesn't happen. And so an amp for 5 or 6 seconds is more than adequate to charge even fairly large capacitors. We can configure that current period to be as long as they want.
And so that's kind of that. We, just to go over this a little bit, we have a DC to DC converter. It takes 18 to 72 volts in and puts out 12 volts, and that's what we use to run everything in this module, including our controller and our shield, but also light LEDs and power our EMS board, serial link, and so forth.
So when we switch that switch, we're simply connecting the input to the Tesla battery module at 18 to 25 volts, and that gives us our 12 volts. We put a 12 volts on the ramp in the switch and run the ground to pin 19 of our shield, and that's a switch ground output, and so we can use that to flash the light, energize the light, flash the light. When we close the contactor with an enable signal, another switch ground, we then read the aux contacts, which are wired for 12 volts.
If that contactor indeed closes, we'll get a confirmation, 12 volts in, an isolated digital input on pin 8 of the shield. And that tells us that the contactor is closed. More importantly, if we open the contactor, it will also tell us that it opened and it's not welded.
That's the purpose of that. And so we can control this lamp in the switch, and what we use that for is when we're doing pre-charge, we'll flash the lamp, and when we actually close the contactor, we'll put it on steady. And we'll maintain that as a steady light down to 30% state of charge.
From there on down, the lamp starts flashing, oh, once per second, on and off, and that rate will increase as the state of charge decreases, where it's very rapid, it's almost like a dim light at 0%. And so it's a variable flash rate that will give you some indication. If it's flashing, you're below 30%, and how fast you're flashing is kind of a visual.
Without doing very much of these things in a pod under a helicopter, you should be able to see that light on the ground and be able to tell if you're below 30%, and pretty much how much below 30%. We've got a CAN output. We've got a charge and angle output.
What you can is 12 volts and switch ground. Now, if you measure that, you're always going to read 12 volts, but the ground isn't enough. You have a little leakage through that MOSFET, but it isn't enough to drive anything, even an LED.
But when we switch that ground, then it can. And normally you would use that to switch some sort of a contact or a relay to control your charging, perhaps from solar panels or whatever. In this particular case, we use our CAN output and have code in here to use a TCCH charger.
We use a little 1.8 kilowatt TCCH charger. That's the highest current we can get at these very low voltages, and it'll do about 23 amps. You can, of course, parallel them for about 45 amps to charge this battery, which, of course, has 233 amp hours in it, a little over 5 kilowatts.
So that's our schematic diagram. Let's take a look inside these two boxes, and I'll show you a little bit about how we've got it wired up. Here's one of our boxes we currently have in work, and we'll look inside a little bit.
Here you can see our shield and board on top of a plastic thing. And this is a cable that plugs into our charge-enabled port. And here we have a nice mil-spec type 2-pin.
Here you can see the front panel. This is our CAN port. It's an RJ-11.
We use pins 4 and 5 for CAN and 1 and 8 for power, 1 being power, 8 being ground, 4 is CAN high, and 5 is CAN low. Here's our hammer, slap switch, and our USB port. This is a Reblin aircraft connector for power.
We're quite capable of handling the current voltage we want to use. Inside here is a Gigavac GX-16 ABA. It has a coil, but it also has aux contacts that we run back to our controller for reporting the state of the contactor.
Over here in the corner, you'll see our 50-watt, 25-ohm resistor. It'll let us pre-charge at about an amp, and here's a Tyco Kilovac kind of high-voltage type of relay. We control that relay with one of our outputs from the board.
This is a Cutler hammer switch. Of course, we connect our DC-to-DC converter through that, and we have a lamp circuit where we can flash it. This is a little bar for our 12 volts.
We run the output of our 12-volt DC-to-DC converter down in the corner to that and get 12 volts to operate everything else. The module is strapped in with some ultra-high molecular weight PVC and aluminum strap and some bolts, so it'll be very secured in flight. You can see our negative contact connected to the Rebly, and our positive is, too.
Both by copper bars. We'll have another copper bar here going up to our fuse. That's what we're putting together right now.
This one is nearly enough complete. In fact, it's charging at the moment. You can see our screen here with the EVIC display shows 24.7 volts, about 87 percent, and we're charging currently at about 4.13 volts per thing.
It's 89.6 degrees out, and we're hooked up. There's our charger, and it's hooked up here to our Rebly. Inside, we're pretty much complete here.
We've got our board, our limb cab, current sensor, our fuse. You get a shot of the contactor, the pre-charged resistor and fuse. And all that.
That's the inside of a more or less completed one. Of course, we have one connection to the BMS board on the Tesla module to read the voltages and temperatures, and we get the current from this limb cab. The current sensor is very precise.
It'll do up to 500 amps quite accurately. It'll do above that, but it's very linear, up to 500. And it reports it to our board over CAN bus, and we're connected here on the CAN bus.
Our BMS shield CAN bus is what we bring out to the front panel. And so that's our device. We've got these hinges on the side, butterfly hinges, to connect the cover.
And it's got truck bed liner all over it. Aluminum case, and it's quite hardy. For some exposed-to-the-air type aviation work, it has to be pretty tough.
We've got these seals here for the cover. And it should be pretty, well, weather-tight and water-tight and foam-tight and all that. And so that's what's inside.
We can connect to this through an exposed USB port right here and right here with a regular USB cable. And we have an ASCII text, a very simple, old-school ASCII text output that we can view with any terminal program. Now, the terminal program needs to be set for 115,200 BPS, eight data bits, no parity, and one stop depth.
This is so old-school, a lot of people are having trouble configuring it, particularly with Windows. And it helps if your terminal program will acknowledge a form feed, the display will feed normally. And so this is how we can access the software to make configuration changes.
Let's have a look at that. Here we are with our aviation battery module, which we're doing a single module in a hardened case. This is the software available through the USB port currently.
And we're viewing it with a terminal program on a Macintosh called Cool Term. And we can see I've been up 34 minutes and 29 seconds. This is a summary align, it gives me my voltage for the entire module.
Terminal 1 temperature, terminal 2 temperature, our status is no faults reported, our average cell voltage is 3.89. Our average temperature of those two terminals is 28.66, and our current state of charge is 63.66%. Here is the readings we get from the BMS board on the module. Cell 1, cell 2, cell 3, cell 4, cell 5, and cell 6. Each cell is 74 18650 battery cell cylinders, but they're all in parallel. And you can see we get a pretty fine report of voltage on each of those.
Our current comes from the Lim-Cab current sensor, which now we can update every 100 milliseconds instead of every 10 milliseconds. It really takes quite a load off of our processor with the new C500 SP3 version of that. Our power is calculated from our voltage and our current.
Our ampere hours are actually counted from that current sensor, and so our watt hours can be calculated as well. Since we brought it up, this version, our max system discharge current is 0.47 amps. Our max system charge current is 22.42 amps.
We're currently charging at 22.24. The max pack voltage is 23.31 in this session, and the minimum pack voltage has been 22.81 when we first brought it up. Right now, here's our high and low cells. We have configured the battery for 240 amp hours, and that pretty much determines the configured battery capacity, and our amp hours is how we calculate the state of charge.
The amp hours, as I say, are accumulated by the Lim-Cab 300. In our configured battery capacity, we simply enter. We've got some EPROM data where we retain the charging and discharging lifetime, but I had reset that, so we've put 3.32 kilowatt hours in so far to get to this 64%, and we haven't discharged any.
Our pre-charge relay is off, and our contactor is on. One of the things they wanted us to add is pre-charge. They originally told me this battery would feed directly 32 DC fans or motors.
I came to find out they're actually driven by an inverter, have a huge input capacitor, so they wanted me to add a pre-charge function to it, which we did with a 25-ohm resistor and kind of a high lifetime relay. Temperature alarms, we haven't had any. Voltage alarms, we haven't had any, and we have charge enable on right now.
This line only appears when we're charging. It says AC charger reports charging at 23.10 amps and 23.7 volts DC, charging to 25 volts DC. This is a TCCH charger, which we control by our CAN port coming out of the module.
So our target voltage, well, it's currently reporting that it's charging at 23.10 amps. Now, we're measuring that at 22.25, and I've checked our limb cab measurement with some Fluke equipment, and I like our version better, but this is what the charger thinks it's doing in its reporting over CAN. It also reports that it's currently measuring the battery voltage at 23.7, and I understand that it's correcting for the current through the cables it's connected to.
It's very difficult to measure voltage on the same line that you're charging on, and again, we like our voltage at 23.33325 here a little better. The 25.08 volts DC, we're commanding the charger to charge to that, and that's based on our cutoff voltage that we have configured for charging. Let's go to the configuration screen.
Here's some single line commands. We can toggle the contactor on and off. We can toggle charge enable on and off.
We can clear faults. We can erase our login EEPROM, and a capital L will print our log to screen in long form. A lowercase l prints log to screen comma separated for import to your Microsoft Excel, for example.
Z resets the state of charge values to 100%. It's currently at 64.47. We can set our CAN0 speed, which is what we use to connect to the LIMCAB, or CAN1 speed, in this case 250 kbps, for our external CAN that connects to the charger and the AVIC display. Again, our capacity.
This is an arbitrary value we enter after measuring the battery capacity, and it's an arbitrary value. You can set it to anything. Amperes is currently minus 8528.
That's, again, calculated by the LIMCAB. It's kind of a running calculation, and we can enter anything we want to in here. Whatever we enter will appear as negative, and we count our amp hours discharging as negative and charging as a reduction of our negative value.
So amp hours out are negative or discharged, and amp hours in are positive. Our pre-charge we have set to 6.5 seconds, and they can configure that to about anything. Our high voltage determines where we shut down the system.
If any cell, the highest cell in the pack, reaches 4.2, we will simply shut down and disconnect the module, and you'll have to come take a look at it using this USB screen to determine what's the matter. But you've somehow overcharged the battery, and this is to prevent overcharging the battery if you reach 4.20. That would probably be something we normally could set to 4.25 or so if you wanted to charge the full 4.2, but we've got it set for 4.2 now. Low voltage is your low cell voltage limit for contactor cutoff, and again, we would simply disconnect the main contactor, and the module would no longer operate if any cell falls below 3 volts.
Variance, this is pretty generous. It's a quarter of a volt. I would normally set that to 0.2 volts or even 0.15. If we measure a difference between cell voltage use and from the high to the low, actually, it's not from the high to the low.
It's from the high or low to the average of the six cells. This will cause the system to shut down. High temp will cut off the contactors if we exceed 45 degrees C on any of our temperature sensors, which we have two.
Low temp, if we fall below 5, we would also disconnect the battery. 0 is really the point that you don't want to go below for charging, really. Cutoff and resume are about charging.
Cutoff, we're going to charge to 4.18 volts, and at that point, we would set charge enable off if any cell reaches 4.18 volts. Now, if we've charged it, and now we're discharging it, we wouldn't turn charge enable on again until we hit resume. I've got this set to 3. That's so I can toggle it on and off and do some testing.
Normally, you would set this to something like 3.8 or 3.9. This is to prevent hysteresis when you're charging. You reach this cutoff. You'd cut off the... Now, this does not open the contactors.
This opens your charge enable output, a 12-volt switch ground. We would cut that off at 4.18. 4.18, well, as soon as we quit charging, that voltage will fall back a few hundreds. And so we don't want to get to that and then cut it off.
And then when it gets below that, turn it back on. It would sit there and cycle. So we cut it off here, and when it falls to this value, we would resume.
And I normally set that to 3.9 volts or something. So we're fully charged, and then we discharge for a while until we get to 3.9, and then we turn the charge enable output back on. Normally, this is going to charge from solar panels.
And so you don't want to shut off the solar panels until your battery is empty. You just want to shut it off until we're no longer overcharging the cells. And so when it reaches 3.9 or even 4 volts, but 3.8 to 4 volts, I would have it resume.
And again, we're available for charging. Now, if we're enabling a contactor to solar panels, that simply cuts them back in, and they're helping to provide power to the thing. But we're not overcharging the batteries.
Sensitivity is kind of a funny thing. The software, the BMS board on the module, it's possible we can get an anomalous reading. We read a lot, and it's possible to get an anomalous one.
That really doesn't indicate anything. It's reading a high voltage or temperature excursion that doesn't exist. It's just a data error.
And that happens particularly when we first bring up the system. And so sensitivity means we have to have 100 of those errors, indications that we're over voltage or under temperature or over temperature, under voltage, before we'll actually trigger the contactors. Now, this is not as generous as you might imagine.
If we measure the voltages above 4.2 volts once and continue to operate, we're going to measure that again. It's not going to quit, and we do that about 10 times a second or more, 50 times a second. So within one or two seconds, we'll accrue enough of these failure alarms to trigger it with a sensitivity of 100.
The sensitivity can be set from 0 to 255. It's just an 8-bit integer. But it gives you a false alarm pad.
You don't want to shut down your whole solar system because of an anomalous data read. But if you get 100 of them in a row, or 100 of them over the course of a day, at some point, you're going to have to acknowledge that we have an issue. And as I say, those accrue really within a second or two if you're really over voltage.
If it's just a data anomaly, it increments the counter. And you've got to have 100 of them before it triggers. And so that's what adjusts that sensitivity.
And so here we can see we're charging at 23 amps. We're at minus 8. We're at 81 amps discharged out of 240. And we're at 65.9% stated charge.
Now, I've got some logging functions. In order to be able to save these configuration items, we've had a provision in EEPROMs in our controller board. And that EEPROM, it's like a 256k EEPROM.
EEPROMs are so cheap, getting a smaller one doesn't gain us anything. The things are $0.20 or something for a 256k. $0.198 piece for a 1k, that sort of thing.
So we have 256 kilobits of data available. And so our configuration items, all of these, and accrued items that we want to carry from one session to the next are kilowatt hours, lifetime charging, amp hours, and so forth, don't account for 100 bytes out of 256k. And so what we've done is set up the rest of it for logging.
This particular application is going to use not very much power for an hour or so. And then it's going to try to dump 750 amps for 30 seconds. So I've got this kind of hardwired to take a logging session every five seconds.
You might do that on a solar application every five minutes. But I want them to be able to analyze what happened to our voltage, and particularly our temperature. Well, mostly our voltage, every five seconds.
And so that's what we're doing here. And I can do that long form by entering a capital L. And that prints it out with the hour, the minute, and the second, and the voltage, current, and amp hours. And state of charge, it saves all that every five seconds.
Now, that only gives me, we've only got room for about 1,000, 1,024 log data entries. Every five minutes, that's like, or every two minutes, it's like 13 days worth. But it's much less for this.
But you would normally restart that or erase it before every flight, which might be an hour or two. And so we can have a much finer. Now, it does kind of take some time to write to that EEPROM.
And so five seconds is actually quite an interrupt on our processor blocking to write to the EEPROM. But we write as whole pages. And that makes it a little faster.
And we'll do some things to ameliorate that in the software. And so you can see, we've got a record here going from essentially 0% state of charge to 66. And that's given the amp hours and the voltage and the current we're charging at by time every five seconds.
And that's how we're going to generate a charge curve graph for the modules. But in practice for them, they're going to want to see what happened before, during, and after a 30-second 750-amp burn. And so that's what we're working on here.
And that's our data log. And it doesn't have a hard drive. It doesn't have a card.
It doesn't have any kind of external memory device other than an EEPROM right on the controller, which are pretty hardy. If I enter a lowercase l, I get the same data. But it's simply data comma separated.
And so much easier to import into a spreadsheet as a comma-separated text file and a CSV. And so then we can bring it in to Excel and do some very interesting things like right now we're creating a graph of voltage and state of charge against amp hours. And this is our charge curve in voltage.
And as you can see, it's sharp at the beginning when we're fully discharged. And then it levels out. But it's much steeper than the lithium-ion phosphate cells we're accustomed to.
Again, we're fully charged at 25 volts. And so this is what I've got so far. We're still collecting data.
But this was up to 60%. And so that's kind of how this software works for the aviation hardened battery module that we create from a Tesla Model S battery. One of the things, of course, we have in the software is the ability to log data.
So I've done some charging and discharging, confirming about 233 amp hours in these Tesla battery modules, one amp hour at a time. And logging that for this helicopter application. I'm going to log every five seconds so they have some definition.
They're not going to run the battery too long. But they might want to see what it's doing in their systems. And so that gives us a good opportunity to log charge and discharge curves.
Let's take a look at the charge and discharge curve for a Tesla Model S. Battery module. Here's a Tesla Model S battery module charge curve. Pretty straightforward thing.
We created this by logging the data while charging the aviation battery we're building. And we did so at a fairly slow rate, about 21 or 22 amp hours. This is the voltage of the module graphed against amp hours.
The amp hours from minus 233 year discharge, 233 amp hours, up to zero. And we took a sample every two amp hours from that log data. Not by time, because their charge rate might vary, but by amp hours.
So every two amp hours, we graph a voltage data point. And that takes us from what we're calling 0% state of charge up to 100%, which you can see right up here. But the important element is our voltage curve.
And of course, it comes up very quickly as we add just a little bit of current to it. We did it at a fairly steady rate. But the data points, again, are mapped to two amp hour increments along the amp hour horizontal axis.
And so it takes the time element kind of out of it. Your state of charge will be a function of how many amp hours you've put in, however fast or slow you do that. By doing it at a 21, 22 amp rate, we do it fairly slowly.
In fact, it took about 11 hours to charge this battery module this way. All that should give us a fairly accurate voltage charge curve. I'm surprised at what we got.
And the reason is we're used to seeing charge curves that are kind of S-shaped, come up quickly, flatten out, and then turn sharply up. In this case, we came up quickly enough. But then, instead of flattening out, we started a fairly linear progression against our state of charge of voltage.
And if this is replicated on our discharge side at all, similarly, it indicates that we could probably better use voltage to determine the state of charge, certainly than in a LiPo4 cell or an NCM cell. So this surprises me a little bit. It's fairly linear along the way.
We see a 50% state of charge. We're at about 21 and 1 1⁄2 volts. And that is, indeed, what we're calling the nominal voltage of the battery.
So that's what an actual charge curve plotted fairly accurately looks like on a full Tesla Model S battery module plotted against the number of amp hours actually put into the module. Obviously, this is the full module voltage. You can divide this by 6 to get your sound voltages.
And of course, you can double this if you want to do a 48-volt battery for a solar installation. But this is a single Tesla Model S battery module. The charge curve side would be interesting to see if the discharge curve is similar.
Here we're examining the Tesla Model S battery module discharge curve. We did this a little bit differently. We set our capacity for 220 amp hours.
And we discharged into a Peltier cooling device, a 24-volt system. We started at about 9 and 1⁄2 amps current drain. And that decreased to about 7.3 or 7.4 by the end of the discharge.
So it did vary over the discharge curve. But then we took the voltages at exactly 1 amp hour increments. And across the bottom, you can see amp hours from 0 to minus 220 discharging.
And that is what our voltage points are plotted. A pretty accurate 220 points then. And you can see in the red our voltage discharge curve.
This is not by time. It's by amp hours. And so it's really quite accurate.
The green line, of course, is a simple state of charge. And you can kind of see how it varies there from linear. But again, it's a very sloped discharge curve where voltage really does quite indicate our state of charge, unlike many of the lithium-ion phosphate cells and really in lithium cells in general that we've examined.
This is a true discharge curve of a full Model S 5-kilowatt-hour pack. And it's got some humps in it and so forth. These are not caused by changes in current drain.
It's a fairly constant current drain. It starts at 9.5 and decreases very linearly to about 7.3 amps. And these are plots, again, at each amp hour increment.
And so this is a quite accurate discharge curve for our pack. Again, not terribly unusual. Here we go vertical, kind of at about 19.8 volts.
And so this would be the ideal point here, about 19.8, to set your cutoff. And that would be O divided by 6 is about 3.3 volts. That'd be 18, 19.8. So about 3.3 volts right here per cell is the point where it turns vertical.
And that's kind of a high voltage to be pretty much at the end. And you can see here we're down to 5% at 18.3. So a good safe place would be between 19.3 and 19.8 to maintain long life on your battery modules. And of course, we have that in there as a cell voltage.
So about 3.3, 3.2 volts. We've been setting it at 3. And that's down here. That's a little deep.
I would not let it go to 3 going forward. I can see now from this discharge curve, really about 3.3 volts is ideal. These are quite accurate voltage measurements taken here and current measurements and amp hour calculations.
And so I would call this about 210 or 212 usable amp hours. And I would cut it off at 3.3 volts. Now that's kind of interesting in that they're calling the midpoint 3.6, which would be 21.6 volts.
And that's right up here at the 50% mark. So we see a fairly small decrease from the midpoint of the battery down to the point where the discharge goes to vertical at 19.8 volts. And 19.8 should be 3.3 volts.
So 3.3 here and 3.6 here is about your thing. The first little bit, of course, is fairly vertical. But it flattens out and becomes quite linear here pretty quickly.
That's about 4.1 volts up there down to your 3.3. And so that's your effective usable range. And I'm going to alter our configuration to cut off at 3.3 volts. This is fairly surprising.
But big dive from 3.3. And I would call that 212 amp hours to another 8 amp hours is what you get from 3.3 down to 3, a trivial amount and not worth endangering your batteries in any way. So I find this surprising. We had looked at discharge curves before for Panasonic batteries.
But these are Tesla versions of that. And we know they have altered the amount of nickel and decreased the amount of cobalt, even in the Model S batteries, and more so in the Model 3. But I've got to express some surprise here. We're pretty much done for all practical purposes at 3.3 volts.
And I would not operate these cells below that. And that puts our low voltage cutoff at about 39.6 volts on a 48-volt system. I've been shooting for 36 on the inverters.
And I think that's a little low at this point. It's good to have the inverter keep working. But we're going to start cutting off at 3.3 volts.
So a surprising discharge curve, one, in how linear it is. And number two, how high our voltage is when, at this point, we're in a vertical dive. There's 8 amp hours between 3.3 and 3. And you can have them.
I don't need them for anything we're doing. And there's no point in even putting our cells in that dive to the ground. We'll go to 3.3 and call it a day.
Interesting information. That wraps it up. That's our examination of what we're doing with these helicopter batteries.
It's one application for electric vehicle batteries. It takes a little bit of work. These are ridiculously overbuilt and extremely expensive because of the way we've built them.
But for the application they're going in, I think they need more. And I do have some experience, both in aviation, in the military, and firefighting. I try not to have a pretty good picture of what they need, I think.
Of course, I could be wrong. But this is an example of an overbuilt battery system using Tesla Model S batteries. If you stay with us, you'll be in the room.