Forum: Mikrocontroller und Digitale Elektronik Algorithmus für Kurzschlussabschaltung


von Michael (Gast)


Lesenswert?

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

von MaWin (Gast)


Lesenswert?

Du summierst nicht die Werte, sondern die Quadrate der Werte.
Damit bildest du das Schmelzintegral einer Sicherung nach I^2*t nach.

von Lutz H. (luhe)


Lesenswert?

Wie hoch ist der Strom bei Kurzschluss?

von Michael (Gast)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

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?

von c-hater (Gast)


Lesenswert?

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.

von Anja (Gast)


Lesenswert?

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

von Lutz H. (luhe)


Lesenswert?

Kann Festgestellt werden wann der Verbraucher mehr Strom braucht?
Dann könnte die Sicherung eine kurze Zeit aufeine andere Kennlinie 
geschaltet werden. werden.

von c-hater (Gast)


Lesenswert?

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.

von MaWin (Gast)


Lesenswert?

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 ?

von Michael (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.