Arduinoはコマンドの実行が多すぎると消耗しますか?


12

馬鹿げた質問ならすみませんが、答えが見つかりませんでした。

コードが軽く、あまり多くの操作を実行する必要がない場合、Arduino(または一般的に他のマイクロコントローラー)が満足するかどうか、しばらく疑問に思っていました。ifs、ループ、および複雑な計算が多すぎるコードは、LEDを点滅させるコードよりも早くArduinoを使い果たしますか?


リンクされた質問も参照してください
ジェームズ・ウォルドビー-jwpat7

回答:


20

いいえ、コードはMCUを「消耗」させません。一般に、何をしていても、ほぼ同じレベルのアクティビティが実行されます。でもdelay()それは「アイドリング」だながら、多くの作業を行います。

CPUの動作を少なくするコマンドがあります-IDLEまたはSLEEPモードにしますが、これらはMCUの「摩耗」を減らすのではなく、電力を節約するために使用されます。

もちろん、寿命が限られている特定のものがあり、それらを限られた時間しか使用できません-EEPROMへの書き込みやフラッシュメモリへの書き込みなど-あなたはそれらを常にしたくありません。それ以外は、いや、あなたが何をしていようと、MCUを消耗させません。


2
しかし、半導体はすべて老いていますよね?ホットキャリア注入とバイアス温度の不安定性は、私が覚えているメカニズムです。もちろん、何年もかかります。
MV。

5
@MV。はい。ただし、マイクロコントローラーで実行しても、実際には影響はありません。何をしていても、CPUを(ほぼ)同じレベルで実行しています。あなたはすべての(ほとんど)すべての時間を使用しています。
マジェンコ

1
コードは間接的に発生する熱に影響しませんか?高温のコンポーネントはより早く摩耗する可能性があります。
マスト

3
ほんの少しだけ。「何もしない」場合でも、一生懸命働いて処理しています。
マジェンコ

お返事ありがとうございます。これで、私は好きなだけ複雑になり、コードを書くことができ、Arduinoの寿命について心配する必要はありません!しかし、外部コンポーネントと絶えずやり取りする場合もありますか?センサーの読み取り、SPI通信など?
ahmadx87

6

そうではありません。まあ、それを20年のように実行すると、徐々に摩耗する可能性があります... 少なくともコードの複雑さには依存しませんが、同じメモリセクションで実行される書き込み操作の数に依存します。さらに、摩耗するとレンガになってしまい、LEDを点滅させるような単純なコードにはなりません。

Arduino(Uno)には3つのメモリパーツがあります。SRAM、FLASH、およびEEPROM。SRAMは、論理トランジスタゲートに似ています。変数を保存することで消耗しません。フラッシュとEEPROMはフローティングゲートで構成されています。新しいデータを書き込むと、徐々に摩耗します。Atemlマイクロコントローラのデータシートから、それは述べています:

フラッシュメモリの耐久性は、少なくとも10,000回の書き込み/消去サイクルです。(8.2章から)

EEPROMには、少なくとも100,000回の書き込み/消去サイクルの耐久性があります。(8.4章から)

ただし、フラッシュメモリはコードを実行するためのスペースです。Arduinoの実行中は書き込み操作は行われません。新しいコードをアップロードするときのみ、フラッシュメモリを書き込みます。そのため、コードを少なくとも10,000回アップロードすると劣化します。

本当に必要な場合は、通常Arduinoがオフになっているときに変数データを保持する目的で、フラッシュメモリを自己再プログラムする特別なコードを作成できます。この種のプログラムを作成すると、FLASHメモリには書き込み耐久性があまりないため、ゆっくりと摩耗します。Arduinoがオフになっていてもデータを保持したい場合は、寿命がずっと長いEEPROMを使用することをお勧めします。

まとめると、コードの実行ではなく、FLASHまたはEEPROMメモリの再書き込みによって消耗します。


6

愛好家の場合:

生命を制限する唯一のソフトウェア関連の問題は、プログラム内からできるだけ早くフラッシュメモリに書き込むことです。しかし、電池交換などのイベントに耐える必要のある変数を使用するプログラムはほとんどありません。

寿命を制限する唯一のハードウェア関連の問題は、出力に低抵抗負荷(白熱電球)、誘導負荷(機械式リレーを直接駆動するなど)を2つだけオーバーロードすることです。しかし、問題はソフトウェアだけです。


5

...(または一般的に他のマイクロコントローラー)...

他の答えは素晴らしいですが、1つの小さな例外があります。

強誘電体RAM(FRAM)は、フラッシュとEEPROMの不揮発性、SRAMの書き込み可能性、およびDRAMの密度を組み合わせたメモリ形式です。

ただし、FRAMの読み取り操作はFRAMに格納されているデータを破壊し、書き込み操作はFRAM構造自体を破壊します(データは読み取りによって破壊されるため、毎回書き戻す必要があります)。コードがFRAMにある場合、それを実行するとMCUが時間の経過とともに摩耗します。しかし、FRAMの書き込み耐久性が数百億から数十億であることを考えると、デバイスの寿命中にFRAMが原因でMCUが動作不能になることはほとんどありません。

FRAMを使用するMCUの例には、TIのMSP430FRxx lineが含まれます。


1
一般に、FRAMがある場合、他のメモリはありません。フラッシュさえしません。
マジェンコ

3

おそらくそうではありません... Atmelチップは時間の経過とともに暖かくなる可能性があります(遅延でもこれを防ぐことはできません)が、熱を放出する可能性がある場合、問題は発生しません。しかし、ほとんどの場合、オーバークロックのみが本当に深刻な問題を引き起こす可能性があります。また、Arduinoを完全に閉じたボックスや高温の環境で使用する場合もあります。

それに比べて、多くのコンピューターは電源を切らずに何年も稼働していますが、その意味では、発生した熱を軽減できる限り、Atmel(チップ)は違いはありません。

Atmelsの熱センサーの詳細については、内部温度センサーをご覧ください。


2
Arduinoが遅延を実装する方法は、十分な時間が経過したかどうかを常にチェックすることです。そのため、プログラムを実行したりdelay、同じ処理能力を使用したりできます。
ゲルベン

その部分を更新(削除)します...ありがとう!
ミシェルケイツァー

違いがあります-今日のほとんどのコンピューターには、大量の省電力機能があります。必要のないときには多くのことがオフになり、これはほとんど自動的に行われます。Arduinoには消費電力を削減する方法もありますが、明示的に使用する必要があります。ほとんどの場合、電源がオフになっているものが必要な場合は、learn.sparkfun.com / tutorials / reducing - arduino - power - consumptionを開始するのが最適です。特に、低電力スリープはdelay、CPUを回転させるだけの場合とは異なり、約1,000倍の電力消費を削減します。もちろん、これにはコストがかかります:)
ルアーン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.