2014/06/22

BFuse – Electronic Fuse for Breadboard

Prototyping is a dangerous job. Not for a person if you keep the voltage down but for the components. On breadboard misplaced chips, loose connection and other errors can blow the components. To save them a fuse is a good idea. Having said that, standard fuses are not very suitable for breadboarding. Blow fuses have the inherent problem of being a one-time component. And during prototyping, a lot of overcurrent conditions can happen.

A better way is to use a resettable fuse, also known as PTC. After tripping, it turns into a high-impedance state and remains tripped until the overcurrent condition is removed. But they have disadvantages too. Just like the ordinary blow fuse, the tripping time depends on how much current is passed. For example, to achieve 1 millisecond breaking time a quick blow 1-amp fuse needs to pass 10 amps. For 1-amp PTC at 10 amps, the tripping time is around 100 milliseconds. That is way too long and way too much current. Moreover, resettable fuse still leaks some current in its tripped state because it has to keep being hot.

This leads me to a more advanced solution for overcurrent protection: Electronic fuses. They are devices made to sense the current and disconnect the load when an overcurrent is detected. This is usually achieved by FET switches, which are very fast compared to both blow fuses and PTCs.

You can make your own electronic fuse with only some transistors but the more advanced devices are mixed-signal. There are electronic fuses made by Texas Instruments, Linear Technology and STMicroelectronics. Usually used in final products because they are often optimized for single voltage. 

My BFuse

What I made is an adjustable and programmable electronic fuse especially designed for breadboards – a breadboard fuse, or BFuse. It is powered from the same line it protects. The trip current can be set from 50 mA to 1 A but it can measure current up to 6 A. BFuse consumes less than 10 mA and works in the voltage range from 3.3 to 12 V. It has reverse polarity protection (by P-FET), transient voltage suppressors both on its input and output and two LEDs for indication. A green one indicates power-good and red indicates tripped state. A reset button resets the fuse. Its on-state resistance is less than 100 milliohm, which is less than 1A blow fuses and comparable to 1A PTCs. But this resistance is the same in the whole range of trip currents. Shortest trip time is about 200 microseconds and the fuse has been successfully tested on a Statron 22A power supply.

Complete schematic of BFuse

The adjustable trip current is set by a trimmer but the fuse is programmable. Its core is a well-known ATTiny25 from Atmel. Set current and actual current (measured by current shunt monitor) can be compared using ATTiny's built-in comparator or sampled by the ATTiny's ADC. Then, the microprocessor controls a P-FET switch that opens or closes the power supply. The switch operates on high-side so there is no messing with the ground.

In-system programmable using SPI, the fuse can do a lot of tricks. It can emulate fast blow fuses, slow blow fuses, it can be latching or auto-restart or it can allow some inrush current at startup to charge capacitors without tripping. Because it can measure up to 6A, there is a lot of space for tailored operation. It is also small, only 18×36 mm, and takes very little space on breadboard. 

BFuse on breadboard

To be fair, there are some drawbacks too. First, it is more expensive than a simple PTC and needs some minimum voltage. Second, it is not as fast as a commercial electronic fuse, nor it can limit current in linear mode. BFuse can only switch on and off. But it is a great tool for breadboarding and it definitely saved me many components.

If you're interested, you can find source files (code, schematic and board) on my Google Drive. The code uses ADC and allows inrush current at startup. You should set the ATTiny to 1 MHz and turn on the 2.7V brown-out fuse (BODLEVEL = 0b101).
{"cc_re__cc_re__cc_by_sa_4_0": ["m/rearrange?blogID=3803330253605746037&widgetType=HTML&widgetId=HTML2&action=editWidget&sectionId=sidebar-right-1' onclick='return _WidgetManager._PopupConfig(document.getElementById(\"HTML2\"));' target='configHTML2' title='Edit'>\n<img alt='' height='18' src='https://resources.blogblog.com/img/icon18_wrench_allbkg.png' width='18'/>\n</a>\n</span>\n</span>\n<div class='clear'></div>\n</div><div class='widget HTML' data-version='1' id='HTML1'>\n<h2 class='title'>License</h2>\n<div class='widget-content'>\n<a href=\"http://creativecommons.org/licenses/by-sa/4.0/\" rel=\"license\"><img alt=\"Licence Creative Commons\" src=\"http://i.creativecommons.org/l/by-sa/4.0/88x31.png\" style=\"border-width: 0;\" / /></a><br />The work <i> <span property=\"dct:title\" xmlns:dct=\"http://purl.org/dc/terms/\">kaktus circuits</span></i>, except software parts, whose author is <a href=\"http://kaktuscircuits.blogspot.com/\" property=\"cc:attributionName\" rel=\"cc:attributionURL\" xmlns:cc=\"http://creativecommons.org/ns#\">Jakub Polonsk\u00fd</a>, is licensed by <a href=\"https://creativecommons.org/licenses", "mmons.org/licenses/by-sa/4.0/\" rel=\"license\"><img alt=\"Licence Creative Commons\" src=\"http://i.creativecommons.org/l/by-sa/4.0/88x31.png\" style=\"border-width: 0;\" / /></a><br />The work <i> <span property=\"dct:title\" xmlns:dct=\"http://purl.org/dc/terms/\">kaktus circuits</span></i>, except software parts, whose author is <a href=\"http://kaktuscircuits.blogspot.com/\" property=\"cc:attributionName\" rel=\"cc:attributionURL\" xmlns:cc=\"http://creativecommons.org/ns#\">Jakub Polonsk\u00fd</a>, is licensed by <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\" rel=\"license\">Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a>.<br />All software parts are licensed by <a href=\"https://www.gnu.org/licenses/gpl-3.0.html\">GNU General Public License version 3 (GPLv3)</a>.<br />\n</div>\n<div class='clear'></div>\n<span class='widget-item-control'>\n<span class='item-control blog-admin'>\n<a class='quickedit' href='//www.blogger.com/rearrange?blogID=3803330253605746037&widgetType=HTML&widgetId=HTML1&action=editWidget&sectionId=sidebar-right-1' onclick='"]}