Arduino Due, getting hot

I searched and read a bunch of posts about this, trying to understand if what is going is "normal" and not will not shorten the SAM3X chip lifespan.

The datasheet says the processor can operate at temps up to 100C. Which is about what I am measuring. I'm getting about 95C after my Due runs for an hour+.

Gluing a heatsink on is my 1st instinct just wondering this is normal operation in the 1st place.

Basically, my code runs 2 interrupt timers on a frequency of 2800us for one and 100ms for the other for about 99% of the time (until commanded to increase their frequency). These are used to pulse stepper motors.

The main "loop" calls functions that poll about 10 pins and do some bitwise operations (masking) to check if certain buttons are pushed, debouncing etc..... but there is nothing crazy going on in those functions... like floating point math etc...

One thing I tried was I threw in a 100ms delay in the main loop to slow down the polling (a hack for testing). This managed to drop the temp to about 75C.... adding a little heat sink (thermal paste only, not epoxied) I had laying around dropped it to about 70C

Still seems pretty warm, especially for what I am doing.

So a totally subjective assessment of being "too warm" on my part, curious what other peoples thoughts are.

Should I be concerned? Add more thermal dissipation?

Also, trying to find some code where I can poll the chip directly to get the temp.

Thanks!

I think that we need to see a schematic of the project showing all components and power supplies.

The MCU chip may be fried. It is a common problem. See this post.

Hmmm... I'll dig into the latch up thing a bit but a cursory search says it happens due to some rouge voltage being applied to the pins in exceeds of ~3V.

I'm running 2 DRV8825 chips (break out boards from Polau) to run the motors. There's never been any input voltage to the board - at least from anything obvious from an external source.

I use push buttons to command the motors to speed up or slow down. To do that and avoid floating pins, I set the pins logic high then the buttons connect to ground when pushed. When logic LOW is detected, I command the motors to increase their speed (decrease the step intervals).

Everything seems to be running fine other than this hot issue. Is there anyway to detect if this "latchup" condition is occuring?

I'll dig around somemore, appreciate any insight.

I set the pins logic high then the buttons connect to ground when pushed.

That will destroy an output pin immediately, unless you have a current limiting resistor in series with the switch. Use INPUT_PULLUP instead.

Here are some ideas for connecting buttons to Arduinos:

Note that for a DUE, you connect a push button to 3.3V (not 5V).

I kind of get a switched output pin to ground with no resistance would fry it. But in my case, my switches are only inputs. I set them high then a switch(s) connects them to ground. The switches are normally open.... so in this "hot state" there are no switches closed (but one of the motors is running).

So I set the switches up like this:
pinMode(34, INPUT);

digitalWrite(34, HIGH);

Then when the button is pressed, it connects it to ground. Just like your example of S3 except I didn't use "INPUT_PULLUP".

I forgot, I lied, I do have some output pins. I have a few pins set to constant HIGH output that connect to the sleep and reset pins on the DRV8825 and of course, the step and dir pins are output except they are intermittently high.

I have no resistors or diodes from the output pins to the input pins on the DRV8825 board. I presume the chip/board have internal resistors.

I did try pulling all connections to the board. And with my code running on there still, it still gets pretty hot around 80C after 5 minutes or so.

If I upload a "blank" completely empty sketch, it gets to about 70C in 5 minutes.

I presume this is abnormal operation :-).

I can't fathom how I got some kind of voltage into the due board pins. It's a brand new board and the only thing that's ever been connected to it is the DRV8825 board(s) and those switches.

There is a hefty 35VDC that feeds the VMOT and GRD inputs on the DRV8825 boards but I've extraordinarily careful about completely isolating that "side" of it. The filter caps across it's input exceed recommended. They are completely separate power supplies feeding the board and feeding the 35V DRV8825 boards.... they share a common ground though.

I should note everything is actually working just fine... except the chip is roasting :-).

But I guess it's fried... or arrived fried. It is a "knock off" due board and not an official one.

pinMode(34, INPUT);
digitalWrite(34, HIGH);

Don't do that.

When a digital pin is declared as an output you set it high or low with digitalwrite(), plus you can always read the pin state with digitalRead().
When a digital pin is declared as an input, you can't digitalwrite() to that pin.

Ok, that makes sense :-). I got what I did from an example from somewhere cause I knew I needed to avoid having those pins float....

Did that smoke the board you think?

Did that smoke the board you think?

I don't think so, there must be something else that goes wrong with your wiring.

Some rules to remember:

  • Keep digital outputs to deliver command signals to actuators, power the actuators with some other power supply,

  • The DUE is only compliant with 3.3V inputs (in fact within the range 0V --- 3.3V),

  • Read the table that gives the maximum current that can be sinked/drawn for a given pin

  • Be extremely careful with the current you can get from the 2 DAC pins

.......

How are you powering the Due?

ard_newbie:
pinMode(34, INPUT);
digitalWrite(34, HIGH);

Don't do that.

On AVR boards, those two statements are equivalent to pinMode(34, INPUT_PULLUP) and was the way to do it on ancient versions of the IDE.

I do not know how this translates over to non AVR boards like the DUE.

Stoopalini:
How are you powering the Due?

Generally, I let the USB programmer port power it. But I also have a 9V power source I plug into the barrel connector when in "stand alone".

Or if this is what you are driving at, I've never connected any power source to any of the pins directly to try and power it :-).

blackhole2112:
Generally, I let the USB programmer port power it. But I also have a 9V power source I plug into the barrel connector when in "stand alone".

Or if this is what you are driving at, I've never connected any power source to any of the pins directly to try and power it :-).

I have found when using the barrel jack, the internal voltage converter gets really hot. That may be what is causing it

Stoopalini:
I have found when using the barrel jack, the internal voltage converter gets really hot. That may be what is causing it

Good thought but in this case, it gets this hot when running off USB power.