ESP32 Kommunikation ohne Zeit zu verlieren?


22.03.2025, 10:14

Wenn ich zwei Tasten für den Sollwert mache, bräuchte ich natürlich noch eine externe Anzeige, was aktuell der Sollwert ist mit einer Segmentanzeige und diese würde ja den Regler auch wieder ausbremsen.

5 Antworten

Es gibt ESP32 mit zwei Kernen... und soweit ich weiß, gibt es Möglichkeiten, Code aufzuteilen - das wäre die ultimative Lösung, um einen Teil verzögerungsfrei zu bekommen und den anderen Ein- und Ausgabe, etc... machen zu lassen.

Mein Herangehen im Allgemeinen wäre:

Ich würde mich zuerst um den Regler kümmern: Was für ein Timing brauchst du zwingend, wie hoch dürfen Latenz/Varianz sein...
Demnach ließe sich entscheiden, ob der Regel z.B. in einem Timing-Interrupt laufen sollte oder nicht.

Ansonsten könnte man auch locker in der Loop noch Tasten abfragen, eine Software-Entprellung realisieren und wenn man es geschickt anstellt sogar zeitlich invariant umsetzen - also gleiche Ausführungszeit egal ob Taste gedrückt wurde. Wenn die paar Befehle (bei 180 MHz Taktgeschwindigkeit) bei effizienter Umsetzung stören, scheitert das Projekt eh. Jeder Interrupt ist langsamer/verzögert mehr.

Das genaue Timing der loop ist möglicherweise sowieso nicht vorhersehbar (wobei ich denke, dass bei 2 Kernen die Loop exklusiv zur Verfügung steht und WLAN, etc... vom anderen Kern behandelt wird)

Woher ich das weiß:Studium / Ausbildung – Studium Elektrotechnik und Informationstechnik, Hobbybastler

Ich glaube, du schießt mit Kanonen auf Spatzen.

Ein ESP ist so schnell, der wird sich bei der Aufgabe die meiste Zeit langweilen.

Wenn es nur um die Regelung geht, sollte ein Attiny locker reichen und selbst der wird nicht ausgelastet sein.

Woher ich das weiß:Hobby

Zuerst sollte man sich fragen, welche Schaltgeschwindigkeit notwendig ist, weil das natürlich eine Preisfrage sein kann.

Ich habe hier gerade so einen ähnlichen Mikrocontroller, mit dem ich ein Signal in 320us auslese und darauf reagieren kann, aber um einen Motor zu regeln, muss das doch nicht so schnell laufen. Wenn man Tasten benutzen will, beispielsweise bedeutet es, dass jemand die Tasten drückt, mit seiner Reaktionszeit (eines Zockers) von 300 ms? Oder tausendfach langsamer als mit serieller Kommunikation (I2C).

Stellt sich die erste Frage, ob Du nicht ein bisschen zu viel Wert auf die Regelgeschwindigkeit legst... Was musst Du regeln, dass es auf jede Millisekunde ankommt, dass Du jegliche minimalste Verzögerung ausschließen musst/willst?


swissalps 
Beitragsersteller
 22.03.2025, 10:32

ich möchte eine möglich grosse Regelgeschwindigkeit haben. Ich möchte ein Drehmoment eines Motors regeln. Die Abweichung sollte so kurz wie möglich sein. Der Regler darf auch wenig Überschwingen.

RareDevil  22.03.2025, 11:08
@swissalps

Bist du noch in der Planung, oder hast du schon Versuche gefahren? Hast du die Regelgeschwindigkeit gemessen, welche effektive Verzögerung du tatsächlich hast?

Premutos85  22.03.2025, 12:50
@swissalps

Um einen motor zu regeln brauchts einen Frequenzumformer. Der regelt die Drehzahl. Wenn du das Drehmoment regeln willst bräuchtest du ein schaltgetriebe. Nur mal so am rande. Und ein FU reagiert nahezu Verzögerungsfrei. Kann man in den parametern einstellen.

swissalps 
Beitragsersteller
 22.03.2025, 16:47
@RareDevil

ich bin noch in der Planung und wollte so nur wissen ob der ESP32 dafür geeignet ist. Ich probiere den Regler gerade mit Simulink auszulegen.

Ich verstehe Dein Problem überhaupt nicht.

Um einem Motor in irgendeiner Weise zu regeln, kommt es doch nicht auf microSekunden an.