Pages: [1]   Go Down
Author Topic: Changing the Arduino Mega2560 Operating Voltage  (Read 942 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I am working on a project that requires me to read low voltages as a 1. I looked at the spec sheet for the ATmega2560 here and found that the Operating Voltage can range from "1.8 to 5.5". However, the Mega has it set to 5V. Is there any way to change this operating voltage? Or, due to the Arduino software, is it set in place?
Logged

Global Moderator
Boston area, metrowest
Offline Offline
Brattain Member
*****
Karma: 549
Posts: 27425
Author of "Arduino for Teens". Available for Design & Build services. Now with Unlimited Eagle board sizes!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Check the part number on your board, and the datasheet for that part number.
I believe you will find it can only operate at 4.5+ volts.

http://www.atmel.com/Images/doc2549.pdf

ATmega2560/ATmega2561:
• 0 - 16MHz @ 4.5V - 5.5V

ATmega640V/ATmega1280V/ATmega1281V:
• 0 - 4MHz @ 1.8V - 5.5V, 0 - 8MHz @ 2.7V - 5.5V

– ATmega2560V/ATmega2561V:
• 0 - 2MHz @ 1.8V - 5.5V, 0 - 8MHz @ 2.7V - 5.5V

– ATmega640/ATmega1280/ATmega1281:
• 0 - 8MHz @ 2.7V - 5.5V, 0 - 16MHz @ 4.5V - 5.5V
Logged

Designing & building electrical circuits for over 25 years. Check out the ATMega1284P based Bobuino and other '328P & '1284P creations & offerings at  www.crossroadsfencing.com/BobuinoRev17.
Arduino for Teens available at Amazon.com.

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hm, so it's possible that the one I'm looking at is just a mixed bag from the 2560 and the 2560V?
Logged

Fort Lauderdale, FL
Offline Offline
Faraday Member
**
Karma: 71
Posts: 6144
Baldengineer
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I am working on a project that requires me to read low voltages as a 1.

Can you explain more about the project?  Maybe there is a more sensible method than reducing VCC.
Logged

Capacitor Expert By Day, Enginerd by night.  ||  Personal Blog: www.baldengineer.com  || Electronics Tutorials for Beginners:  www.addohms.c

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

It's a low voltage flexible chip. We're testing it's viability in a high radiation environment. It usually only runs at 1.2V, but we have been able to run it successfully at 3.3V on the inputs and VDD with it only getting a little warm. However, even though my input to the chip is around 3.3V, the chip output drops to around 2.5-3.0V (It doesn't help that are scope doesn't have very great resolution). We're using the Arduino Mega2560 for a the microcontroller and the Adafruit datalogger shield to capture data.The only solutions I can think of is increasing the Vdd to the chip or lowering the Vdd for the controller (which doesn't sound like it will work). I don't want to increase Vdd to the chip because I don't want it to overheat. We're going to be sending it up in a sounding rocket for NASA's RockSAT program. And, they are very strict on regulations for what goes up. If we have a burning chip, it's a no go for us to fly.

I might have given more information than needed, but there's no being too careful with NASA.
Logged

Left Coast, CA (USA)
Offline Offline
Brattain Member
*****
Karma: 362
Posts: 17307
Measurement changes behavior
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
I might have given more information than needed, but there's no being too careful with NASA.

Well in my opinion you certainly haven't yet defined the signal's properties well enough that you wish to use with your mega board.

So, the signal your 'device or chip' that you wish to wire the arduino. How many signals connect to the arduino? Are the signal(s) digital or analog. If digital what is a valid low range and valid high range. If analog values what are there voltage range values?

Whatever the signal(s) voltage ranges are there is always a way to scale, amplify, or condition the signals to make them compatible with standard arduino pins. But there needs to be a better information provided. Normally a device datasheet is the best way to communicate to others what you have and what needs have to be met.

Lefty
« Last Edit: May 09, 2012, 11:20:29 pm by retrolefty » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hm, it seems the issue didn't lie with the voltage at all. For some reason, bitRead() is not working how it's supposed to. It will write to the registers fine, but won't read from them. Using digitalRead(), it works just fine. I guess this is a different issue completely.

Thanks anyway for the input!
Logged

Offline Offline
Edison Member
*
Karma: 37
Posts: 1354
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
bitRead() is not working how it's supposed to. It will write to the registers fine, but won't read from them. Using digitalRead(), it works just fine.
bitRead() and digitalRead() are totally different.  smiley-wink  digitalRead() is an I/O function, and it reads the state of a hardware pin.   bitRead() reads one bit from a software variable/value.
Logged

Fort Lauderdale, FL
Offline Offline
Faraday Member
**
Karma: 71
Posts: 6144
Baldengineer
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

For some reason, bitRead() is not working how it's supposed to. It will write to the registers fine, but won't read from them.

In addition to Doug's statements, bitRead doesn't write to anything.
Logged

Capacitor Expert By Day, Enginerd by night.  ||  Personal Blog: www.baldengineer.com  || Electronics Tutorials for Beginners:  www.addohms.c

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I know that. I was using it to read the port registers. We're aiming for speed since a radiation hit can be hard to detect without a fast clock speed. So, I was using bitRead() to read from the pins instead of digitalRead(). But, I have tried on multiple pins and bitRead() does not seem to be working. Or, I am not using it correctly. That is probably more likely.

EDIT: I just found what I was doing wrong. I was accidentally accessing the wrong register. I won't forget that again!
« Last Edit: May 11, 2012, 05:21:18 pm by sleija » Logged

Pages: [1]   Go Up
Jump to: