Decided to take the plunge and picked up an Arduino MEGA ADK board.
It’s a 5 volt board! Not 3.3v like I though it was! Everything I had planned on hooking up to it runs on 3.3v.
(SIGH)…That’s what I get for reading the datasheet…really READING it, not just skimming. I assumed the MEGA2560 would run 16Mhz @ 3.3v.
So, what do you Arduino types think?
Change the crystal over to 8Mhz, recompile and reburn the bootloader for that freq? Modify the main PCB to put 3.3v at the MEGA2560?
Buy a pile of the BOB-08745 Logic Level Converters, and go with it as is?
I can’t say if it will work with the Mega, but the Uno (and others?) works fine at 16MHz and less than 5V. I use one of my Uno bootloader homemade arduinos solely with 3.3V with no apparent issues, no matter what I’ve thrown at it. Jeelabs sells their line of integrated arduino-like boards that run the same voltages.
It’s out of spec for the arduino, but I won’t tell anyone if you don’t.
I just talked to another guy that’s doing the same thing. I’m basing all my info off the datasheets and the other guy is telling me what he’s done.
He’s getting no problems at 16Mhz with 3.3v also.
The other thing I was thinking I’d have a problem with would be the inputs. 5v Arduino taking inputs from a 3.3v external part. Datasheet says most inputs won’t trip to logic high until .7Vcc, 5v*.7=3.5v, just far enough out of spec at 3.3v NOT to work…according to the datasheets. But “other guy” says he’s isn’t having a problem with it.
'meh…maybe a weak pull up to 5v where needed (i.e. treat all the 3.3v outputs as something like an open collector type even if they aren’t), series resistor on the outputs… Should work on all but the I/O’s that have high clock rates on them…
Won’t know until I try it…
Its not that they wonte ever trigger below that level, the value quoted for minimum voltage for a logic 1 is a value which will guarantee that it will be read as a 1 every time. Between Vlh and Vhl (max for logic 0 and min for logic 1) there are not guarentees which it will be read at. The chances are though if you stick anything more than 3V on a 5V input, it will be seen as a 1, so will more than likely work. For reference, SD cards run at 3.3V, but if you connect the output of the SD card to a Mega, i have never had a problem with the wrong bit being detected, so you should be fine.
If not, level converting ICs are only $4 to $5 for 6 channels. The alterantive is a cheap single MOSFET and two resistors for each I/O pin works wonders as level converter - the same circuit works for both step up and step down.
http://www.hobbytronics.co.uk/image/dat … verter.jpg
(it doesn’t have to be a 2N7000, any N-Channel small signal mosfet will do - BS170 is an example part number which works great).
A word of note with that circuit is that if you are using it for any I/O which is running at a fairly high frequency (say in the order for 500kHz upwards), you will need to make the resistors a smaller value depending on how much stray capacitance there is around - but that is the same as with any pull up resistor.
There is also the simpler resistor-diode converter for step up, or step down (this type is only Uni directional unlike the Mosfet one which is bi).
V1 Supply o—,
----------------R
V1 o-----------±—D|—o V2
Note: When V2 is set to logic 0, the diode conducts and pulls V1 to 0. When V2 is set to logic 1, the diode stops conducting, and the resistor pulls V1 to logic 1.
This type has a downside which is that it V1 wont quite reach 0 (it will be around 600mV for a logic 0) and wont quite reach Vsupply, it will be around V2 + 600mV. But in the case of a 3.3V to 5V system this will result in a logic 0 that is below 0.2VDD and a logic 1 that is above 0.7VDD
Original post mentions the BOB-08745 Logic Level Converters…not really interested in adding a load of small pieces/parts to an otherwise nice looking product. Third post mentions the clock rates.
After a bit of searching, more specifically, I Google’d “Arduino Mega2560 ADK 3.3v”, looks like the Seeeduino Main Board (http://www.seeedstudio.com/wiki/index.p … Main_Board) might be the way to go to get 3.3v I/O without adding a bunch of this and that.
Update(-ish):
Been playing around a bit…
The ADK board will boot and run “blinky LED” down to 2.96v. I’d imagine it wouldn’t run with any kind of reliability if the ADK had to do any ‘real’ work at that low voltage.
The items to be connected to the ADK board (GPS module, camera module, Wifi module, SD card, FRAM chip, TFT LCD panel with touch board) will all run at 3.6v.
So…
Keep the 5v lines away from the 3.3v lines, unplug the external pieces/parts while reprogramming, or use a 3.3v capable ICSP instead of the bootloader thru the USB plug, and so on…I should be golden…