For this article I’ll be talking about the battery in my Zero SR/F electric motorcycle. That bike comes as standard with a 14.4kWh battery and optionally you can either replace its tank storage bin with another 3.6kWh battery module (for a total of 18kWh) or you can upgrade it with an extra 6kW charger for a total of 12kW AC charge power (either not both).
I also have an Energica SS9+ with a 21.5kWh battery, 3kW AC and 24kW DC charging but for that bike I haven’t figured out how to connect and talk to the BMS yet so I can ‘t share numbers. Your dealer can however get a battery health reading if you want. That can be useful for a second hand purchase for example. However these batteries are very well protected and if the bike turns on it’s likely just fine.
For the Zero I figured out how to connect to the bike and talk to its BMS and query for numbers like the current state of charge but also the battery capacity. Or at least what the system things the battery size is. For that I use a very simple OBDII connector and a serial monitor app to send commands and receive responses. If someone wants a quick word about that just let me know and I’ll make that happen. For now you can check this video instead.
Many of the settings available on that command line are hidden behind login levels. Just getting statistics can be done without login. And that is how I, and others, started sharing this information on EMF. At first the numbers I shared myself looked promising. At an ODO or total distance of around 11.300 km I got a first readout (or at least the oldest one I can find) and that gave me the following numbers. The command you need to get this response is.
And below are the numbers I got for my own bike. This was executed at 72% SOC and so were the other readings but I learned later on that the state of charge is not important for getting this number. Whatever state of charge I checked it kept returning the same number. There are other factors that do make a difference that I will get to later on, so keep reading.
– pack_capacity_ah 112
– min_pack_temp_c 25
– max_pack_temp_c 26
– lowest_cell_voltage_mv 3811
– time since pack_rpdo_received 27
This is just part of the response you get. The important number (for this write up) is that 112 Ah reading after the
pack_capacity_ah field. To have a clue on what percentage that is from the original we should talk about the full battery capacity first.
I could try to explain things like nominal voltage and usable battery capacity but the thing is someone did that already in this great article. I suggest reading it from top to bottom cause it really has great information on how manufacturers spec their batteries but also how they make it possible to have such reliable batteries. Nothing like the things in our phones that show their age so quickly. The conclusion of that article is that the full battery capacity should be around 114 Ah.
(102vdc real)*(114Ah real)=11.6kWh … OMG, we finally have the usable capacity.from https://www.electric.motorcycles/post/how-oems-calculate-battery-capacity-and-why-it-s-not-totally-their-fault-they-are-wrong
With that number you can see how happy I was that my readout of 112 Ah was so close. So after over 10.000 km it almost didn’t degrade. And I was using it in all conditions, including freezing temperatures. I was charging it somewhat fast (6kW) on the road and slow at home. All I did to try to keep the battery healthy was not to keep it sitting at 100% or below 50% for longer periods. So most of the time it’s stored at around 70%.
I didn’t use storage mode at that point since it didn’t work until firmware version 18 was released. Despite that feature being printed in my manual for over a year. And at some point I tried that feature when it was released in an app update. Only to discover that from that point on my app would always think the bike was in storage while my bike didn’t know how to go out or in storage… luckily the bike just worked. I just lost the app functionality at that point.
For a very long time I was convinced this OBDII readout from the BMS was the way to get an indication of battery degradation. And sharing those numbers with others revealed that most of our bikes were somewhere around that 100 – 112 Ah range.
At some point I got a demo bike that I checked out. I was expecting a slightly lower capacity because these bikes often sit in the showrooms with a full charge which is not ideal for these batteries. And the readout confirmed that (well it didn’t but I thought it did at that point). ODO of that demo bike was just 645km. I pushed it over 1.000 km while I was using it. And the readout was showing 109 Ah.
– pack_capacity_ah 109
– min_pack_temp_c 8
– max_pack_temp_c 9
– lowest_cell_voltage_mv 4043
– time since pack_rpdo_received 92
That was in the period that firmware version 18 was released leaving a lot of users with highly reduced range on their bikes. All we knew is that these bikes were fine before that firmware update and that they seemed to charge up magically when parked. So there was for sure an issue in the SOC calculation. We started getting low pack capacity numbers also in that same thread.
– pack_capacity_ah 76
– min_pack_temp_c 14
– max_pack_temp_c 17
– lowest_cell_voltage_mv 1977
– time since pack_rpdo_received 2
I couldn’t test on my own bike at that point cause it was in the shop for some repairs (don’t ask). The demo bike I was using seemed to suffer from limited higher speed range also but it didn’t have the latest firmware yet. Only more questions. The good news is that there was a fix from zero in the form of another firmware update, version 19 and that seemed to resolve the range issue on that demo bike.
Again that was what I thought did the trick. As soon as my own bike got back I took my reader to check what capacity I would get at an ODO value of 13.300 km. Surprisingly enough the capacity readout dropped below 100 Ah now showing just 98 Ah. The bike had been updated to firmware version 19 by the shop but other than that I hadn’t changed the way I used it. Well I couldn’t really use it that much due to the repairs and it stayed at around 60-70% SOC all that time. The only other thing that changed was the installation of the Charge Tank (I’ll get back to that later on, cause indeed this part might be important also).
– pack_capacity_ah 98
– min_pack_temp_c 11
– max_pack_temp_c 12
– lowest_cell_voltage_mv 3812
– time since pack_rpdo_received 59
At that point I started checking directly after charging, just before riding, after riding it slow, after riding it fast, after charging it long, after charging it short, fast, slow… Nothing changed, it was always giving me that same 98 Ah number. For sure I was hoping it would jump back up at some point. But it didn’t. Granted those tests were all done within a single week. I bet using the bike will somehow make the number drift over time, cause how could it have reached that 98Ah on mine otherwise? We just didn’t know what did it.
I was also speaking to a Zero SRS owner who initially had some range issues and thus was also looking into this value. The firmware update on his bike didn’t help resolve the problem. And then I realized I hadn’t just done the firmware update on the demo SRF that got fixed, I also rode it till empty and even a bit longer at 0% SOC just to get home. So I suggested that could’ve been the solution.
And it was cause that user depleted his battery and got better range on his bike since then. Also he finally saw improvements on the magic charging. Later on he contacted me back to report that he again rode it beyond empty and even kept riding around the block until the bike refused to ride. If I remember correctly he said the bike showed a message like “battery depleted” at that point and he had to push it back.
The most interesting part of his story is that the pack_capacity_ah value reported by the BMS went up again after he did this test. So did we finally find a way to influence the number the bike uses for its calculations? I also suddenly remembered a conversation I had with a Zero dealer that got instructions from Zero to ride a bike until depletion (like we describe here) to solve issues. That was before the firmware issues so in another context but still it proves this is a safe procedure.
In the video above I shared how we came to that conclusion so others can work on their own solution if they wish. A follow up video will follow soon in which I pushed my own SRF beyond 0% again to check these numbers before and after. I know for sure I can at least ride another 10 km when SOC shows 0% on the dash.
Until we get those numbers (edited) I can also start testing if maybe that charge tank and thus the faster charger might have caused my initial drop below 100 Ah. When charging back up it’s advised to use the lowest charging setting you have. That way you prevent the battery from overshooting it’s max value which is as important as reaching it’s absolute lowest value.
If there is anything to learn from this then it’s that these batteries are very well managed and really built to last. Even if you keep it at 100% all the time it will likely be fine thanks to the safety margins built in. The only thing you should avoid, according to the manual, is to keep it sitting at anything below 30% since that can damage the battery.