-
Für den Lüfter:
Ich würde mir da eine Funktion zusammenstricken und mit dieser den PWM-Wert aus der Temperatur berechnen.
Die Funktion sollte dann wohl exponentiell aussehen ==> je höher die Temperatur, umso höher die Lüfterdrehzahl.
Etwas lineares geht natürlich auch...
-
Naja :-)
so aufwendig dachte ich gar nicht.
Also wenn der Lüfter vielleicht mit 25%, 50%, 75% oder 100% dreht reicht mir dass aus(also 4Stufen).
Ich dachte nur:
1. If Schleife größer als 25° -> Lüfter 25%
2. If Schleife größer als 30° -> Lüfter 50%
3...
und so läuft der Lüfter hoch und das fängt bei jedem Zyklus wieder von vorne an - oder nicht?
Tobias
-
Hallo,
wie wär's mit
Code:
Select Case Temp
Case 25 to 39
Lüfter 25
Case 40 to 59
Lüfter 50
Case 60 to 79
Lüfter 75
Case 80 to 100
Lüfter 100
Case >100
Feuerwehr
End Select
Gruß
Detlef
-
Sehr schöner Befehl.
Die Feuerwehr hab ich mal weggelassen :-)
Wenn sich Temp erhöht geht der Lüfter mit "Drehzahl" an. Wenn der Lüfter nun kühlt und Temp kleiner wird geht der Lüfter aus - er soll aber nun eine Stufe langsamer drehen...
Select Case Temp
Case 25 To 29
Pwm1 = 25
Case 30 To 34
Pwm1 = 50
Case 35 To 39
Pwm1 = 75
Case Is > 40
Pwm1 = 100
Case Else
Pwm1 = 0
End Select
-
Hallo,
wenn eine Übereinstimmung gefunden ist, wird Select verlassen. Wenn die Temperatur beim nächsten Durchlauf kleiner ist, wird auf die ensprechende Stufe zurückgeschaltet, nicht ausgeschaltet.
Gruß
Detlef
-
Aber nicht bei mir - er schaltet nich zurück sondern auf 0
Also ich habe nun:
Case 10 To 24
Pwm1 = 0
dazugeschrieben und die
Case Else
Pwm1 = 0
habe ich weggelassen. Warum hat er denn die Else Schleife nicht genommen?
Code:
$regfile = "m8def.dat" 'AT-Mega8
$crystal = 1000000 'Quarz: 1 MHz
$baud = 2400 'Baudrate der UART: 2400 Baud
'===============================================================================
' Variablen
'===============================================================================
Dim Result As Word
Dim Ohm As Single
Dim Temp1 As Single 'wegen den negativen Zahlen!!!
Dim Temp2 As Single
Dim Temp3 As Single
Dim Temp As Single
Dim Pwm1 As Byte
Config Portc = Input
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
'-------------------------------------------------------------------------------
'Programm:
'-------------------------------------------------------------------------------
Do
Result = Getadc(1)
Ohm = 2.0238 * Result
Temp1 = Log(ohm)
Temp2 = Temp1 + 5.59017600439636
Temp3 = 3730 / Temp2
Temp = Temp3 - 273
Print "Temp: " ; Fusing(temp , "###.#" ) ; "°C"
Wait 1
Select Case Temp
Case 10 To 24
Pwm1 = 0
Case 25 To 29
Pwm1 = 25
Case 30 To 34
Pwm1 = 50
Case 35 To 39
Pwm1 = 75
Case Is > 40
Pwm1 = 100
'Case Else
' Pwm1 = 0
End Select
Print "PWM1: " ; Pwm1
Loop
End
-
Merkwürdig, da bin ich auch überfragt.