Оглавление:

Точный контроль температуры на Raspberry Pi 4: 3 шага
Точный контроль температуры на Raspberry Pi 4: 3 шага

Видео: Точный контроль температуры на Raspberry Pi 4: 3 шага

Видео: Точный контроль температуры на Raspberry Pi 4: 3 шага
Видео: Raspberry Pi - Что можно сделать? Готовые проекты. Есть ли смысл? Как научиться? 2024, Ноябрь
Anonim
Точный контроль температуры на Raspberry Pi 4
Точный контроль температуры на Raspberry Pi 4

Pimoroni Fan Shim - отличное решение для снижения температуры вашего Pi, когда он нагревается. Производители даже предоставляют программное обеспечение, которое запускает вентилятор, когда температура процессора поднимается выше определенного порога (например, 65 градусов). Температура быстро снижается ниже нижнего порога и отключается вентилятор. Это замечательно, но при умеренных нагрузках температура поднимается и опускается, а вентилятор слышит шум. Эта инструкция снизит шум вентилятора при фиксировании температуры процессора на определенном значении с помощью так называемого ПИД-регулятора. Более высокие пороги (например, 65 градусов) приведут к гораздо более тихому вентилятору, а более низкие пороги (например, 50 градусов) приведут к более громкому вентилятору, но лучшему контролю температуры.

В приведенном выше примере показаны мои результаты запуска ПИД-регулятора и изменения целевой температуры каждые 500 секунд. Точность составляет +/- 1 градус с некоторым выбросом при резких изменениях температуры.

Важно отметить, что этот тест проводился под одной и той же нагрузкой в течение всего времени тестирования (просмотр BBC iPlayer).

Запасы

  • Raspberry Pi 4
  • Пиморони Фан Шим

Шаг 1. Настройте вентилятор

Настройте свой вентилятор
Настройте свой вентилятор

Первый шаг - настроить вентилятор. Учебник Пиморини великолепен!

Затем откройте терминал на своем Pi (ctrl alt t)

И установите код, предоставленный Pimoroni

git clone https://github.com/pimoroni/fanshim-pythoncd fanhim-python sudo./install.sh

Шаг 2: Создайте контроллер PI (D)

Создайте контроллер PI (D)
Создайте контроллер PI (D)

Пропорционально-интегрально-производный (ПИД) контроллер - это система, используемая для управления значением определенного процесса (температура процессора) путем управления каким-либо физическим устройством (скоростью вращения вентилятора). Мы можем управлять «скоростью» и шумом вентилятора, периодически включая и выключая его (импульсная модуляция). Время, в течение которого он включен в определенный период (например, 1 секунда), определяет, насколько быстро и насколько громко вентилятор (900 мс = громко и быстро, 100 мс = тихо и медленно). Мы будем использовать PID, чтобы управлять скоростью вентилятора и, таким образом, контролировать температуру.

Мы можем разделить использование PID на количество шагов.

  1. Определите значение переменной процесса, которое вы хотите достичь (например, температура процессора = 55). Это называется вашей уставкой.
  2. Рассчитайте ошибку PID. Если ваше заданное значение составляет 55 градусов, а фактическая температура составляет 60 градусов, ваша ошибка составляет 5 градусов (Температура - заданное значение).
  3. Измените время включения вентилятора пропорционально ошибке (большие ошибки приводят к большим изменениям скорости вентилятора, небольшие ошибки вызывают небольшие изменения скорости вентилятора).
  4. Отрегулируйте вентилятор пропорционально прошлым значениям (интеграл / сумма всех предыдущих ошибок)
  5. При желании вы можете регулировать скорость вращения вентилятора в зависимости от скорости изменения погрешности (производной), но мы не будем этого делать здесь.

Теперь, когда у вас есть теория, запустите приведенный ниже код в Thonny IDE (или в какой-либо другой среде IDE Python). Измените значение 'target' в приведенном ниже коде, чтобы изменить температуру, на которой вы хотите поддерживать свой Pi. Я установил термины «P» и «I» на несколько произвольные значения. Не стесняйтесь настраивать их, если они вам не подходят. увеличение «P» означает, что контроллер будет быстро реагировать на новые ошибки (но может быть нестабильным). Изменение «I» заставит контроллер больше взвешивать свою реакцию на прошлые значения. Я бы не стал делать эти термины слишком большими, так как быстрое изменение скорости вентилятора не приведет к быстрому изменению температуры. Кроме того, если вы делаете невероятно тяжелую работу на своем Pi, вы можете не достичь желаемой температуры (ограничения вентилятора все еще применяются).

из фансим импорт ФанШим

from time import sleep, time import os import math # Возвращать температуру процессора в виде символьной строки def getCPUtemperature (): res = os.popen ('vcgencmd measure_temp'). readline () return (res.replace ("temp =", " ").replace (" 'C / n "," ")) FanShim = FanShim () target = 55 # желаемая температура (поиграйте с этим и посмотрите, что произойдет) period = 1 # период ШИМ вкл =.1 # инициализировать до 0 % рабочего цикла выключен = период включен # инициализация до 0% рабочего цикла P =.01 # пропорциональный коэффициент усиления (поиграйте с этим и посмотрите, что произойдет) intErr = 0 # интегральная ошибка I =.0001 # интегральный коэффициент усиления (поиграйте с этим и посмотрим, что произойдет) while True: # get temperaute temp = int (float (getCPUtemperature ())) # вычислить ошибку и сгладить err = temp-target # вычислить интегральную ошибку и ограничить ее intErr = intErr + err if intErr> 10: intErr = 10 if intErr = period: on = period off = 0 else: on = on off = period-on # установить минимальный рабочий цикл, если включен <.09: on =.09 else: on = on # ШИМ на выводе шибера вентилятора, если on == period: fanhim.set_fan (True) sleep (on) else: fanhim.set_fan (True) s leep (on) fanhim.set_fan (False) sleep (off)

Шаг 3. Запуск сценария управления при запуске

Запустить сценарий управления при запуске
Запустить сценарий управления при запуске

Вы можете запускать этот скрипт каждый раз, когда запускаете свой пи, или он может автоматически запускаться при перезагрузке. Это очень просто сделать с помощью crontab.

  1. открыть терминал
  2. введите crontab-e в терминал
  3. добавьте следующую строку кода в файл '@reboot python /home/pi/bootScripts/fanControl.py &'
  4. выйти и перезагрузиться

Я поместил скрипт (fanControl.py) во флудер с именем bootScripts, но вы можете поместить его куда угодно, просто убедитесь, что вы указали правильный путь в crontab.

Все сделано! Теперь ваш вентилятор будет регулировать температуру вашего процессора до определенного значения, минимизируя при этом создаваемый им слышимый шум.

Рекомендуемые: