Arduino. Motorgeschwindigkeit mit Ultraschallsensor regeln?
Moin Leute, Ich bin gerade dabei ein Programm für ein Schulprojekt zu schreiben. Das ganze soll eine Höhenreglung für einen Quadrocopter werden, allerdings wollen wir zunächst nur einen Motor kontrollieren um die Sache für den Anfang zu vereinfachen.
Der Motor ist über einen ESC mit dem Arduino UNO verbunden und soll nun wie folgt von dem Ultraschallsensor in seiner Geschwindigkeit geregelt werden:
Um das entsprechende Flugobjekt in einer Höhe von 10cm zu halten überprüft der Ultraschallsensor ständig die Entfernung zum Boden. (funktioniert ohne Probleme, Werte werden in cm ausgegeben)
Falls der Sensor eine Entfernung über 10cm misst soll der Motor verlangsamt werden, wenn er eine unter 10cm misst soll er beschleunigen und wenn er 10cm misst soll die Geschwindigkeit beibehalten werden.
Problem: Ich weiß wie man den Motor auf einer bestimmten Geschwindigkeit drehen lässt und wie man den Motor auf eine bestimmte Geschwindigkeit beschleunigt bzw. abbremst, aber ich habe keine Ahnung wie man das ganze ohne feste Geschwindigkeiten macht. :(
Es würde mich freuen wenn mir jemand das erklären könnte oder eine Seite verlinkt auf der das erklärt wird, denn ich suche bereits seit Wochen auf Google nach der richtigen Vorgehensweise, finde aber keine Beispielcode oder die richtigen Befehle für mein Anliegen und so langsam deprimiert es mich auch sehr, dass ich mit meinem Projekt nicht mehr weiter komme.

1 Antwort
Du brauchst einen Regler für dieses Vorhaben. Arduino stellt beispielsweise die PIDLibrary zur Verfügung, um einen PID - Regler einzubinden.
http://playground.arduino.cc/Code/PIDLibrary
Dort ist auch sehr grob erklärt, wie er funktioniert und wie er anzuwenden ist. Weitergehende Erklärungen müsstest du dir vielleicht mal bei Wikipedia anschauen, da das schon sehr in die Regelungstechnik hineingeht.
Ansonsten kannst du dir einen proportionalen Regler selbst schreiben. Dieser verhält sich wie folgt:
Output = "P-Konstante" x Abweichung
Die P-Konstante musst du experimentell ermitteln und beschreibt, wie dynamisch dein System ist. Der Output ist der PWM-Output für deinen ESC. Die Abweichung ist dein HF_Soll - HF_ist.