Spisu treści:

Precyzyjna kontrola temperatury na Raspberry Pi 4: 3 kroki
Precyzyjna kontrola temperatury na Raspberry Pi 4: 3 kroki

Wideo: Precyzyjna kontrola temperatury na Raspberry Pi 4: 3 kroki

Wideo: Precyzyjna kontrola temperatury na Raspberry Pi 4: 3 kroki
Wideo: Температура и влажность на Raspberry pi4 2024, Listopad
Anonim
Precyzyjna kontrola temperatury na Raspberry Pi 4
Precyzyjna kontrola temperatury na Raspberry Pi 4

Podkładka pod wentylator Pimoroni to świetne rozwiązanie do obniżania temperatury Twojego Pi, gdy jest gorące. Twórcy dostarczają nawet oprogramowanie, które uruchamia wentylator, gdy temperatura procesora wzrośnie powyżej pewnego progu (np. 65 stopni). Temperatura szybko spada poniżej dolnego progu i wyłącza wentylator. Jest to świetne, ale powoduje wzrost i spadek temperatury przy umiarkowanych obciążeniach i powoduje słyszalny hałas wentylatora. Ta instrukcja zmniejszy hałas wentylatora, jednocześnie ustalając temperaturę procesora do określonej wartości za pomocą czegoś zwanego kontrolerem PID. Wyższe progi (np. 65 stopni) będą skutkować znacznie cichszym wentylatorem, podczas gdy niższe progi (np. 50 stopni) będą skutkować głośniejszym wentylatorem, ale lepszą kontrolą temperatury.

Powyższy przykład pokazuje moje wyniki z uruchomienia regulatora PID i zmiany docelowej temperatury co 500 sekund. Dokładność wynosi +/- 1 stopień z pewnym przeregulowaniem przy nagłych zmianach temperatury.

Co ważne, test ten był wykonywany pod tym samym obciążeniem przez łączny czas testu (oglądanie BBC iPlayer).

Kieszonkowe dzieci

  • Raspberry Pi 4
  • Pimoroni Fan Shim

Krok 1: Skonfiguruj wentylator

Skonfiguruj swój wentylator
Skonfiguruj swój wentylator

Pierwszym krokiem jest skonfigurowanie wentylatora. Samouczek Pimorini jest świetny!

Następnie otwórz terminal na swoim Pi (ctrl alt t)

I zainstaluj kod dostarczony przez Pimoroni

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

Krok 2: Utwórz regulator PI(D)

Utwórz regulator PI(D)
Utwórz regulator PI(D)

Regulator proporcjonalno-całkująco różniczkowy (PID) to system używany do sterowania wartością pewnego procesu (temperatura procesora) poprzez manipulowanie pewnym urządzeniem fizycznym (prędkość wentylatora). Możemy manipulować „prędkością” i hałasem wentylatora poprzez jego okresowe włączanie i wyłączanie (modulacja fali impulsowej). Czas, przez jaki jest włączony w danym okresie (np. 1 sekunda) określa, jak szybko i jak głośny jest wentylator (900 ms = głośno i szybko, 100 ms = cicho i wolno). Użyjemy PID do manipulowania prędkością wentylatora, a tym samym do kontrolowania temperatury.

Możemy podzielić użycie PID na liczbę kroków.

  1. Zdecyduj, jaką wartość zmiennej procesowej chcesz osiągnąć (np. temperatura procesora = 55). Nazywa się to twoją wartością zadaną.
  2. Oblicz błąd PID. Jeśli twoja wartość zadana wynosi 55 stopni, a rzeczywista temperatura wynosi 60 stopni, błąd wynosi 5 stopni (temperatura - wartość zadana)
  3. Zmień czas pracy wentylatora proporcjonalnie do błędu (duże błędy powodują duże zmiany prędkości wentylatora, małe błędy powodują małe zmiany prędkości wentylatora).
  4. Dostosuj wentylator proporcjonalnie do przeszłych wartości (Całka/suma wszystkich poprzednich błędów)
  5. Opcjonalnie możesz dostosować prędkość wentylatora na podstawie szybkości zmiany błędu (pochodna), ale nie zrobimy tego tutaj

Teraz, gdy masz już teorię, uruchom poniższy kod w IDE Thonny (lub innym IDE Pythona). Zmień wartość „target” w poniższym kodzie, aby zmienić temperaturę, w której chcesz utrzymać swoje Pi. Ustawiłem warunki „P” i „I” na nieco arbitralne wartości. Możesz je dostosować, jeśli nie działają dla Ciebie. zwiększenie „P” oznacza, że kontroler będzie szybko reagował na nowe błędy (ale może nie być stabilny). Zmiana „I” spowoduje, że sterownik będzie bardziej ważył swoją odpowiedź na przeszłe wartości. Nie próbowałbym czynić tych terminów zbyt dużymi, ponieważ gwałtowna zmiana prędkości wentylatora nie spowoduje gwałtownej zmiany temperatury. Ponadto, jeśli wykonujesz niewiarygodnie ciężką pracę nad swoim Pi, możesz nie osiągnąć pożądanej temperatury (wciąż obowiązują limity wentylatora).

from fanhim importuj FanShim

from time import sleep, time import os import math # Zwraca temperaturę procesora jako ciąg znaków def getCPUtemperature(): res = os.popen('vcgencmd Measure_temp').readline() return(res.replace("temp=", " ").replace("'C\n", "")) fanhim = FanShim() target = 55 # pożądana temperatura (pobaw się tym i zobacz co się stanie) period=1 # okres PWM on=.1 # inicjalizuj na 0 % wypełnienia cyklu off=okres włączenia # inicjalizacja do 0% wypełnienia cyklu P=.01 # proporcjonalny współczynnik wzmocnienia (pobaw się tym i zobacz, co się stanie) intErr=0 # błąd integralny I=.0001 # integralny współczynnik wzmocnienia (pobaw się tym i zobacz, co się stanie) podczas gdy True: # get temperaute temp=int(float(getCPUtemperature())) # oblicz błąd i wygładzić err = temp-target # oblicz błąd całki i ogranicz go intErr=intErr+err if intErr>10: intErr =10 if intErr=period: on=period off=0 else: on=on off = period-on # ustaw minimalny cykl pracy if on<.09: on=.09 else: on=on # PWM na szpilce fanhima if on ==okres: fanhim.set_fan(True) sleep(on) else: fanhim.set_fan(True) s leep(on) fanhim.set_fan(false) spanie(off)

Krok 3: Uruchom skrypt sterujący podczas uruchamiania

Uruchom skrypt sterujący podczas uruchamiania
Uruchom skrypt sterujący podczas uruchamiania

Możesz uruchomić ten skrypt za każdym razem, gdy uruchamiasz swoje pi lub możesz go automatycznie uruchomić po ponownym uruchomieniu. Jest to bardzo proste w crontab.

  1. otwórz terminal
  2. wpisz crontab-e w terminalu
  3. dodaj następujący wiersz kodu do pliku „@reboot python /home/pi/bootScripts/fanControl.py &”
  4. wyjdź i uruchom ponownie

Umieściłem skrypt (fanControl.py) w floderze zwanym bootScripts, ale możesz go umieścić w dowolnym miejscu, po prostu upewnij się, że podałeś poprawną ścieżkę w crontab.

Wszystko gotowe! Teraz twój wentylator będzie kontrolował temperaturę twojego procesora do określonej wartości, jednocześnie minimalizując słyszalny hałas, który wytwarza.

Zalecana: