Hallo Timmeyable,
fehlt bei "hier" vielleicht ein Link auf ein Bild?
Such mal nach Buchsenleisten. Die gibt es in unterschiedlichen Ausführungen.
Gruß Georg
Hallo Timmeyable,
fehlt bei "hier" vielleicht ein Link auf ein Bild?
Such mal nach Buchsenleisten. Die gibt es in unterschiedlichen Ausführungen.
Gruß Georg
Lüftersteuerung per Temperatur + Einbauanleitung? Schau mal ob du hier fündig wirst!
Hallo Timmeyable,fehlt bei "hier" vielleicht ein Link auf ein Bild?
Such mal nach Buchsenleisten. Die gibt es in unterschiedlichen Ausführungen.Gruß Georg
Ich meinte wie hier in diesem Tutorial. ![]()
Die Buchsenleisten waren das was ich gesucht hatte. Danke.
Gruß
Hallo an Alle, die dieses tolle Tutorial erstellt haben. Dafür wollte ich mich hier in erster Linie bedanken. ![]()
Jedoch hatte ich denselben Fehler, wie manch anderer hier, und zwar das nach dem manuellen "Teststart" des Pythonscriptes immer die Fehlermeldung kommt:
Quote
AttributeError: 'module' object has no attribute 'setmode'
oder eben so in der Art.
Ich, als absoluter Linuxneuling habe mich auf die Suche gemacht und immer wieder was von Neuinstallationen etc. gelesen.
Was jedoch keiner aufführte, was meiner Meinung nach den Fehler verursacht, ist die Frage, welche Versionen von Python (2.x.x und/oder 3.x.x) installiert sind.
Da ich beide Versionen habe, hab ich einfach mal mittels "aptitude" nachgesehen, was da eigentlich installiert ist.
Bei mir ist's folgendes:
python3-rpi.gpio 0.5.2a-1
daher kann nach dem Aufruf von
sudo python gpio7on.py
nicht funktionieren.
daher habe ich den Aufruf ganz einfach auf
sudo python3 gpio7on.py
abgeändert und siehe da... es klappt.
Sollte ich mit meiner Aussage komplett falsch liegen, bitte keine erschlagenden Worte nutzen, sondern eher mit sachdienlichen Argumenten kommen, da ich wie schon gesagt - Linuxanfänger bin - und eben kein Vollprofi.
Sollte eher nur ein Hinweis für diejenigen sein, die immer noch kein funktionierendes Script auf die Beine bekommen.
mfg
Meister
Hallo zusammen,
muss das Thema hier mal ausgraben. Ich hab mir nach obigem Schaltplan auch einen Lüfterschalter für GPIO gelötet (BC547C, 4k7 Widerstand), allerdings habe ich nun das Problem, dass am Lüfter nur rd. 3V ankommen, der erstmal nicht von selbst anläuft und natürlich auch nicht richtig dreht. Versorgung über 5V selbstverständlich, schalten über GPIO17, da ich 14 bereits anderweitig nutze. Der Transistor sollte doch voll durchschalten, oder?
Grüße,
Daniel
Wenn ich den Lüfter nur mit 3,3V Betreiben möchte reicht dann ein Widerstand?
Wenn ich den Lüfter nur mit 3,3V Betreiben möchte reicht dann ein Widerstand?
kommt auf den Strom an, mehr als 10mA braucht Transistor und Widerstand, bis 10mA braucht es weder das eine noch das andere.
Werde den Lüfter nachher mal messen.
Ich hatte immer 20ma in errinerung :O
muss das Thema hier mal ausgraben. Ich hab mir nach obigem Schaltplan auch einen Lüfterschalter für GPIO gelötet (BC547C, 4k7 Widerstand), allerdings habe ich nun das Problem, dass am Lüfter nur rd. 3V ankommen, der erstmal nicht von selbst anläuft und natürlich auch nicht richtig dreht. Versorgung über 5V selbstverständlich, schalten über GPIO17, da ich 14 bereits anderweitig nutze. Der Transistor sollte doch voll durchschalten, oder?
OK, mit BC337-16 und 2x 4k7Ohm parallel kriegt er nun alles ab, was die 5V-Leiste hergibt...
Habe meinen Lüfter mal gemessen, bei 3,3V bringt er genug Leistung um knapp 14 grad runter zu kühlen.
Dabei braucht er 150ma, in diesem Fall würde ich den Transistor nehmen und alles anstatt an 5V einfach an 3,3V anschließen?
Habe meinen Lüfter mal gemessen, bei 3,3V bringt er genug Leistung um knapp 14 grad runter zu kühlen.
Dabei braucht er 150ma, in diesem Fall würde ich den Transistor nehmen und alles anstatt an 5V einfach an 3,3V anschließen?
kann man machen, muss man aber nicht
wenn dir 5V zu laut sind dann gehe über Transistor an 3,3V
bei 150mA an 3,3V ist das natürlich mehr Belastung für den internen 3,3V Regler der eh schon den PI aufheizt mit 1,5-1,7W mit dem Lüfter vernichtest du weitere 0,15A und 1,7V = 0,25W welche in wärme im PI landen also die PI Stromgrundaufnahme von 0,8A auf 0,95 A hochtreiben ! denke immer wenn du über die microUSB speist an die doofe Polyfuse, da bleibt fast nix mehr für die USB Buchsen über !!!
wenn der Lüfter an 5V arbeitet kann der Stom noch steigen
wenn der Transistor keine C-Type ist und nur eine Verstärkung von 100 hat braucht die Basis mindestens 5mA an 3,3V ...rechne 3,3V - 1V = 2,3V / 5mA = 470 Ohm ! um den Transistor satt zu machen
Ich werde mir mal einen Transistor besorgen und dann mal sehen.
Ich danke Dir vielmals für diese super Anleitung. Funktioniert alles ohne Probleme! ![]()
Hiho,
ich wollte mich auch für die Anleitung bedanken. Allerdings hab ich das Script etwas verschlankt und einen Minimalwert eingebaut. Sprich > 65 ° Lüfter an, < 50° Lüfter aus, alle 15 Sek überprüfen. ![]()
Ich muss allerdings noch Erfahrungswerte sammeln was die Schwellwerte angeht... ![]()
Anbei ein paar Bilder von meiner Umsetzung ![]()
Hi nochmal,
so sieht mein Skript aus.
control_fan.sh
#!/usr/bin/env bash
# ~ RaspBerry PI ~
# fan control script
# -----------------------------------------
# Author: Bagheera
# Created: 28.12.2013
# Last change: 31.12.2013
# Version 1.2
# -----------------------------------------
# 1.2: 31.12.2013
# - traps for common signals added
# - commentary
# - logfile beautification
#
# 1.1: 30.12.2013
# - logfile changed
# - logturn added
# - verbose by global setting
#
# 1.0: 28.12.2013
# - control_fan.sh created
# -----------------------------------------
VERBOSE=0; # show info on console (0=no; 1=yes)
MAX_THRESH=65; # start above xx degrees
MIN_THRESH=50; # stop below xx degrees
SLEEPER=20; # scan every xx seconds
LOGTURN=6; # log temp every LOGTURN * SLEEPER seconds
# logfile destination
LOGFILE="/home/pi/scripts/control_fan.log";
# prepare signal trap function
function finish {
echo $(date '+%F %T %Z') "## 0:CONTROL: Script about to stop" >> $LOGFILE
echo $(date '+%F %T %Z') "## 2:GPIO_INIT: Stopping fan" >> $LOGFILE
echo "0" > /sys/class/gpio/gpio14/value
echo $(date '+%F %T %Z') "## 2:GPIO_INIT: Unexport of GPIO port 14" >> $LOGFILE
echo "14" > /sys/class/gpio/unexport
echo $(date '+%F %T %Z') "## 0:CONTROL: Going down... bye bye" >> $LOGFILE
exit;
}
# trap exit
trap finish EXIT
# initialize GPIO port 14
if [ ! -e "/sys/class/gpio/gpio14" ]; then
echo $(date '+%F %T %Z') "## ==================================================================" >> $LOGFILE
echo $(date '+%F %T %Z') "## 0:CONTROL: Starting up..." >> $LOGFILE
echo $(date '+%F %T %Z') "## 1:CONFIG: Maximum threshold $MAX_THRESH C" >> $LOGFILE
echo $(date '+%F %T %Z') "## 1:CONFIG: Minimum threshold $MIN_THRESH C" >> $LOGFILE
echo $(date '+%F %T %Z') "## 1:CONFIG: Scan interval $SLEEPER sec" >> $LOGFILE
echo $(date '+%F %T %Z') "## 1:CONFIG: Log temperature interval $(($SLEEPER*$LOGTURN)) sec" >> $LOGFILE
echo $(date '+%F %T %Z') "## 2:GPIO_INIT: Export of GPIO port 14" >> $LOGFILE
echo "14" > /sys/class/gpio/export
echo $(date '+%F %T %Z') "## 2:GPIO_INIT: Direction: out" >> $LOGFILE
echo "out" > /sys/class/gpio/gpio14/direction
echo $(date '+%F %T %Z') "## 2:GPIO_INIT: Port 14: init value 0" >> $LOGFILE
echo "0" > /sys/class/gpio/gpio14/value
fi
i=0;
while [ true ]; do
# get current recalculated temperature and fan status
cpuTemp=$(cat /sys/class/thermal/thermal_zone0/temp)
cpuTemp=$(($cpuTemp/1000))
fanState=$(cat /sys/class/gpio/gpio14/value)
# echo current temperature to logfile if logturn met
i=$(($i+1))
if [ $i -eq $LOGTURN ]; then
echo $(date '+%F %T %Z') "## 0:CONTROL: Current temperature: $cpuTemp C" >> $LOGFILE
i=0;
fi
# do some info stuff
[ $VERBOSE -eq 1 ] && echo -e "CPU: \033[36m$cpuTemp\033[0mC | FAN: $fanState | THRESHOLD: $MIN_THRESH-$MAX_THRESH"
# too hot and fan not running? start!
if [ $cpuTemp -gt $MAX_THRESH ] && [ $fanState -eq 0 ]; then
echo "1" > /sys/class/gpio/gpio14/value
[ $VERBOSE -eq 1 ] && echo -e "====> [ \033[32mON\033[0m ]"
echo $(date '+%F %T %Z') "## 0:CONTROL: Starting fan ($cpuTemp C)" >> $LOGFILE
fi
# everything cool and fan running? stop!
if [ $cpuTemp -lt $MIN_THRESH ] && [ $fanState -eq 1 ]; then
echo "0" > /sys/class/gpio/gpio14/value
[ $VERBOSE -eq 1 ] && echo -e "====> [ \033[31mOFF\033[0m ]"
echo $(date '+%F %T %Z') "## 0:CONTROL: Stopping fan ($cpuTemp C)" >> $LOGFILE
fi
sleep $SLEEPER
done
Display More
Prinzipiell das Gleiche wie vom TE, nur dass ich eben noch einen "unteren" Wert habe und den Lüfter so lange drehen lasse bis dieser wieder unterschritten ist.
So kann man dann (siehe nach dem Code), dann den RaspBerry Pi einer einer "Range halten". z.B. zwischen 40-60°. Oder wie in meinem Beispiel (LogFile) bei 60-61° (was natürlich unnütz ist, aber funktionieren würde es)
Festgestellt habe ich, dass ich mit dem AEON NOX Skin im Leerlauf + Gehäuse und einem Takt von 1000Mhz ca. bei 63° bin ohne Kühlung (nur passive Kühlkörper). Daher ist mein Schwellwert bei MAX 65° und MIN 50°. Sollte ausreichen ![]()
Das ist ein Beispiellogfile:
2013-12-31 03:08:21 CET ## ==================================================================
2013-12-31 03:08:21 CET ## 0:CONTROL: Starting up...
2013-12-31 03:08:21 CET ## 1:CONFIG: Maximum threshold 61 C
2013-12-31 03:08:21 CET ## 1:CONFIG: Minimum threshold 60 C
2013-12-31 03:08:21 CET ## 1:CONFIG: Scan interval 5 sec
2013-12-31 03:08:21 CET ## 1:CONFIG: Log temperature interval 10 sec
2013-12-31 03:08:21 CET ## 2:GPIO_INIT: Export of GPIO port 14
2013-12-31 03:08:21 CET ## 2:GPIO_INIT: Direction: out
2013-12-31 03:08:21 CET ## 2:GPIO_INIT: Port 14: init value 0
2013-12-31 03:08:21 CET ## 0:CONTROL: Starting fan (62 C)
2013-12-31 03:08:27 CET ## 0:CONTROL: Current temperature: 62 C
2013-12-31 03:08:37 CET ## 0:CONTROL: Current temperature: 61 C
2013-12-31 03:08:47 CET ## 0:CONTROL: Current temperature: 59 C
2013-12-31 03:08:47 CET ## 0:CONTROL: Stopping fan (59 C)
2013-12-31 03:08:57 CET ## 0:CONTROL: Current temperature: 59 C
2013-12-31 03:09:07 CET ## 0:CONTROL: Current temperature: 59 C
2013-12-31 03:09:17 CET ## 0:CONTROL: Current temperature: 59 C
2013-12-31 03:09:27 CET ## 0:CONTROL: Current temperature: 59 C
2013-12-31 03:09:37 CET ## 0:CONTROL: Current temperature: 59 C
2013-12-31 03:09:47 CET ## 0:CONTROL: Current temperature: 59 C
2013-12-31 03:09:57 CET ## 0:CONTROL: Current temperature: 59 C
2013-12-31 03:10:08 CET ## 0:CONTROL: Current temperature: 60 C
2013-12-31 03:10:18 CET ## 0:CONTROL: Current temperature: 60 C
2013-12-31 03:10:28 CET ## 0:CONTROL: Current temperature: 59 C
2013-12-31 03:10:38 CET ## 0:CONTROL: Current temperature: 60 C
2013-12-31 03:10:48 CET ## 0:CONTROL: Current temperature: 61 C
2013-12-31 03:10:58 CET ## 0:CONTROL: Current temperature: 61 C
2013-12-31 03:11:08 CET ## 0:CONTROL: Current temperature: 61 C
2013-12-31 03:11:18 CET ## 0:CONTROL: Current temperature: 61 C
2013-12-31 03:11:28 CET ## 0:CONTROL: Current temperature: 61 C
2013-12-31 03:11:39 CET ## 0:CONTROL: Current temperature: 61 C
2013-12-31 03:11:49 CET ## 0:CONTROL: Current temperature: 61 C
2013-12-31 03:11:59 CET ## 0:CONTROL: Current temperature: 61 C
2013-12-31 03:12:09 CET ## 0:CONTROL: Current temperature: 62 C
2013-12-31 03:12:09 CET ## 0:CONTROL: Starting fan (62 C)
2013-12-31 03:12:19 CET ## 0:CONTROL: Current temperature: 60 C
2013-12-31 03:12:29 CET ## 0:CONTROL: Current temperature: 59 C
2013-12-31 03:12:29 CET ## 0:CONTROL: Stopping fan (59 C)
2013-12-31 03:12:39 CET ## 0:CONTROL: Current temperature: 59 C
2013-12-31 03:12:49 CET ## 0:CONTROL: Current temperature: 58 C
2013-12-31 03:12:51 CET ## 0:CONTROL: Script about to stop
2013-12-31 03:12:51 CET ## 2:GPIO_INIT: Stopping fan
2013-12-31 03:12:51 CET ## 2:GPIO_INIT: Unexport of GPIO port 14
2013-12-31 03:12:51 CET ## 0:CONTROL: Going down... bye bye
Display More
Grüße
Bagheera
Hier noch ein Script welches ebenfalls zur Lüftersteuerung verwendet wird - mit dem Unterschied das ein externer DHT Sensor abgefragt wird:
Eine Verständnisfrage: Warum muss ich, wenn ich eine LED an 5V und GND hänge, noch einen Widerstand einbauen, bei einem Lüfter aber nicht?
Weil der Lüfter für die Spannung (und vielleicht auch mehr) ausgelegt ist, die LED aber nicht?!
Soll heißen eine LED, die 5V verträgt, kann ich auch ohne Widerstand anschließen? Eine auf 12V ausgelegte LED wird wohl kein Licht mehr bringen, denke ich aber so eine 5V LED müsste doch dann funktionieren, oder?
Als Berechnungsformel hab ich R = (U(Stromquelle) - U(LED)) / I(LED) gefunden. Und für U(Stromquelle) = U(LED) gilt ja R = 0/I(LED) = 0. Diverse Rechner schlagen jezt aber 1 Ohm Widerstände vor, was ja quasi so gut wie nix ist... warum?
Eine Verständnisfrage: Warum muss ich, wenn ich eine LED an 5V und GND hänge, noch einen Widerstand einbauen, bei einem Lüfter aber nicht?
Lüfter werden über Spannung gesteuert und haben ein Nennspannung, 5V, 12V oder andere
LED werden über Strom gesteuert und wenn sie keinen eingebauten Widerstand haben müssen sie an ihrer Kennlinie eingestellt werden.
(LED mit Widerstand sind selten und genauso Ausnahmen wie LED Strips die Treiber haben oder mit Widerstände sind und auf 12V ausgelegt sind)
Jede Farbe hat üblicherweise eine andere LED Spannung was je nach Strom verschiedene Vorwiderstände braucht.
Ich habe mal einige aus "meinem Lager" vermessen:
Weihnachtsbeleuchtung
Don’t have an account yet? Register yourself now and be a part of our community!