CableCam mit BL-Gimbal

yang

Erfahrener Benutzer
Und worin wäre der Vorteil bei dieser ESC? Ich kann dort ja auch nicht sagen dass er die Position halten sollte, oder übersehe ich etwas?
 

Yups

Erfahrener Benutzer
Ich vermute, dass du damit eine bessere Regelqualität um den Nullpunkt hinbekommen könntest. Da diese Regler für allgemeine Antriebsanwendungen gedacht sind und nicht für ein Modellauto, wo der Stillstand eigentlich der unwichtigste Teil ist.
 

yang

Erfahrener Benutzer
Wer den Bauplan zur CableCam mit allem Zubehör haben möchte, hier sind die freigegebenen Dateien zu finden. Gültig nur über den Link.
https://drive.google.com/folderview?id=0BwhvhGUzwTHkS1pkeDNkNzFUakE&usp=sharing

Zur privaten Nutzung gebe ich die Dateien frei, wenn jemand CableCams anhand dieser Pläne gewerblich produzieren möchte, bitte eine kurze eMail an mich. Sollte jemand über diese CableCam schreiben und vielleicht sogar seine eigene zukünftig dokumentieren, bitte ich auf diesen Thread zu verweisen und mein Blog Post.
http://wdaehn.blogspot.com/2013/11/a-different-perspective-filming-with.html
 

yang

Erfahrener Benutzer
Die Arduino Projekte habe ich jetzt ebenfalls hochgeladen, gleiche Link bzw. Google Drive Folder.

Das cablecamcontroller_simple.zip ist das reduzierte Programm an dem ich gerade arbeite.
Das cablecamcontroller.zip die Version mit Absolutpositionssteuerung und PID Regler.

Für die PID Version habe ich auch die Software um diese per OpenPicus Microcontroller über den Browser/Wlan zu steuern, kann ich gerne ebenfalls hochladen wenn gewünscht. Aber solange der PID Regler nicht zufriedenstellend funktioniert, macht es nicht viel Sinn, denke ich, und deswegen habe ich es gelassen.

Sollte irgendetwas falsch mit den Dateien sein, bitte melden. Ich habe jetzt nochmals alles durchgesehen, kann aber nichts ausschließen.
 
Zuletzt bearbeitet:

Jogijo

Erfahrener Benutzer
Yang, ich glaube natürlich das du alles dir mögliche versucht hast, und ich verstehe auch das du jetzt erstmal genug hast, aber das es rein technisch und generell nicht geht weil die Auflösung zu gering ist oder sich der Regler nicht genau genug ansteuern lässt, kann ich mir einfach nicht vorstellen. Klar, der ganze Schlitten hat eine ordentlich Masse und das macht es nicht einfacher, aber es muss ja nicht auf 10cm genau sein, 50 bis 100cm würde schon reichen.
Ich würde das also noch nicht ganz verwerfen wäre auch schade um deine Arbeit, vielleicht findet sich ja jemand mit neuen Ideen für den Code.
 

yang

Erfahrener Benutzer
Ich könnte mir vorstellen das Problem lokalisiert zu haben - hat auch nur 7 Stunden (bis jetzt ;) ) gedauert.

https://www.youtube.com/watch?v=Bc7OB9Eo8kE


Bei einem PID Regler überwiegt normalerweise der lineare Anteil. Das bedeutet, wenn die die Differenz zwischen Soll- und Ist-Wert sehr hoch ist, dann steigt auch der Ausgangswert sehr schnell. Bei der Fahrt ist das kein Problem, aber rund um den Nullpunkt, weil die ESC ja einen Neutralbereich hat bei dem sie nicht anspricht.

Jetzt ist also die Eingangsdifferenz 10 Meter sagen wir, der Ausgangswert des PID Reglers +5ms. Nichts passiert, weil die ESC ja erst bei 30ms anspricht. Im nächsten Interval ist die Differenz aber schon 11m, also wird ein höherer Wert ausgegeben, z.B. 6ms - und noch immer passiert nichts. Das geht solange weiter bis der Ausgangswert 29ms ist - noch passiert nichts - und der Erhöhung inzwischen beim nächsten Zyklus auf +43 springt. Aber jetzt hat man der ESC nicht gesagt sie soll ganz langsam anfahren, sondern gleich einen ordentlichen Tritt gegeben (13ms über Neutral).

Ich habe jetzt mal den Neutralbereich der ESC herausprogrammiert. Ein Ausgangswert vom PID Regler von +1 wird auf 1531ms gelegt, +2 bedeutet 1532ms und entsprechend -1 wird auf 1469ms (1500-30-1) gelegt.
 

yang

Erfahrener Benutzer
Ich hoffe ich kann es morgen am Seil ausprobieren.

Man merkt halt auch welche Vorteile man hätte, wenn man die Motorpole direkt steuern würde, anstatt über den Umweg einer ESC mit PWM Steuerung zu gehen
* Stoppen würde die bedeuten: Erhöhe den Strom im aktuellen Motorpol bis sich die Cablecam nicht mehr bewegt. Garantiert keine Oszillationen.
* Eine Geschwindigkeit von 1 U/sek bedeutet dass man ein mal jedem Motorpol Strom gibt. So viel Strom das man keine Schritte verliert aber auch nicht wesentlich mehr. Eine Geschwindigkeits- und damit Absolutpositionssteuerung wäre sehr einfach.
* Ein PID Regler ist für eine stetige Regelkurve gedacht, aber wegen dem Neutralbereich der ESC ist das RC Signal nicht-stetig. Die Kompensierung davon ist nicht fix, bei einer Bergauffahrt muss man +70ms haben, bei einer Bergabfahrt genügen schon +20ms. Im Flachen sind diese Werte +-30ms. Bei viel Seilspannung +-40ms. (Ich ermittle diese Werte jetzt direkt nach dem Einschalten automatisch)
* Mit anderen Worten, der PID Regler ist gut um einen Geschwindigkeitsinput auf einen geregelten Geschwindigkeitsoutput zu mappen, aber nicht wie bei uns ein Geschwindigkeitsinput auf einen Energieoutput.
* Weniger Verkabelung und Elektronik weil jetzt nicht zwei Platinen, per Servokabel verbunden, beide haben Eingänge für die Hallsensoren.
 

Yups

Erfahrener Benutzer
Mensch, auf das Problem mit dem Neutralbereich hätte ich auch kommen können ;-)

Die Nicht-Linearität des ESCs ist natürlich ein Problem. Du müsstest jetzt quasi eine Nicht-lineare Funktion drüberlegen, um das zu kompensieren. So macht es z.B. Autoquad mit den ESC32.

* Ein PID Regler ist für eine stetige Regelkurve gedacht, aber wegen dem Neutralbereich der ESC ist das RC Signal nicht-stetig. Die Kompensierung davon ist nicht fix, bei einer Bergauffahrt muss man +70ms haben, bei einer Bergabfahrt genügen schon +20ms. Im Flachen sind diese Werte +-30ms. Bei viel Seilspannung +-40ms. (Ich ermittle diese Werte jetzt direkt nach dem Einschalten automatisch)
Die unterschiedlichen Lastanforderungen gleicht normalerweise der I-Anteil des PID-Reglers aus. Vielleicht damit einfach mal deutlich höher gehen?
 

Jogijo

Erfahrener Benutzer
Yang, wie verhält sich die ESC interne Bremse, wirkt die im gesamten Neutralbereich also von 1470 bis 1530, und lässt sich die nicht nutzen?
 

yang

Erfahrener Benutzer
Die wirkt im ganzen Neutralbereich. Was meinst Du mit "nutzen"? Im Stillstand - sofern das Seil nicht stark schräg ist - funktioniert die Bremse schon. Aber nicht das Stehen-bleiben an sich ist das Problem sondern das Verhalten bei Fehlern, Sollposition ist 10m, ist Position ist 8m. Ich könnte einfach eine nicht stetige Regelkurve einbauen wie Du schon weiter oben gesagt hast: Alles unter 3m Fehler ist vernachlässigbar, also setzte die ESC da hart auf Neutral (1500ms). Dann würde der Fehler aber irgendwann >3m sein, ESC Output ist dann 3m*Kp und wegen dem großen Fehler macht der Motor dann einen Sprung nach vorne, sobald er aus dem ESC Neutral heraus kommt. Davon abgesehen, würde bei einem schrägen Seil, wenn die Bremse nicht ausreicht, der Wagen 3m nach unten rollen und dann wieder auf die Sollposition fahren. Ist auch nicht was wir haben wollen, eine Schwingungsamplitude von 3m.

Darum habe ich den umgekehrten Weg gewählt und die Neutralstellung der ESC herausprogrammiert und die PID Faktoren so gewählt das bei einem Fehler kleiner 3m der Regeloutput sich nur langsam ändert, sodass die CableCam sehr langsam wieder in die Sollposition kommt.

Soweit die Theorie und die Trockenläufe....
 

yang

Erfahrener Benutzer
Dein Gedanke geht genau in die Richtung weswegen ich eine ESC mit kompletter Positionssteuerung haben möchte. Nehmen wir eine ganz triviale Schaltung, eine wo man jeden Motorpol unter 100% Strom setzen kann oder nicht. Dann würde Stillstand bedeuten das man Pol1 mit Strom versorgt und sonst nichts macht. Solange das Magnetfeld stark genug ist, bleibt man stehen. Und wenn man jetzt eine Umdrehung nach vorne fahren möchte, setzt man nacheinandern Pol2 und Pol3 und wieder Pol1 unter Strom. Fertig.

Diese vereinfachte Regelung wäre natürlich nicht wirtschaftlich, man würde viel zu viel Energie aus dem Akku saugen und auch die Bewegung wäre zu ruckartig - wie bei einem Schrittmotor mit nur 3 Schritten und ohne Microstepping.

Also muss man die Stromstärke regeln um das gerade erforderliche Drehmoment am Motor zu ermitteln und die Motorbewegung über schöne Sinuskurven (=Microstepping) annähern. Wird also auch nicht so einfach aber diese Logik ist in jeder ESC bereits enthalten.
 
So, jetzt habt Ihr es geschafft, ich bin infiziert...
Am Wochenende habe ich das Thema auch angegangen...
Nach einigen Stunden der Überlegung und weil ich es einfach nicht mag, spezielle Teile zu kaufen, habe ich mir meine eigenen "speziellen" Seilrollen einfach gezeichnet.
Und da ich hier schon sehr viel gelernt habe bei Euch, möchte ich diese nun auch mit Euch teilen.
Die Rollen sind geteilt, 50mm außen und 40mm in der Seilnut und werden mit M3x13 zusammen gehalten. Der als Welle dienende Distanzbolzen ist 20mm und Das Lager 608RS, also Standardlager, gefettet und mit wasserdichten Deckscheiben.
Die Rolle ist für ein 5mm Seil.
Download Link für die STL Files der Druckteile gibts auf PN Anfrage.
ABS kommt schon recht gut, wer es sich leisten kann, sollte vielleicht alumide nehmen.
Soweit einfach...Der Antrieb wird dann komplizierter, ich meld mich wieder... ;)
Ach ja,hier noch die Bilder.
Gude, Euer Klempnertommy




 
Zuletzt bearbeitet:

yang

Erfahrener Benutzer
Na das sieht doch schon mal wesentlich besser aus!
(ganze Video anschauen)
https://www.youtube.com/watch?v=SgqjXSWjWp0


Der P Wert war okay für den Trockenlauf aber am Seil ist er zu gering. Ich habe eine Verzögerung von 0.5 Sekunden nachdem ich vom Gas gehe bevor er zu bremsen anfängt.
Das die Berechnung vom Bremsweg noch nicht mathematisch exakt ist, wusste ich schon von gestern. Die Ursache werde ich noch finden.
 
FPV1

Banggood

Oben Unten