Hallo Zusammen, ich bin neu hier, mein neues Projekt ist:
Computer-PWM 2-4 in 1
Zweck des Projektes ist zwei (minimum) bis vier Computer-PWMs auf nur
ein Ausgang mit der Mittelwert der Eingänge zu belegen. Wie der Ausgang
auf die verschieden "Verbraucher" verteil ist kein Problem für mich.
Erklärung: In ein Computer gibt mehrere PWM-Signale z.B. Hauptprozessor
& Grafikkarte, bei einer Wasserkühlung aber nur eine Pumpe (in der
Regel) die seriell die Bauteile (CPU & GPU) mit Kühlwasser versorgt. Das
Problem wird heute mit "Zero-Fan"-Grafikkarte noch verstärkt und zwingt
zur Bildung ein eigenständiges Kreislauf für die (GPU).
Ziel: Ein ("zum verteilen" bzw. an die Wasserpumpe) PWM-Signal das
Minimum 30% "output" hat aber in alle andere Fälle den Mittelwert von
PWM-1, PWM-2, etc. hat. Hier der Link zur PWM-Specs.:
http://formfactors.org/developer/specs/REV1_2_Public.pdf
und hier die PWM-Input-Specs:
PWM Control Input Signal / The following requirements are measured at
the PWM (control) pin of the fan cable connector:
PWM Frequency: Target frequency 25 kHz, acceptable operational range 21
kHz to 28 kHz
Maximum voltage for logic low: VIL = 0.8 V
Absolute maximum current sourced: Imax = 5 mA (short circuit current)
Absolute maximum voltage level: VMax = 5.25 V (open circuit voltage)
Präzisierung: T = 40 µs (25 KHz) = t1 + t2 = T-ein + T-aus. Gesucht sind
Mittelwerte von alle t1 und t2 bzw. von T-ein und T-aus
Ein andere "Problem" stellt (für mich) die
Ablese-Geschwindigkeit/Auflösung, 1 MHz (=1µs) oder 2 MHz (=500ns)?
Ich bitte um Entschuldigung wenn das Thema schon behandel worden ist
(habe nur das gefunden:
https://www.mikrocontroller.net/articles/Pulsweitenmodulation) und
vielen Dank im Voraus für jegliche Hilfe.
MfG
Hallo,
eine digitale Verknüpfung wird möglicherweise einfacher, wenn man
berücksichtigt, dass hier an sich nicht der Mittelwert, sondern der
Maximalwert der PWM benötigt wird, denn die Komponente mit dem höchsten
Kühlbedarf bestimmt die benötigte Kühlleistung.
Beispiel: 4 Komponenten melden 20% Bedarf, eine Komponente meldet 90%
Bedarf. Du stellst mit Mittelwert, also 34% des Volumenstroms ein. Was
glaubst Du, wird bei der 90%-Komponente passieren?
Insgesamt wird aber vermutlich der Aufwand sowieso nicht viel bringen,
da die Kühlleistung nicht sehr stark von dem Durchfluss abhängt, wenn
man erst einmal den minimal notwendigen Durchfluss hat (siehe
https://www.computerbase.de/forum/showthread.php?t=1527805).
Eine Steuerung des Durchflusses über die normalen PWM-Signale des
Mainboards bringt hier nicht viel, da der minimale Durchfluss schon bei
30° Komponententemperatur erreicht werden sollte und eine Erhöhung des
Durchflusses über die Mainboard-PWM bei Erhöhung der
Komponententemperatur auf 90° wegen fehlender Kühlleistung Dich dann
nicht rettet.
Was dann gesteigert werden muss, ist die Kühlleistung auf der anderen
Seite der Wasserkühlung, also die Drehzahl der Ventilatoren. Die kann
man aber einfacher und sinnvoller über eine Messung der Wassertemperatur
als über eine Verknüpfung der PWM-Signale regeln.
Und die im verlinkten Artikel angesprochene Problematik, dass man bei
vielen Hitzeerzeugern besser einen höheren Durchfluss haben sollte, ist
zwar korrekt, allerdings wäre es dann definitiv auch sinnvoller, die
Komponenten parallel und nicht seriell zu verschalten und einen
hydraulischen Abgleich durchzuführen (bei der jede Komponente dann den
Anteil des Kühlstroms bekommt, den sie im Normalfall benötigt).
Schöne Grüße,
Martin
Vielen Dank (rufus), es sieht garnicht schlecht aus.
Nun der RC-Pass scheint die beste Lösung zu sein (laut gelinkte Artikel)
wobei ob ich ein Kondensator für 6 ct. kaufen oder ein IC für 70 ct.
macht auf den viel teuere Transport garnichts aus, aber bei der
Schaltung und Dimensionierung (des RC) da... Siehe RC-Bild. Nun anstatt
R2 würde ich sogar ein D2 einsetzen.
Was mir aber am meistens Kopfschmerzen bereitet ist aber der 'OpAmp' der
im 'Unglücksfall' tatsächlich als Addirer wirkt und da habe ich eine
Pumpe die mit 5700 RPM läuft, außerdem brauche ich die 1.575V (=30% von
max 5,25V) die garantiert werden müssen. Das entsprechen ca. 4V an Pumpe
und Lüfter (manche Lüfter starten mit 3,9v erst) und ist 30% von 12V.
Außerdem da der 'OpAmp' auch als DAC verwenden kann brauche ich den
RC-Pass garnicht, oder? Ein IC mit (sagen wir mal) 4-8 OPAmps drauf und
fertig.
Nun, da ich die Kurzschlüßfestigkeit garantieren muss (möchte keine
Späße mit der Motherboard machen) und die Umkehrströme/Spannungen am
Eingang des OP kappen muss (z.B. durch Dioden mit eigene Spannungsabfall
um die 1V)... scheint mir die Analoge-Lösung ein bisschen wackelig.
Anders wäre mit ein Digitales-Baustein mit hochohmige Eingang und 24 Bit
das die Verbraucher-Spannung (12V für Pumpe und Radiator-Lüfter) in
0,5V/Stepp mich (bzw. automatisch) erhöhen lässt. Dazu kommt die gängige
Toleranz von 20% der Wiederstände und Kondensatoren bzw.
Analoge-Bausteine dass bei 8 Bit 1,6=2 Bit ausmacht und bei 24 Bit
gleich 4,8=5 Bit ausmacht.
Es will keine Kritik an Niemanden sein und ich glaube das den Vorschlag
schon seine Berechtigung hat, nun bin ich überzeugt das anders gehen
muss und würde sogar eine galvanische Trennung (z.B. durch Optokoppler)
zwischen PWM und weitere Signalbearbeitung um sicher zu gehen das das
MainBoard kein Schaden hinzugefügt wird.
Wenn man die 25 KHz in 24 Bit teilen will kommt man auf eine
Abtastfrequenz von 600 KHz d.h. eine Zählung jede 1,6 Period µs.
Im Grund genommen ein TTL/UART-Zähler 24 Bit mit 1MHz Takt wäre am
bestens.
Hat jemand eine Idee wie am besten machen kann?
Hallo maveric00 und Dir auch vielen herzlichen Dank,
habe dein Antwort nach meinem Beitrag gesehen, sorry.
Wie auch immer, Du hast Recht und mein Ansatz war nicht korrekt nach
Deine Beschilderung. Nun PWM-Ausgang muss immer (as default und nach
specs) 30% haben (1,5-1,575V) das Problem sind die neue GPUs mit
'Zero-Fan'-Technologie die zwingend ein zweites Kühlkreislauf verlangen
(verkaufen wollen). Natürlich, wen man ein RPM an die GPU schickt... ist
dann ausgeschmissen weil Nichts mehr regeln kann, heute haben sogar RAMs
angeblich zum regeln der LED ein defacto PWM.
Dein Ansatz 'den höchstes Wert' zu nehmen ist durchaus richtig weil dann
das am meistens verlangte Komponent würde auch die (Kühl)-Leistung
abrufen und bekommen, in Konsequenz würde auch sofort herunter-regeln.
Der Ansatz in Deinem verlikte Artikel ist soweit falsch weil die Lüfter
von der Regelung ausgenommen werden, kein 'distributed PWM', aber, wenn
alle Lüfter und sie Pumpe an die 12V hängen und nur den PRM der Pumpe an
die CPU geschickt wird, dann läuft alles einwandfrei weil die Lüfter
werden genuso geregelt wie die Pumpe, oder Nicht?
Ich überlege mich gerade ob im enddefekt reicht einfach die CPU-PWM an
Pumpe und alle Lüfter zu 'verteilen' und nur die Pumpe-RPM an den CPU zu
schicken. In der Versuch-Anordnung auf mein Tisch laufen auch 8 Lüfter
auf nur ein PWM (CPU-PWM) und alle Lüfter laufen denselben
Geschwindigkeit und regeln gleichzeitig, nur ein Lüfter sendet den RPM
an CPU zurück. Die 12V Spannung kommt aber nicht von CPU-PWM sondern von
zwei SATA bzw. Molex-Stecker. Da die CPU 100W verbraucht (größte
Abnehmer) geht's, nun wenn ein GPU mit 200W und ein CPU mit 170W im
Spiel sind und die GPU 'Zero-Fan' hat... dann sieht komplett anders aus
weil fast alle Anwendungen benötigen 'nur' ein Core der CPU aber alle
Anwendungen, vorallem Spiele nehmen die komplette GPU in Anspruch.
Das wollte ich gerade Vermeiden, und zwar (zumindest) eine zweite Pumpe
zu kaufen wenn nicht gleich ein zweite Reservoir + Radiator und Lüfter.
Man muss auch den Platz dafür haben außer 400€ noch dazu.
Da fällt mir ein zweiteres Problem ein und zwar: Je nachdem welche
Komponente die größte Leistung abruft braucht auch als Feedback das PRM
der Pumpe (z.B.) zugesandt zum herunterregeln bei erhalten der
Kühlleistung, oder nicht?
Braucht man da jetzt ein Arduino oder Bana-Pi zum Realisierung der
Schaltung?
Hallo maveric00,
die digitale Bausteine (bzw. 4 OR) bzw. 1 OR mit vier Eingänge) ist in
Theorie die beste Lösung.
Das Problem ist:
- Wie viele Digit sind enthalten in der 40 µs? (1/25 kHz = 40µs)
- Wie lang (vieviele Bit) ist das Data-Wort 2 hoch?
- Hat das Data-Wort ein Start oder ein Start und ein Stop-Bit und wie
erkennt man es?
- Da verschiedene Komponente (nicht nur Motherboard) sondern auch GPU
2*CPU, Chassis Fan, wie synchronisiert man die 4 PWM-Signale? Nehmen wir
an alle vier Signale senden 0001 (4 Bit wobei nur ein 'High' ist) aber
nicht synchron dann hätten wir im schlimmsten Fall auf der 4 Eingänge
des OR-Gatters:
0001
0010
0100
1000
Dann hätten wir am Ausgang anstatt den dezimal-Wert 1 den dezimal-Wert
15 und das bedeutet anstatt minimal-Leistung höchste-Leistung und das
nur bei ein halben Byte, wenn ein ganzes Byte oder mehr... ist
wahrscheinlicher am Lotto zu gewinnen als die Kühlung durch die 4 PWMs
(or mostly demanding) zu regeln.
Meinst Du nicht? Oder hast Du mehr Infos oder ein Lösung für dieses
Problem?
Hallo,
bei synchronen PWM ist es einfach: Signale ver-odern und fertig. Ob das
Mainboard die PWM synchron erzeug müsste man nachmessen (da gibt es eine
gewisse Chance, dass das so ist), allerdings ist es eher
unwahrscheinlich, dass Mainboard und Grafikkarte synchrone PWM erzeugen.
Um das Maximum von nicht-synchronen PWMs zu ermitteln wird man wohl am
Einfachsten einen Mikrocontroller benutzen, bei dem man die
Flankenwechsel an den Eingängen dazu benutzt, einen kontinuierlichen
Timer auszulesen, um so den PWM-Wert zu bestimmen. Alternativ gibt es
auch Mikrocontroller, die genügend Input-Capture-Eingänge haben, so dass
man quasi direkt die Timer-Werte bekommt. Diese haben aber häufig sehr
viele Pins (>=64).
Allerdings glaube ich fast, dass Du das Konzept einer PWM noch nicht
ganz verstanden hast, wenn Du von Start/Stopp-Bits, wieviele Digits,...
sprichst. Nur um es noch einmal klar zu stellen: eine PWM
(Pulse-Width-Modulation) kodiert einen beliebigen Wert in dem Verhältnis
zwischen High und Low einer Rechteck-Schwingung mit konstanter Frequenz.
Beispiel: Es soll der Wert 137 einer 8-Bit-Variablen übertragen werden.
137 ist rund 53,5% von 256, also wird in einer Schwingungsperiode der
Pin 53,5% der Zeit auf High und 46,5% der Zeit auf Low sein. Diese
Abfolge wird immer wiederholt. Dies misst der Empfänger und berechnet
dann den Wert, der zu den 53,5% gehört. Wenn der gleiche Wert wie beim
Sender herauskommen soll, muss er natürlich die gleiche Basis (hier 256)
benutzen, ansonsten ist er vollkommen frei in der Entscheidung der
Basis. Er könnte also z.B. 35062 als 16-Bit-Wert setzen, oder 5,35 V im
Bereich 0-10 Volt.
Auflösung und Genauigkeit hängt sowohl von der Qualität des Senders als
auch vom Empfänger ab. Für Deine Anwendung reichen 8 Bit
Empfängerauflösung mehr als aus, daher sollte man das in Software mit
einem Mikrocontroller machen können (auch bei 25 kHz PWM-Frequenz),
allerdings muss man eventuell Wert auf das Timing des Programmablaufs
legen, was manchmal den Einsatz von Assembler bedingt.
Aber noch einmal: Ich glaube nicht, dass Du diesen Aufwand treiben
musst! Vergiss alle PWMs, die Dein Mainboard oder die Grafikkarte zur
Verfügung stellen. Stelle Deine Wasserkühlung auf einen festen
Durchfluss ein und regel die Ventilatoren des Kühlers mit der gemessenen
Wassertemperatur (geht im Zweifel auch ganz analog mit Thermo-Widerstand
und Transistor als Stromquelle für den Lüfter). Damit erreichst Du auch
das minimale notwendige Lüftungsgeräusch für die benötigte Kühlleistung.
Den Impuls-Ausgang des Lüfters kannst (musst?) Du dann ggf. mit den
Lüfter-Steckern vom Mainboard und Grafikkarte verbinden, damit diese
keinen Lüfterdefekt melden.
Schöne Grüße,
Martin
Edit sagt: Besser "Rechteck" als "Digital"
Hallo maveric00,
da hast du absolut recht wegen µC (64 Pins, Assembler+ Programmierung,
Kosten, Aufwand), die Späße mit der Sync mache ich auch nicht allerdings
wäre auch eine 'dedicated solution' und da ich bis Ende des Jahres zwei
PC und ein Server aufbauen muss... brauche eine Standard-Lösung.
Soweit ich verstanden habe (danke dir, nach deine Erklärung) die
Zeit-Länge des High-Signals innerhalb der 40 µs (25 kHz die von 21 bis
28 schwanken können) bestimmt den Wert des PWM (die Höhe der Spannung
unten der die Lüfter und Pumpe laufen sollen).
Auflösung: Da gibt der IC: http://www.linear.com/purchase/LTC2645 in 8,
10 und 12 Bit für 4,65 $. Diesen IC hat 4 PWM-Eingänge und 4
DAC-Ausgänge und bearbeitet PWMs von 30 Hz bis 100 kHz (der Swiss-Knife
das ich gesucht habe). Was an Genauigkeit angeht, hier wird empfohlen
ein 4-Fache 'CMOS-Buffer'. Das muss ich suchen oder kannst du mir ein
Tipp geben?
Meine Frau wird bestimmt Nichts einstellen an Ihren PC ganz zu schweigen
von nachregeln, sie spielt oft aber regelt nicht mal die Lautstärke und
die Indirekte-Messung des Wassers (mit Temperatur-Wiederstand) ist zu
langsam bzw. zu weit hinten (nicht direkt an CPU, GPU), für den Preis
von nur ein solche Sensor muss ich viel mehr ausgeben (min. 30 €) als
für die gesamte Schaltung und ist auch zu riskant.
Nun an diesem Punkt habe ich 4*PWM-Wert-Analog und jetzt muss ich immer
den höchste Wert auspicken. Wie mache ich das am bestens?
Ob den 'CMOS-Buffer' überhaupt brauche... bin mir auch nicht ganz
sicher.
Schöne Grüßen und Danke dir vielmals für deinen schon gegebene
Antworten.
Hallo,
zu den anderen Sachen fällt mir momentan nichts ein, aber hierzu:
Tony A. schrieb:> Meine Frau wird bestimmt Nichts einstellen an Ihren PC ganz zu schweigen> von nachregeln, sie spielt oft aber regelt nicht mal die Lautstärke und> die Indirekte-Messung des Wassers (mit Temperatur-Wiederstand) ist zu> langsam bzw. zu weit hinten (nicht direkt an CPU, GPU), für den Preis> von nur ein solche Sensor muss ich viel mehr ausgeben (min. 30 €) als> für die gesamte Schaltung und ist auch zu riskant.
Das die Temperaturmessung "ganz hinten" erfolgt ist im Fall der
Wasserkühlung nicht schlimm, da Wasser eine recht hohe Wärmekapazität
hat: Wenn Du in Deinem System 0,5 L Wasser hast (mit
Ausgleichsbehälter), dann erwärmt sich das Wasser bei einem
Standard-Computer (~500W) mit rund 1°C alle 4 Sekunden.
Da die Kühlleistung "vorne" nur von der Temperaturdifferenz zwischen
Chip und Wasser abhängt, verringert sie sich selbst dann nicht
nennenswert, wenn die Kühlung "hinten" 10 Sekunden verzögert erfolgen
würde, im Gegensatz zu einem Luftkühler, bei dem nach 10 Sekunden
Lüfterstillstand eventuell der Chip schon gestorben ist.
Auch sind 30 Euro viel zu viel für nur den Sensor; die komplette
Lüftersteuerung kann z.B. mit diesem Bausatz erfolgen:
https://www.pollin.de/p/bausatz-pc-lueftersteuerung-810243
Da ist dann für 6,95€ alles 'drin (nur eventuell ein kleiner Kühlkörper
an T2, wenn mehrere Lüfter angeschlossen werden sollen).
Wichtig bei diesem Ansatz ist halt, dass der Durchfluss auf einen
festen, ausreichenden Wert eingestellt wird. Das sollte aber kein
Problem sein, da sowohl die Leistungsaufnahme als auch vor allem die
Lautstärke der Wasserpumpe vernachlässigbar sein sollten.
Schöne Grüße,
Martin