Re: ESP32, PWM und Drehzahlregelung
Verfasst: 30.12.2022, 20:50
Halo zusammen,
Zum Jahresende hier mal ein Update zum Projekt:
Das Framework läßt sich mittlerweile auch unter Windows bauen. Es werden für den ESP32 zwei Tasks erzeugt, die jeweils an einen Kern gebunden sind. In einem Task läuft das Framework und steuert im Moment eine H-Brücke mit L6203. Der andere Task wird den Regler bekommen. Zum Lernen lasse ich hier zunächst einen einfachen Messvorgang laufen und zwischen den Messungen schicke ich den Kern durch ein Delay in eine Zwangspause. Es hat sich dabei gezeigt, dass der ADC wirklich ... nicht gut ist. Also besteht der Messvorgang jetzt aus einer Anzahl von im Moment 30 Messungen, aus denen dann der Mittelwert gebildet wird. Das löst zwar nicht das Offset-Problem, gibt mir aber im Moment wenigstens einen Messwert der mit der Motordrahl recht ordentlich korreliert.
Wie geht es weiter? Im nächsten Schritt muss ich einen Timerinterrupt definieren, der mir den Task zur Messung und zur Erzeugung des PWM triggert. Hier stecke ich gerade fest, da ich noch nicht herausgefunden habe, wie ich dafür sorge, dass der Interrupt nur auf einem bestimmten Kern ausgelöst wird. Aber: Morgen ist auch noch ein Tag - und danach kommt noch ein ganzes Jahr. Ich berichte ...
Grüße und einen guten Start!
Klaus
Zum Jahresende hier mal ein Update zum Projekt:
Das Framework läßt sich mittlerweile auch unter Windows bauen. Es werden für den ESP32 zwei Tasks erzeugt, die jeweils an einen Kern gebunden sind. In einem Task läuft das Framework und steuert im Moment eine H-Brücke mit L6203. Der andere Task wird den Regler bekommen. Zum Lernen lasse ich hier zunächst einen einfachen Messvorgang laufen und zwischen den Messungen schicke ich den Kern durch ein Delay in eine Zwangspause. Es hat sich dabei gezeigt, dass der ADC wirklich ... nicht gut ist. Also besteht der Messvorgang jetzt aus einer Anzahl von im Moment 30 Messungen, aus denen dann der Mittelwert gebildet wird. Das löst zwar nicht das Offset-Problem, gibt mir aber im Moment wenigstens einen Messwert der mit der Motordrahl recht ordentlich korreliert.
Wie geht es weiter? Im nächsten Schritt muss ich einen Timerinterrupt definieren, der mir den Task zur Messung und zur Erzeugung des PWM triggert. Hier stecke ich gerade fest, da ich noch nicht herausgefunden habe, wie ich dafür sorge, dass der Interrupt nur auf einem bestimmten Kern ausgelöst wird. Aber: Morgen ist auch noch ein Tag - und danach kommt noch ein ganzes Jahr. Ich berichte ...
Grüße und einen guten Start!
Klaus