ich bin absoluter Neuling mit Arduino, daher bitte nicht wundern.
Jede Heizfolie benötigt 3A für die volle Leistung, da ich 6A vermeiden möchte, habe ich mir überlegt, für jede Folie ein eigenen MOSFET zu verwenden, der dann immer abwechselnd an ist, sodass immer nur jeweils 3A die eine Heizfolie erreicht (Wenn ihr versteht, wie ich das meine).
Kann man das codetechnisch umsetzen, da ich hier etwas ratlos bin?
Einen (zwei?) Temperatursensor wählen und montieren.
Einen (zwei?) PID Regler zu Einsatz bringen (vielleicht reicht auch eine Zweipunktregelung)
Eine (zwei?) Software PWM basteln
Ich würde aber trotzdem mehr als 6 Ampere zur verfügung stellen, weil man nie weiß, ob man morgen immer noch nur eine der beiden Folien gleichzeitig heizen will. Und ich würde das Netzteil nicht auf 6 Ampere, sondern auf 10 Ampere auslegen, dass nicht das Netzgerät, sondern die Heizfolien die Wärme abgeben. Dann noch zwei kräftige Endstufen als PWM Regler und zwei DS18B20 nutzen sowie ein Poti 10KOhm und das ganze ist Top.
Ja, zwei Sollbruchstellen, die bei einer bestimmten Temperatur unterbrechen, sollten vielleicht noch in die Heizkreise eingebaut werden, falls sowas in den Heizfolien nicht schon enthalten ist.
Es muss nichtmal ein Heizkissen sein, mir geht es vor allem um die Folien selbst. Eventuell lege ich die mir auch einfach so auf den Boden oder klebe sie irgendwo hin. ! Ich habe einen Akku, der als Ausgangsstrom nur maximal 5A hat, daher möchte ich eben nur maximal 3A in meiner Schaltung laufen lassen.
Als Temperatursensoren habe ich bereits 2 Thermistoren, wie bekomme ich dann noch die PID-Regler in meine Schaltung integriert? Danke schonmal für die Antworten!
In dem du die Aufgabe in einzelne teilst:
a) Lernen, wie man die Temperatursensoren (ein DS18B20 wäre vielleicht einfacher) einliest, so dass man zumindest die Temperatur über serial.print ausgeben kann.
b) Lernen, wie man einen Mosfet ansteuert und die Folien so anschließt, dass man über den Arduino die Heizung an und aus schalten kann.
c) einen Regler programmieren, der die beiden verbindet. Für Heizzwecke ist meist ein schnöder 2-Punktregler ausreichend, PID geht natürlich auch, ist aber schwieriger.
d) Irgendeine Form der Einstellung der Solltemperatur bauen/programmieren (Poti, Schalter, ...)
e) irgendeine Form der Anzeige der Zustandsgrößen. (Display für Soll-/Ist Temperatur, oder LED für Heizen, LED für Temperatur im grünen Bereich.)
wichtig: jede einzelne Aufgabe muss für sich erstmal funktionieren, bevor man sie, Schritt für Schritt, mit den anderen zusammenbaut-
a) habe ich schon geschafft, b) auch, c) ist eben mein Problem, für d benutze ich einen Taster, der zwischen 2 Stufen hin und herschaltet und für e) habe ich 2 LEDs, die die jeweilige Stufe anzeigen! Das alles funktioniert zusammen, aber bis jetzt nur mit einer Folie und nicht mit beiden, also wie bekomme ich den 2-Punktregler integriert?
Der Satz in Klammern ist wohl das Problem. Die bisherigen Antworten sprechen eher dagegen.
Ist das wichtigste Wort davor "abwechselnd" ?
Eine 2Punkt-Regelung sagt entweder "einschalten" oder "ausschalten", eine PID Regelung gibt eine Stellgröße vor. PWM gibt ein Verhältnis zwischen ein- und aus-Schaltzeit vor.
Was überall fehlt, ist eine Flanken-Erkennung, aus der man das Umschalten zwischen der einen und der anderen Heizfolie ableiten kann. Falls ich dein Problem richtig geraten habe.
const byte pinA = 3; // Mosfet für eine Folie
const byte pinB = 4; // Mosfet für die andere Folie
// werden abwechselnd verwendet
void Heizung(bool ein) {
// Mit Flankenerkennung und Abwechseln zweier Ausgänge
// der Einfachheit halber mit static Variablen, also nicht mehrfach verwendbar
static bool altZustand;
static bool altPin;
if (! ein) {
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
altZustand = false;
return;
}
if (! altZustand) {
// Andere Folie ein
altPin = ! altPin;
}
digitalWrite(altPin?pinA:pinB,HIGH);
altZustand = true;
}
Wenn man das auf eine softPWM - Steuerung anwendet, und den PWM-Wert von einer Regelung errechnen lässt, würden beide Folien gefühlt gleichzeitig laufen, strommäßig aber nur abwechselnd eingeschaltet sein und mit max halber Leistung laufen.
ich wollte mit dem Pseudocode ja nur zum Denken anregen.
Mein nächster Lernschritt wäre ein Flussdiagramm
Und eine draus resultierende Funktion:
void Heizung (bool anforderung) {
static byte Strang = 0;
static bool Heizstatus = 0;
if (!anforderung) {
digitalWrite(Heizpin0, 0);
digitalWrite(Heizpin1, 0);
Heizstatus = 0;
return;
}
if (Heizstatus) {
return;
} else {
if (Strang == 0)digitalWrite(Heizpin0, 1);
if (Strang == 1)digitalWrite(Heizpin1, 1);
if (++Strang > 1) Strang = 0;
Heizstatus = 1;
return;
}
}// End function Heizung
Allerdings so, dass wirklich für jede Heizphase nur eine Folie verwendet wird. Ich hatte den Threadopener so verstanden. Deine Variante hat den Charm, dass beide Heizfolien gleichzeitig, aber mit halber Leitung laufen, was sicherlich schonender ist.
Vielen Dank euch für die konkreten Vorschläge direkt, ich werde es damit versuchen. Mein Gedanke war, wie du korrekt gesagt hast, dass beide mit voller Leistung abwechselnd verwendet werden!