I'm working on a wearable LED project, and I'm trying to figure out whether to use the 3.3V Pro Mini or the 5V Pro Mini. I've been using the 3.3V so far with 3 AA batteries (seems more in-line with my 4.5V input). However, I just realized that I'm going to have two sensors that will feed the full battery voltage (4.5V) back to the Arduino. I know the specifications state max 3.3V input, but is the Arduino 3.3V really sensitive enough to blow if it gets up to 4.8V?
I figure my best options are below. Would love to get some feedback from the experienced folk here.
Option 1: Use a 5V Pro Mini and hope it's fine being underpowered.
-With 3 AA (Alkaline) batteries, I expect voltages between 3.3V and 4.8V depending on battery depletion. From other posts, it sounds like the Arduino will generally operate fine under these circumstances.
Option 2: Use a 3.3V board and hope for the best
-Input could go as high as 4.8V. I'll be using the internal pullup resistor on the ATMega. Does that protect me from frying the board?
Option 3: Use a 3.3V board and a voltage divider on my two input lines.
-Can I make a voltage divider using only one resistor, considering that there's already a pullup resistor on the input pin?
-Truth is, I realize this is the best option, but I spent a lot of time designing a PCB for a shield which is near perfection in space efficiency. Unfortunately, I now don't have room for the extra resistors because I stuffed my input pins into the corner of the PCB.
1: No, not fine. A 16MHz will run at 3.3V, but that is outside the specifications. If the 5V Pro Mini is powered with the battery, there will be a voltage drop of the voltage regulator and the voltages at the pins may not be higher than VCC.
2: Very bad, the input may not be higher. The internal pullup resistor does not protect.
3: Good.
Option A: Remove the voltage regulator of a 3.3V 8MHz Pro Mini board. Use the VCC to power it with the battery. About 3V to 5.5V is okay.
Option B: It is allowed to push 1mA into a pin. Therefor a single resistor can be used to protect an input.
(4.8 - 3.3) / 1mA = 1k5. A single resistor of 1k5 to 10k can be used to protect the input.
I'm trying to figure out whether to use the 3.3V Pro Mini or the 5V Pro Mini.
It also depends on the sensors you connect to your Arduino. Some of them require 3V3. 5V would destroy them.
What you want to think about is
--don't exceed the maximum VCC for any of your devices in your project
--when sending output of one device to input of another device, the signal should not exceed the VCC of the input device. This means you don't want the input pin or pull up voltage of an output pin to ever be higher than VCC.
So, if you use the onboard 3.3V regulator on a 3.3V Pro Mini, and you have some devices which may send a signal of higher than 3.3V to an input pin on the Pro Mini, that would not be good. You would need to send the signal through voltage divider resistors or a level converter.
However, there is nothing wrong with just bypassing the 3.3V regulator on the Pro Mini and powering it directly from 4.5V on the VCC pin. Don't use the Raw pin. The Arduino will run on 3.3V to 5.5V, or even run it lower than 3.3V if you make sure the brownout fuses are set to suitable values (check data sheet for voltage ranges, operating frequency, and brownout values). If any of your devices have max VCC of 3.3V, then your best bet would be to power the whole project at 3.3V. You can feed the battery into Raw of a 3.3V Pro Mini and power everything else from the VCC pin of the Pro Mini. Check the specifications of the onboard regulator to make sure you don't exceed its capability.
Because of your VCC decision or because you want to save power, if you want to run the Pro Mini at a lower frequency, you can divide the frequency by setting clock prescale "CLKPR" at the top of your sketch and make the corresponding f_cpu setting in your boards.txt entry. You probably don't need to worry about changing the crystal.