Show Posts
Pages: 1 ... 73 74 [75] 76 77 ... 91
1111  Forum 2005-2010 (read only) / Interfacing / Re: How much currrent can Pro Mini's regulator supply? on: June 19, 2010, 07:57:14 am
Done some more calculations.  If I assume there's no diode in front of the regulator (and I don't know that there is one) and I take ground current into account (whatever that is... the datasheet references it in its equations) but I assume a best case scenario of running at room temperature, I get a maximum of 108mA continuous from the regulator before it goes into thermal shutdown.

And once again, the ATMega328 itself draws between 30-50mA, so that leaves me with only 58-78mA to play with.  

That's less than half what I oriignally planned to put through the LED array alone.
1112  Forum 2005-2010 (read only) / Interfacing / Re: How much currrent can Pro Mini's regulator supply? on: June 19, 2010, 05:32:16 am
Trying to find ways to solve this in case my calculations are correct.  So far I've only come up with one potential solution.

It turns out using brighter LEDs may not be an option because there don't seem to be any available.  The bargraphs I'm using are rated at 19mcd, and that's as bright as they come.  Same goes for discreet LEDs.  There don't seem to be many green rectangular leds which are brighter than about 10mcd.

The only other option I've come up with is to use a different voltage regulator.  One which can provide the Pro Mini with more current.  Or try running it off an unregulated 4.5v.  Though I don't know how long 3 AA or AAA batteries would be able to prvide sufficient voltage to keep it powered.  I think I calculated recently it could continue to run down to 3.7 volts at 16mhz.

Anyway, even if I use a diffrent voltage reuglator, I'm not sure how much current the Arduino will be able to supply.  

I guess I'll pick up a 7805 when I head out to Radio Shack today though.
1113  Forum 2005-2010 (read only) / Interfacing / How much currrent can Pro Mini's regulator supply? on: June 18, 2010, 04:12:31 pm
Hey guys,

I need to know how much current the 5v Pro Mini's regulator can supply.  I think I may have made a miscalculation when I was originally determining how much current I had available to power one of my circuits.

Because I'm just about to assemble the circuit, I decided to redo my current calculations to make sure I was running everything within suitable parameters.  However, the numbers I've come up with are way lower than what I originally calculated.

Here's my current requirements:

1) The microcontroller itself, from what information I could find on the forums, seems to draw between 27-50mA.

2) I have two green leds which I want to power with 20mA becuase they're kinda dim.  They're wired in series, so the total current draw for the two would be 20mA.

3) I have a piezo speaker.  I've put a 1000ohm resistor on this to ensure that it only draws 5mA.  Though it may be drawing much less than this.

4) I have a red power led, and a green mode LED on illuminated pushbuttons.  Each of these will draw 10mA.

5) Lastly, I have a multiplexed 8x8 array of LEDs.  I'd planned to allocate 160mA to this array.  (20mA per LED per row, one row lit at a time, current sunk by darlington array connected to GND.)  

The problem is that last one.  It now looks like I may not have enough current to spare to run the array without making the LEDs really dim.

This, I've heard, is the datasheet for the Pro Mini's voltage regulator:

With a 9v input, a 5v output, and a 0.7 voltage drop across a diode I believe may be in front of it, the regulator needs to drop 3.3v.

And according to the datasheet, the power dissipation can be calculated as follows:
Pd = (125 degrees C - 40 degrees C) / 220 degrees C/W
Which gives: Pd = 386mW

(I did the calculation based on an ambient temperature of 105 degrees Farenheit.  I figure nobody'll be using the prop on a day which is hotter than 90 or so.  Also, it's based on the minumum heat sink.)

So, if we take 386mW, and we divide it by the 3.3 volt drop across the regulator, we arrive at 116mA as the maximum current the regulator can supply if the ambient temperature is 40 degrees celsius.

Even if I assume the ambient temperature is less than that, say, 20 degrees celsius or 70 degrees farenheit, the picture doesn't get a whole lot better.

So... 116mA.  That's not much.  Subtracting the atmega's current requirements from that leaves me with 66mA.  20mA for the two green leds, and 5mA for the piezo eats up another 25mA leaving me with 41mA.  And supplying 10mA to each of the illuminated pushbuttons leaves me with only 21mA.

21mA to drive an array of 64 LEDs.  If that's all I've really got, I might as well have not even included the darlington array to sink the current.  And I've got a big problem because the bargraphs I planned to use for the array only have 16mcd LEDs.  

So what do you think?  Are my calculations correct?  When I originally designed this thing I thought the Pro Mini reuglator could handle 335mA, but now I wonder if there wasn't a mixup somewhere along the way, and what was actually meant was 335mW.

If I can't get more current out of this thing, my only option may be to buy 64 rectangular LEDs which are way brighter than the ones in these arrays.
1114  Forum 2005-2010 (read only) / Interfacing / Re: Pro-Mini with external regulator? on: June 30, 2010, 04:34:47 am
Because it says maximum output.
It says DC input 5V up to 12V.
That does not mean you can have 150mA output when you feed it with 12V input. For any input voltage the current will be limited by the power dissipation. The page doesn't say that all 150mA is available for other uses.

I reread what you said, and apparently I didn't understand the first time.

So what you're saying is the voltage you input to the raw pin affects the output capability.  So if I input 9v, I can use fewer mA before the regulator overheats.

Okay.  I can agree with that.  That's how I arrived at my numbers.  By calcuating how much 9v would overheat the regulator.  I guess I just forgot what I did since I did it a week ago. :-)

But in that case, I guess I did get my numbers right.  So the regulator can't supply more than 100mA... when powering it with 9v.  And I do need an external regulator.


And I see you just confirmed that.  Oh well.  I got my hopes up. :-)

External regulator it is then.
1115  Forum 2005-2010 (read only) / Interfacing / Re: Pro-Mini with external regulator? on: June 30, 2010, 04:24:32 am
From the data sheet of the regulator
A 1[ch956]F capacitor should be placed from IN to GND if there is more than 10 inches of wire between the input and the ac filter capacitor or if a battery is used as the input.

Yes, but that's the regulator built into the Pro Mini, not the LM317 which I also posted a datasheet for which seems to imply they're optional:

Ci is required when regulator is located an appreciable distance from power supply filter.
Co is not needed for stability, however, it does improve transient response.

But if you think one is necessary, I'll include one... if it turns out I need the external regulator at all.  Please verify the onboard regulators ability to supply current to the output pins if you would.  

If I don't need to use an external regulator to get 150mA from the pins, that would be great.
1116  Forum 2005-2010 (read only) / Interfacing / Re: Pro-Mini with external regulator? on: June 30, 2010, 04:16:40 am
I posted the calculations in this earlier thread:

I read your tutorials on power and I think I did the calculations right, but I'm not certain.
1117  Forum 2005-2010 (read only) / Interfacing / Re: Pro-Mini with external regulator? on: June 30, 2010, 03:56:30 am
Another question I have is:

Why does the Sparkfun page say the Pro Mini can output 150mA when according to my calculations it couldn't do anywhere near that?

As I already mentioned, using the datasheet for the voltage regulator it has onboard:

I calculated it could handle a little over 100mA.  That's before it has to power the ATMega with 30-50mA.  

So shouldn't their page list the output in the range of 50-70mA?  Or are my calculations way off?  If it can output 150mA then there's no need for an external regulator after all.
1118  Forum 2005-2010 (read only) / Interfacing / Re: Pro-Mini with external regulator? on: June 30, 2010, 03:19:02 am
No you can't you need it to drop the input impedance which is even higher on a battery.

Why do I need to drop the impedance?  What function does that serve?  If it's to stablilize it, I thought that wasn't strictly necessary in all circumstances?  The datasheet for the LM317 I have seems to imply they're optional.  (Though I have no datasheet for the 7805 because it came from Radio Shack.)

I figured I'd try it without them and if it ran stable then I should be fine without them.  If not, I'd know fairly quickly and could solder them on.  But is it your opinion that there's absolutely no (or very little) chance the 7805 will run stable without them?

Can the Pro Mini handle 200mA, seeing as it was only designed with a regulator that could put out 100mA?

That seems to imply you don't know anything about ohms law.
The pro mini will not take more current than it needs if fed the correct voltage. The absolute limits for the chip still apply, that is don't source 9or sink) more than 200mA in total. Also see the data sheet for cumulative limits on individual ports.

No, you misunderstand.  What I want to know is can the traces on the board and the other components on it handle 200mA?  I assume they can, but I don't like to assume. :-)

(Also, I'm just trying to cover all the bases.  I don't know what I don't know about how circuits function.)
1119  Forum 2005-2010 (read only) / Interfacing / Pro-Mini with external regulator? on: June 30, 2010, 01:45:50 am
Hey guys,

About a week ago, I discovered I had serious issue with one of my PCB's... I had grossly overestimated how much current the Arduino Pro Mini's voltage regulator could supply.  

I'd believed the onboard voltage regulator could supply up to 450mA.  But if my latest calculations are correct, it can actually only supply around 100mA.

That means my circuit, which was designed in such a way that it required the regulator to supply 335mA needs way more power than the onboard regulator can supply.

Now, thankfully, I made another mistake in my original calculations, and I specified that the ATmega itself would draw 120mA.  That brings the actual total for the original circuit down to 265mA.

I was also running some illuminated touch switches in my original design off the 5v pin, with each drawing 20mA.  If I reduce each of those to 10mA, now I've got:

* 20mA from +5v pin for illuminated touch switches.
* 30-50mA to power the microcontroller.
* 175mA from the Arduino's pins to run an 8x8 led matrix, piezo speaker, and a couple leds wired in series.

That brings the total down to 240mA, 200-220mA of which will actually need to flow through the Arduino's circuitry.

Getting a new PCB made isn't an option because I'm out of time, so I've had to figure out a way to modify the ones I had made to solve this dilemma.  

Here's my circuit:

The solution I've come up with is this:
1) Cut the trace from PwerSw to the Raw pin on the Arduino.
2) Run a jumper from the +9v PTH on the right side of the board to the Vcc PTH above the ULN2803A.
3) Wire a 7805 5v regulator to my 9v battery pack, and wire its ground and output to one of the 9v connectors.
4) Add a 0.1uf decoupling capacitor across the other 9v connector, and a 47uf capacitor on C1 if need be.
5) I think I can probably get away without a capacitor on the input of the 7805 since I'm running off batteries, but if I need to stick one on there that'll be easy enough.

Now my question to you is this... will this work?  Can the Pro Mini handle 200mA, seeing as it was only designed with a regulator that could put out 100mA?

Also, if I'm not mistaken the Arduino's Vcc and Gnd pins can only handle 200mA each.  I assume that includes what the processor needs as well?  In which case I need to subtract 50mA for that, leaving me with, at most, 150mA to source from the Arduino's pins?

I guess if that's the case, it'll have to do.  At least then I might have 100mA with which to power my array.
1120  Forum 2005-2010 (read only) / Interfacing / Re: Pins, Wire Harnesses and Plugs on: June 27, 2010, 02:25:09 pm
Go here:

Get some wires with pre-crimped terminals, some crimp connector housings, some male or female headers, and if you wish, do like I did and snip the wires in two, and strip one end.

They also have some connectors with two conductors that already have tinned leads:  

These ribbon cables from Molex also come in handy if you need a short but permanent connection with a lot of conductors:

Digikey also has a flat flexible ribbon cable called Amp by Tyco:

You can get those with female pin strip connectors on them if you wish.  I'm not sure what the metal tipped ends are designed for, but they look like they could be soldered onto a board.
1121  Forum 2005-2010 (read only) / Interfacing / Decoupling capacitors on: June 26, 2010, 11:11:09 am
Hey guys,

I've got a few questions about decoupling capacitors:

I know I'm supposed to place .1uf decoupling capacitors on my ICs as close to the pins as possible.  

But what if my Vcc and Gnd pins aren't near eachother or are on opposite sides of the IC?  Which pin should I place the decoupling capacitor closer to?

Also, what do I do if I have one IC which has multiple Vccs or Gnds?

The AtMega328 has one Vcc, one AVcc, and two grounds.  So what do I do there?  Use one cap from Vcc to one ground, and one from AVcc to the other ground, or two caps from Vcc, one to each ground, and two from AVcc one to each ground?  Do I even need all those caps for the AtMega?  I don't recall seeing them on any Arduino boards.  But perhaps they just assume you'll add them yourself?

And the TPIC6B595 shift register has three Gnds and one Vcc.  So would I put three caps on that one Vcc pin to each Gnd?  Or tie the Gnds together and put one Cap from Vcc to that maybe?

And the 4051 mutiplexer has Vcc, Vee, and Gnd.  Do I treat Vee as another Gnd for the purpouses of decoupling?  So two caps off Vcc again?  Or tie Vee and Gnd together and use one?

If I had to guess, I'd say tying the Vccs and Gnds together first, and then sticking a capacitor between them is the correct solution, but I do recall someone saying "one decoupling cap per vcc gnd pair."  
However I don't know if they were talking about pairs per chip, or if he meant pairs on seperate chips.
1122  Forum 2005-2010 (read only) / Interfacing / Re: Reading high impedance analog inputs quickly on: June 27, 2010, 11:27:14 am
But that's the trick.  You're not pulling against 10K.

I've got the 1M pulldowns and the touch switches on A0 and A1  I've got the 10K pulldown on A2.  

And I read the pins like so:

a0 = analogRead(0);
a1 = analogRead(1);

So the 10K is connected only for a moment... Which because it is relatively low impedance, is long enough for it to pull the ADC down to 0v.

Then I connect the pin with the switch and the 1M pulldown.  And the 1M pulldown is enough to keep the pin at 0V.  

Until you touch the switch that is.

Once you do that, you're now effectively connecting a pullup whose reisstance is much less than 1M.  

How much less?  I'm not sure.  But it seems to work.  

Generally with a dry finger I can get readings of around 256 if I apply pressure.  I think that means I'm 3/4 of the way to 0V, which would put the resistance of my finger around 750K.  

Anyway, the theory of operation here is that my finger can do a better job pulling up the ADC than the 1M pulldown can do pulling it down, and that 1M pulldown may have a long way to go to get to 0V.  Also, by doing this, I'm starting at a solid base of 0V, and the only way to go is up, and if I'm not touching the switch it shouldn't rise at all with that 1M pulldown holding it down.

Here's my actual code btw:

const int analogLeftTouch = 0;
const int analogRightTouch = 1;
const int analogLeftServoTrim = 4;
const int analogRightServoTrim = 5;

const int analogDelay = 1; // The number of milliseconds to pause between analog readings.

analogRead(2); // 10K pulldown
tmp = analogRead(analogLeftTouch); delay(analogDelay); a0 = (a0 + analogRead(analogLeftTouch)) / 2;
tmp = analogRead(analogRightTouch); delay(analogDelay); a1 = (a1 + analogRead(analogRightTouch)) / 2;    
a4 = analogRead(analogLeftServoTrim);
a5 = analogRead(analogRightServoTrim);

As you can see, I'm doing a little more than simply reading the touch switches after reading the pin with the 10K pulldown.  I'm also doing a running average, and switching to the pin then waiting for 1ms before reading it.

The above isn't necessary to get good values though.  I'm not even sure if I need the delay, that's just the state the code was in when I went to bed this morning.

But anyway, if you take out the code that reads the pin with the 10K pulldown on it, everything goes pear shaped and the values read from the touch switches end up all over the place.  That is, unless those delays are more like 20-40ms.  But even then, the values are still kinda noisy, and I tried all sorts of schemes to debounce them, including writing a kind of software schmitt trigger to consider the switch on when it rises above a certain value and off when it goes below another.  Nothing worked.

With the above setup however, all I need to do is check to see if the reading I get from the touch switch pins is higher than 8, and they work beautifully.  They're extremely responsive, and they happily stay off when not being touched.  There's a little bouncing if if try to brush the touch switches as lightly as possible, but simply placing a finger between the contacts with little to no pressure gives a solid trigger.
1123  Forum 2005-2010 (read only) / Interfacing / Reading high impedance analog inputs quickly on: June 27, 2010, 03:58:25 am
I've been wracking my brain all night with a problem, and I think I've found a solution, but I thought I'd run it by you.

I have two resistive touch switches in my circuit.  The two analog pins they're connected to are pulled down via 1M resistors, and one of the contacts is connected to +5v.  When you bridge the two contacts with your finger, you pull the analog pins up because your finger has less resistance than the pulldown resistor.

Sounds good on paper, but when first tried doing this, I was getting all kinds of crazy readings.   GrumpyMike explained that the analog pins are multiplexed... that there's only one ADC to read voltages on the microcontroller, and it just switches it between the pins.  And because my pulldown resistor was so large, it couldn't pull the ADC down quickly enough to get a proper reading.  The solution he explained, was to read the pin twice, with a delay between.  The first read would switch the multiplexer to the appropriate pin and allow it time to pull it down.  The second would read the actual value.

The problem is, I can't have my program sitting there doing nothing for 40 milliseconds.  I have other pins I need to update.  I tried using the millisecond timer to perform the same task while still being able to do other stuff, but it worked terribly, and I had no idea why, since I wasn't accessing any of the other analog pins while I was waiting for the pins to discharge.

So I started looking for a hardware solution.  And the solution I came up with after many false starts is deceptively simple:

I connected one analog pin to ground via a 10K pulldown.

Now why would I do this?  

Well, when I ws having problems reading these switches in the first place, GrumpyMike explained to me that the analog pins are all connected to a multiplexer which switches them to a single ADC in the microcontroller.  And the reason I was getting readings that were all over the place was because my 1M pulldowns weren't pulling the ADC's input down fast enough.

The solution he offered to this problem was to add those delays.  Read the pin once, wait for it to settle down, then read it again.  

But I didn't have time for that.  And my attempts to borrow time by switching to the pin, doing stuff, then going back to read it had failed.

So I wondered if there wasn't some way I could pull that input down faster, as if I had 10K resistors on my touch switches?

That's when it occured to me that I could attach the 10K pulldown to a spare analog pin I had.  Then, because internally it was connected to the same thing as the pins my high impedance switches were conneced to, I could simply read it to switch the multiplexer to it briefly, pull the ADC input down to near 0v, and then switch to the pins I wanted to read which could be pulled up faster than they could be pulled down because skin has a lower resistance than the pulldown I'd stuck on the pin.

The results I got from this change were immediate.  Rather than values that were all over the place, I now got very clean readings, even when reading the pins with no delay at all.

As far as I know, what I've done shouldn't harm the Ardunino at all.  It's just a pulldown resistor.  I will need to do more tests to see if I get any better results if I add a small delay or read the ports twice, but the raw numbes I'm getting are so good I don't think I'll need to do much more than a running average to smooth them out a little more.

So what do you think?  Good technique?
1124  Forum 2005-2010 (read only) / Interfacing / Re: Question about standalone atmega328 on: June 26, 2010, 11:27:51 am
I'm no expert on this, but I did get a standalone AtMega up and running using the schematic for the Realt Bare Bones Board:

I used one of the AtMegas with the preburned bootloaders from Sparkfun as I don't have time at the moment to figure out how to burn a bootloader onto a chip myself.

With the above schematic, I was able to add the software reset cap and hook the board up to the SparkFun 5v basic breakout, and it seems to work perfectly, even if I normally run the chip off less than 5v.
1125  Forum 2005-2010 (read only) / Interfacing / Re: Does updating a servos position draw more current? on: June 26, 2010, 02:17:04 pm
If there's no load, and you don't want the library to keep pulsing the servo, just deatch it.

Hm... I guess I could do that when my servo arms are down. They're likely to remain in that position for long periods of time, and the parts they're attached to would be tucked away inside the prop so they couldn't be easily moved by hand.


Gotta check to see if attaching them causes them to twitch or pause though.  Having that happen every time you activate the movement wouldn't be good.
Pages: 1 ... 73 74 [75] 76 77 ... 91