RDDRONE-BMS772

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

RDDRONE-BMS772

131,283 Views
iaingalloway
NXP Employee
NXP Employee

Please ask questions about the RDDRONE-BMS772 board and software here

0 Kudos
Reply
115 Replies

5,292 Views
Shane93
Contributor II

Hello,

I am using the BMS-772 for a university project and do not have access to the battery cell emulator. I was wondering how design a resistor setup on breadboard to mimic the battery cells for purely testing purposes temporarily. 

Thank you for any help,

Shane.

0 Kudos
Reply

5,285 Views
cisvmierlo
NXP Employee
NXP Employee

Hello @SH ,

This depends on what you would like to test. 
If you would like to have voltages on cell measurement tabs. Without charging or (passively) balancing the cells. You can easily add some resistors over your voltage supply to mimic the cell voltages and measure them with the BMS772.

For example you have a lab power supply and you would like to test a 3S battery (3 cells in series) setup. 

You can set the lab power supply to 12V attach them to the power in + and power in - of the BMS. Parallel to that you add a voltage divider with 3 resistors of for example 1kΩ in series from power + to power -. 
You can add the 4 balance wires to these resistor (+, - and the 2 in between resistors) to connect to the balance lead connector JP1. 
Make sure to solder the BMS for 3S configuration according to the release notes on github: RDDRONE-BMS772/BMS772_releaseNotes_6.0.pdf at main · NXP-Robotics/RDDRONE-BMS772 · GitHub
I would suggest to download this release note PDF as the viewer is clipping the document.

There should be ~4V per "cell" in this setup. 

You should be able to start up the BMS772 in normal mode when you power on the lab power supply (current limit could be set to 100mA without a load). 

As long as the BMS and power supply is able to handle it and configured for it, you can add a load to the output of the BMS772 as well. 

I hope this helps!

Kind regards,

Cis


 

4,138 Views
Shane93
Contributor II

Hello again,

 

Thank you for your help. I have a second BMS-772 board and have soldered the 3 cell connector to the board and I am using a three cell configuration with resistors mimicking cells. However, the CLI always gives me 0v for the 3rd cell and therefore an undervoltage error. There is voltage across the 3rd resistor. I got some solder across the cell setup pads on the bottom of the board but removed most of it. What could be the issue here?

Thank you again for any help,

Shane

 

20260404_171220.jpg20260404_171231.jpg20260404_171422.jpg

0 Kudos
Reply

3,984 Views
cisvmierlo
NXP Employee
NXP Employee

Hi @Shane93 ,

Thank you for reaching out for a question on the RDDRONE-BMS772.
And thank for sharing the helpful images!

Would it be possible to verify the solder connections to make sure the BMS is configured for 3S?
From the image it looks like SJ2 is connected, while SJ12 and SJ10 might not be connected?
If you have a multimeter with resistance measurement, you are able to check with (with resistors removed and the board not powered). 
Here you can find more information on the solder jumpers for the cell configuration (3S): https://nxp.gitbook.io/rddrone-bms772/board-user-guide/getting-started-with-the-rddrone-bms772/confi... 

Another thing that I notice is that you are using a bread board and Dupont jumper wires. Keep in mind that these are known to have bad connections. I do understand that for debugging this might be easy to do. But a bad connection because of the breadboard and / or the wires could also be a problem.
From what I can see in the image, the way you connect it is OK. 

I'm also curious about your settings.
If you type in the CLI / UART command window the following command:
bms get all 

What do you see?

I would like to see the n-cells you have configured for example as default this is 6 cells. 
You can find which commands to look at in the Chapter 6 Getting started / quick start guide of the release notes (page 9 of 59): RDDRONE-BMS772/BMS772_releaseNotes_6.0.pdf at main · NXP-Robotics/RDDRONE-BMS772 · GitHub 

Chapter 6.4.1: The most important BMS variables lets you know what to configure when you start with a BMS. Like n-cells.

You can change n-cells to 3 (in your case) with the command:
bms set n-cells 3

That should make sure the BMS doesn't check the other 3 cells that are not present in your setup.

I hope this helps!

Kind regards, 

Cis van Mierlo

 

 

 

3,941 Views
Shane93
Contributor II

Hi @cisvmierlo 

Thank you for all your help. The solder pads seem to be connected, when I run a "bms get all" I get this return. However, measuring across the 3 resistors gives me the natural step down of 12v, 8v, 4v, 0v. 

Thank you,

Shane

 

image_2026-04-08_115330382.png

0 Kudos
Reply

3,900 Views
cisvmierlo
NXP Employee
NXP Employee

@Shane93 ,

Thank you for sharing this information. 
I can see that you have configured the BMS for 3 cells (n-cells == 3), a stack voltage (v-batt), but indeed v-cell3 is missing. 

This is probably because there is a bad connection with cell 3. 
The other 2 cells could have a bad connection as well.  
If you look at the schematic in the design files of https://www.nxp.com/design/design-center/development-boards-and-designs/smart-battery-management-for... 

You can see that with 3S configuration (SJ6, SJ10, SJ11 and SJ12), cell3 is connected to BP-C6P and CT6. 
Cell1 and cell2 are connected to the normal BP-C1M (cell1-), BP-C1P (cell1+) and BP-C2P (cell2+). 

Is there a way you could verify the connection of cell 3?
Not just to the balance connector, but the full chain more close to the IC?
Between BP-C2P and CT_2 (cell3-) and BP-C6P and CT_6 (cell3+). 
And the other 2 cell's connections.

Could you share more of you your log output?
I would assume you will have an error like: "bcc_monitoring ERROR: stackvoltage too different from sum of cells!" 
Can you verify you also did not alter the code? And have the latest release programmed on the BMS772 (version 6.1)?
Do you recall any misconnections to the BMS772 board? For example swapping the voltages on the balance connector? Or connecting to the balance connector wrongly?

As mentioned before, I strongly advise to not use a bread board. 
If you really want to use the breadboard, maybe you can make the connections just on the conductive legs of the resistors instead. Using crocodile clamps or clips for example. 

I hope this helps!

Kind regards,

Cis van Mierlo

0 Kudos
Reply

3,125 Views
Shane93
Contributor II

@cisvmierlo 

 

Thank you very much for you help. Two of the surface mount resistors had lifted on the back of the board causing an error in the cell reading circuit. The issue is resolved now thank you again. I have one final question you might be able to assist with. I am building my own custom CAN interface using NI-XNET with Cyphal CAN. Can you tell me how the CAN frames are structured and the addresses? Also is it possible to turn off the output voltage by controlling the MOSFET's over CAN?

Thank you,

Shane

0 Kudos
Reply

3,055 Views
cisvmierlo
NXP Employee
NXP Employee

Hi @Shane93,

Good that you have found this issue with 2 SMD resistors and thank you for sharing this information.

I believe both CyphalCAN and DroneCAN information can be found in the release notes. 
It will mention which messages are implemented. 

There is no direct message in either protocol that can turn off the power switch. 
With DroneCAN, you can easily change settings and might be able to create an error in which the BMS will turn off the power. For example, changing the overtemperature setting. 
You should be able to change the setting back to a "good" value and reset the fault. 
This has been tested with DroneCAN. 

But if you are creating your own custom CAN interface, you can add this feature yourself. 

I hope this helps.

Best regards,

Cis

0 Kudos
Reply

6,498 Views
xete
Contributor II

I am trying to flash firmware on to the BMS.

 

However, I am facing this error when attempting to connect via SWD.

xete_0-1768568009515.png

 

0 Kudos
Reply

6,494 Views
cisvmierlo
NXP Employee
NXP Employee

Hi @xete ,

Could you explain more about your setup in which you face an issue?
How did you power the RDDRONE-BMS772?
What is the status of the RGB LED on the RDDRONE-BMS772?

A picture of your setup would be helpful to be able to assist you in your problem with programming.

Kind regards,

Cis

0 Kudos
Reply

6,428 Views
xete
Contributor II

Hi @cisvmierlo ,

 

Thank you for the quick reply.

 

I was powering the BMS with a 4S battery. I was also using 3.3V TTL to USB to look at the serial output. The BMS was in the NORMAL state based on the LCD Screen and Serial.

 

It was connected to a J Link Compact Plus according to the pinout below.

 

Do let me know if you require any other info/suggestions for troubleshooting

xete_0-1768570899050.png

 

0 Kudos
Reply

6,422 Views
cisvmierlo
NXP Employee
NXP Employee

Hi @xete ,

It seems that the IC is powered and working.
A 4S battery (both LiPo or LiFePO4)  is indeed in the correct supply range. That cannot be the issue.
Maybe a full disconnect (battery, programmer, serial interface) could help?

It could be a connection issue. 
Can you try a slower programming speed? 
Long wires and pin converters could impact the maximum programing speed.
You now use 1000kHz, "1000", can you try "100"? 100kHz programming speed?

If you would be able to upload a picture of the setup, that might show an issue.
Or provide the voltages on these programmer pins.
It would be interesting to know if the MCU is kept in reset or what VTref is.

Kind regards, 

Cis

0 Kudos
Reply

5,264 Views
xete
Contributor II

HI @cisvmierlo ,

 

Thank you for your help. Lowering the clock speed solved the issue.

21,298 Views
highcatjan
Contributor I

We would like to use the RDDRONE-BMS772 in our drone batteries. 

 

My question is, if there already is a PX4 integration based on UAVCAN?

Is there any work which we can pick up?

 

Thanks in advance
Jan

0 Kudos
Reply

21,286 Views
GeraldP
NXP Employee
NXP Employee

Yes, we are currently testing the next release candidate of the open source BMS772 reference SW that includes DroneCAN support.

0 Kudos
Reply

23,909 Views
lmiles-sosub
Contributor II

Hi All,

I am wondering is there anyway to read the type of fault code from the CLI? I can read the state (bms get state => FAULT) but is there a way to receive the type of fault e.g. over voltage?

If not do you have some guidance on the best way to implement that in the firmware? 

Thanks for your help,

 

Lewis  

0 Kudos
Reply

24,111 Views
lmiles-sosub
Contributor II

Hi All,

We are facing an issue with the integration of the NXP BMS into our ROV system and hoping for some guidance on the changes I should make to the firmware to resolve the issue.

The problem is we occasionally will deplete a battery during an ROV flight underwater, and the vehicle becomes unrecoverable as the BMS will go into deep sleep. Following an under voltage fault the BMS will enter deep sleep to reduce any further draw on the battery, part of this means turning off the UART communications. If we apply voltage to the BMS it will remain in deep sleep until the physical reset button is pushed. The issue is that the robot is deployed under the water, so physically pushing the button won't work and we aren't able to communicate via UART as it has gone into deep sleep.

So I am seeking any advice on how I might be able to overcome this problem. The goal would be to still have the BMS enter deep sleep mode to prevent further discharge of the battery however to be able to wake the battery via a UART command or if charge voltage is detected.

I was thinking I could attach an interrupt to the UART RX pin before entering deep sleep, which will reset the fault during wake up. Is this a feasible solution and if so is it possible for you to point me in the direction of the firmware I could do this?

 

Thank you for your help,

Lewis

0 Kudos
Reply

24,100 Views
cisvmierlo
NXP Employee
NXP Employee

Hi Lewis,

Indeed, the BMS goes to deep sleep to preserve any charge left in the battery. Meaning that this will be the lowest power mode (±100uA). 
The only way that this is feasible, is to turn off the VCC_3V3_SBC, which is used to power the MCU.
Meaning that the MCU will be off. So, setting an interrupt won't help with waking up from this mode.

The only to wake up from this is mode is to either re-apply a voltage to the BMS or to pull down the SBC's (U3) wake pin (pin 12).

Maybe use J22 to pull down the wake pin (keep in mind that the voltage on this connector is between the battery voltage and 0V). For example, you could use an external switch or signal controlled from your other system to pull this low.

Another solution would be to send the "bms reset" command over de CLI (UART) when you receive the undervoltage fault and the BMS is counting down before going into the deep sleep mode. This will reset the timer.

You could also reconfigure the timeout time for the BMS to go to deep sleep and even disable it.
To do this, see t-fault-timeout in chapter 8.2.2 (page 18) in https://github.com/NXPHoverGames/RDDRONE-BMS772/blob/main/BMS772_releaseNotes_5.0.pdf 

Hopefully this will help, kind regards,

Cis van Mierlo

24,055 Views
lmiles-sosub
Contributor II

Thank you for your reply Cis van Mierlo, that was very helpful.

I was able to get the functionality I needed by using an N-Channel, P-Channel Mosfet with and RC timer to momentarily pull the wake pin low if a charger voltage is connected. 

Another thing I am looking into is the time it takes for the BMS to wake from sleep state due to over current detection (i-sleep-oc). The issue I am facing that after a full charge the BMS output will be disabled to stop overcharging, if our robot then draws more current then the charger can supply the BMS will detect this and enable the output. However attaching the scope I have measured a switch time of the BMS of about 300-800ms. This delay is a problem as it causes a brown out for the raspberry pi. 

I am wondering if there is a way to reduce this time? Maybe by updating the frequency it checks the output current to wake? If I can reduce the time I can the look into smoothing the voltage drop.

 

Thanks again for your help.

Lewis.

24,035 Views
cisvmierlo
NXP Employee
NXP Employee

Hi Lewis,

From reading your story I'm assuming the BMS is in the charge-complete state. With the power disabled to stop the battery from overcharging. 

When your system draws more current than the still attached battery charger can provide, the voltage will drop. 

In the charge-complete state, there will not be a current flowing from the battery, as the power switch is open. The BMS will check the output voltage too see if the charger is disconnected. 
When the charger has this voltage drop and this drop is low enough for the BMS to think the charger is disconnected, it will go the SLEEP state, but it will first set the MCU in very low power run (VLPR) mode and other peripherals in lower power modes as well before closing the power switch.

After this voltage drop of the charger, will the charger stay off?
Or will it have a lower volage than your battery and the charger is protected against sinking the current?

Kind regards,

Cis van Mierlo