Hofei's aktive PWM Kühllösung für den Raspberry Pi 4

  • Im Thread [Ergebnispräsentation] Temperatur und CPU Takt Logging bei verschiedenen Kühlvarianten habe ich mich ja schon intensiver mit unterschiedlichen Varianten der möglichen Kühlung für den Raspberry Pi beschäftigt.


    In diesem Thread möchte ich euch meine favorisierte Variante der Kühlung für den Raspberry Pi 4 vorstellen.


    Es handelt sich hierbei um einen PWM Lüfter mit zusätzlichen Aluminium Kühlkörpern.


    Hardware

    Montage

    Von den Aluminum Kühlkörpern habe ich nur den großen für den SoC verwendet.

    Auf alle Fälle von den Kühlkörpern die aufgebrachte Klebefolie entfernen und Reinigen (gereinigt habe ich mit Spiritus).

    Den SoC ebenfalls sorgfältig und vorsichtig reinigen.

    Anschließend auf den Kühlkörper Wärmeleitkleber auftragen auf verteilen und den Kühlkörper auf den SoC anbringen.


    Das Kabel des Lüfter auf die gewünschte Länge kürzen und die Adern mit den Verbindungssteckern crimpen (ich habe 1 polige verwendet).

    Lüfter wurde so ins 3D Druckgehäuse angebracht, dass der Lüfter die Luft von außen ansaugt und auf den SoC bläst.


    Lüfter wie folgt anschließen:

    Es ist ratsam die PWM Leitung mit einem CMOS Inverter anzusteuern. Da ich aber eine maximale Belastung von 255,5 µA hatte, habe ich darauf verzichtet, dennoch birgt es ein gewisses Risiko für den Pi, was jeder selbst abwiegen muss ob er es eingehen möchte oder nicht!
    Weitere Infos hier: https://noctua.at/media/wysiwy…fications_white_paper.pdf (letzte Seite)

    Software

    Software gibts auf Github, in der Readme sind die notwendigen Schritte zur Inbetriebnahme enthalten



    Ausblick

    Es ist für später noch geplant die Tacholeitung in Betrieb zu nehmen um die Drehzahl zu überwachen.

    Ebenfalls wird die Software mit der Zeit noch weitere Funktionen bekommen, näheres dazu in Github unter Projekte.


    noch ein Hinweis

    Das die Rückgabe des Lüfters oder des Pi's sich etwas schwierig gestalten kann nach den Anpassungen, ...

  • Very Nice.


    Kleine Kritik :

    Ich würde mich im Code entweder auf Englisch oder Deutsch beschränken.

    Der Mischmasch ist nicht schön.

    Beispiel :

    Code
    def zaehler_erhoehen(self):
    def generate_all_temperatures_dutycycles(temperatures_dutycycles):


    Passiert mir auch immer wieder, grade wenn es schnell geht ;)

    Gehört ein wenig Selbstdisziplin zu.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?


    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Hallo,


    Quote

    Ich würde mich im Code entweder auf Englisch oder Deutsch beschränken.

    +1


    Weitere Punkte zum Code:

    • IMHO fehlt in der Doku der Hinweis, dass das Skript Python >= 3.6 voraussetzt.
    • IMHO fehlt in der Doku der Hinweis, dass das Skript gpiozero nutzt (auch wenn es unter Raspbian vorinstalliert ist)
    • Die Abhängigkeit von TOML halte ich für überflüssig. In der Config-Datei ist genau ein Wert und den kann man ohne Probleme als Python Liste abbilden.
    • Machen Namen sind komisch: `myround`- gibt's auch `yourround`? `round_temperautre` - gibt's auch `square_temperature`? Bei letzterem wäre sowas wie `temperature_rounded` besser.
    • `print` halte ich bei Skripten, die dafür gemacht sind, im Hintegrund zu laufen, für stark suboptimal. Es gibt ja keinen Terminal, wo die Ausgabe hin geht. Indirekt geht's halt ins Journal von systemd, was aber auch nicht gewünscht sein muss. Ich würde da ein konfigurierbares Logging einbauen.

    Gruß, noisefloor

  • Vielen Dank für eure konstruktive Kritik.


    Grundsätzlich programmier ich gerne in Deutsch, rutsche aber meist ins Englische wenn ich ÄÖÜß umgehen will.


    Die Abhängigkeit von TOML halte ich für überflüssig. In der Config-Datei ist genau ein Wert und den kann man ohne Probleme als Python Liste abbilden.

    Das liegt daran, weil ich noch einiges an Funktionen nachreichen möchte. Klar der Einzeiler allein ist nicht wirklich sinnvoll dafür ein extra externes Modul nötig zu machen.



    `print` halte ich bei Skripten, die dafür gemacht sind, im Hintegrund zu laufen, für stark suboptimal. Es gibt ja keinen Terminal, wo die Ausgabe hin geht. Indirekt geht's halt ins Journal von systemd, was aber auch nicht gewünscht sein muss. Ich würde da ein konfigurierbares Logging einbauen.

    Da geb ich dir Recht, das hat wohl von den ersten Tests überlebt.

    Möchte generell noch ein Logging einbauen, welches entweder in journal oder in ein File loggt.


    Der Rest der Tipps wird kommentarlos aktzeptiert und umgesetzt - Danke dafür!

  • Hallo Hofei,


    darf man fragen bei welcher Temperatur sich der Pi4 nach stundenlanger Vollast einpendelt ?

    Bedingung : pi4 steht in einer Ecke dicht an anderen Gerätschaften , welche auch Verlustleistung in Form von Wärme abgeben. Geschlossenes Gehäuse.


    Grüsse Starglider.

  • Deine Loesung sieht mir jetzt mal als eine durchaus praktikable Loesung aus :thumbup:.

    noch ein Hinweis

    Das die Rückgabe des Lüfters oder des Pi's sich etwas schwierig gestalten kann nach den Anpassungen, ...

    :conf: Was willst Du mir damit sagen?


    Zum Code bzw git: Mischmasch EN/DE ist sehr schlecht. Das gibt Leseprobleme sowohl fuer EN und DE. Du musst Dich fuer eine Sprache entscheiden. Ich praeferiere EN weil das mehr Leute lesen koennen als DE. Deine README ist in DE und wuerde ich in EN umstellen wenn Du auch im Code EN only benutzen willst.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

  • darf man fragen bei welcher Temperatur sich der Pi4 nach stundenlanger Vollast einpendelt ?

    Bedingung : pi4 steht in einer Ecke dicht an anderen Gerätschaften , welche auch Verlustleistung in Form von Wärme abgeben. Geschlossenes Gehäuse.

    Gerne kann ich einen Test laufen lassen. Die CPU soll also dabei zu 100% ausgelastet sein? Und das durchgängig?

    (Welche Anwendung hast du denn da vor?)

    Die Bedingung weiß ich aber leider nicht wie ich für dich konkret nachstellen kann/soll. Mein Gehäuse vom Pi ist auch nicht geschlossen (siehe Fotos)


    :conf: Was willst Du mir damit sagen?

    Das ich davon ausgehen, wenn man die Kabel vom Lüfter kürzt, man seine Gewährleistungsansprüche und Rückgaberecht verliert (nur meine Meinung - vll ist es auch anders :conf:)

    Jedenfalls sollte es ein kurzer Hinweis sein, dass man den Lüfter vor der Modifikation testen sollte. Aber o.k. hätt ich auch explizit schreiben können um Verwirrung vorzubeugen.



    Zum Code bzw git: Mischmasch EN/DE ist sehr schlecht.

    Ja, das hör ich in letzter Zeit öfters :shy: - Aber wenn werd ich bei Zeit mal den Code auf deutsch anpassen.

  • Hallo,


    Ich wollte es aus einem grund wissen. Ich habe auch einen pi 4. ich habe diesen jetzt mit einem vollalumium kühlkörper von geekworm versehen. Da geht geht bei dauerhafter vollast der pi4 nicht über 54Grad ( bedingung offenliegend, nicht in einer staubigen ecke eingepfercht.

    Das gehäuse hat mich jetzt leider gottes -über china bestellt -24euro gekostet.

    Ich hätte lieber bei raspic das gehäuse bestellt, da das in deutschland vertrieben, bzw hergestellt wird.

    Wenn ich dieses gehäuse jetzt noch mit einem langsam drehenden grösseren lüfter versehe, den man mittels pwm steuern kann, dann ist der pi4 optimal gekühlt.

  • Welche anwendung habe ich vor?

    Achso kodi etc. und wenn möglich den aufsautz von zwave draufpacken.

    Beim pi2 , der bei mir noch läuft mit zwave und vielen sensoren geht bei mir die last beim pi 2 extrem hoch.

    Ursprünglich habe ich den pi 2 auch mit einer lüfterkuehlung betrieben. Die zwave software stürzte andauernd ab. Jetzt habe ich hier ebenfalls eine passive kühlung der ganzen pi platine . Und siehe da der zwave homeautomationsserver läuft stabiler .

    Ob das jetzt durch die passive hardware kühlung kommt, kann ich nicht sagen.

  • So hier die Messergebnisse für 1 1/2h Volllast, durchgängig 100% Auslastung


    Hab den Pi mal unter den Bildschirm in die Ecke gestellt um das etwas zu simulieren:

    Bedingung : pi4 steht in einer Ecke dicht an anderen Gerätschaften , welche auch Verlustleistung in Form von Wärme abgeben

    Mein Gehäuse ist aber nicht geschlossen, siehe Fotos.

  • Hallo,


    Ich hab alles versucht pigpio und gpiozero in Ubuntu 20.04 arm64 zu installieren. In Ubuntu läuft weder das eine noch das andere :)

    Deshalb hab ich mal ein passeńdes fan_controll.py zusammen geklöppelt (ja geklöppelt :)



    Es soll keine Kritik sein, aber in Ubuntu 20.04 läuft es so, oh wenn ich auch nur einen Plan hätte in Python, vielleicht hilft es dem ein oder anderen ja

    Edited once, last by det_lev_da: 4Leerzeichen Einrückung ().

    • Official Post

    Ich hab alles versucht pigpio und gpiozero in Ubuntu 20.04 arm64 zu installieren.

    Wenn Du mal genau beschreiben würdest wie Du das versucht hast (*), dann könnte man Dir vielleicht Hilfestellung geben, aber so ist es eine ziemlich mutige Behauptung von Dir zu schreiben "In Ubuntu läuft weder das eine noch das andere".



    //Edit:

    *) In einem neuen Thread natürlich!

  • Ich verstehe es ja nicht, warum es bei allen Distros funktioniert nur nicht bei allem was ab Ubuntu 20.04 aufsetzt.

    Ich kann pigpiod nicht starten, hab schon im Netz geschaut und die plausibelste Ursache ist, die haben beim Kernel compilieren ein Flag nicht gesetzt. Aber wirklich schlau wird man darauß nicht :)

  • Vielleicht eine Alternative?


    Fern-Lüfter

    Lüftersteuerung mit PWM, Poti und WLAN

    Achtung Paywall

    https://www.heise.de/select/ct/2020/21/2022308434764838890


    Ist nicht BS-Abhängig und ist fast sofort einsatzbereit.


    MfG


    Jürgen