Forum: Projekte & Code PC FAN 4Port mit Raspberry Pi kontrollieren


von Hannes (Gast)


Angehängte Dateien:

Lesenswert?

Hallo liebe Elektronikgemeinde,
als Programmierer habe ich ein Elektronik-Programmierprojekt begonnen, 
bei dem ich mir mittlerweile eingestehen muss, dass meine Fähigkeiten im 
Bereich Elektrotechnik absolut ungenügend dafür sind. Ein Raspberry Pi 
hat das bereits nicht überlebt.

Was ist das Ziel?
Ich möchte mit dem Raspberry Pi GPIO einen handelsüblichen PC Lüfter mit 
4 Pins (12V) kontrollieren. Neben einem 3.3V und einem GND Pin sind drei 
Pins dafür vorgesehen:
- OUT für PWM
- IN für Tach
- OUT für die Kontrolle eines MOSFET (zum An- und Ausschalten des 
Lüfters)

Was funktioniert bereits?
Jede der drei genannten Funktionen separat auf einem Breadboard 
zusammengesteckt funktioniert und kann programmatisch weiterverwendet 
werden.

Was ist die Herausforderung?
Alle drei Funktionen gleichzeitig so zu zusammen zu schalten, dass sie 
sich nicht gegenseitig beeinflussen oder, dass der Raspberry Pi 
verbrennt … :(.

Was sind die Randbedingungen?
- PC-FAN: „be quiet! SHADOW WINGS 2“ (14025-LR-PWM).
- Der MOSFET (IRF 520N) befindet sich auf einem separaten Board „MOS 
MODULE 2035“
Sowohl Lüfter als auch das MOS MODULE haben eigene elektronische 
Schaltungen, die ich nicht im Detail verstehe und daher als „Black Box“ 
mit Schnittstellen nach außen betrachtet habe.

Den Quellcode (Python) stelle ich nach Fertigstellung gern mit zur 
Verfügung.

Eine initiale schematische Darstellung habe ich mit der Datei 
RaspiFanController.jpg angehängt. Die Darstellung der Schaltung im MOS 
MODUL 2035 ist unvollständig.

(Der Eintrag Beitrag "Raspberry 4Pin PWM FAN" scheint 
ähnlich gelagert zu seine, löst aber das Problem leider nicht.)

Vielen Dank schon einmal für's Lesen und natürlich allen, die eine Tipp 
für mich haben.
Viele Grüße,
Hannes

von Timo N. (tnn85)


Lesenswert?


von Micha W. (blackxiiv)


Lesenswert?

Moin,

Alle GNDs werden verbunden. 12V- = GND?!

zum MOS-Module:
links: An SIG kommt GPIO_OUT_PWM, An VCC kommt 3,3V, GND = GND
rechts: Vin = 12V, V- = GND, V+ = PWM(FAN), GND wird über nen 
zusätzlichen N-MOSFET vom Raspi geschalten. Der Zusätzliche N-MOS: 
Source an GND, Drain an GND vom MOS-Modul, Gate über 100 Ohm an 
GPIO_OUT_MOS(Raspi)

zum FAN:
12v = 12V
GND = GND
PWM = V+(MOS-Modul)

zum Raspi:
Hier brauchen wir jetzt nen NPN-Transistor oder N-MOS
GND = GND(Raspi) = Source(N-MOS)/Emitter(NPN)
TACH(FAN) = 1kOhm zu Gate(N-MOS)/Basis(NPN)
Drain(N-MOS)/Kollektor(NPN) = 1kOhm zu 3,3V + Drain zu 
GPIO_W_TACH/Kollektor zu GPIO_W_TACH

Durch die Transistoren werden logische Signale invertiert.

Grüße (:

: Bearbeitet durch User
von Andreas M. (amesser)


Lesenswert?

In einem Schaltplan kommen normalerweise auch Verbindungen zwischen den 
Modulen vor!

Mein Glaskugel sagt mir, Deine Mosfetmodule sind unbrauchbar, da sie GND 
Schalten. Du brauchst welche die die +12V Schalten, den wenn du die 
Lüfter per Mosfet an GND trennst, dann liegen am Tacho/PWM Pin 12V an -> 
Raspi tot.

Daneben brauchen 4Pin Lüfter keinen Mosfet, einfach die PWM auf 0% Duty 
stellen -> Aus.

- Für die Tachoeingänge brauchst Du einen Pull-Up
- Der PWM Ausgang kann vom Lüfter auf bis zu 5.5V gezogen, das mag ein 
Raspi gar nicht.
- der PWM Ausgang muss außerdem als Open-Drain konfiguriert werden
- Es fehlt generell die Schutzbeschaltung für solche steckbaren 
Anschlüsse. Der Raspi ist da sehr empfindlich

Warum ausgerechnet einen Raspi? Das ganze wäre mit einem Arduino 
günstiger, einfacher und robuster. Der bedient Dir ohne mit der wimper 
zu zucken 8 Lüfter gleichzeitig, wenn sein muss auch mit Mehrzonen 
Temperaturregelung.

von Hannes (Gast)


Lesenswert?

Hallo zusammen,

zuerst einmal VIELEN DANK für die Tipps und Vorschläge. Ich habe mir 
eine Reihe verschiedener   Transistoren bestellt um die Vorschläge 
nachzubauen.

Timo: Der mittlere Link ließ sich gut nachbauen und funktioniert. Das 
PWM-Signal scheint invertiert zu sein (oder ich habe etwas falsch 
gesteckt) aber das konnte ich programmatisch auflösen.

Andreas: leider ist Duty 0% bei dem Ventilator scheinbar nur die 
niedrigste RPM die geht aber er dreht sich weiter. Das Oszi zeigt auch 
wirklich eine Null-Linie. D.h. ich brauche diesen „Hauptschalter“ oder?

Micha, das versuche ich mal umzusetzen, wenn die Transistoren da sind. 
Ich werde es vermutlich aber niemals verstehen. Meinen Respekt allen, 
die so etwas können. :D

Ist es aber statt dessen nicht leichter das MOS MODULE einfach 
rauszuschmeißen und statt dessen mit geeigneten Transistoren V+ zu 
schalten?

Ziel der Aktion ist es ein Raspi-OMV-NAS-Gehäuse zu kühlen – darum der 
Raspi und kein Arduino. Als Input soll ein DHT-22 und die 
Raspi-CPU-Temp. Dienen.

VG, Hannes

von Andreas M. (amesser)


Lesenswert?

Aha, jetzt kommen wir also langsam zum Thema.

Dann brauchst Du auf jeden Fall High-Side Schalter. Transistoren machen 
bei den Strömen keinen Sinn mehr. Entweder P-Channel Mosfet + ein 
Transistor als Inverter oder gleich ein fertiger High-Side Switch. Bei 
den PWM Tacholüftern gibt es nach Norm drei Profile. Bei einem läuft der 
Lüfter mit 0% Duty bei Mindestdrehzahl, bei den anderen bleibt er 
stehen. Dein Tachoeingang braucht trotzdem eine Schutzbeschaltung, also 
wenigstens ein Widerstand mit 10k davor + Pull up auf 3.3V. Für das PWM 
Signal reicht ein Transistor, invertiert das Signal, muss Du dann bei 
der Duty berücksichtigen.

von Max G. (l0wside) Benutzerseite


Lesenswert?

Fertiger Highside-Switch (z.B. aus der ProFET-Serie BTSxxx) wäre sicher 
die bessere Wahl, weil nahezu trivial anzusteuern. Mit den Teilen kann 
man fast nichts falsch machen.

von Hannes (Gast)


Lesenswert?

Hallo zusammen,
noch einmal herzlichsten Dank für die super Unterstützung. Mit den 
letzten Hinweisen haben ich das Ziel nun vollständig erreichen können.
Das MOS-Modul ist rausgeflogen und statt dessen ein BTS 432 E2 
dazugekommen. Ich kann nun vom Raspi aus den Ventilator sauber ein und 
ausschalten, über die PWM regulieren sowie die RPM permanent ausgeben 
lassen.
Wenn ich das Datenblatt des BTS 432 E2 richtig interpretiere braucht man 
eigentlich eine Steuerspannung von mind. 5V. Es funktioniert hier 
allerdings auch mit den 3.3V des Raspi. Im Zweifel könnte man vermutlich 
aber auch einen 3.3 -> 5V Logiklevelkonverter dazwischen klemmen.
Jetzt werde ich die Schaltung noch einmal komplett aufzeichnen und den 
Python-Code bereitstellen.
VG, Hannes

von Wutscwutsch (Gast)


Lesenswert?

Ist das hier eine geschützte Werkstätte?
Wo ist das Projekt oder dein Kot?

von Hannes (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Hier nun die Ergebnisse:

1. Schaltung
angehängt ist die Schaltung als PNG. So weit funktioniert das bei mir 
mit einem Raspi 2. Alle Grounds sind verbunden. Die Schaltung basiert 
weitestgehend auf dem zweiten Link von Timo N. In wie weit meine 
Modifikationen und die Schaltung als ganzes elektrotechnisch korrekt 
ist, kann ich leider mangels Wissen nicht einschätzen. 
Anpassungsvorschläge nehme ich natürlich gern an. Nachbauen bitte auf 
eigene Gefahr.

In meinem vorangegangenem Post habe ich geschrieben, dass der BTS 432 E2 
laut Spec keine 3,3V Logik verarbeiten kann. Ich glaube da habe ich mich 
geirrt und die Praxis zeigt das auch.

Wie auch erwähnt ist das PWM Signal invertiert. Ich vermute das liegt an 
dem Transistor S9014. Oder?
Ggf. ist das sogar das, was Andreas M. In seinem zweiten Post 
beschreibt.

2. Code
angehängt ist der Code als Fan.py. Er ist für den Ventilator mit dem 
Profil 0% Duty bei Mindestdrehzahl ausgelegt. Siehe hierzu auch der 
zweite Post von Andreas M. Die Pin-Nummern müssen natürlich immer an das 
entsprechend verwendete Setup angepasst werden.

Vielen Dank und VG, Hannes

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.