Einfache automatische Lüftersteuerung mit AVR / Daemon

  • Hallo zusammen,


    ich würde gerne auf meiner Linux Kiste mit Hilfe eines AVR-Mikrocontroller und eines C-Dämons eine so einfache Lüftersteuerung wie nur möglich aufbauen. So eine Anwendung wäre sicher für mehrere interessant.


    Ablauf:
    Die Temperaturen (Platine/CPU) werden mit Hilfe der mbmon Software ausgelesen, damit kann man sich zusätzliche Hardware Sensoren sparen. ( -> http://freshmeat.net/projects/xmbmon/ unterstützt etliche Chipsätze). Ein Daemon überprüft alle x-Sekunden mit Hilfe von mbmon die Temperaturen und schreibt über UART (-> I2C einfacher, besser?) entsprechende Steuerdaten für eine PWM auf den AVR.



    Konkrete Fragen: Wer hat Tips zu
    - welchen einfachen (DIL, wenig Füße) AVR-Mikrocontroller: Atmega oder AT
    - Code zum Thema Daten in AVR schreiben unter Linux
    - einfachen Beispiel Daemonen (auch aus anderer Anwendung)

    Hardware: Asus M3N78-EM µATX GF 8300 | AMD Sempron 140 | Display VFD USB MDM166A | DVB-S2 TT-3600 USB | RAM 1 GB | WD20EARS 2 TB
    Software: yaVDR 0.5

    2 Mal editiert, zuletzt von Fux ()

  • Hi,
    warum nutzt Du nicht einfach eine Hardware Lüftersteuerung mit Tempfühler? Warum so ein großer Aufwand?
    Zumal, wenn der Deamon nicht gestartet werden kann oder abschmiert oder die Verbindung zum Regler nicht aufbaut was passiert dann mit dem Lüfter? Läuft er dann immer auf max Drehzahl oder gar nicht?
    Da wären mir zu viele Stellen drin, wo was schief gehen kann.

    Wer Rechtschreibfehler findet darf sie behalten.
    -----o00o----'(_)'----o00o-----

  • Halllo,
    naja schief gehen kann da eigentlich nichts. Anlaufen sollen die Teile mit mittlerer Geschwindigkeit hab ich mir vorgestellt.
    Anreiz ist halt auch, daß ich gerne mal was mit einem AVR machen möchte, zum Einstieg eben was einfaches. Naja und eine Steuerung per Software ist halt einer Hardware-Steuerung im Ansteuerungskomfort (schnell mal geändert/optimiert über Kommandozeile) schon überlegen, wenn man das letzte dB Lärm verhindern möchte ;-).

    Hardware: Asus M3N78-EM µATX GF 8300 | AMD Sempron 140 | Display VFD USB MDM166A | DVB-S2 TT-3600 USB | RAM 1 GB | WD20EARS 2 TB
    Software: yaVDR 0.5

  • Zitat

    Original von Fux
    Anreiz ist halt auch, daß ich gerne mal was mit einem AVR machen möchte, zum Einstieg eben was einfaches. Naja und eine Steuerung per Software ist halt einer Hardware-Steuerung im Ansteuerungskomfort (schnell mal geändert/optimiert über Kommandozeile) schon überlegen, wenn man das letzte dB Lärm verhindern möchte ;-).


    Hi,


    da kann ich dir nur beipflichten! Ist genial was man mit den Dingern machen kann. Über ein Projekt von steini hab ich mich auch mit den AVR's angefreundet und arbeite mich gerade ein.


    Viel Spass damit!


    Gruss, schmalzz

    Streamingclient 1:
    [-] RaspiVDR MLD 5.x an Panasonic TV mit CEC :D


    Streamingclient 2:
    [-] RaspiVDR MLD 5.x - Samsung TV mit CEC


    Streamingserver:
    [---] Proxmox Server PVE7
    [- ] MLD 5.x Server - OctopusNet 4 Tuner

  • Das Steini-Projekt sieht recht interessant aus. Ich hab noch zwei so Atmel 2313 rumliegen (*g* hab ich vor einem Jahr schon bestellt, hab dann nur nichts mehr gemacht). Eventuell nimm ich das als Basis und erweitere das. Muß mich da aber erst einlesen. PWM müßte nach einem Schnellblick übers Datenblatt möglich sein :-).

    Hardware: Asus M3N78-EM µATX GF 8300 | AMD Sempron 140 | Display VFD USB MDM166A | DVB-S2 TT-3600 USB | RAM 1 GB | WD20EARS 2 TB
    Software: yaVDR 0.5

    Einmal editiert, zuletzt von Fux ()

  • Hallo Fux,
    das geht wirklich auch mit dem kleinen 2313, der hat aber nur einen PWM-Ausgang. Ich baue nämlich gerade eine Lüftersteuerung in dieses Projekt ein ;D......nur etwas anders.
    Da bei meinem Rechner mit mbmon oä. nix zu machen ist nehm ich einen I2C Temp.-sensor (LM75), schließe den an den Controller an und überlasse alles andere dem Controller. Schwellwerte usw. werden dann über die UART dem Controller mitgeteilt. Damit läßt sich natürlich sinnvoll nur ein Lüfter regeln....es sei denn man läßt mehrere mit der gleichen Drehzahl laufen.
    Wenn du bei deiner Version auch dem Rechner was mitteilen möchtest mußt du aber einen MAX232 incl. Beschaltung einplanen.
    Gruß
    steini


    PS: @schmalzz......was bauste denn grad ;)

    1.: Multitainer, P3 Celeron 1,1GHz, 320MB, Samsung 300GB, TT 1.3 (4MB), TT-Budget, IR Selbstbau, µC-Wakeup-Selbstbau, RGB & SPDif über Platine von STB
    mod. Linvdr 0.7 (auf 512 Mb CF), AC3-Firmware 2623
    2.: Met@box 500, 64 MB, mod. Linvdr0.7 (auf 128 Mb CF), 20GB Seagate, TT 1.5

  • Hallo Steini,
    ist ja interessant, daß Du auch gerade an sowas baust :-). Der mbmon bietet sich halt gerade an finde ich. Gibt bei mir drei Temperaturen aus:


    Temp.= 29.1, 33.4, 22.0; Rot.= 4326, 0, 0
    Vcore = 2.08, 2.55; Volt. = 3.37, 5.08, 12.01, 0.00, 0.00


    Hab mir mal Deinen Schaltplan angesehen und der Trick den MAX232 einzusparen ist auch ganz nett, bei mir bräuchte der Controller auch nichts zurückmelden. Wie weit bist Du denn schon? Vielleicht könnte man es auch softwaretechnisch so einstellen, daß er entweder die Info vom externen Sensor bekommt oder von der seriellen Schnittstelle.


    Gruß
    Fux

    Hardware: Asus M3N78-EM µATX GF 8300 | AMD Sempron 140 | Display VFD USB MDM166A | DVB-S2 TT-3600 USB | RAM 1 GB | WD20EARS 2 TB
    Software: yaVDR 0.5

    Einmal editiert, zuletzt von Fux ()

  • steini:
    Naja, bin eigentlich immer noch in der Lernphase. Nachdem ich festgestellt habe dass ich mit Assembler nicht so klar komme hab ich mich in Bascom eingearbeitet. Bereits mit der Demoversion kann man hier prima arbeiten. Hab leider auch kein deutsches Forum gefunden wo einem richtig geholfen wird bzw. die Forenmitglieder sich gegenseitig so gut helfen wie hier! ;(
    Naja egal, mit Bascom hab ich auf alle Fälle ~ so 8 Übungsprojekte durchgemacht (Blinker, Tasten, Timer, Interrupts usw.) die ich auch wirklich verstehe und nachvollziehen kann.
    Als nächstes werd ich mal versuchen dass was du geproggt hast nachzumachen :]. Ja und mein LCD - Display hab ich auch immer noch nicht aus den Augen verloren :D!


    Gruss, schmalzz

    Streamingclient 1:
    [-] RaspiVDR MLD 5.x an Panasonic TV mit CEC :D


    Streamingclient 2:
    [-] RaspiVDR MLD 5.x - Samsung TV mit CEC


    Streamingserver:
    [---] Proxmox Server PVE7
    [- ] MLD 5.x Server - OctopusNet 4 Tuner

  • Hi,
    Fux

    Zitat

    Wie weit bist Du denn schon?

    noch nicht so weit. Muß dafür die ganze Software umschreiben. UART als Interruptroutine, Timer laufenanders weil PWM den 16 Bit-Timer blockiert und...und...und. Momentan verwende ich die PWM-Routine um die Timer-LED zu dimmen ;)


    @schmalzz
    die Software mit "Dimmer" kann ich dir ja mal schicken....oder haste die schon?
    Wenn du das mal in Bascom geschrieben hast würde mich dann mal die Größe des *hex-Files interessieren. Ich hatte den Eindruck dass der Code viiiiiel größer wird als nötig. Kann sich aber geändert haben:)


    Gruß
    steini

    1.: Multitainer, P3 Celeron 1,1GHz, 320MB, Samsung 300GB, TT 1.3 (4MB), TT-Budget, IR Selbstbau, µC-Wakeup-Selbstbau, RGB & SPDif über Platine von STB
    mod. Linvdr 0.7 (auf 512 Mb CF), AC3-Firmware 2623
    2.: Met@box 500, 64 MB, mod. Linvdr0.7 (auf 128 Mb CF), 20GB Seagate, TT 1.5

  • Hi steini,


    die Version mit Dimmer hab ich schon, danke. :tup
    Das mit dem grösseren Code stimmt schon, man muss sich halt richtig Angewöhnen "sauber" zu proggen, dann geht's einigermassen. Ich versuch auch die "einfachen" Teile mit dem Inline Assembler umzusetzen, das spart dann auch. Wenn ich so weit bin werd ich mich melden. :]


    Gruss, schmalzz

    Streamingclient 1:
    [-] RaspiVDR MLD 5.x an Panasonic TV mit CEC :D


    Streamingclient 2:
    [-] RaspiVDR MLD 5.x - Samsung TV mit CEC


    Streamingserver:
    [---] Proxmox Server PVE7
    [- ] MLD 5.x Server - OctopusNet 4 Tuner

  • Hi,
    bei mir noch nicht. Hab zur Zeit nen paar andere Baustellen ;)
    Kommt aber noch :)
    Gruß
    steini

    1.: Multitainer, P3 Celeron 1,1GHz, 320MB, Samsung 300GB, TT 1.3 (4MB), TT-Budget, IR Selbstbau, µC-Wakeup-Selbstbau, RGB & SPDif über Platine von STB
    mod. Linvdr 0.7 (auf 512 Mb CF), AC3-Firmware 2623
    2.: Met@box 500, 64 MB, mod. Linvdr0.7 (auf 128 Mb CF), 20GB Seagate, TT 1.5

  • Hallo Fux,
    nachdem mein MT einige Zeit unfreiwillig lüfterlos ;) (der gedrosselte CPU-Lüfter ist nicht "angesprungen" :() gelaufen und dann erwartungsgemäß beim Start von noad hängengeblieben ist mußte ich kurzfristig was machen.
    Ich hab jetzt zunächst einfach wie oben beschrieben den LM 75 an den CPU-Kühlkörper gepappt und der Lüfter wird mittels PWM entsprechend geregelt. Um Code einzusparen hab ich zunächst einfach eine Tabelle im EEProm des Controllers hinterlegt wobei die Temperatur eben der Speicheradresse des entsprechenden PWM-Wertes entspricht.
    Ist total simpel. Falls du das noch brauchst kann ich dir das geben.


    Gruß
    steini


    PS: Ach ja.......die Frequenz. Da ich mal gelesen hab dass die Lüfter so üblicherweise mit 30-60Hz angesteuert werden läuft das erstmal mit 60Hz. Ob das aber wirklich gut ist muß ich noch rauskriegen ;)

    1.: Multitainer, P3 Celeron 1,1GHz, 320MB, Samsung 300GB, TT 1.3 (4MB), TT-Budget, IR Selbstbau, µC-Wakeup-Selbstbau, RGB & SPDif über Platine von STB
    mod. Linvdr 0.7 (auf 512 Mb CF), AC3-Firmware 2623
    2.: Met@box 500, 64 MB, mod. Linvdr0.7 (auf 128 Mb CF), 20GB Seagate, TT 1.5

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!