Zitat Zitat von BlackDevil
... 1. Habe ich deinen Code aufgrund der Variablennamen nicht richtig Verstanden ...
Das liegt an mir, sorry, oder daran, dass Regelungstechnik nicht allzu einfach ist.

Zitat Zitat von BlackDevil
... 2. Habe ich die ganze Zeit den Code von seiner "Funktion" her misverstanden, ich dachte der sei ebenfalls zum Linienfolgen ...
Hmmm, ich hatte über Regelung aber nur deshalb geschrieben, weil
Zitat Zitat von BlackDevil
PD oder PID Algorithmus sagt mir relativ wenig aber der scheint zum Regeln ... gut zu sein ...
Macht ja nix. Jetzt scheint es Dir ja klar zu sein, dass Regelung der Geschwindigkeit und Linienfolgen nicht ein und dasselbe Ding sind.

Zitat Zitat von BlackDevil
... aber er regelt lediglich einen Motor - das dieser IMMER die gleiche Geschwindigkeit fährt.
Jein. "Der Code" oder besser gesagt "die Regelung" führt dazu, dass der Motor eine vorgegebene Drehzahl einhält. Die kann ich zu beliebigen Zeiten variieren. Korrekt müsste es also heissen: "... dass dieser IMMER die vorgegeben Geschwindigkeit einhält..."

(Nicht zum Lesen gedacht: Dies gilt nur im Rahmen der Betriebsgrenzen und der Zulässigkeit der Vorgaben. Wird eine zu hohe oder eine zu niedrige Geschwindigkeit vorgegeben, bekommt der Motor auch mit "Regelungscode" Probleme. Klar. Wer mit dem Auto oder Moped halbes Schritttempo fahren möchte, muss die Kupplung schleifen lassen, da reicht es nicht, das Gas wegzunehmen - dies ist nur ein ungefähres Beispiel, weil die Regelung hier vom Fahrer her gemacht wird - der kennt die Vorgabe und regelt mit Gasgeben die Geschwindigkeit.)

Es kann aber auch eine genügend langsame Geschwindigkeit vorgegeben werden und trotzdem funktioniert es nicht - weil z.B. die Steigung zu gross ist oder die Spannung des Akkus zu niedrig usf.

Stimmen aber die Betriebsgrenzen, dann kannst Du Dich darauf verlassen, dass Deine Vorgaben eingehalten werden. Genau dafür - und nur dafür - sorgt der Regelalgorithmus. Und warum soll das nützlich sein? Weil so die Bewegung doch "berechenbarer" wird. Ich weiß zum Beispiel, dass bei einer bestimmten Vorgabe (meines) "stupsi"-Wertes mein Gefährt eben 50 mm/sec fährt und nicht 51, 52 oder 49 und bei einem anderen Wert entsprechend anders. UND es fährt auch jedes einzelne Rad entsprechend gleich wie das andere => das Gefährt fährt bolzengeradeaus ! ! ! >>> Und ich musst mich dabei nicht darum kümmern, welchen genauen PWM-Wert ich für jeden einzelnen der beiden Motoren benötige - das macht der Regler "von alleine". Warum? Eben wegen dieser Regelungsschleife in der genannten Skizze oben. <<<

Zitat Zitat von BlackDevil
... 3. Wenn ich stupsi12/34 durch meinen Sensorwert ersetze, habe ich rein vom Prinzip her meinen Linienfolger, seh ich das richtig? ...
Na ja, ich wills nicht zu sehr ausbreiten aber wir müssen jetzt schonc mal unterscheiden.

A) Du braucht zum Linienfolgen keine Regelung wie oben beschrieben. Wie gesagt - die kam ins Spiel wegen Deiner Aussage . . . siehe oben. Es ist sicher möglich, die beiden Motoren (die PWM´s für den Motorcontroller) direkt aufgrund der Abweichungen vom "Soll" anzusteuern. Dies könnte so ungefähr wie folgt aussehen:

. Sensor .| PWM |PWM
. 1 bis 5 .| links |rechts
0 0 1 0 0 | 120 | 120 . . . . . . . Gib Gummi, gib Gummi . . . .
0 1 1 0 0 | 110 | 120 . . . . . . . Fahrzeug weicht leicht rechts ab oder Kurve li beginnt, li Motor langsamer als re => zieht nach links
0 1 0 0 0 | 080 | 100 . . . . . . . Stärkere Abweichung re od. Kurve links , insgesamt langsamer und linker Motor langsamer als rechts
1 1 0 0 0 | 070 | 100 . . . . . . . Aktion oben reichte nicht, links noch langsamer
1 0 0 0 0 | 060 | 100 . . . . . . . Aktion oben reichte nicht, links noch langsamer
...
0 0 0 1 1 | 100 | 070 . . . . . . . sinngemäß wie oben, aber Rechtskurve
...
Dies ist aber, genaugenommen, auch eine Regelung, denn es wird mit Rücksicht auf die Größe der Abweichung immer stärker gegengesteuert. Aber dies ist eben kein konventioneller Regler (der wäre hier auch möglich, aber dann müsste ich ein paar Stunden drüberhocken - und es ist ja Dein Problem).

B) Du kannst die oben genannten PWM-Werte durch konkrete Geschwindigkeitsvorgaben od. ä. (z.B. wie meine stupsi12/~34 - Werte) ersetzen. Dann werden eben die Vorgaben genauer befolgt. Und wozu soll das jetzt gut sein? Du könntest durch entsprechende Geschwindigkeitswerte (Vorgaben ähnlich wie oben für die li/re PWM) einfach ausrechnen, welche Geschwindigkeit Du für die beiden Räder bei welchem Kurvenradius vorgeben musst. Damit könntest Du vielleicht bei einem vorgegebenen Parcours sicherer auf die Abweichungen reagieren. Ein wesentlicher Vorteil, besonders bei langen Geraden wird es sein, dass das Gefährt besser geradeausfährt - weil eben die Geschwindigkeit der Räder geregelt wird - und der Regler - siehe oben - ohne mein Zutun die erforderlichen PWM-Werte ausrechnet. Dies ist im Beispiel A) nicht der Fall ! ! !


Ich vermute, dass ich in so einem Fall aber eher die erste Variante nehmen würde - ohne Regelung der Motordrehzahl oder -Geschwindigkeit mit einem der PD- oder PID-Algorithmus. Wenns so funktioniert - - - - -

Zitat Zitat von BlackDevil
... Denn immer wenn mein Wert abweicht wird gegen geregelt. Nee irgendwie finde ich noch nich so ganz den Draht zwischen "Motor rechts langsamer drehen wenn eine Linkskurve kommt" und dem w bzw Sensorwert ...
Da hast Du das richtige Gespür! Du musst bei der "Regelung" entsprechend der Abweichung vom Sensormuster, siehe oben, den Sollwert w einstellen. Du musst also den Werte w vorgeben. Getrennt für jeden Motor! Ähnlich wie die obere PWM-Liste.

Ich hoffe, dass dies jetzt verständlicher ist.