Go Down

Topic: Arduino unresponsive at cold temperatures  (Read 150 times) previous topic - next topic

cycling4life

Hi everyone. I build a small project with LED strips on a bicycle helmet. I tested the code multiple times before I assembled everything. And so far so good. No errors, no delays, everything was running well.  However, when the temperature outside is too low (5 degree Celsius or less), the arduino freezes and does not respond anymore. It doesn't help to press the reset button or to off power the device. A watchdog timer that I recently added is also not working, which probably means that the arduino is completely stuck. When this happens, the LED pattern that is usually shown stops moving and freezes too. Once I am back inside for 10 minutes or longer everything is running smoothly again. Has anyone observed this before or experience with this issue?


As far as I read from the manuals, all electronics should theoretically be fine down to -40 degree Celsius. My device is battery powered and I initially thought that the four rechargeable AA batteries are not delivering enough current. I switched to a 18650 Li-Ion cell and limited the current draw for the LED strips but the same thing happens again during cold weather. The project setup is a 18650 cell connected to a TP4056 battery charge/discharge regulator, which is linked to an MT3608 DC boost converter that supplies 5V to an Arduino nano v3.1. An MPU6050 is connected to the nano for motion-controlled changes of the LED pattern. Since this is only temporary during cold weather I assume that there is some issue with one of the electronics that I am using or a problem with running batteries at low temperatures.

MorganS

I run Arduinos colder than most people. -76C is the lowest outside temperature I've seen and I've had no problems with any of the hardware. I don't think I've got the actual Arduino that cold because it gives off enough waste heat to heat itself to -20C or above.

Batteries are usually the issue. Lithium batteries have a severe drop in performance about -10C. If they are above freezing  then battery life is reduced by cold but not badly.

My LED strip project is an outdoor street lamp. It snows here, so it's colder than your reported temperature. No problems with that one, even though I'm using a 3.3V ESP32 to send the data with no voltage level conversion for the data.

I would look closely at the connection to the LED strip. Maybe you just have a "cold" solder joint?
"The problem is in the code you didn't post."

cycling4life

Thank you MorganS. Wow! Minus 76C is crazy cold! Are you using batteries or the main supply for your street lamp? Maybe battery performance is key. I need to look into this again and maybe double the battery power. I thought that the DC boost converter would compensate for a voltage drop and the TP4056 should cut off power if it drops too low.

I am not sure about the LED wires. The arduino runs even without LED strips attached or temporarily disconnected. Can a loose connection really cause the arduino to freeze?

Do you know if I could see a voltage drop during cold weather without anything attached to the battery or would I need current draw to see the difference? I will have to work on how I am going to monitor the performance. Maybe I could place it into the fridge and check the battery voltage readouts on my PC till it hangs up.

Idahowalker

In the freezer. Batteries outside, the freezer, Arduino inside. Failure? If not swap places.

MorganS

A feeezer is great for testing cold-weather performance.

The streetlamp is mains powered.

Yes, you would expect a boost converter to offset any voltage drop from the battery. But maybe that is the component which prefers a tropical climate?
"The problem is in the code you didn't post."

cycling4life

That's a great idea Idahowalker. I will wire it up and run some tests with my freezer. That way I should see which component fails the test.

The DC boost converter has the same temperature rating as the arduino nano. -40C to +80C according to the manual.

chopsuwe

It's not just a voltage drop when a battery gets cold. The entire chemical reaction slows down which effectively increases the battery's internal resistance. Boosting the voltage doesn't help as that increases the current draw. Using higher amp hour batteries (i.e. more in parallel) should help. This all assumes the batteries are the problem.

krupski

Hi everyone. I build a small project with LED strips on a bicycle helmet. I tested the code multiple times before I assembled everything. And so far so good. No errors, no delays, everything was running well.  However, when the temperature outside is too low (5 degree Celsius or less), the arduino freezes and does not respond anymore. It doesn't help to press the reset button or to off power the device. A watchdog timer that I recently added is also not working, which probably means that the arduino is completely stuck. When this happens, the LED pattern that is usually shown stops moving and freezes too. Once I am back inside for 10 minutes or longer everything is running smoothly again. Has anyone observed this before or experience with this issue?


As far as I read from the manuals, all electronics should theoretically be fine down to -40 degree Celsius. My device is battery powered and I initially thought that the four rechargeable AA batteries are not delivering enough current. I switched to a 18650 Li-Ion cell and limited the current draw for the LED strips but the same thing happens again during cold weather. The project setup is a 18650 cell connected to a TP4056 battery charge/discharge regulator, which is linked to an MT3608 DC boost converter that supplies 5V to an Arduino nano v3.1. An MPU6050 is connected to the nano for motion-controlled changes of the LED pattern. Since this is only temporary during cold weather I assume that there is some issue with one of the electronics that I am using or a problem with running batteries at low temperatures.
Lithium cells work VERY well in the cold - I am sure that is not your problem. Alkaline and (shudder) carbon zinc die out in the cold, but lithium does not.

You may be getting condensation from the cold which is messing up your crystal oscillator / resonator. By default Arduino boards are set to "Low Power" oscillator mode which makes the clock source very non-robust.

Don't know which Arduino you're using, but if yours (i.e. the MCU) has the "full swing" option for the oscillator, try enabling it.

TYPICALLY this means changing the LOW FUSE from 0xFF to 0xF7 (or, if it's not 0xFF, then change it so that bit 3 is low). Check the datasheet for your particular board.

Another way to test this theory without changing anything is to take the device outside and let it fully cool down so that any condensation has time to evaporate away (or ice to sublimate away).

If, after a full chilldown the board works again, that's your problem.

Hope this helps.
Gentlemen may prefer Blondes, but Real Men prefer Redheads!

Go Up