2017-07-10 14 views
1

GPIOピンを介してリレーを制御するBashスクリプト(下記参照)があります。それはうまく動作しますが、私はPiのCPUが非常に熱くなっていることに気付きました - 実行時には83Cまで、Piのアイドル状態では約40℃から上昇します。Raspberry Pi - Bashスクリプトが過熱の原因となる

私はCPU使用率を調べており、常に実行されるスクリプトはCPUの16%を使用します。

誰もこの過熱が起こっている理由を知りましたか?

ありがとうございました。

#!/bin/bash 

    while true; do 
    s=$(date +%S) 

    if [ $s -eq 58 -o $s -eq 28 ]; then 
    sleep 1.9 

    echo "1" > /sys/class/gpio/gpio6/value 
    sleep 0.5 
    echo "0" > /sys/class/gpio/gpio6/value 
    sleep 1 
    fi 

    done 
+2

あなたは無限ループを実行しています。毎回頻繁に停止するだけです。これは必然的にCPUを可能な限り速く動かすことになります。 –

答えて

1

私が考えているのは2つあります。あなたは30秒ごとに0.5秒間リレーをオンにしたいと思われるので、必要以上に多くのループを実行しています。

あなたが最も可能性の高いリレーにあまりにも多くの電流を引き出すの束をチェックしているワン:あなたは私が考えている他のものは以下の通りである二次

#!/bin/bash 

while true; do 
s=$(date +%S) 

if [ $s -eq 58 -o $s -eq 28 ]; then 
sleep 1.9 

echo "1" > /sys/class/gpio/gpio6/value 
sleep 0.5 
echo "0" > /sys/class/gpio/gpio6/value 
fi 

sleep 1 

done 

をやってループ全体1を眠ることができ回路。リレーと直列に電流制限抵抗がありますか?これは、あなたがbashスクリプトで大規模な計算をしていないので、私がチェックする最初のことです。これはまた、Rasperry Piにとって非常に残酷ですが、それはまったく別の獣です。

1

GPIOピンの定格はわずか数ミリアンペアです。リレータイプによっては、トランジスタまたはダーリントンからのブーストなしでほとんどのリレーを動作させるには十分ではありません。適切にバイアスされていると、GPIOピンからの電流が制限され、リレーを動作させるのに十分な電流が供給されます。このリスクがなければ、おそらくパイはこれをやっています。そして、それはElectronics Stack Exchangeにあります;)

そして他の人が指摘したように、あなたはタイトなループにいます。