PWM für 4pol-Lüfter

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 25 11 2024  06:34:56      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( 1 | 2 Nächste Seite )      


Autor
PWM für 4pol-Lüfter
Suche nach: pwm (3618)

    







BID = 575353

clembra

Inventar



Beiträge: 5404
Wohnort: Weeze / Niederrhein
ICQ Status  
 

  


Hallo Zusammen,
ich stehe nach langer elektronischer Ruhepause mal wieder vor einem Problem.
Ich möchte mir für meinen PC eine Lüftersteuerung bauen, soweit noch leicht, gibt ja genug Anleitungen. Allerdings habe ich mir Lüfter mit 4poligem Anschluss zugelegt, und zwar solche mit zusätzlichem Pin für die Steuerung der Geschwindigkeit. Diese erwarten an dem 4. Pin ein PWM-Signal von 25kHz. Insgesamt regeln möchte ich auf diese Art 5-6 Lüfter, wenn möglich getrennt, also mittels Software-PWM. Als µC hatte ich einen ATmega8 ins Auge gefasst, da es der kleinste mit genug Pins und I2C ist.
Genug geschrieben, hier mein Problem: Der ATmega8 lässt sich maximal mit 16MHz takten. Bei 25kHz Zielfrequenz komme ich auf 640 Takte pro Durchgang. Für einen Timer-Interrupt gehen allein für das Standard-Zeugs (RJMP, RETI, SREG sichern/rückschreiben) 12 Takte drauf. Bei einer (Un-)Genauigkeit von 50 Schritten bleibt mir also keine Zeit für das eigentliche Port-setzen.
Ich hoffe, ich übersehe hier etwas wichtiges..

Ausweichmöglichkeiten:

  • Einen "speziellen" Chip, der mehrere PWM-Kanäle zur Verfügung stellt, die 5-6 Lüfter getrennt regeln können.
    Ich hatte auch schon daran gedacht einen ATtiny13 je Lüfter zu verwenden, aber die *piep* von Atmel haben den PWM-Ausgang genau auf die Pins der SPI gelegt.
    Einen ATmega8 je 2 Lüfter wollte ich nicht opfern.
  • PWM auf analog und dann mit 555 oder ähnlichem wieder pulsweitenmodulieren.
  • Nur zwei Kanäle, die drei Lüfter auf dem Deckel zusammen klemmen und den Vorderen in drei Stufen (Max/Min/aus) schalten.


Die Lüftersteuerung soll später Teil eines größeren Projektes mit VDR-gesteuerter Aufweckfunktion, Display, Innenbeleuchtung, Temperaturkontrolle und was mir noch so einfällt. (Ihr werdet bestimmt noch von mir hören )

Ich hoffe Ihr könnt mir weiterhelfen
Danke im Voraus
Clemens

Anhang: Spezifikationen für 4-pin Lüfter (pdf)

_________________
Reboot oder be root, das ist hier die Frage.

BID = 575761

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein

 

  

Gäbe es als Ausweichmöglichkeit nicht auch noch elektronische Widerstände (durch µC kontolliert), die in einer analogen "555er PWM" pro Lüfter eingesetzt werden könnten?


_________________
Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Wer einen Fehler findet, darf ihn behalten!

[ Diese Nachricht wurde geändert von: hajos118 am 30 Dez 2008 10:08 ]

BID = 575990

clembra

Inventar



Beiträge: 5404
Wohnort: Weeze / Niederrhein
ICQ Status  

Eine niederfrequentere PWM glätten und damit einen 555 ansteuern hatte ich schon als Alternative angesprochen, aber ich hoffe doch, dass es hier noch andere Möglichkeiten gibt, denn ein digitales Signal in ein analoges umwandeln um dann wieder ein digitales daraus zu machen halte ich für nicht besonders die feine Art.
Wenn ich deine Antwort richtig interpretiere meinst du eine Art R2R-Netzwerk. Das fällt allein aufgrund der hohen Anzahl an nötigen Pins aus.
Trotzdem danke für die Antwort, ich hoffe nur, es kommt noch mehr

_________________
Reboot oder be root, das ist hier die Frage.

BID = 575998

Racingsascha

Schreibmaschine



Beiträge: 2247
Wohnort: Gundelsheim
ICQ Status  

Das mit den NE555 wird warscheinlich auch wegfallen, da die im Datenblatt dargestellte Methode (an Pin 5 ne Spannung anlegen) auch die PWM-Frequenz verändert. Das mit den elektronischen Widerständen geht da schon eher.

Ich persönlich würde das mit den PWM-Slaves machen. Muss man sich dann eben entscheiden ob man die Schnittstelle oder die PWM in Software macht Ne SPI ist aber schneller und einfacher programmiert als eine PWM.

_________________
Fnord ist die Quelle aller Nullbits in deinem Computer.
Fnord ist die Angst, die Erleichterung, und ist die Angst.
Fnord schläft nie.

BID = 576000

ElektroNicki

Inventar



Beiträge: 6429
Wohnort: Ugobangowangohousen

Mit der Frequenz kann man auch bis 21kHz runter gehen.
Ich hab aber auch schon normale Lüfter per PWM geregelt.
Der zusätzliche PWM-Eingang ist doch auch nur deswegen vonnöten, weil man sonst kein sauberes Tachosignal erhält, oder?

_________________

BID = 576013

clembra

Inventar



Beiträge: 5404
Wohnort: Weeze / Niederrhein
ICQ Status  

Ein sauberes Tachosignal ist einer der Gründe, warum ich diesen 4. Anschluss verwenden möchte. Ein weiterer, dass ich kein eigenes PWM-Lastteil bauen möchte.
Der extra PWM-Chip ist auch meine bevorzugte Methode. Und ob 21kHz oder 25, da ist kein so bedeutender Unterschied in der anfänglichen Problematik.
Kennt von euch jemand einen Chip, den ich per SPI oder I2C ansteuern kann, welcher mir dann eine 25kHz-PWM zur Verfügung stellt?
Ich habe da (nach dem Stichwort "PWM Slave") den Dallas DS1050Z-025 gefunden, den gibt es aber nur als SMD (was nicht so schlimm wäre), ist aber nicht bei Reichelt im Sortiment
Sonst wird es wohl ein ATtiny24 oder ähnliches. Die kleinen 8poligen ATtiny15 fallen ja wegen bereits angesprochener ungünstiger Pin-Lage aus.

Vielen Dank erstmal und gute Nacht (fast guten morgen )
Clemens

_________________
Reboot oder be root, das ist hier die Frage.

BID = 576056

ElektroNicki

Inventar



Beiträge: 6429
Wohnort: Ugobangowangohousen

Am Atmega16 haste iirc 4 PWM-Ausgänge.

_________________

BID = 576219

clembra

Inventar



Beiträge: 5404
Wohnort: Weeze / Niederrhein
ICQ Status  

... bei 40 pins und mit 3 Timern. Das bedeutet weit über die Hälfte bleibt unbeschaltet. Und da alle Timer für die PWM drauf gehen würden kann ich mit dem nicht mal die Drehzahlerfassung erledigen.

Mein aktueller Plan sieht so aus, dass ich einen ATmega8 als Hauptlüftersteuerung nehme, den ich per I2C kontrolliere. Dieser stellt bereits für 2 Lüfter die PWM-Ausgänge zur Verfügung und erledigt auch die Drehzahlerfassung. Zusätzlich werden pro zwei PWM-Ausgänge ein ATtiny24 (da welze ich noch Datenblätter) verwendet, die vom ATmega8 per SPI angesteuert werden.
Andere Only-PWM-Chips als den DS1050 habe ich nicht gefunden und wenn man die Wahl zwischen 5bit und ca. 16bit hat...
Ihr hört auf jeden Fall noch von mir...

_________________
Reboot oder be root, das ist hier die Frage.

BID = 576265

ElektroNicki

Inventar



Beiträge: 6429
Wohnort: Ugobangowangohousen

Der Attiny 2313 lässt sich iirc mit 20MHz takten...
Diesen Schluss ziehe ich aus dem Suffix -20

_________________

BID = 576281

clembra

Inventar



Beiträge: 5404
Wohnort: Weeze / Niederrhein
ICQ Status  

Und nicht zu vergessen, dass im Datenblatt der Satz "Up to 20 MIPS Throughput at 20 MHz" steht. Es wird dann aber eine Versorgungsspannung von mind. 4,5V benötigt. Und intern getaktet ist der mit wahlweise 4MHz oder 8MHz.
Ich überlege gerade nur krampfhaft, was mir diese Aussage bei meinem Vorhaben nützt
Pro Takt und Einteilung macht das bei Software-PWM vielleicht 'ne Hand voll Takte mehr oder weniger. Darauf kommt es absolut nicht an.
Da der aktuelle Plan darin besteht mehrere kleine Controller zu nutzen und deren Hardware-PWM von Timer1 ist bei 8bit alles ab ca. 6,4MHz ausreichend.
Wenn ich das TWI der kleinen ATtiny verstanden habe (Datenblatt büffeln) werde ich wohl einen ATmega8 und zwei bis drei ATtiny25 nehmen. Die kommunizieren dann über den allgemeinen I2C-Bus (I2C=TWI). Ein weiterer ATmega (16/8515/...) steuert dann den ATmega8 und der über den gleichen Bus (Multi-Master) die ATtiny.

Nichts für ungut Nicki, aber es ist nicht mein erster zu programmierender Controller, wenngleich ich zwei Hände noch nicht voll habe und noch kein ATtiny dabei war (die hießen damals AT90S...)

_________________
Reboot oder be root, das ist hier die Frage.

BID = 576962

Lupin III.

Schriftsteller

Beiträge: 616
Wohnort: Salzburg

Was du glaub ich noch nicht geschrieben hast: Welche Auflösung soll die PWM denn haben? 8 Bit ist für Lüfter doch etwas übertrieben.

Wie wäre es wenn du die 8-Bit Werte für einen ganzen Port im RAM ablegst? Das 1. Bit steht für den 1. Lüfter, das 2. für den 2. usw. bis zum achten Lüfter. Von diesen Werten gibt es dann so viele wie du PWM Auflösung brauchst, bzw. so viele, dass du bei 25kHz alle durchbekommst (2^n Werte bevorzugt). Die werden dann der Reihe nach gelesen und direkt auf den Port geschrieben, sind alle durch beginnt's von vorn.



Code :

loop:

sleep
ld temp, Z+
out PORTD, temp
andi ZL, 0x3F
rjmp loop



Das "andi" macht den Überschlag mach 64 Werten. Ist billiger als ein CMP und du hast immer eine konstante Taktzahl pro Durchgang egal ob Überschlag oder nicht (die Werte müssen natürlich an passender Stelle im RAM stehen, also bei einer Adresse mit 0xXX00 beginnen). Der Rest sollte klar sein. Pro Durchgang 1+2+2+1+3 = 9 Takte. Das mal 64 kommst du auf 576 Takte bei 5 Bit PWM-Auflösung. Geweckt wird das ganze von einem Timer für die richtige Frequenz.

Dadurch, dass alle vorgegeben sind, kannst die An-Aus-Phasen auch leicht gegeneinander versetzen, sodass keine Verbrauchsspitzen entstehen.

Soll die Geschwindigkeit geändert werden, berechnet der AVR (oder ein anderer wenn es sich zeitlich wirklich nicht ausgehen sollte, aber so Zeitkritisch sollte das nicht sein, das kann sich ja ruhig über mehrere PWM-Takte hinziehen) die Werte neu und überschreibt die Werte im Ram.

BID = 577113

clembra

Inventar



Beiträge: 5404
Wohnort: Weeze / Niederrhein
ICQ Status  

Danke für den Vorschlag, aber ich denke ich bleibe jetzt bei der Lösung mit den Hardware-PWM.
Auflösung, ja, ist doch immer schön, wenn man mehr hat als man braucht . Schließlich soll es ja, entgegen meiner früheren Behauptung, keine Lüftersteuerung, sondern eine Lüfterregelung werden. Das heißt der Hauptcontroller, ein ATmega8515, gibt per SPI (der kann ja gar kein I2C/TWI ) eine Geschwindigkeit an den ATmega8 und der entscheidet dann, wie hoch der PWM-Wert sein soll. Diesen stellt er für die ersten zwei Lüfter direkt ein und übergibt den Wert für die anderen Lüfter per I2C an die ATTinys.
Eine Temperaturkontrolle soll später auch noch kommen, vielleicht mit DS18S20 und DS2482, mal sehen.

Ich habe meine Ideen mal mit Eagle veranschaulicht und ich lade mal den Plan hoch.
Wer gerne die .sch-Dateien möchte kann sich per PM melden.
Anmerkungen sind gerne gesehen.


PDF anzeigen



_________________
Reboot oder be root, das ist hier die Frage.

BID = 578845

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein


Zitat :
clembra hat am  4 Jan 2009 02:14 geschrieben :

Danke für den Vorschlag, aber ich denke ich bleibe jetzt bei der Lösung mit den Hardware-PWM.

Ich möchte nochmal die Idee mit den 555er PWM mit elektronisch kontrollierten Poti (Intersil X9C1..) in's Spiel bringen!
Mit 2 + n Signalen kann man n - Lüfter kontrollieren ... Also dürfte ein Attiny2313 (oder Mega locker genügen...


_________________
Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Wer einen Fehler findet, darf ihn behalten!

BID = 578990

clembra

Inventar



Beiträge: 5404
Wohnort: Weeze / Niederrhein
ICQ Status  

Ich brächte nur einen µC, aber dann bräuchte ich je steuerbaren Lüfter einen el. Poti, einen NE555 und einiges an Hühnerfutter. Mit meiner jetzigen Planung brauche ich einen ATmega8, drei ATtiny25 (8pin) und 8 BS170 (kleine N-Mosfet) als Treiber, damit keine 12V an die AVR kommen. Und das für 8 Lüfterkanäle.
Darüber hinaus wäre der Tiny2313 nicht ausreichend und ein ATmega8 wäre auch recht knapp, da der Fancontroller eine Regelung machen soll, das heißt auch die aktuelle Drehzahl erfassen. Da ist es sogar noch ein Pin mehr, da ich auch eine Durchflusskontrolle für die WaKü einplane.
Zudem finde ich X9C1 nicht beim R, da müsste ich andere Quellen für absuchen. Dann wird es mit den ganzen Elementen auf einer Europlatine wohl schon etwas eng. Jetzt bin ich bei ca. 120x100mm, frisch geroutet, was auch schön unter die Festplatten passt.

_________________
Reboot oder be root, das ist hier die Frage.

BID = 579656

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein

Stimmt - Deine Lösung ist näher am Optimum...

_________________
Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Wer einen Fehler findet, darf ihn behalten!


      Nächste Seite
Gehe zu Seite ( 1 | 2 Nächste Seite )
Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 182393509   Heute : 705    Gestern : 7548    Online : 657        25.11.2024    6:34
2 Besucher in den letzten 60 Sekunden        alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.111928939819