6
\$\begingroup\$

For my job, I was tasked with creating a board to interface with a 2.5V device we've made. So, to keep things simple, I decided to interface it with an ATmega328P-PU running the Arduino firmware at 2.5V. All the specifications say the chip has an operating voltage of 1.8V-5.5V, so I didn't bother testing any circuit at 2.5V until today. That was a dumb mistake.

I was testing the low voltage setup by running the simple blink sketch on a breadboard and found it would stop working just below 2.7V. The power supply would also show 0mA current draw as opposed to the 2mA it was showing before. I checked the pin with a DMM and the LED unplugged to confirm that no output was coming from the pin.

After some research, I found a site that seemed to say that, at lower voltages, it needs to run at a slower speed. So, I burned the bootloader to have the chip used the 8Mhz internal oscillator. However, it still turns off below 2.7V.

How can I get access to these lower voltages? I am guessing that this has to do with some internal fuse setting, but can't find anything about it. I'm well within the operating voltage for both the I/O pins and Supply rail. I know it can run at 2.5V as the Arduino BT can have an input voltage as low as 2.5V. Is there something I'm forgetting?

\$\endgroup\$
6
\$\begingroup\$

At 2.5V nominal supply voltage, you have to limit the clock frequency to maybe 7MHz (depending on the tolerance on your 2.5V supply). I'm not an Arduio aficionado, but I believe at least some incarnations run at 16MHz. See this:

http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf

As you noted, the BOD has to be either set to an appropriate value or disabled (and if it's disabled you'd probably want to use an external supervisor chip).

http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf

Note that with the setting 0x06 (the only possible setting where the BOD is enabled) the BOD is not guaranteed to work properly, even with clock frequency of 4MHz because it won't necessarily be active until the supply voltage drops to 1.7V.

So, if you want a reliable design, you should disable the BOD and use an external supervisor chip, such as the ADM811 and limit your clock frequency to the lowest possible voltage trip of the supervisory circuit.

http://www.analog.com/static/imported-files/data_sheets/ADM811_812.pdf

In the above case, it's 2.25V so around 6-7MHz (or less) would be safe.

\$\endgroup\$
  • 1
    \$\begingroup\$ Ah, thanks for that! The graph! I'd found originally cut off before 2.5V. However, my calculations set the max clock frequency at around 8.67MHz. So, I think I should be fine. Still, I'll take this into account for future designs. I'm not certain brownout detection is a necessity as our product is just a simple demo. That's especially true given our device doesn't even turn on below 2.2V. \$\endgroup\$ – fazzitron Sep 22 '14 at 14:04
  • \$\begingroup\$ I don't see what the point is in having a BOD that is not guaranteed to work. It's like they intended it to work, but found out in characterization that it was not good enough, but left it in the docs anyway. P.S. yes, 8.67MHz is correct for 2.5V minimum. V = ((f-4)/6)* 0.9+1.8 but at 8.00MHz your tolerance on the 2.5V must be no worse than -4% on the low end. \$\endgroup\$ – Spehro Pefhany Sep 22 '14 at 14:12
  • \$\begingroup\$ I'm not sure what you mean. The BOD still works by resetting the Arduino at 1.8V. It's the device we're showcasing that doesn't turn on below 2.2V. But, that's why we have changeable batteries. It's not ideal, but we needed a demo out quick. \$\endgroup\$ – fazzitron Sep 22 '14 at 15:47
  • \$\begingroup\$ @Seth_L Worst case it does not reset it until 1.7V (Table 29-17). The Atmega is not guaranteed to function (at any frequency) below 1.800V. It will likely work, at room temperature etc. for your demo, but as an Engineer, I must cry foul at this sort of thing. \$\endgroup\$ – Spehro Pefhany Sep 22 '14 at 16:07
  • \$\begingroup\$ I know, it is not ideal at all. I cringed when I calculated my battery life. But, it works for a simple demo that taught me some things I didn't know. The next revision will be less cringe worthy. \$\endgroup\$ – fazzitron Sep 23 '14 at 14:42
6
\$\begingroup\$

It just dawned on me that, in my research, I saw people mention brownout detection. I searched into it and this does seem to be the issue.

http://openenergymonitor.org/emon/node/342

EDIT: For those curious, change the extended fuses to 0x06 to drop the brownout voltage to 1.8V.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.