Ausfallsichere Lüftersteuerung

Ich werde im April dazu kommen wieder etwas zu basteln.

Mein Projekt ist ein Ozongenerator.
Dieser ist im Prinzip eine 12x12cm große Röhre, die ich an den Enden mit Lüftern bestücke.
Das Ganze ist im Kopf quasi auch schon fertig und wird eine 2fachen On/Off Wippschalter haben, ein 12V DC Netzteil für die Lüfter und das Ardunio, ein step-down Schaltregler für das Arduino (um auf 5V zu kommen), ein 10K Ohm Poti zur Steuerung der Lüftergeschwindigkeit, einem BJT um ein PWM-Signal für die Lüfter zu erzeugen und ein Relais zum Schalten der Keramikplatten und der Corona (beides um Ozon zu produzieren).

Da die Keramikplatten jedoch eine nicht zu vernachlässigende Hitze produzieren, wäre es gut, wenn die Lüfter im Falle eines Arduino Fehlers standardmäßig auf 100% laufen würden.
Normalerweise betreibt man ein PWM-Signal ja in zusammenhang mit Lüftern so, dass die "high" periode der Geschwindigkeit entspricht.

Ich habe mir überlegt, dass es auch genau anders herum gehen müsste, weiß allerdings gerade nicht WIE...

Mein Problem ist also:
Ich würde gerne die Lüfter mit dem 12V DC Netzteil verbinden sodass sie auf voller Leistung laufen.
Über einen BJT würde ich gerne ein PWM mit dem Arduino erzeugen, dass die 12V irgendwie auf GND zieht.
Wenn das Arudino also "aus" ist oder einen Fehler hat, dann laufen die Lüfter auf 100%.
Wenn das Arduino funktioniert, dann holt es sich den Widerstandswert des Drehpotis und erzeugt ein entsprechendes PWM-Signal, dass die 12V auf GND zieht.
Also sozusagen ein invertiertes PWM-Signal.
Wichtig ist dabei allerdings, dass Lüfter und Arduino von einem 12V Netzteil versorgt werden.

Ich hoffe es ist verständlich, möglich und einfach umsetzbar.
Ich danke euch!

Liebe Grüße!

Du musst doch eigentlich nur die Lüfter mit einem Transitor "dauerhaft" einschalten und mit dem Arduino unterbrichst du per PWM die Ansteuerung des Transitors.
Interessant wäre für dich auch der Arduino Watchdog damit überwachst du zeitlich den Programmablauf.

Was machst du eigentlich mit dem Ozon?

Gruß

Versuche mal folgenden Denkansatz: Auswertung Tachosignal - wenn Lüfter steht, dann schalte den Ozongenerator ab :wink:

Mich interessiert dein Projekt vom chemischen Gesichtspunkt her. Wofür brauchst du den Ozongenerator? Wasserentkeimung für den Pool? Mich würde das fürs Leiterplatten ätzen interessieren. Althergebracht ist das Verfahren mit Salzsäure und Wasserstoffperoxid. Da es problematisch wird, Letzteres zu bekommen, und auch eine Oxidation mit einer Fritte und Luftsauerstoff prinzipiell möglich ist, wäre meine Idee, das mit Ozon zu beschleunigen ;D
Noch was: der Lüfter wird im Ozonstrom nicht das ewige Leben haben :smiling_imp:
Ich würde da eher Frischluft in die Röhre per Lüfter reindrücken.

Gruß Gerald

Zuerst die Fragen zum Verwendungszweck:
Das Ozon nehme ich zur Desinfektion und Geruchsneutralisierung.

Ich habe eine leichte Hausstaubmilbenallergie und seitdem ich mir einen billigen Ozongenerator (1000mg/h) zu Testzwecken in einen Karton-Rohr mit Lüftern gebaut habe und diesen Morgens benutze, geht es mir besser.

Das Ganze soll jetzt allerdings etwas "getuned" werden, da die Korona mit gerade mal 1000mg/h schon etwas zu lange braucht um einen kompletten Raum zu befeuern.
Ich habe dazu also zwei Keramikplatten mit jeweils nochmal 3500mg/h dazu geholt. Diese sind brachial!

Ich habe zwei 12V CPU Lüfter. Der eine saugt an (durch einen Staubfilter, damit innen das sauber bleibt) und einer pustet raus.
Der Luftumsatz ist ausreichend.

Das Teil will ich aber auch bei Verwandten und Bekannten verwenden, die z.B. einen Hund und Stoffsitze im Auto haben (den Hundegeruch bekommt man sonst kaum raus) - oder bei Schimmelproblemen etc...

Nun wieder zum technischen:
Also ich verstehe es bis hier hin:
Den 12V Anschluss des Netzteils schließe ich am Lüfter an.
Von da aus geht es zum Kollektor des BJTs.
Der Emitter des BJTs ist mir dem GND des 12V Netzteils verbunden.

Nun zur Schaltung von dem Teil:
Die Basis des BJTs ist dem 5V Signal des Schaltreglers verbunden.
Jetzt ist standardmäßig an.

Wie bekomme ich den Basis des BJTs per PWM des Arduinos auf GND gezogen?

Wie bekomme ich den Basis des BJTs per PWM des Arduinos auf GND gezogen?

Verstehe ich deine Frage nicht?

Ein PWM-Ausgang schaltet zwischen LOW und HIGH mit fester Frequenz, aber einstellbarem Verhältnis zwischen HIGH und LOW.

Bei HIGH schaltet der NPN-Transistor durch, bei LOW (GND) sperrt er.

Du brauchst übrigens einen Vorwiderstand, damit der Basisstrom nicht großer wird als was der Arduino verträgt (20 mA ist ein Wert im sicheren Bereich)

naja ich kann ja nicht einfach einen analogen Pin des Arduinos mit der Base des BJTs verbinden und dann lustig drauf los PulsWeitenModulieren... dann wäre es nicht ausfallsicher...
Egal ob mit oder ohne Vorwiderstand.

Nur die Base mit dem Analogen Pin alleine versorgen fällt aus, weil dann würden die Lüfter ja nur laufen, wenn das Arduino läuft.
Ich muss also den Transistor auf dauer AN haben und mit nem Arduino dann runter regeln, damit es ausfallsicher ist.
Also muss der BJT irgendwie an die Base ein 5V signal bekommen (vom schaltregler) und das Arduino zieht dann "irgendwie" diese 5V per PWM auf GND...
Der Transistor soll also "immer AN" (im vorwärtsaktiven Bereich) sein.. und wenn das Arduino das Poti etc auswertet und angeschaltete ist, dann soll dieses die 5V an der Base auf GND ziehen.
Ich weiß nur nicht wie.

Wenn du normale 4-Pin-PC-Lüfter nimmst, hast du die Fail-Safe-Funktion schon integriert:
Wenn die kein PWM-Signal bekommen, drehen sie mit maximaler Geschwindigkeit.

Ich habe aber leider normale 2 Pin 12V Lüfter ^^
Einmal 12V und einmal GND.
Kein Tachosignal und auch kein PWM.

Mich wunderts nur, daß Du vom Ozon keine Reizungen bekommst.
Grüße Uwe

Ähmmm ja....
Also man darf sich natürlich nicht in dem Raum aufhalten.
Es ist reizend und ich will hier auch gar keine Sicherheitseinweisung oder ähnliches machen, weil so etwas nur von Leuten gebaut werden sollte, die wissen was sie tun. Nicht nur wegen dem Ozon, welches schädlich ist, sondern auch, weil man hier mit 5kV in einem Bereich ist, der Lebensgefährlich sein kann.
Daher nicht nachbauen!

Dennoch bin ich noch am gleichen Punkt:
Wie bekomme ich es hin, das ein 12V Lüfter so betrieben wird, das er konstant mit 12V betrieben wird und durch ein Arduino die konstanten 12V pulsweitenmoduliert unterbrochen werden?
Irgendwie scheint dazu keiner wirklich einen Rat zu haben.

Der Grund warum ich das so haben möchte ist, weil immer mal Code falsch sein.
Da ich mich zum Betriebszeitpunkt nicht im gleichen Raum befinden werde, fällt es nicht auf, wenn die Lüfter plötzlich streiken.
Damit die Keramiplatten nicht überhitzen, sollte aber immer ein gewisser Luftzug herschen.
Außerdem werden die Keramikplatten immer wieder ausgeschaltet, um ein Überhitzen zu vermeiden.

Als weitere Sicherheitsmaßnahme ist mein Relais so verschaltet, dass es standardmäßig AUS ist.
Es wird also nur Ozon Produziert, wenn das Arduino an ist.
Dennoch ist sicher, sicher.

Ich hoffe jemand hat eine Idee dazu.

Spannung ist nicht lebensgefährlich sondern der Strom der fließt. Eine hohe Spannung begünstigt natürlich das Fließen eines hohen Stromes bzw das Überspringen unzureichender Isolation.

Ich würde einen Termostaten oder eine Temperatursicherung einbauen der/die die HV abschatet.

Grüße Uwe

Das ist mir klar Uwe, aber bei solchen Spannungen entstehen gerne mal übersprünge und daher mein "Lebensgefährlich sein kann".

Ok dann baue ich das eben ohne diese Ausfallsicherung.
Ein Thermostat oder ähnliches wird nicht funktionieren.

Ich müsste dann direkt an den Keramikplatten messen und das wird nichts.

Daher lass ich mir wohl was anderes einfallen, wenn das so nicht geht.

Hallo,

definiere den "Arduino Fehler". Meinst Du Deinen Code oder elektrisch dessen Stromversorgung oder ... ?

Zum umschalten zwischen einem PWM Takt und vollen 12V reicht ein Relais mit Wechslerkontakt. Im Spannungslosen Zustands des Relais wird es so beschalten das volle 12V durchgereicht werden. Im anderen Fall liegt das PWM Signal vom Arduino an.

Bei Codefehler muß sichergestellt werden das entweder das Relais abfällt oder das PWM Signal mit 100% rausgeht.

Kommt jetzt drauf an wieviel Sicherheit man mit welchen Aufwand betreiben möchte. Nur ich würde anders rangehen. Im Fehlerfall würde ich alles versuchen das gesamte System abzuschalten. Also zuerst die Drahtheizung, dann den Lüfter und dann alles weitere in der Prio Reihenfolge. Da läßt man doch nichts unkontrolliert weiterlaufen.

Nur, bist Du Dir sicher das O3 auf Dauer für Dein Problem die richtige Lösung ist? Die O3 Konzentration ist danach im Raum immer noch vorhanden. Und wenn Du danach wieder 1h lüftest ist der Effekt fast wieder weg. Ich hatte das mal in einem Hotelzimmer. Da wurde versucht aus einem Raucherzimmer ein Nichtraucherzimmer Übergangsweise zu machen. Das roch noch am nächsten Tag nach O3 wenn man früh raus und wieder reinkam. Gesund ist was anderes. Ganz ehrlich. Ich war froh das ich am nächsten Tag umziehen durfte.

Hm, du warnst uns vor der kleinen Hochspannung und kennst dich nicht mit Relais oder Transistor Grundschaltungen aus, das gibt mir schon zudenken was dein Projekt angeht. Im Übrigen mögen diese einfachen Lüfter PWM nicht so gerne.
Wenn du dich eh nicht im Raum aufhalten kannst wenn das Gerät läuft, warum lässt du dann die Lüfter nicht einfach immer auf 100 % laufen? stört ja niemanden

Leon333:
Irgendwie scheint dazu keiner wirklich einen Rat zu haben.

Der Grund warum ich das so haben möchte ist, weil immer mal Code falsch sein.

Der Grund dafür ist, dass es dafür keine Lösung gibt.

Es gibt zwar Schaltung, die verhindert dass dein Code Blödsinn macht, aber da bist du schon bei extrem hohem Aufwand. Für jemanden, der keine Elektronik Erfahrung hat, meiner Meinung nach nicht machbar.

Was man einfacher abfangen kann:

  • Totaler Ausfall der Stromversorgung.
  • "Aufhängen" des Arduino.

ersteres mit einer selbstleitenden Schaltung, z.B. wie im Anhang.
Hier wird zumindest sicher gestellt, dass der Arduino aktiv ein HIGH ausgeben muss, damit der Lüfter steht.
Es gibt auch aufwändigere Schaltungen, die z.B. regelmäßigen Pegelwechsel verlangen.

zweiteres kannst du mit dem Watchdog abfangen.
Ich habe allerdings mit dem Arduino Watchdog keine Erfahrung.

Zwischenablage01.jpg

Warum kannst du nicht berührungslos messen? Doch, doch, das geht! Googele mal nach dem MLX90614. Eine Lib gibts auch dazu. Das ist ein berührungsloses IR-Thermometer. Habe schon damit experimetiert. Funktioniert einwandfrei.
Wenn du mehr Ozon willst, nimm doch eine Quecksilberdampflampe :grin:
Ich habe noch 8W Röhren die elektrisch und mechanisch kompartibel zu 8W Leuchtstoffröhren sind. Die sind aus Quarzglas und ohne Leuchtstoff. Man sieht darin ein kleines Quecksilberkügelchen. Wenn man die einschaltet, sieht man nur ein leichtes blauviolettes Flimmern darin und es stinkt sofort nach Ozon in der Bude. Die wurden früher zum EPROM Löschen genommen. Ich habe noch ein paar nagelneue Röhren davon rumliegen. Würde mich aber wenn das Ding läuft, nicht im selben Raum aufhalten wollen. UV-C ist nicht sonderlich gesund :stuck_out_tongue:

@Scherzheinz: Kennen wir uns?
Ich glaube nicht.
Ich weiß daher auch nicht woher DU meine Kenntnisse beurteilen könne sollst.
Dass es sich hier nicht um eine Grundschaltung handelt sollte jeder auf diesem Planeten schon alleine aus der Tatsache ableiten können, dass hier keiner eine passende Schaltung für diese Anwendung liefern kann.
Ich hatte gedacht, dass es eventuell mit einem Trick der mir nicht bekannt ist möglich sei.
Selbst Du - oh großer Scherzgott - wirst sicher schonmal die ein oder andere Schaltung gesehen haben, auf die du nicht gekommen bist.

Ich danke dir guntherb für deine Ausfallsichere Schaltung.
Auch die Idee mit dem IR-Thermometer von nix_mehr_frei ist eine gute (wenn auch sehr teuere ^^ ).
Wie lang sind denn die Röhren?
Ich werde sie zwar nicht einbauen können, weil der Platz schon kritisch werden könnte, aber interessieren tut es mich dennoch.

Ich werde vermutlich das etwas anders aufbauen und ein weiteres Relais einbauen, das auf standard-an ist und den BJT mit 12V zu versorgen und sobald das Arduino an ist und funktioniert das Relais ausgeschaltet wird und das PWM-Signal zum Einsatz kommt.
Ist am günstigsten und einfachsten und - ich hab die Bauteile schon da :wink:

Ich danke Euch für Eure Hilfe!

Hallo,

wie heiß werden denn die Keramikplatten? Ich verstehe nicht, warum kein Thermostat möglich sein sollte? Ich würde zumindest eine echte Temperatursicherung vorsehen. Du könntest als Failsafe eine gewisse Mindestspannung auf die Lüfter geben, per PWM machst du nur noch die Diferenz.

Leon333:
@Scherzheinz: Kennen wir uns?
Ich glaube nicht.
Ich weiß daher auch nicht woher DU meine Kenntnisse beurteilen könne sollst.
Dass es sich hier nicht um eine Grundschaltung handelt sollte jeder auf diesem Planeten schon alleine aus der Tatsache ableiten können, dass hier keiner eine passende Schaltung für diese Anwendung liefern kann.
Ich hatte gedacht, dass es eventuell mit einem Trick der mir nicht bekannt ist möglich sei.
Selbst Du - oh großer Scherzgott - wirst sicher schonmal die ein oder andere Schaltung gesehen haben, auf die du nicht gekommen bist.

Ich kann mich nicht erinnern einen Scherz gemacht zuhaben und von deinen Kenntnissen hast du auch noch nichts erzählt. Niemand hier ist perfekt und wir sind alle hier um gegenseitig von einander zu lernen.

Leon333:
Ich werde vermutlich das etwas anders aufbauen und ein weiteres Relais einbauen, das auf standard-an ist und den BJT mit 12V zu versorgen und sobald das Arduino an ist und funktioniert das Relais ausgeschaltet wird und das PWM-Signal zum Einsatz kommt.
Ist am günstigsten und einfachsten und - ich hab die Bauteile schon da :wink:

Das ist die einfachste Lösung auch aus meiner Sicht, optimieren kannst die Schaltung dann immernoch.
Es gibt auch relative Drucksensoren, damit könntest du den Luftdruck vor und hinter dem Lüfter miteinander vergleichen und somit festellen ob er noch läuft. Oder du lässt einen Lichttaster auf die Flügelblätter des Lüfters sehen. Dann hast du nicht nur eine Laufkontrolle sondern die genaue Drehzahl.

Gruß

Möglich ist vieles, es ist nur immer die Frage welcher Aufwand sich lohnt.
Zum einen gibt es da einen preislichen Unterschied und zum anderen müsste ich in der 35cm langen "Röhre" dann einiges umbauen und das ist es mir zu viel Aufwand.
Daher fallen relative Drucksensoren, Lichttaster und auch Thermometer flach.
Die Ideen sind allerdings wirklich ziemlich Umfangreich und kreativ!
Da schöpft man ja quasi alles aus der Mess- und Sensortechnik aus, was sich hierfür verwenden ließe ^^

Um es vorweg zu nehmen - unten ist der Schaltplan. (dazu aber mehr im Text)

Ich weiß ehrlich gesagt nicht mal bis zu welcher Temperatur die Keramikplatten gehen können.

Die Keramikplatten sind übrigends diese hier.
Ich glaube zwar nicht, dass da wirklich 5kV raus kommen (glaube eher so an 3,5kV) aber ich habe immer gelesen, das eine Kühlung zwingend notwendig ist.
Messen kann ich übrigends nicht, da mein Messgerät nur is 750V AC geht.

Mit Arduino Fehler meine ich vor allem Codefehler - aber auch den Fall, dass das Arduino mal abraucht... man weiß ja nie.

Ich hab es jetzt so gelöst, dass die Lüfter mindestens ein 150er PWM Signal bei 120Hz bekommen.
Ein Relais schaltet Corona und Keramikplatten aktiv ein.
Wenn das Arduino nun abrauchen sollte, dann hoffe ich, dass es das so tut, dass keine 5V mehr an dem Relais ankommen.

Die Ozonplatten werden übrigens nach jeweils 30 Sekunden für 5 Sekunden ausgeschaltet.

if (  ((millis() - previousMillis) > 30000) && (relaisOn == true)) 
{    
   previousMillis = millis(); 
   relaisOn = false; 
   digitalWrite(relaisPin, LOW);  
}

Weil ich es allerdings jetzt auch testen wollte, habe ich es gestern fertig gebaut und direkt getestet.

Das Ganze hat sich allerdings eh etwas relativiert.
Das Teil produziert so viel Ozon, dass ich selbst in einem 35m² Raum (87,5 m^3) gerade mal 30min Betriebszeit brauchte, um einen Nebel hin zu bekommen, den mein Prototyp in 4 Stunden nicht schaffte.
Wohlgemerkt macht das aktuelle Teil dabei wegen den Auszeiten allerdings über 4min Pause (der Prototyp lief durch).

Was ich allerdings seltsam finde ist das Geräusch, dass die Lüfter machen.
Zuerst liefen die Lüfter an Pin9 (Timer1) mit der Defaultfrequenz 490Hz und produzierten ein gut Hörbares fiepen.

Das habe ich zuerst versucht mit Anpassung der Frequenz irgendwohin zu verschieben, dass es nicht mehr so stört. Die höheren Frequenzen (31300 Hz, 3900 Hz und 980 Hz) waren noch schlimmer.
Bei 30Hz blieben die Lüfter leider stehen (ich denke mal, dass das PWM Signal dort gar nicht mehr zu hören wäre, weil der Luftzug lauter ist), also bin ich bei 120 Hz hängen geblieben.

Der BJT wird mit einem 220 Ohm Basiswiderstand betrieben um sicher im Sättigungsbereich zu sein.
Testweise hatte ich mal den Basiswiderstand auf 1k Ohm erhöht womit ich im linearen Bereich gewesen sein sollte.
Zwischen Basis und GND habe ich dann einen 220µF ElKo gepackt um das Signal etwas weicher zu machen.
Das Geräusch verschwand damit komplett, allerdings wurde mit der BJT etwas zu warm (zwar nicht richtig heiß, aber schon spürbar warm - natürlich je mehr, desto kleine der PWM-Signal war).
Theoretisch sollte es auch klappen das Signal weicher zu bekommen, wenn ich einen fetten Kondensator parallel zu den Lüftern schalten würde. Allerdings habe ich magels Erfahrung davon erstmal Abstand gehalten, weil ich nicht wollte, dass der Kondensator ein Feuerwerk veranstaltet.

Sicher wäre mir eine Schaltung gewesen, bei der ich eine Diode vom Netzteil kommend in Reihe mit den parallel geschalteten Kondensatoren und den Lüftern gehabt hätte. Allerdings geht das so nicht, weil ich die Induktionsströme der Lüfter nach dem Ausschalten vom BJT weg bekommen will.
Vielleicht kann mir dazu jemand mehr sagen.

Außerdem habe ich noch ein seltsames verhalten festgestellt.
Wenn ich das Poti voll aufdrehe, dann summen meine Lüfter ziemlich laut und unregelmäßig.
Ich habe schon zum debuggen den PotiWert ausgeben lassen. Der ist in Ordnung.
Damit das PWM-Signal nicht schuld ist, habe ich dann mal das hier ausprobiert:

if (PotiWert >= 1020)
  {
    digitalWrite(fanPin, HIGH); //hier mit voller Lotte!
  }
  else
  {
    fanSpeed = map(PotiWert, 0, 1023, minPWM, maxPWM); //andernfalls eben die PWM-Länge berechnen
    analogWrite(fanPin, fanSpeed); //und das PWM-Signal ausgeben
  }

Also den Wert an Pin9 komplett auf HIGH zu ziehen - allerding auch ohne Erfolg.
Ich habe die Spannungen mit einem Multimeter gemessen. Diese liegen bei 11,99V und 5,0V.

Das seltsame ist, das es ohne dieses merkwürdige summen läuft, wenn ich das Arduino über USB meines PCs versorge und nur die GNDs überbrücke. (Ist ja eigentlich schon fast standard bei mir, dass es bei den Tests rund läuft und in der eigentlichen Schaltung dann zu solchen Problemen kommt ....)

Es läuft sogar, wenn ich ein Arduino UNO nehme.
Sobald ich auf meinen ProMini Clon umsattel kommt das Problem.

Irgendwas piept Hochfrequent in der Schaltung. Entweder das 240V AC -> 12V DC Netzteil oder der Step-Down Schaltregler.
Wenn ich das ProMini dann anschließe, wird das Hochfrequente piepen lauter.

Ich könnte mir vorstellen, dass die Ursache für dieses Problem auch die Ursache für das merkwürdige Lüftergeräusch bei voller Last ist.

Für das 12V Netzteil habe ich die innereien hiervon geschlachtet.
Der Stepdown Regler ist dieser hier

Die Lüfter brauchen zusammen laut Datenblatt maximal 0,4A.
Da das 12V Netzteil bis 1A geht und der Schaltregler eine Effizienz um die 90% hat, denke ich nicht, dass das bisschen Arduino, Relais und PWM Signal 0,6A oder mehr verursachen...

Damit es auch was für die Augen gibt, habe ich hier mal einen Schaltplan für euch gezeichnet, wobei ich sagen muss, dass ich mit fritzing nicht so wirklich zurecht komme (da Fehlen mir ein paar Bauteile und ich weiß nicht, wie man Kabel miteinander verbindet)....