Safe Method for Purposeful Brown-out

I was wondering, what would be a safe method to purposefully induce a brown out with out risk to electronics? I think it would be useful to test electronics in those extreme conditions.

Which electronics are you intending to test?

A 6 CIM drive moving a 140LB robot can drop your voltage to below 10v. That can cause some brown-out issues for some components. But I think it would be safer to monitor loads with as few electronics connected as possible to test your limits.

run the robot for a while, the battery will run down, voltage will drop, you can see what happens. I think it’s pretty much a normal thing, we’ve never had issues with electronics when the batteries get low. But sometimes, we waste some troubleshooting effort before someone gets wise enough to ask what the battery voltage is.

Drive for a while until the battery is low. Drive up against a wall. Slowly increase power to drivetrain. You will ‘safely’ brown out.

You could take Al’s advice in reverse: terminate one end of a spool of #6 cable and use it (the whole spool) as the leg between the main breaker and the PDP. That would drop your voltage without requiring you to drain your battery so far or building up dangerous temperatures in a component.

Variable-voltage, high-current power supply? If you happen to have one handy. :rolleyes:

A little more seriously … I never yet needed to learn about the cleanliness or other characteristics of arc welding power supplies, but one of those, plus or minus some high wattage voltage-dividing components might do the trick.

Does the robot need to be driving around on the ground? Or can it be up on blocks or on a homebrew dynamometer?

If you’re just testing the functionality of your robot code during a temporary loss of control:

Put all your robot control code inside of a common periodic method that is called from all states (i.e. DisabledPeriodic, TeleopPeriodic) and temporarily have a codriver switch the robot to and from disabled mode. Disabled mode is almost identical to a brownout in that actuators do not receive power however most sensors do.

If I remember right, the 5v rail is disabled during brown out. Can’t remember if the 3.3v rail is or not.

That depends on the level of brownout.

At 6.8V the 6V PWM rail is disabled, CAN devices are sent a disable command.

At 6.3V the 5V rail is disabled among DIO, Analog and MXP. 3V3 is disabled on the SPI and I2C bus. Something to note is that the 5V output on the SPI bus appears to stay active. If the internal jumper J2 is configured properly, all DIO outputs turn to 3V3 and are also disabled at this brownout level.

Keep note that all power going to the USB bus is still active.


If you’re doing it as a bench setup (or can put the robot up on blocks), and are wanting to just check brownout response of the roboRio, you can use a variable bench supply to power just the roboRio while powering the rest of the robot with the normal battery. The main thing to be careful to do is tie the negative side of the power supply to the negative side of the battery to get a common ground reference (no need to go to the battery directly, you can get this from wiring to any black terminal of the PDP). The advantage of this approach is you only need a small (e.g. 20W) bench supply as all you are powering is the roboRio.

What this looks like:
RoboRio (+) – Power Supply (+)
RoboRio (-) – Power Supply (-)
PDP any spare (-) terminal – Power Supply (-)

Another oddball way to to this if you don’t need too many amps for your test is to set up a motor controller (controlled by an arduino or separate RIO) to provide voltage for the the cRIO. Just don’t try to drive it backwards…

I don’t know how the RoboRIO will respond to a pulsed output like that of a speed controller, and I’m not sure I want to know.

Inverters + Wiring Inductance = Voltage Spikes

It would be best to use an oscilloscope to look at the motor controller output, with the intended wiring, to ensure that you are not getting voltage spikes that go higher than the rated input voltage or go below zero volts.

In the past, I have used programmable DC power supplies that can simulate a brown out condition but they were pretty expensive.

The brown out test would be more repeatable if one used a MOSFET with a power resistor to add a momentary high-current load to your system. An oscilloscope would have to be used to measure the system voltage.

Yea, this is a bad idea. One of our mentors connected a motor controller up to another motor controller. The second one blew up pretty fast.

The very low impedance MOSFETs in the motor controller will rapidly switch between 12v and 0v continually. This will cause large, fast, voltage changes across the input capacitors on the roboRIO. That will cause them to heat up and blow up.

I don’t even want to know why :stuck_out_tongue: