2 x I2C-Sensor und Frage zu Transistor

Hi,

ich möchte eine Lüfter/Pumpensteuerung für meine Wasserkühlung bauen. Dabei möchte ich den Luftdruck im Gehäuse und außerhalb messen um immer einen minimalen Überdruck zu haben (nach innen und nach außen gerichtete Lüfter werden einzeln gesteuert).
BMP280-Sensoren sind spottbillig und brauchen per I2C nur 2 Pins. Wenn ich mich richtig erinnere haben die Bauteile allerdings eine feste Adresse. Kann ich die ändern um mehrere Sensoren mit einem Arduino anzusteuern, oder muss ich verschiedene verwenden?

Weiterhin möchte ich 8 Lüfter und eine Pumpe steuern. Alle Bauteile sind mit 3-Pin und werden daher über die Spannung gesteuert. Ich habe mich gegen 4-Pin entschieden, da Pwm-Lüfter klackern können.

Die Lüfter verbrauchen zusammen bis zu 8w. Die Pumpe alleine ca. 10w. Allerdings ist die benötigte Leistung beim anlaufen um ein x-faches höher.
Ich möchte, dass die Verbraucher bei inaktiver Steuerung mit Maximal-Spannung betrieben werden, daher brauche ich PNP-Transistoren oder?
Wenn man bei den üblichen Versandhäusern guckt haben Transistoren jede Menge Kennwerte die es zu beachten gilt, momentan weiss ich nicht, was die meisten bedeuten. Kann mir jemand welche empfehlen, die zu meinem Anwendungsfall passen? Ich würde 3 Stück verwenden, bei denen die Verbraucher wie folgt aufgteilt sind:
3x Input Lüfter, 5x Output, 1x Pumpe. Der Luftdruck sollte sich trotzdem gut ausgleichen lassen, da die Output-Lüfter die Luft durch Radiatoren durchdrücken und der Luftstrom dadurch gebremst wird.

Gruß und vielen Dank schonmal,
Nils

Ps: Ich könnte auch ein fertiges Gerät kaufen, aber die messen keinen Luftdruck und man hätte nicht den Spaß beim Basteln. Außerdem hat das Gehäuse keinen Platz für eine Frontblende, die meisten Steuerungen fallen da eh flach.

daher brauche ich PNP-Transistoren oder?

lieber NPN du könntest auch N-Fet's nehmen

Die I2C-Adresse der Sensoren ist fest, aber du könntest den 2. Sensor per SPI (4-Draht) ansprechen.
Getestet habe ich es nicht, aber es sollte funktionieren.

Das mit dem SPI klingt gut, ich kann auch beide gleichzeitig per SPI ansprechen oder?

Zu den Transistoren: Bei NPN oder N-Fet würden die Verbraucher aber ausgehen, wenn die Steuerung ausfällt oder?

dlca:
Das mit dem SPI klingt gut, ich kann auch beide gleichzeitig per SPI ansprechen oder?

Zu den Transistoren: Bei NPN oder N-Fet würden die Verbraucher aber ausgehen, wenn die Steuerung ausfällt oder?

Wenn du beide mit SPI ansteuerst, musst du die über CS auswählen, also jeden einen eigenen CS zuweisen.

Bei den Transistoren kommt es auf die Schaltung an.
Je nach Auslegung können die Verbraucher ausgehen oder weiterlaufen.

SPI Wiring
So könntest Du es mal probieren:

#define BMP_SCK 13
#define BMP_MISO 12
#define BMP_MOSI 11 
#define BMP_CS1 10
#define BMP_CS2 9

Adafruit_BMP280 bme1(BMP_CS1); // hardware SPI Objekt1
Adafruit_BMP280 bme2(BMP_CS2); // hardware SPI Objekt2

das werde ich ausprobieren, sobald die Sensoren da sind. Wird aber noch dauern, da ich in China bestellt habe. In DE hätte ein Sensor 4x soviel gekostet.

Hat jemand eine konkrete Empfehlung, was die Transistoren angeht und wie muss ich die dann anschließen? Pro Transistor brauche ich dann noch einen Kondensator und eine Diode, das weiss ich schonmal.

Es gibt zwar ein paar Anleitungen für Lüftersteuerungen, aber ich habe bis jetzt noch keine gefunden, wo auf einen möglichen Ausfall des Arduinos eingegangen wird.

dlca:
Hat jemand eine konkrete Empfehlung, was die Transistoren angeht und wie muss ich die dann anschließen? Pro Transistor brauche ich dann noch einen Kondensator und eine Diode, das weiss ich schonmal.

Es gibt zwar ein paar Anleitungen für Lüftersteuerungen, aber ich habe bis jetzt noch keine gefunden, wo auf einen möglichen Ausfall des Arduinos eingegangen wird.

Dazu solltest du uns noch genau erklären, wie es funktionieren soll.
Und wozu soll der Kondensator gut sein?

Eine Freilaufdiode ist richtig und ein paar Widerstände, der Rest hängt vom tatsächlichen Aufbau ab.

Hier wird ein Kondensator verwendet um vom Lüfter verursachte Störungen zu filtern.

Die einzelnen Kanäle sollen über ein PWM-Signal gesteuert werden. Der Regelbereich bei den Lüftern liegt bei 4-12V, bei der Pumpe bei 7-12 V. Die Spannung soll von der Wassertemperatur abhängen, einen passenden Sensor dafür habe ich schon. Wenn kein Signal vom Arduino kommt, sollen die vollen 12V bei den Verbrauchern anliegen. Verwenden möchte ein Nano, wenn das nicht reicht habe ich aber auch noch ein Mega da.
Das System soll dann aus 3 Transistoren, 2 Drucksensoren, 1 Temperatursensor und 1 Display, das über I2C angeschlossen ist, bestehen. Das Display und den Temperatursensor habe ich schon verwendet, mit dem Rest habe ich noch keine Erfahrung.

dlca:
Hier wird ein Kondensator verwendet um vom Lüfter verursachte Störungen zu filtern.

Der Kondensator ist nicht zum Unterdrücken der Störungen sondern zum dämpfen der Töne, die bei PWM auftreten können.

Die restliche Technik ist sicher lösbar, muss aber wohl durchdacht sein.
Da reicht aber ein Transistor pro Steuerung nicht aus.

Ausgehend von der von Dir verlinkten Schaltung: Wenn von der Transistorbasis ein Widerstand gegen +12V ergänzt würde, wäre der Transistor bei ausgeschaltetem Arduino leitend, der Lüfter würde laufen.

Der im Link verwendete Transistor scheint mir etwas zu schwach zu sein. Daher bin ich auf der Suche nach stärkeren, die sich trotzdem gut mit dem Arduino steuern lassen.

agmue:
Ausgehend von der von Dir verlinkten Schaltung: Wenn von der Transistorbasis ein Widerstand gegen +12V ergänzt würde, wäre der Transistor bei ausgeschaltetem Arduino leitend, der Lüfter würde laufen.

Das ist allerding ein heißes Eisen.
Beim Ausfall des Transistors liegen 12 Volt am Pin vom Arduino.
Deswegen würde ich immer einen weiteren Transistor vorschalten.

HotSystems:
Das ist allerding ein heißes Eisen.

Dafür haben wir doch einen Lüfter :wink:

Ich stimme Dir aber zu!

dlca:
Daher bin ich auf der Suche nach stärkeren, die sich trotzdem gut mit dem Arduino steuern lassen.

Wie schon erwähnt, eignen sich FETs besser als bipolare dafür, da die Verlustspannung (besser wohl Verlustleistung) kleiner ist. Ich experimentiere mit einem IRLZ34N, wobei ich dessen Eignung für Dein Projekt nicht einschätzen kann.

agmue:
Dafür haben wir doch einen Lüfter :wink:

Ich stimme Dir aber zu!
Wie schon erwähnt, eignen sich FETs besser als bipolare dafür, da die Verlustspannung (besser wohl Verlustleistung) kleiner ist. Ich experimentiere mit einem IRLZ34N, wobei ich dessen Eignung für Dein Projekt nicht einschätzen kann.

Der mit dem Lüfter ist gut. :wink:

Und mit einem Mosfet und NPN als Treiber sollte es dann funktionieren.
Hier sollten wir dann noch mal erfahren, wie der Stromverbrauch der Lüfter usw. ist.

So könnte das mit Mosfet aussehen:
Mosfet.jpg

Der Druckunterschied ist nicht so groß, daß Du ihn mit Luftdrucksensoren sinnvoll messen könntest.

Der Fehler ist:
Relative accuracy ±0.12 hPa , equiv. to ±1m (950 ... 1050hPa @25°C)
Absolute accuracy typ. ±1 hPa (950...1050 hPa,0 ...+40 °C)

0,12 hPa sind 12 Pa.

zB ein Pabst 4416 L (12V, 5,3W) produziert ca 25 Pa Druckunterschied bei Nenndurchflußmenge vor und nach dem Ventillator. Dieser Druckunterschied gilt aber nicht für das gesamte Gehäuße des PCs.

Grüße Uwe

HotSystems:
So könnte das mit Mosfet aussehen:

Im Gegensatz zum heißen Eisen ist das die coole Lösung! R2 als PullUp, der vom Transistor gegen Masse gezogen wird, bedeutet eine Invertierung, also HIGH am ATmega schaltet den Lüfter aus. :slight_smile:

HotSystems:
Hier sollten wir dann noch mal erfahren, wie der Stromverbrauch der Lüfter usw. ist.

Ein Lüfter ist bei 12V mit 90mA angegeben. Macht eine Dauerlast von 270 mA auf Kanal 1, 450 mA auf Kanal 2, und ca. 830 mA auf Kanal 3(die Pumpe). Der Startstrom liegt dann wohl bei Faktor 5, wobei die Last nur <1s anliegen sollte. IRLZ44N & 34N sollten das denke ich beide gut aushalten.

Schade, dass es für die Druckmessung schlecht aussieht, die Sensoren sind bereits bestellt, ein bisschen experimentieren kann ich dann trotzdem. Temeperaturmessung geht ja ebenfalls, ganz um sonst wird es also nicht gewesen sein.

dlca:
... ganz um sonst wird es also nicht gewesen sein.

Du hast was gelernt :slight_smile:

agmue:
Im Gegensatz zum heißen Eisen ist das die coole Lösung! R2 als PullUp, der vom Transistor gegen Masse gezogen wird, bedeutet eine Invertierung, also HIGH am ATmega schaltet den Lüfter aus. :slight_smile:

Oh, vielen Dank.

Du hast was gelernt

Und wir auch, jedenfalls, was die Messung mit Luftdrucksensoren betrifft.

@dlca

...ein bisschen experimentieren kann ich dann trotzdem...

Und wir freuen uns von deinen Ergebnissen zu lesen.