Zusatzlüfter für PC PWM gesteuerte Lüfter

Fertige Geräte mit Bilden, Schaltungen, Programmen vorstellen.
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Zusatzlüfter für PC PWM gesteuerte Lüfter

Beitrag von Admin »

Hier habe ich noch die Änderung der Software für den Mega

Code: Alles auswählen

// Version vom 19.09.2020 um 12:00
// PWM Port 11+12 auf 31300Hz eingestellt
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h> // LCD Display
// -------------LCD Display Acresse 0x3F oder 0x27----------------
LiquidCrystal_I2C lcd(0x3F, 20, 4);

int messwert1 = 0;
int messwert1_2 = 0;
int temp1alt = 0;
int messwert2 = 0;
int messwert2_2 = 0;
int temp2alt = 0;
const unsigned long Timer2 = (60000UL * 60); // Alle 60 Min. Lüftertausch
unsigned long VorherMilles2 = 0;
byte wechsel2 = 0;
byte luefteralarm = 0;
byte sensortausch = 1;// Wenn die Sensoren vertauscht sind dann "1" eintragen
// -------PWM Ausgabepins für Mega festlegen--------------------
const int PWM_PIN1 = 11;  // PWM Ausgabepin festlegen
const int PWM_PIN2 = 12;  // PWM Ausgabepin festlegen
const byte PWMmin = 30; // Minimaler PWM Wert für die Lüfter Motoren

const int delayTimeM1 = 2000; // Alle 2 Sekunden Temperatur-Auswertung
unsigned long VorherMillesM1 = 0;

const unsigned long Baud_Rate = 9600;
const unsigned char One_Wire_Bus = 2; // Sensoren auf Pin
OneWire oneWire(One_Wire_Bus);
DallasTemperature sensoren (&oneWire);

int Anzahl_Sensoren = 0;
int is = 0; // Zaehler fuer die Sensoren
int ia = 0; // Zaehler fuer die Adressstellen 0-7
int Sensor = 0;
DeviceAddress tempDeviceAddress; // Fuer die Adressausgabe
int numberOfDevices; // Fuer die Adressausgabe

void setup() {
  sensoren.begin();
  Serial.begin(9600);
  lcd.begin();
  lcd.backlight();
  lcd.clear();
  lcd.setCursor (0, 0);
  lcd.print (F("Luefter"));
  lcd.setCursor (9, 0);
  lcd.print (F("Temp."));
  lcd.setCursor (16, 0);
  lcd.print (F("PWM"));
  lcd.setCursor (0, 1);
  lcd.print (F("-------------------"));
  lcd.setCursor (0, 2);
  lcd.print (F("CPU"));
  lcd.setCursor (0, 3);
  lcd.print (F("Raum"));
  // ----------PWM Tackt beim MEGA Pin 11 & 12 auf 31300Hz ändern---------------
  TCCR1B = TCCR1B & 0b11111000 | 0x01;

  // ----------Input und Output Pin bestimmen---------------------------
  pinMode(PWM_PIN1, OUTPUT);
  pinMode(PWM_PIN2, OUTPUT);

  // Anzahl der Sesoren ermitteln
  Anzahl_Sensoren = sensoren.getDeviceCount();

  // Ermitteln der Sensor-Adressen
  for (is = 0; is < Anzahl_Sensoren; is++)
  {
    if (sensoren.getAddress(tempDeviceAddress, is))
    {
      Serial.println ();
      printAddress(tempDeviceAddress);
    }
  }
  // Kein blockierendes Warten auf die Messung!!
  // Spart 740ms Loop Zeit bei der Messung
  sensoren.setWaitForConversion(false);
}
//---------------------------------------------------------------------------
// Ausgabe der Sensor-Adressen
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t ia = 0; ia < 8; ia++)
  {
    if (deviceAddress[ia] < 16)
    {
      Serial.print("0"); //ist die Hex Adresse kleiner 16 dann erste Stelle eine "0"
    }
    Serial.print(deviceAddress[ia], HEX);
  }
}
//---------------------------------------------------------------------------
void loop() {
  //------------------------------Temperatur Auslesen--------------------------
  if (millis() - VorherMillesM1 >= delayTimeM1)
  {
    VorherMillesM1 = millis();

    //Temperaturen Aulesen
    if (Sensor == 0) //Bei jedem ersten Durchgang Temperaturen holen
    {
      sensoren.requestTemperatures();
    }
    // Hier werden die Temperaturen aufs Display gebracht
    if (Sensor < Anzahl_Sensoren)
    {
      Sensor ++;
      float temperatur = sensoren.getTempCByIndex(Sensor - 1);
      // -----------Messfehler überbrücken--------------------------------
      // ----Sensor1------
      if ((temperatur > 0) && (Sensor == 1))
      {
        temp1alt = temperatur;
      }
      if ((temperatur < 0) && (Sensor == 1))
      {
        temperatur = temp1alt;
      }
      // ----Sensor2------
      if ((temperatur > 0) && (Sensor == 2))
      {
        temp2alt = temperatur;
      }
      if ((temperatur < 0) && (Sensor == 2))
      {
        temperatur = temp2alt;
      }
      //------------------------------------------------------------------
      // ---------------Lüfter Überwachung -------------------------------
      if ((temperatur > 50) && (Sensor == 1))
      {
        luefteralarm = 1; // Zweiten Lüfter zur CPU Lüftung zuschalten
      }
      if ((temperatur < 40) && (Sensor == 1))
      {
        luefteralarm = 0;
      }
      // --Sensorwerte ins Display in messwert1 oder messwert2 übergeben--
      //-------Wenn sensoren nicht vertauscht sind------------------------
      if (sensortausch == 0)
      {
        if (Sensor == 1)
        {
          messwert1 = temperatur;
          lcd.setCursor (9, 2);
          lcd.print (F("      "));
          lcd.setCursor (9, 2);
          lcd.print (temperatur);
        }
        if (Sensor == 2)
        {
          messwert2 = temperatur;
          lcd.setCursor (9, 3);
          lcd.print (F("      "));
          lcd.setCursor (9, 3);
          lcd.print (temperatur);
        }
        if (Sensor == Anzahl_Sensoren)
        {
          Sensor = 0;
        }
      }
      //------------------------------------------------------------------
      //----------Wenn Sensoren vertauscht sind---------------------------
      if (sensortausch == 1)
      {
        if (Sensor == 1)
        {
          messwert2 = temperatur;
          lcd.setCursor (9, 3);
          lcd.print (F("      "));
          lcd.setCursor (9, 3);
          lcd.print (temperatur);
        }
        if (Sensor == 2)
        {
          messwert1 = temperatur;
          lcd.setCursor (9, 2);
          lcd.print (F("      "));
          lcd.setCursor (9, 2);
          lcd.print (temperatur);
        }
        if (Sensor == Anzahl_Sensoren)
        {
          Sensor = 0;
        }
      }
      //-------------------Sensortausch Ende------------------------------
    }
    //---------------------------------------------------------------------------
    // Temperaturwerte 25-100 Grad, in PWM Wert "PWMmin"-255 umwandeln
    messwert1_2 = map(messwert1, 25, 100, (PWMmin - 1), 255);
    messwert2_2 = map(messwert2, 25, 100, (PWMmin - 1), 255);
    //Wenn PWM Drehzahl Lüfter 1 kleiner 30 dann unsicherer Lauf, also Lüfter aus
    if (messwert1_2 < PWMmin)
    {
      messwert1_2 = 0;
    }
    if (messwert1_2 > 255)
    {
      messwert1_2 = 255;
    }
    //Wenn PWM Drehzahl Lüfter 2 kleiner 30 dann unsicherer Lauf, also Lüfter aus
    if (messwert2_2 < PWMmin)
    {
      messwert2_2 = 0;
    }
    if (messwert2_2 > 255)
    {
      messwert2_2 = 255;
    }
    if (wechsel2 == 0) // Lüfterwechsel 1 & 2 wenn Zeit gekommen ist
    {
      lcd.setCursor (5, 2);
      lcd.print (F("1"));
      lcd.setCursor (5, 3);
      lcd.print (F("2"));
      analogWrite (PWM_PIN1, messwert1_2); // Analogwert Ausgabe an PWM Pin.9
      analogWrite (PWM_PIN2, messwert2_2); // Analogwert Ausgabe an PWM Pin.10
      if (luefteralarm == 1)
      {
        analogWrite (PWM_PIN2, messwert1_2); // Analogwert Ausgabe an PWM Pin.9
      }
    }
    if (wechsel2 == 1) // Lüfterwechsel 1 & 2 wenn Zeit gekommen ist
    {
      lcd.setCursor (5, 2);
      lcd.print (F("2"));
      lcd.setCursor (5, 3);
      lcd.print (F("1"));
      analogWrite (PWM_PIN1, messwert2_2); // Analogwert Ausgabe an PWM Pin.9
      analogWrite (PWM_PIN2, messwert1_2); // Analogwert Ausgabe an PWM Pin.10
      if (luefteralarm == 1)
      {
        analogWrite (PWM_PIN1, messwert1_2); // Analogwert Ausgabe an PWM Pin.9
      }
    }
    lcd.setCursor (16, 2);
    lcd.print (F("    "));
    lcd.setCursor (16, 2);
    lcd.print (messwert1_2);

    if (luefteralarm == 1)
    {
      lcd.setCursor (16, 3);
      lcd.print (F("    "));
      lcd.setCursor (16, 3);
      lcd.print (messwert1_2);
    }
    else
    {
      lcd.setCursor (16, 3);
      lcd.print (F("    "));
      lcd.setCursor (16, 3);
      lcd.print (messwert2_2);
    }
  }
  //----Zeitsteuerung für Lüfterwechsel------
  if (millis() - VorherMilles2 >= Timer2)
  {
    VorherMilles2 = millis();
    wechsel2 = !wechsel2;
  }
  //-----------------------------------------
}
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Zusatzlüfter für PC PWM gesteuerte Lüfter

Beitrag von Admin »

Das Gerät hat jetzt zum zweiten mal in kurzer Zeit Fehler in der Funktion. Läuft aber auch schon weit mehr als 2 Jahre. jeden Tag so 10-16 Std. Die CPU Temperatur ist alle paar Minuten viel zu hoch (so um die 80 Grad), so dass beide Lüfter ziehlich stark zu arbeiten beginnen. Das geht 10-20-30 Sekunden, dann sit es wieder normal. Aber beide Themperaturen zeigen dann genau die selbe Temperatur an. 28,5 Grad :sad: :shock: Die eine Temperatur ist am CPU Kühlkörper, die andere ist Raumtemperatur am Arbeitstisch. Ist also schon seltsam. Naja, jetzt baue ich das Gerät erst mal neu und besser, und dann nehme ich das alte auseinander, um zu sehen was da schief läuft.

Hier ist schon mal die Schaltung fürs neue Gerät. Das mache ich morgen fertig, dass mein PC wieder in guten Händen ist, beziehnungsweise in guten Lüftern. :oo: :oo:

Servus
Franz

Die neue Schaltung hat nur andere Treiber, ansonsten ist sie bewährt und bleibt daher wie gehabt. Und das Zeug kommt in ein schönes kleines Pultgehäuse.
.
Lüftersteuerung_V03.JPG
Lüftersteuerung_V03.JPG (269.82 KiB) 352 mal betrachtet
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Zusatzlüfter für PC PWM gesteuerte Lüfter

Beitrag von Admin »

Ich habe jetzt das neue Gerät zusammengebaut, aber bekomme wieder Störungen, bei der Temperaturmessung. Also die Störungen, die ich im alten Gerät hatte, sind hier auch wieder. Ich muss mal schauen, ob ich durch Abschirmungen der Motorregler zum Messteil und zur CPU Verbesserungen bekomme. Jedenfalls ist nichts aus dem alten Gerät defekt. Aber OK, das Gehäuse, das aus einem Fensterbank - Kanal gebaut war, war schon immer nicht soooo sehenswert, daher ist es schon OK, dass ich es jetzt in einem ansehnlichen Pultgehäuse untergebracht habe.

Hier ist mal noch ein Bild von dem Gerät, das hier im Bild, schon wieder im Einsatz ist. :(V):
.
PC_PWM_Lüfter_neu.jpg
PC_PWM_Lüfter_neu.jpg (371.15 KiB) 312 mal betrachtet
Einer der beiden Lüfter, die ich hier verwendet habe, ist deutlich lauter wie der andere, deshalb lasse ich den im Moment nur ab 45 Grad laufen. Daher steht der auf PWM "0". Bei meiner Raumtemperatur im Bereich von PC und USV hat es gerade 28,5 Grad, da reicht der Lüfter, der nach Raumtemperatur geregelt wird, um die CPU locker unter 40 Grad zu halten. Seit ich diese Zusatzlüfter an meinem PC betreibe (bald drei Jahre), habe ich übrigens keinerlei Ausfälle mehr. Wenn mir mal in nächster Zeit wieder langweilig ist, tausche ich den lauteren Lüfter noch aus. Im Programm ist ja schon seit Jahren ein Programmteil enthalten, der dafür sorgt, dass ab einer CPU Temperatur von 50 Grad, der zweite Lüfter der normal von der Raumtemperatur geregelt wird, automatisch auf die Drehzahl des CPU geregelten Lüfters geht. Also, wenn die CPU Stress bekommt, dann werkeln 2 Lüfter, dass die CPU wieder runterkühlt. Bei 40 Grad an der CPU, geht der Raumtemperatur geregelte Lüfter wieder auf Drehzahl nach Raumtemperatur. Ausserdem tauschen die zwei Lüfter jede Std. ihren Dienst. Das heißt, dass nicht nur ein Lüfter immer die Mehrarbeit übernimmt, sondern stündlich gewechselt wird.

Franz :(V):
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Zusatzlüfter für PC PWM gesteuerte Lüfter

Beitrag von Admin »

OK, der Laute Lüftermotor ist getauscht, alles wieder gut. Meine Ohren sind wieder zufriedengestellt. :(oo): Das mit der besseren Schirmung im Gerät muss ich noch gelegentlich machen.

Franz
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Zusatzlüfter für PC PWM gesteuerte Lüfter

Beitrag von Admin »

Den DS18B20 Sensor 2 habe ich nochmal rausgebaut, weil der auf der Seite der Motortreiber herausgeführt war. Das war völlig unüberlegt. Jetzt geht die Fühlerleitung für Raumtemperatur auf der Seite der CPU nach hinten raus und die Werte von dem Fühler werden nicht mehr gestört.

Der Fühler Sensor 1 hat noch Störungen, dafür habe ich mir ein geschirmtes 1 Adriges Kabel bestellt. Damit kann ich dann die Datenleitung für den auch noch störungsfrei durchs Gehäuse verlegen. Ausserdem kommt noch ein Kondensator an die Spannungszuführung zu den Motortreibern, dann sollte das Stress von gestern sein. Das geschirmte Kabel kommt leider erst in 14 Tagen :sad: Ich werde dann berichten, ob die Störung damit beseitigt ist.

Franz
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Zusatzlüfter für PC PWM gesteuerte Lüfter

Beitrag von Admin »

Ich habe jetzt das Material bekommen, um mein Gerät zu entstören. Ich habe als erstens die Datenleitung für den DS18B20 gegen eine Geschirmte einadrige Leitung ausgetauscht, die ja direkt über die DC Treiber für die Lüftermotoren geht. Das hat nichts gebracht. Also gefühlt genauso oft Messtörung wie ohne diese Geschirmte Leitung. Ich dachte eigentlich mindestens an eine deutliche Verbesserung, aber war nix.
Schritt 2. Das Metallgewebe, dass ich heute auch bekommen habe, mit einem Flexiblen Draht verbunden. Dazu habe ich den Litzendraht auf etwa 2cm abisoliert und wie eine Hexenbesen aufgefächert. Darüber dann ein Klebeband, das diese feinen Drähtchen auf den Metallgewebestoff drückt. Das Gewebe mit einem breiten Klebeband komplett verschlossen und über die DC Motortreiber gelegt, so dass die Treiber, genauso wie die Drähte zu den Motoren komplett abgeschirmt sind. Und keinerlei Störungen mehr. Ich dachte es wird mit dieser Lösung noch nicht Störungsfrei werden, aber def. ist es doch so, dass ich keine Störungen mehr habe. Somit habe ich keine weiteren Entstörungen durchgeführt. Das Metalgewebe schirmt den Rest in dem Gerät restlos von den Treibern ab. Das Gewebe ist nicht billig, aber gut. etwa 1qm dafon hat 22,- Euro gekostet. Aber man braucht ja immer nur ein paar qcm davon, somit ist das schon tragbar.

Franz
Antworten

Zurück zu „Fertige Projekte Vorstellen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste