1

我有一个 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
4

2 回答 2

1

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

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

于 2017-07-10T15:51:49.177 回答
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 脚本中没有发生任何大规模计算。对于树莓派来说,这也是非常过分的,但那是完全不同的野兽。

于 2017-07-10T15:12:38.600 回答