DB7SG

German Amateur Radio Station

Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Home


QTH Wetter


QSL-Card Info


Allerlei


DB7SG -> DMR
DB7SG -> APRS


DB7SG -> eqsl.cc
DB7SG -> qrz.com
DB7SG -> hamqth.com


Impressum
Datenschutz
Kontakt


Locator: JN69na(73)
ITO Zone: 28 | CQ Zone: 14
Lat.: 49.013168
Long.: 13.147963
645m ü. NN

allerlei:raspberry_lueftersteuerung

Raspberry Lüftersteuerung

Vorwort

Immer wieder mal verbaue ich einenRaspberry Pi in ein enges (warmes) Gehäuse. Hier wird eine einfache Lüftersteuerung erläutert, die ab einer bestimmten Boardtemperatur einen Lüfter schaltet. Es werden keinerlei zusätzlichen Bibliotheken verwendet, ein „Raspbian-Lite-Image“ reicht völlig.

Hardware

  • 1x Raspberry Pi (klar), mit installiertem Raspbian-Image
  • 1x NPN-Transistor: BC337-40 800mA (o.ä.)
  • 1x Widerstand: 1kOhm
  • 1x Minilüfter: 5Volt
  • Ein paar Breadboard-Strippen, oder Dupont Stecker, o.ä.

Anschluss
5V Raspberry (USB o. GPIO-Pin) → Lüfter (+)
GND Raspberry (GPIO-Pin) → Transistoremitter
Transistorcollector → Lüfter (-)
GPIOx (3,3V) → über Widerstand → Transistorbasis

<font inherit/inherit;;#95a5a6;;inherit>Die 5 Volt können entweder von der GPIO-Leiste oder auch von einem USB-Port gezapft werden, der GPIO schafft das locker bei einem kleinen Lüfter…</font>

Shellskript

Die ganze Steuerung übernimmt ein einziges Shellskript, dass beim Start geladen wird und endlos durchläuft. Die einzigen Parameter, die man anpassen kann, sind:

  • Bevorzugter GPIO-Pin, einfach im Beispiel unten „21“ durch Suchen/Ersetzen auf den passenden Pin setzen.
  • Schalttemperatur, durch die Logik entsteht automatisch quasi eine Hysterese von zwei Grad, bei 50 Grad wird z.B. bei 51 Grad eingeschaltet und bei 49 Grad wieder abgeschaltet.
  • Ganz unten die Pausedauer, die trotz der zwei Grad Schaltpause eine gewisse Mindestlaufzeit erzwingt.

sudo nano /home/pi/lueftersteuerung.sh

#!/bin/sh

#Bei Strg-C Cleanup fuer verwendeten GPIO
trap 'echo --- Lueftersteuerung beendet ---; echo "21">/sys/class/gpio/unexport; exit 1' 2

# GPIO setzen (21)
echo "21">/sys/class/gpio/export
echo "out">/sys/class/gpio/gpio21/direction

#Initiales Ein- und Ausschalten des Luefters (kleiner Funktionstest beim einschalten des Pi)
echo "1">/sys/class/gpio/gpio21/value #Luefter ein
sleep 5s #5 Sekunden laufen lassen
echo "0">/sys/class/gpio/gpio21/value #Luefter aus

meldetemp=50 #Ab dieser Temperatur Luefter einschalten

while true # Endlos laufen
do
  boardtemp=`vcgencmd measure_temp | cut -c6,7` #Boardtemperatur als ganze Zahl lesen
  if [ $boardtemp -ge $meldetemp ] #wenn Boardtemperatur ueber Limit
  then
    echo "Boardtemperatur: $boardtemp -> Luefter ein!"
    echo "1">/sys/class/gpio/gpio21/value
  fi
  if [ $boardtemp -le $meldetemp ] #wenn Boardtemperatur unter Limit
  then
    echo "Boardtemperatur: $boardtemp -> Luefter aus!"
    echo "0">/sys/class/gpio/gpio21/value
  fi
  sleep 15s #neuer Durchlauf in 15 Sekunden, Minimumlaufzeit des Lüfters
done

Skript ausführbar machen: sudo chmod +x /home/pi/lueftersteuerung.sh

Danach das Skript starten lassen beim Systemstart, am einfachsten z.B. sudo crontab -e → @reboot /home/pi/lueftersteuerung.sh

allerlei/raspberry_lueftersteuerung.txt · Zuletzt geändert: 09.04.2020 20:43 von DB7SG