Hallo,
ich bin gerade dabei eine Lüftersteuerung zu bauen. Sie soll an mehreren
Stellen zum Einsatz kommen. Das Projekt dient mehr zum herantasten an
größere Projekte. Soll aber gleichzeitig einen praktischen Nutzen
abwerfen.
Zentrale Steuereinheit:
STM32 (aktuell F042F6P6)
Ansteuerung Lüfter:
PWM 20 bis 60 kHz mit 0 bis 100% (Nur Lüfter, welche PWM Eingang
besitzen)
Am PWM Ausgang des µCs hängt über einen 1 kOhm Widerstand ein BC 547C
Transistor, welcher den PWM des Lüfters auf Masse zieht.
- Nidec TA 350 DC funktioniert hervorragend
- Arctic Cooling F12 PWM zeigt keinerlei Reaktion
Tacho:
Tachosignal jedes Lüfters soll vom µC erfasst werden und ein Ausfall
soll signalisiert werden.
Momentan versuche ich es mit einem Timer als Counter. Dieser soll
mittels zeitbasiertem Interrupt ausgelesen und zurückgesetzt werden.
- Bekomme Fehlermeldung beim Zähler abfragen, siehe Unten
Display:
Anzeige der einzelnen Lüftergeschwindigkeiten, aktuelle Temperatur und
Einstellwerte.
- Muss mich erst noch mit dem Display beschäftigen
Temperaturerfassung:
Wahlweise über PTC/NTC oder I²C.
- I²C Temperatursensor funktioniert (zum Testen wird einfaches Poti
verwendet)
Software:
CubeMX STM32
Eclipse (SW4STM32)
---------------------------------------------------------------
Nun zu den Problemen:
Den Tacho wollte ich über einen Counter laufen lassen. Ich bin nach
dieser Anleitung vorgegangen:
https://letanphuc.net/2015/06/stm32f0-timer-tutorial-and-counter-tutorial/
"2. External Input Counter"
Beim Compilieren bringt er mir die Fehlermeldung:
1
undefinedReferenceto__HAL_TIM_GetCounter(&htim2);
Das heißt für mich, dass er eine Funktion nicht findet. Aber wie bringe
ich ihm diese bei? Bei dem oben verlinkten Beispiel sind auch nicht mehr
Includes dabei.
Diese Funktion basiert ebenfalls auf Timern und geht ohne Probleme (PWM
Signal).
Hier wird eine Lösung vorgeschlagen:
https://www.eclipse.org/forums/index.php/t/1065128/
Jedoch kann ich das Menü (Bild ganz am Ende des Links) nirgends finden.
Wie behebe ich den Fehler?
Der Nidec Lüfter lässt sich hervorragend per PWM runterregeln.
Einstellwerte:
Prescaler: 0
Period: 200
Pulse: Über Poti 0 bis 200
CPU/ABP: 8MHz
8 MHz / 200 = 40 kHz
Der Arctic Cooling Lüfter verändert weder bei 40, noch bei 20 kHz seine
Drehzahl. Selbst wenn ich den PWM Eingang mit Widerstand direkt an Masse
oder VCC halte passiert nichts. PWM auf GND ist in der Theorie, als auch
beim Nidec 0% PWM. Warum weigert sich der Artic Cooling?
Heinz M. schrieb:> Der Arctic Cooling Lüfter verändert weder bei 40, noch bei 20 kHz seine> Drehzahl. Selbst wenn ich den PWM Eingang mit Widerstand direkt an Masse> oder VCC halte passiert nichts. PWM auf GND ist in der Theorie, als auch> beim Nidec 0% PWM. Warum weigert sich der Artic Cooling?
Vermutlich weil sich der Arctic Cooling scheinbar an die Specs hält:
http://www.formfactors.org/developer/specs/4_wire_pwm_spec.pdf
Alles unter 20% PWM ist nicht spezifiziert, ebenso wie 20kHz oder 40kHz
PWM-Frequenz. Die Frequenz soll 25kHz betragen, wobei 21kHz bis 28kHz
akzeptiert werden.
Heinz M. schrieb:> Am PWM Ausgang des µCs hängt über einen 1 kOhm Widerstand ein BC 547C> Transistor, welcher den PWM des Lüfters auf Masse zieht.
Der PWM-Eingang ist nicht low-active, sondern muss mit einem ganz
„normalen“ 5V-PWM Signal angesteuert werden.
@Christopher:
Danke für den Link.
Laut Arctic Cooling Webseite müsste der Lüfter bei 0% und 5V ausgehen.
Bei 0% und 12V runter regeln.
https://www.arctic.ac/de_en/arctic-f12-pwm.html
0% PWM ist GND.
@Harald:
Das erklärt, warum der Arctic Cooling Lüfter mit PWM ungleich 0% nicht
läuft. Der Nidec hat den 5V Spannungsteiler schon eingebaut. Der AC
scheinbar nicht.
Das erklärt aber noch nicht, warum er bei 0% PWM nicht anhält.
Harald schrieb:> Der PWM-Eingang ist nicht low-active, sondern muss mit einem ganz> „normalen“ 5V-PWM Signal angesteuert werden.
Nein, stimmt so nicht! Muss ein open-collector oder open-drain Signal
sein.
Der Pullup steckt im Lüfter selber und auf welche Spannung der das
Signal hochzieht kann je nach Lüfter verschieden sein. In der Spec 1.3
ist bei 2.3.1 eine Signalform mit 5V abgebildet, ich hab hier aber einen
92mm Noctua Lüfter der einen Pullup auf ca. 3,3V hat.
Ich Hab selber von Arctic einen PWM Lüfter in meiner elektronischen
Last. OC-Ausgang über einen ATmega PWM-Ausgang und BC54x geht
problemlos. Ungefähr 25kHz sollten es schon sein, aber die meisten
Lüfter sind da recht tolerant. Unterhalb von 30% ist das Verhalten nicht
völlig unspezifiziert, so wie ich die Spec lese. Der Lüfter darf sich
unterhalb von 30% weiter (linear) regeln lassen, irgendwann ausgehen,
gleich ausgehen oder mit minimum Speed weiterdrehen. Aber schneller als
bei 30% ist nicht vorgesehen.
Mfg Bimbo385
PS: Ich mache seit über 5 Jahren mit PWM Lüftern und entsprechenden
Steuerungen rum ;-)
Ich habe rausgefunden, was das Problem ist.
Der Nidec geht bei 0% PWM auf 0%.
Der Arctic Cooling geht bei 0% bis 10% PWM auf 100%.
Das Poti ist über den ADC angeschlossen (8Bit = 256). Alles was über 200
ist, habe ich auf 200 gekürzt, damit ich das ohne Formatumwandlung
direkt als PWM Wert übertragen kann. Das hatte zur Folge, dass die 11%
bis 20% wo der Arctic stehen bleibt eine Mittelstellung des Potis
entspricht. Da der Arctic mit seinen 1350 RPM relativ leise gegenüber
den 6000 oder 7000 RPM des Nidec ist, merkt man nicht so schnell, dass
die Regelung läuft und ist schnell über den Stillstand hinaus.
Muss ich wohl eine Konfiguration in die Regelung einbauen, weil der
Nidec ist bei 10% lauter, als der Arctic bei 100%. 8-O
Bleibt noch das andere Problem mit dem Counter. Jemand ne Idee?
Heinz M. schrieb:> Beim Compilieren bringt er mir die Fehlermeldung:undefined Reference to> __HAL_TIM_GetCounter(&htim2);
Es heißt eben auch __HAL_TIM_GET_COUNTER()
Bimbo385 schrieb:> Harald schrieb:>> Der PWM-Eingang ist nicht low-active, sondern muss mit einem ganz>> „normalen“ 5V-PWM Signal angesteuert werden.>> Nein, stimmt so nicht! Muss ein open-collector oder open-drain Signal> sein.
Man lernt doch nie aus! Ich habe die Spec. ein weiteres Mal gelesen und
Du hast absolut Recht. Ich habe die Spec bisher immer aus Anwendersicht
gelesen, aber sie richtet sich natürlich auch an den Designer des
Lüfters, daher ist mir das mit max. 5.25V open loop voltage entgangen!
Etwas mehr Text oder Bild hätte dem Dokument bestimmt gut getan!