Hallo zusammen, Mir fällt gerade keine einfache Lösung für folgendes Problem ein: Ich habe hier eine kleine Schaltung, welche mittels MOSFET einen Verbraucher bedient. Der Strom wird über Shunt und A/D-Wandler gemessen. Dauerhaft sollen nicht mehr als 1 A fließen. Soweit kein Problem. Ich speichere mir die A/D-Werte in einem Ringpuffer ab und bilde den Mittelwert. Wenn dieser überschritten wird schalte ich momentan nach etwa 2 ms ab. Jetzt habe ich allerdings das Problem, dass der Verbraucher kurzzeitig (< 5ms) etwas mehr Strom braucht. Ich bräuchte daher einen kleinen Algorithmus, welcher die Höhe der Abweichung mit der Zeit irgendwie gewichten kann. Beispiel: Bei dauerhaft 1 A soll noch nicht abgeschaltet werden, bei 2 A etwa nach 10 Millisekunden und bei Kurzschluss etwa nach 2 ms. Wie kann man so etwas mit möglichst wenig Code realisieren? Mir fehlt irgendwie der zündende Gedanke... Viele Grüße, Michael
Du summierst nicht die Werte, sondern die Quadrate der Werte. Damit bildest du das Schmelzintegral einer Sicherung nach I^2*t nach.
Lutz H. schrieb: > Wie hoch ist der Strom bei Kurzschluss? Der höchste messbare Wert sind knapp 3 A. Dann geht der A/D in die Sättigung.
MaWin schrieb: > Du summierst nicht die Werte, sondern die Quadrate der Werte. > Damit bildest du das Schmelzintegral einer Sicherung nach I^2*t nach. Dann muss ich doch aber auch den Referenzwert für 1 A quadrieren, oder? Und dann schaltet mir das Werkel noch schneller ab als das jetzt schon tut. Ohne Quadrieren hätten 1 A den Wert 1365 und 2 A den Wert 2730. Das ist das Doppelte. Mit Quadieren hätten 1 A den Wert 1.863.225 und 2 A den Wert 7.452.900. Das wäre das Vierfache. Folglich würde die Abschaltung noch schneller erfolgen. Oder habe ich das jetzt nur falsch verstanden?
Michael schrieb: > Ohne Quadrieren hätten 1 A den Wert 1365 und 2 A den Wert 2730. Das ist > das Doppelte. > > Mit Quadieren hätten 1 A den Wert 1.863.225 und 2 A den Wert 7.452.900. > Das wäre das Vierfache. Folglich würde die Abschaltung noch schneller > erfolgen. > > Oder habe ich das jetzt nur falsch verstanden? Du hast die Integration der Quadrate über die Zeit vergessen, bzw. deine Integrationszeit ist schlicht zu kurz oder anders ausgedrückt: dein Ringpuffer ist zu klein bzw. du füllst ihn zu schnell > Beispiel: Bei dauerhaft 1 A soll noch nicht abgeschaltet werden, bei 2 A > etwa nach 10 Millisekunden und bei Kurzschluss etwa nach 2 ms. Damit muß dein Ringpuffer den Zeitbereich von 10 ms umfassen. Nehmen wir mal an, da hast darin 10 Werte, dann darfst du also nur einmal pro ms Messen. Wenn 1A fließt, hast du also nach 10ms in Summe 18.632.250 in deinem Ringpuffer stehen, wenn 2A fließen 74.529.000, also würde man den Schwellwert auf diese Zahl festlegen. Bei 3A und höher wäre der Messwert rund 4.100, zum Quadrat also 16.810.000. Nach 5 Messungen, also 5ms, wäre der Schwellwert auf jeden Fall überschritten. Noch zu lange. Also hilft nur, irgendwas anzupassen. Entweder du erweiterst den Meßbereich, so daß die Scheiße nicht schon bei 3A aufhört, was sinnvolles zu messen oder du verringerst den Schwellwert auf ca. 33.000.000, um die Abschaltbedingung für den Kurzschlußfall sicherzustellen. Dann würde er bei 2A allerdings bereits nach 5ms abschalten, nicht erst nach 10. Oder du benutzt einen höheren Exponenten als 2, sagen wir mal 3, du speicherst also nicht das Quadrat der Meßwerte in deinem Puffer, sondern das Kubik. Übrigens: 1) Wie du übrigens unschwer bemerken kann, kommt in meinem Text nirgendwo das Wort Mittelwert vor. Das liegt daran, daß man den für diese Aufgabe überhaupt nicht benötigt... 2) Es ist auch nicht nötig, mit derartig großen Zahlen zu hantieren. Man skaliert vielmehr die Meßwerte oder spätestens ihre Quadrate sinnvoll. Ich würde bei den Quadraten die unteren 16 Bit einfach wegschneiden, dann hätte man: I W W²>>16 1A 1365 28 2A 2730 113 3A 4095 255 Das paßt dann wunderschön in Bytes und wenn man als Schwellwert analog zu oben 1130 wählt, ergibt sich genau das gleiche Verhalten wie oben, obwohl effektiv die unteren 8Bit der Meßwerte völlig unter den Tisch gefallen sind, nur halt mit viel weniger Speicherverbrauch.
Michael schrieb: > Oder habe ich das jetzt nur falsch verstanden? Den (quadrierten) Wert für 1 A (Eigentlich den Wärmewiderstand) mußt Du natürlich abziehen. = Konvektionskühlung der Sicherung. c-hater schrieb: > Damit muß dein Ringpuffer den Zeitbereich von 10 ms umfassen. Ein Ringpuffer ist gar nicht nötig wenn man die Werte kontinuierlich aufsummiert und die "Kühlung" wieder abzieht. Gruß Anja
Kann Festgestellt werden wann der Verbraucher mehr Strom braucht? Dann könnte die Sicherung eine kurze Zeit aufeine andere Kennlinie geschaltet werden. werden.
Anja schrieb: > Ein Ringpuffer ist gar nicht nötig wenn man die Werte kontinuierlich > aufsummiert und die "Kühlung" wieder abzieht. Nein, das funktioniert hier leider wegen der Unstetigkeit in der Messung nicht. Überlesen? Bei 3A ist Schicht im Schacht, alles darüber liefert das gleiche Meßergebnis.
Michael schrieb: > Dann muss ich doch aber auch den Referenzwert für 1 A quadrieren, oder? > Und dann schaltet mir das Werkel noch schneller ab als das jetzt schon > tut. Was ist 1 x 1 ?
c-hater schrieb: > Du hast die Integration der Quadrate über die Zeit vergessen, bzw. deine > Integrationszeit ist schlicht zu kurz oder anders ausgedrückt: dein > Ringpuffer ist zu klein bzw. du füllst ihn zu schnell Du hast natürlich Recht. Ich hatte ganz übersehen, dass die Abtastwerte dann auch den längeren Abschaltezeitraum einschließen müssen. Ich habe nun den Ringpuffer so erweitert, dass dieser etwa 12,8 ms umfasst (damit wieder eine Zweierpotenz entsteht und ich mir den Modulo sparen kann). Damit funktioniert es nun wie gewünscht. Vielen Dank für eure Hinweise! > Wie du übrigens unschwer bemerken kann, kommt in meinem Text nirgendwo > das Wort Mittelwert vor. Das liegt daran, daß man den für diese Aufgabe > überhaupt nicht benötigt... Das habe ich verstanden, hier wird der integrierte Werte verglichen, nicht der Mittelwert. > Es ist auch nicht nötig, mit derartig großen Zahlen zu hantieren. Schon klar, ich hatte schon bislang nur die oberen acht Bits des zwölf Bits langen A/D-Werts gespeichert.
Michael schrieb: > Das habe ich verstanden, hier wird der integrierte Werte verglichen, > nicht der Mittelwert. Bei fester Ringpufferlänge nennt sich das (bis auf die Normierung) üblicherweise "gleitender Mittelwert".
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.