Forum: Offtopic Computer-PWM 2-4 in 1


von Tony A. (terence)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Eine Herangehensweise: Wandle die PWM-Signale in analoge Signale 
(Spannung) um, addiere die Spannungen und erzeuge daraus Dein 
gewünschtes neues PWM-Signal.

PWM-Signale in analoge Signale umzuwandeln ist kein Hexenwerk, sondern 
wird oft bei µCs angewandt, die keinen DAC haben, um einen DAC zu 
simulieren.

https://www.allaboutcircuits.com/technical-articles/turn-your-pwm-into-a-dac/

Die Spannungen können mit einem OpAmp addiert werden:

https://www.elektronik-kompendium.de/sites/slt/0210152.htm

Daraus wiederum lässt sich mit einem NE555 eine PWM erzeugen:

http://www.falstad.com/circuit/e-555pulsemod.html


Fertig. Kein µC nötig.

von Martin L. (maveric00)


Lesenswert?

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

von Tony A. (terence)


Angehängte Dateien:

Lesenswert?

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?

: Bearbeitet durch User
von Tony A. (terence)


Lesenswert?

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?

: Bearbeitet durch User
von Tony A. (terence)


Lesenswert?

Hallo zusammen,

jetzt habe was gefunden das die 4 PWMs auf einmal bearbeiten könnten:
http://www.linear.com/solutions/5683
http://www.linear.com/product/LTC2645
allerdings braucht man da für jede Ausgang 'an external CMOS buffer' 
bzw. ein 4-Fache 'CMOS-Buffer'.
Bleibt allerdings das Problem mit der Weiterleitung des größte PWM-Wert 
an der
http://www.falstad.com/circuit/e-555pulsemod.html

Also bleibt die Frage: Wie kann ich das größte PWM-Signal selektieren?

von Tony A. (terence)


Lesenswert?

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?

von Martin L. (maveric00)


Lesenswert?

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"

: Bearbeitet durch User
von Tony A. (terence)


Lesenswert?

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.

von Martin L. (maveric00)


Lesenswert?

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

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.