【问题标题】:Raspberry Pi - Bash script causing overheatingRaspberry Pi - 导致过热的 Bash 脚本
【发布时间】:2017-07-10 15:08:44
【问题描述】:

我有一个 Bash 脚本(见下文),它通过 GPIO 引脚控制继电器。它工作正常,但我注意到 Pi 的 CPU 变得非常热 - 运行时高达 83C 左右,而 Pi 空闲时的温度约为 40C。

我查看了 CPU 使用率,并且一直运行的脚本使用了 16% 的 CPU。

有人知道为什么会发生这种过热吗?

谢谢。

    #!/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

【问题讨论】:

  • 您正在运行一个无限循环,只是偶尔暂停一下。这不可避免地会导致 CPU 以尽可能快的速度运行!

标签: bash raspberry-pi cpu raspberry-pi3 overheating


【解决方案1】:

我在想两件事。您正在运行比您需要的更多的循环,因为您似乎希望每 30 秒打开一个继电器半秒。您可以执行以下操作让整个循环睡眠 1 秒

#!/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

我想到的另一件事是:

您正在检查一堆最有可能在继电器电路中消耗过多电流。你有与继电器串联的限流电阻吗?这是我要检查的第一件事,因为您的 bash 脚本中没有发生任何大规模计算。这对于 Rasperry Pi 来说也太过分了,但那是完全不同的野兽。

【讨论】:

    【解决方案2】:

    GPIO 引脚的额定电流仅为几毫安。在没有晶体管或达林顿升压的情况下,不足以操作大多数继电器,具体取决于继电器类型。如果选择正确,正确偏置晶体管将限制来自 GPIO 引脚的电流,并提供足够的电流来操作继电器。如果没有这种风险,您的 Pi 可能会这样做。然后是电子堆栈交换;)

    正如其他人所指出的,你处于一个紧密的循环中。

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      相关资源
      最近更新 更多