Hallo zusammen,
Ich habe mir einen Tri- und Quadrocopter gebaut.
Den Flugcontroller habe ich fertig und alles funktioniert recht gut.
Leider habe ich das Problem, das der Copter sich bei Wind nicht mehr
sooo toll steuern laesst...
Darum wuerde ich gerne Sensoren einbauen die mir die Fluglage
stabilisieren.
Als erstes soll der gesteuerte Winkel gehalten werden (so gut wie es
halt geht). Danach soll noch ein Beschleunigungssensor zum Einsatz
kommen.
Ich habe auch schon ein bisschen darueber gelesen wegen Rauschen und
Filtern, drift etc. Leider sind viele Beitraege fuer meinen Geschmack
recht schnell zu umfangreich geworden, deswegen will ich an dieser
Stelle selber nachfragen..
Zum Einsatz soll nach Moeglichkeit eine Fertige Platine kommen wo ich
nur noch die Werte auslesen muss (Vorzugsweise mit SPI).
Was fuer Platinen koennt ihr empfehlen?
Welche Moeglichkeiten der Filterung gibt es?
Hoffe Ihr koennt mir weiterhelfen!!!
Gruss
Die Sensoren sind schon auf deinem Flugcontroller vorhanden. Ansonsten
wäre es ziemlich schwierig, einen Copter stabil (sogar bei Windstille)
in der Luft zu halten.
Nein bisher habe ich nur einen Atmega8 zur Ansteuerung der Regler, der
die Motoren anteuert verbaut. Gut es ist nicht ganz einfach den ohne
Stabilisierung zu fliegen, da ich aber ein recht erfahrener Modellpilot
bin, kann ich das... Leider ist das momentan gar nix fuer ein Anfaenger
bzw. fuer einen leicht fortgeschrittenen Flieger...
Deswegen will ich ja Sensoren einbauen die mir die Fluglage etwas
stabilisieren. Es muss ja nicht zu 100% genau sein.
Gerne bin ich auch bereit so ca. 25 Euro fuer eine Sensorplatine
auszugeben.
Vorteilhaft waere natuerlich wenn ich die Daten von der Platiene mit SPI
abgreifen kann.
MPU-6050 waere so eine Platine, leider aber nur mit I2C steuerbar. Zur
Not wuerde auch das gehen. Ich weis aber nicht wie gut diese Platine
ist.
Also danke an alle die mir Alternativen vorgeschlagen haben, aber ich
will die Komplette Schlatung und Programmierung selber machen. Es ist
einfach nur mein Wissensdurst den ich stillen will ;)
Daher suche ich eine Platine die mir die entsprechen Werte ausgibt.
Vorzugsweise ueber SPI.
Kann mir da jemand so eine Empfehlen? Evtl. auch eine zu der ein ein
Tutorial gibt etc...
pad89 schrieb:> Also danke an alle die mir Alternativen vorgeschlagen haben, aber ich> will die Komplette Schlatung und Programmierung selber machen. Es ist> einfach nur mein Wissensdurst den ich stillen will ;)
Das beisst sich aber mit
> Ich habe auch schon ein bisschen darueber gelesen wegen Rauschen> und Filtern, drift etc. Leider sind viele Beitraege fuer meinen> Geschmack recht schnell zu umfangreich geworden, deswegen will ich> an dieser Stelle selber nachfragen..
Das ganze ist nun mal ziemlich umfangreich und anspruchsvoll.
> Daher suche ich eine Platine die mir die entsprechen Werte ausgibt.> Vorzugsweise ueber SPI.
Was jetzt?
Wasch mir den Pelz aber mach mich nicht nass?
@TO
wenn du in der Bucht oder beim Chinesen nach DOF und SPI suchst zeigt es
ein paar Sensorboards an.
Wie gut die Sensoren sind lässt sich wohl am besten in einem Multikopter
Forum nachlesen.
Aber da du ja nicht den Anpruch stellst das Teil selbständig fliegen zu
lassen werden die alle gut genug sein.
Den Regelkreis zu programmieren dürfte eine herausforderung sein (PID
Regler)
Die Möglichkeit bei multiWii oder Adrucopter anzuschauen wie dei das
gemacht haben und/oder ein fertiges Board zu benutzen wurden ja schon
genannt.
pad89 schrieb:> aber> ich> will die Komplette Schlatung und Programmierung selber machen.> ...> Daher suche ich eine Platine die mir die entsprechen Werte ausgibt.> Vorzugsweise ueber SPI.
Ja, was denn nun? Selbermachen, oder fertige Platine kaufen?
Kauf dir halt irgend eine der open-source-Platinen, und programmier
deine eigene Software dafür.
Oliver
Also folgende Punkte muessen abgearbeitet werden:
Welche Gyroplatinen koennen empfohlen werden? (SPI)
Wie funktioniert das mit der Filterung?
Das sind die einzigen beiden Punkte die ich wissen will...
Mit Umfangreich meine ich, das immer wieder alternativen vorgeschlagen
werden, wie ach nimm das Arduino oder gleich fertige Sachen fuer < 20
Euro etc. (Ist jetzt nicht boese gemeint ). Daruch kommen dann recht
viele Posts zusammen und das eigentliche Thema wird immer mal wieder
zwischendurch behandelt.
Ich wollte einfach nur die Antworten auf meine beiden Fragen haben.
Welche Platinen mit SPI und wie funktioniert das mit der Filterung etc..
Damit waere mir schon echt geholfen....
Hi,
Wenn Du die Dinger schon ohne jede Stabilisierung fliegen kannst, ist es
vermutlich gar nicht so extrem schwierig wie bei den ausgereiften
Steuerungen.
Nimm das MPU-6050 oder ähnliche. Wenn man unbedarft herangeht wird da
für lange Zeit kein Board die Grenze sein.
Was ich nicht verstehe ist warum I2C so ausgeschlossen sein soll.
Gerade bei mehreren Sensoren ist das ein Segen und auch keine
Raketentechnik.
Wenn's denn sein muß, LSM9DS1 kann auch SPI.
Gruß,
Norbert
pad89 schrieb:> Ich wollte einfach nur die Antworten auf meine beiden Fragen haben.> Welche Platinen mit SPI und wie funktioniert das mit der Filterung
Tja, die Formulierung einfach zu beantwortender Fragen ist nicht
trivial. "Platinen" mit "Sensoren" und "SPI" als Beschreibung ist so
blödsinnig wie ungenau. Das führt dann dazu, dich in die Kategorie
"völlig ahnungslos ud des googlens nicht mächtig" einzuordnen, mit dem
dann gut (und richtig) gemeinten Ratschlag, doch einfach einen der
fertigen Flightcontroller zu nutzen.
Aber vielleicht fängst du nochmal von vorne an, und fragst ganz einfach
genau das, was du wissen möchtest.
Oliver
Sorry, hatte oben geschrieben das ich einen Atmega8 verwende, es ist
aber ein Atmega32.
Zurzeit sieht mein Aufbau so aus:
Ich habe einen normalen Empfaenger von Spektrum. AtTiny's lesen von
jedem Kanal die Werte von meinem Emfaenger ein und der Atmega32 liest
dann von diesen die Werte ueber SPI aus, macht noch ein paar
Berechnungen und gibt dann ein Servosignal an meine Regler, die wiederum
meine Motoren steuern.
Jetzt waere es natuerlich toll, wenn ich eine fertige Sensorplatine
haette, wo ich die Daten auch ueber SPI auslesen koennte. Diese Daten
werte ich dann im Atmega32 aus und sende zum Schluss ein entsprechendes
Signal an die Regler...
Das ist im grunde genommen der Ablauf.
Hallo,
ich habe von Quadcopter keine Ahnung, aber schau Die mal den MPU6050 an,
ist allerdings I2C.
ich weiß, das Arduino ein Reizwort ist, manchmal auch für mich.
Arduino ist ein Name für ein Sammelsurium schon zusammengelöteter
üblicher Bauteile. Man kann den Namen auch weglassen und z.B. nach einem
MPU6050 suchen, nur ich z.B. möchte die Leiterplatte nicht erstellen und
fertigen lassen und zusammenlöten müssen wenn ich es vermeiden will.
Also nehme ich ein "Arduino-Shield" von netten Chinesen, suche mir
Datenblatt und Schaltplan und hänge es an den µC meiner Wahl.
Dann könnte ich mich in Ruhe mit der Software rumärgern.
Wenn das auf Anhieb so nicht klappt, bin ich froh, wenn irgendwo ein
Arduino Nano oder PrMini rumliegt, wo ich in 5 Minuten alles
zusammenstecken kann, die passen de Lib suchen und mir mal schnell
anschauen kann, was eigentlich rauskommen soll.
Niemand wird gezwungen, die ArduinoIDE oder den Bootloader zu nutzen,
man kann auch seinen ISP-Programmer ranstecken usw. usw.
Mit dem MPU6050 will ich auch mal rumspielen, ich weiß nur noch nicht
wozu...
Gruß aus Berlin
Michael
Ja ueber das Ding bin ich auch schon gestolpert, leider kein SPI aber
nun gut. Leider weis ich nicht so genau wieder gut das ist... Aber ein
Versuch waere es wert ;)
pad89 schrieb:> leider kein SPI
Ich verstehe dein Problem dabei nicht! Wenn er kein SPI hat, dann nimm
halt das I2C-Protokoll. Oder hast du ein Problem weil das I2C zwei
Pullups nötig hat?
Welche Programmierumgebung nutzt du?
PS:
Bestelle dir doch zum Basteln einfach mal das APM 2.6-Board. Gibts beim
Chinesen für unter 50 Euro. Die Bauteile darauf kosten fasst soviel im
Einkauf. Kannst also schlachten. Oder du programmierst auf dieser Basis
deine Flugsteuerung. Nett zu erwähnen ist auch der Magnetfeldsensor an
Bord. Den kannst du später einbauen. Und wenn du dann noch Lust hast,
schließt du an den Steckern einfach ein GPS-Modul an und lässt die
Routen abfliegen.
Und bei Bedarf kannst noch ein Funk-Link anschließen. Oder ein OSD. Oder
beides.
Ich hab das Ding in meinem FX79. Mit GPS, Kompass, Funk-Link OSD und
Kameras. Ganz toll wenn jemand trainieren möchte. Ein Schalter umgelegt
und das Ding fängt an aus jeder Lage in der Luft sich korrekt
auszurichten, zu dir zurück zu fliegen und über dir in eingestellter
Höhe zu kreisen. Nennt sich RTL (ReturnToLaunch). Macht er auch wenn die
Fernsteuerung ausfällt (passierte mir einmal). Dann kreist das Ding
solange bis der Motor keinen Saft mehr bekommt, und er leitet die
Landung ein. Rsultat: Landung perfekt. Ist laut Gesetz zwar illegal,
aber mir ist das lieber als ein versicherter legaler Crash in eine
unschuldige Person...
Eigentlich stoert mich I2C nicht, "ich" finde SPI nur einfacher und es
wuerde auch etwas besser zu meinem Programmablauf passen. Es ist aber
auch kein Problem das ueber I2C anzusteuern.
Ich Programmiere in C
Hi,
dann nimm z.B. das hier:
http://www.watterott.com/de/MinIMU-9-v3
Das ist Stand der Technik.
Lass Dir die Werte lesbar skaliert auf dem Terminal anzeigen und spiele
damit herum. Dann bekommst Du recht schnell ein Gefühl dafür wie Du
filtern und regeln musst.
Gruß,
Norbert
Norbert S. schrieb:> Wenn Du die Dinger schon ohne jede Stabilisierung fliegen kannst, ist es> vermutlich gar nicht so extrem schwierig wie bei den ausgereiften> Steuerungen.
Naja es ist schon nicht einfach, eine recht grosse Menge an
Fingerspitzengefuehl ist erforderlich ;)
asd schrieb:> und was nutzt du jetzt? ;-)
Maus und Tastatur ;)
Norbert S. schrieb:> dann nimm z.B. das hier:> http://www.watterott.com/de/MinIMU-9-v3> Das ist Stand der Technik.> Lass Dir die Werte lesbar skaliert auf dem Terminal anzeigen und spiele> damit herum. Dann bekommst Du recht schnell ein Gefühl dafür wie Du> filtern und regeln musst.
Der sieht auch gut aus. Ich denke das ich mir den und den MPU 6050
bestellen werde...
So kommen wir doch nun zum Filtern...
Ich habe gelesen das es einen Kalman filter gibt... Ein bisschen drueber
gelesen aber wieder verworfen da mir die Berechnungen ein wenig zu
kompliziert sind. Gehoert habe ich aber noch von einer anderen, recht
guten, Filtermethode. Leider will mir der Name nicht mehr einfallen -.-
pad89 schrieb:> Naja es ist schon nicht einfach, eine recht grosse Menge an> Fingerspitzengefuehl ist erforderlich ;)
Hi,
Nee, ich meinte die Programmierung. Du musst das eben nicht gleich
idiotensicher hinbekommen wie es die fertigen Regler das schaffen (wenn
sie denn richtig eingestellt sind).
Gruß,
Norbert
Norbert S. schrieb:> Nee, ich meinte die Programmierung. Du musst das eben nicht gleich> idiotensicher hinbekommen wie es die fertigen Regler das schaffen (wenn> sie denn richtig eingestellt sind).
Ach so... Ne das will ich auch nicht... Das Projekt sollte eigentlich
nur fuer mich sein, konnte meinen Mund aber nich halten und so wollen
ein paar Leute schon sowas haben. Mit "sowas haben" meine ich, das die
Steuerung die ich entwickle nicht fuer einen Copter gedacht ist. Es ist
eine andere Art von Flugzeug die auf 3 unterschiedliche Arten fliegen
kann ;_)
Ist jetzt aber nicht das Thema ;)
Fakt ist, das diese Leute auch schon fliegen koennen ;)
Arduino sind doch auch nur avr-gcc Klassen.. Wenn im MultiWii Arduino
opensource xode die Klassen getdatampu9050 und Accelerationfilter stehen
wird da auch nur reiner avrgcc genutzt.. Vielleicht durch einige
Variablen verarduinot wie allgemeines Int oder boolean.
Wenn der schon fliegt und du das noch alles nachfragst haste nix
gelernt.
z.B. Filterroutinen, PID
https://github.com/diydrones/ardupilot/blob/3d7ec3704d88053ae03b6e01077946ec2084af99/libraries/AC_PID/AC_PID.cpp
Philipp K. schrieb:> Wenn der schon fliegt und du das noch alles nachfragst haste nix> gelernt.
Erklaere das mal genauer...
Vermutlich wird im Arduino nur normaler AVR Code genutzt.
Aber nochmal zum Verstaendnis... Ich will nur einen ganz stinknormalen
atmega nehmen und dort ganz stinknormalen AVR Code nutzen!!!
Ich will jetzt auch nicht 3000mal erklaeren warum wieso weshalb!!!
Hi,
Gaaanz ruhig, da musste hier durch.
Problem sind die ganzen Spinner die sowas bauen wollen und keinen
Schimmer haben.
Ich habe durchaus verstanden was Du vorhast, also nimm so ein Board mit
Gyro, ACC und ev. Mag und probiere damit herum.
Da Du das Ding ja auch so beherrschst, ist es vermutlich am einfachsten
einfach mal zu probieren. Nur eine Achse nur Gyro und wenn der nach
links rollen will etwas rechts dazugeben. Ganz vorsichtig rantasten.
Dafür ist es übrigens extrem hilfreich, wenn Du Parameter per Bluetooth
(Laptop, Android) für jeden Startversuch verstellen kannst. Kramt man
nicht jedesmal das Programmierkabel raus.
Gruß,
Norbert
Hallo,
nein, steht zumindest I2C drin.
Und außerdem ist das Teil bestimmt "Arduino compatibel" auch wenn es
nicht dransteht. ;-)
Gruß aus Berlin
Michael
Ja das wuerde auch gehen, aber ich habe mich jetzt fuer dieses
entschieden:
http://www.watterott.com/de/MinIMU-9-v3
Ich denke das wird ganz gut sein und das Datenblatt ist auch recht gut
beschrieben.
Und ich wette auch das es Arduino kompatibel ist :D :P
Ich hatte mich halt noch nicht mit I2C auseinander gesetzt. Habe es mir
aber vorhin durchgelesen wie das geht und joa... koennte klappen ;)
Werde morgen mal mit den Controller ein paar Versuche starten...
Interessant wird es ja erst noch... Wenn die Gyrowerte dann soweit
stimmen, dann muss ich um die Ausgleichswerte zu erhalten die
gesteuerten Werte herausfinden und diese dann von den Tatsaechlichen
Werten abziehen.
Wird bestimmt noch interessat werden...
Hi,
gute Wahl und lass Dich durch die Unkenrufe nicht beirren.
Viel Erfolg und berichte einfach mal.
Noch ein Tipp: Falls Du auch die Höhe per Luftdruck regeln willst:
Es gibt da einen geilen Sensor "State of the Art". Allerdings muß man
sich den Druck aus 27 Parametern mit fiesen Formeln selber berechenen.
Hat echt keinen Spaß gemacht.
Inzwischen gibt es einen Sensor von ??? der gleich den Druck in Pa oder
was weiß ich ausgibt.
Wenn das rennt ist das aber erschreckend genau. Kurzfristig +-20cm mit
primitiver Filterung. Drift über 10 Min. ist gleichzeitig ne
Wettervorhersage ;-)
Bei Annäherung an den Boden habe ich SRF02 benutzt. Wirklich
idiotensicher (auch I2C) und bei wenigen Metern und halbwegs ebenem
Boden zentimetergenau.
Gruß,
Norbert
Danke Norbert!!!
Ein Fliegerkollege hat mir auch mal so einen Sensor empfohlen (der
bastelt auch gerne mal ;) ). Der soll sich angeblich einfach auslesen
lassen und auch gleich PA Werte zurueck geben. Muss den nochmal fragen
wieder das Teil hies.
Leider wird es bei mir mit der ganzen Elektronik erst naechstes Jahr
was, aber ich wollte mir einfach schon mal das Wissen aneignen damit ich
so richtig loslegen kann ;)
Das Grundwissen wie ich die ganze Sache realisiere habe ich jetzt
(Glaube ich zumindest ;) ).
Jetzt beschaeftige ich mich damit wie ich Sensor und Steuerung unter
einen Hut bringen kann.
hi,
Der Sensor den ich hatte/meinte war MS5611. Auslesen ist einfach aber
etwas eklige Auswertung...
Das war aber vor 2-4 Jahren mit Abstand der beste Sensor den man kaufen
konnte.
Der Neuere war glaube ich Bosch? BS280 oder sowas?
Sorry, ist aktuell nicht mehr meine Baustelle.
Ach ja, der ganze Quark ist auch in Deinem Android verbaut. Mit
entsprechenden Apps (Sensortest oder so) kannst Du die Werte auch direkt
mal sehen, wenn Du mit dem Telefon herumfuchtelst.
Edit: Es fällt auf, daß sich die Meckerpötte nicht mehr melden, nachdem
es konkret wurde...
Gruß,
Norbert
Unheimlich... Woher weist du das ich Android benutze ;)
Ja stimmt gibt da eine App mit der man die Werte auslesen kann.
Programmiere zwar auch hin und wieder mal mit dem Android aber bis auf
die Sensoren musste ich noch nicht runter ;)
Hi,
Es gibt Apps die die Rohwerte der Sensoren anzeigen, da muß man sich
nicht Java auf Android antun.
Edit: Jemand der sowas bastelt hat kein IPhone...
Gruß,
Norbert
Hallo,
mit den Berechnungen bei Luftdrucksensoren habe ich mich vor ein paar
Jahren mal miz den HP03S von HopeRF rumgeschlagen. Läuft hier heute
noch, war allerdings nie auf die nutzbare Genauigkeit ausgelegt, nur
Wettersensor.
Ich hatte mir jetzt mal den BMP180 angeschaut, da ist im Datenblatt von
0,5m die Rede. Rechnerei ist offenbar genauso haarsträbend, ich habe
diesmal zum rumspielen eine fertige Library genommen. zumindest stimmt
der gemessene Druch mit meinem alten HP03S gut überein.
Ist ein China-Modul wie dieses hier:
http://www.amazon.de/BMP180-Digitale-Luftdruck-Sensor-Arduino/dp/B00N1TSTPA
Man beachte die Artikelüberschrift... ;-)
Gruß aus Berlin
Michael
Jop Ueberschrift gelesen ;)
Ist doch gar nicht schlecht das man Arduino erweitern kann ;)
Tja das mit dem Druck ist halt so eine Sache. Um das Modell ein oder 2
Meter ueber den Boden schweben zu lassen, kann man auch
Ultraschallsensoren nehmen bestimmt...
Das Problem am Ende wird sein das Du in einem gewissen Rechentakt für
alle Berechnungen und Syncs bleiben musst und da kommen erst die
Anforderungen an den Code zu Tage..
Beim Arducopter/MultiWii ist das was die aus einem Mega2560/Atmega328P
rausholen schon eine Super Leistung von der man nur lernen kann.
Ultraschall, Kompass, GPS-Lock und absolutes ruhiges stehen in der Luft.
Viele sagen dazu "ein Atmega ist zu langsam", fast überfordert auf jeden
Fall.
Hallo,
ein schöner Thread, also will ich auch mal mein Senf dazugeben.
Als erstes Freu ich mich auf die Ergebnisse.
Ich muss ja sagen Arduino hat auch was gutes!! Seit es den gibt bekommt
man auch viele Sensoren schon fertig ohne sich alles selber zubauen.
Gerade zum Basteln oder Testen eine sehr schöne Sache. Siehe hier.
Wichtig ist nur bei der Verarbeitung, das du eine Äquidistante
Verarbeitung oder Abtastung hast. Das ist meist recht wichtig für
verschieden Filtern. Und macht dann die Betrachtung der Werte deutlich
einfacher.
@Unbekannt:
Viele behaupten das ja und meistens ist nicht die Rechenleistung das
Problem, sondern die Anzahl von Schnittstellen. Das Projekt bekommt man
eventuell auch auf ein Attiny, nur dort könnte der Speicher etwas klein
werden.
Mal schaun vielleicht bau ich auch mal so ein Ding. Hätte jetzt echt
Lust darauf. ^^
viele grüße
Ich werde sehen wie es klappt und ob die Rechenleistung ausreicht. Ich
gehe jetzt aber mal davon aus das sie fuer das alles ausreichend ist.
Da ich einen ganz normalen Empfaenger nutzen moechte, habe ich fuer
jeden Kanal erstmal einen eigenen AtTiny genommen. Diese uebernehmen mir
das aus Auslesen der Werte vom Empfaenger, welche ja Servosignale sind.
Diese sind per SPI an meinem Atmega32 angeschlossen. Zuerst hole ich mir
diese Werte, danach dann die Werte von den Sensoren. Wenn ich dann alles
habe, dann wird der Code vom PID-Regler durchlaufen und die daraus
resultierenden Werte sind dann meine Stellwerte fuer die Motoren.
Da ich anfange mit 4 Motoren, muss auf jedenfall eine minimale Zeit von
8ms einplanen die mein Code braucht um abgearbeitet zu sein.
8ms - Jeder von den Reglern kann man ein Servosignal uebergeben. Dieses
muss zwischen 1ms und 2ms lang sein.
Naja ich beschaeftige mich erstmal mit dem PID-Regler.
Naja ich bau jetzt erst mal den Tannebaum auf ;) bis spaeter
> Naja ich beschaeftige mich erstmal mit dem PID-Regler.> Naja ich bau jetzt erst mal den Tannebaum auf ;) bis spaeter
Mit tatkräftiger Unterstützung & Beratung wirst du das letztere
hinbekommen.
pad89 schrieb:> Baum steht :D
Habe ich mit doch gleich gedacht, mit tatkräftiger Unterstützung &
Beratung bekommst auch du einen Tannenbaum aufgebaut :)
Hi,
zur Rechenleistung:
Du musst nicht alles im schnellen Takt abarbeiten.
Schnell muß hauptsächlich der Gyro ausgewertet werden.
Dann kommt der ACC aber das ist schon träger und nicht so präzise.
Während der Gyro schon winzigste Bewegungen anzeigt geht das beim ACC
noch lange im Rauschen unter.
Alles weitere wie Kompass, Höhe (Luftdruck/US), und erst recht GPS
können dagegen schnarchlangsam sein.
Gruß,
Norbert
Arrg... was ist gleich noch mal ACC??? Beschleunigungssensor?? -.-
Was mich gerade kuemmert ist, wo bekomme ich die Sollwerte her (Kp
glaube ich)
Mir faellt nur eine Moeglichkeit ein, sobald ich starte muss der
Controller einige Werte von der Funke Speichern.
Ich habe mir das ungefaehr so vorgestellt:
Wenn ich den Nick oder Roll Knueppel bewege, bekommt mein uC ein Wert
von 1 bis 2, jenachdem welche Position mein Knueppel hat.
In der Mittenstellung bekomme ich Werte von 1,5.
Um den staendig gesteuerten Winkel zu erhalten, wuerde ich einen Timer
Starten sobald ich einen neuen Wert erhalten habe. Bekomme ich dann
einen weiteren Wert stoppe ich den Timer, speicher mir den Timerwert,
danach starte ich den Timer wieder. Nun wird der Winkel berechnet aus
dem Wert von der Funke und dem Timerwert und Drehrate des Copters bei
dem Wert von der Funke.
Daraus ergibt sich dann ein Winkel. Dieser wird gespeichert. Danach kann
dann der PID-Regler seine Arbeit machen etc...
Koennte das so in etwa passen???
Hi,
Ja, ACC ist der Beschleunigungssensor.
Dein Verfahren habe ich nicht 100% kapiert aber ich glaube so ganz ist
das nicht der richtige Weg.
Sollwerte bekommt der Copter erstmal vor dem Start indem für alle
Sensoren die Nullage gespeichert wird.
Und dann kommt es darauf an, in welchem "Modus" Du fliegen willst.
Der "Profimodus" sorgt nur dafür, daß der Copter die Lage im Raum hält,
also nur die Winkel stabilisiert werden. Wenn Du also nach links
steuerst neigt er sich um sagen wir 5° und so bleibt er dann bei Knüppel
neutral.
Du gibst also die Drehung vor.
Einfacher zu fliegen ist es wenn der Knüppel die Lage vorgibt.
Also Knüppel etwas nach links bedeutet 5° Neigung und die wird
ausgeregelt.
Knüppel neutral und er stellt sich wieder waagerecht.
Gruß,
Norbert
Ja im Grunde genommen meinte ich da auch so ;) Ich kann nur schlecht
schreiben was ich meine -.- eine totale Schwaeche...
Ich beschreibe mal kurz wie es bei meinen Helis ist.
Ich drucke den Rollknueppel nach Rechts bis ich auf 20 Grad bin und
lasse diesen dann wieder los. Der Heli behaelt aber diese 20 Grad bei.
Halte ich den Hebel gedrueckt, wird der Winkel immer groesser. Wenn es
keinen Boden gaebe so wuerde ich immer Kreise in Rollrichtung machen ;)
Der Winkel verkleinert sich dann erst wenn ich wieder nach Links steuer.
Das ist so wie du es beschrieben hast, also Profimodus ;)
Interessant ist jetzt den Winkel der angesteuert wird herauszufinden.
Ich wuerde das dann so machen:
Zuerst muss ich berechnen wie die Drehrate des Copters ist ueber die
Achsen.
Gut das bekomme ich hin. Diese wird dann erstmal fest einprogrammiert.
Nun weis ich welche Drehraten ich bei welchen Knueppelausschlaegen habe.
Der Ablauf um den gesteuerten Winkel zu berechnen wuerde ich dann so
machen:
Sollwert berechnen:
get Wert 1 -> speichern -> Timer starten -> get Wert 2 -> Timer stoppen
-> Timer Wert speichern -> Winkel aus max. Drehrate * (Wert1 - 1) und
Timerwert berechnen. Usw..
Den Sollwert uebergebe ich dann meinen PID-Regler. Der Wert der daraus
kommt vergleiche ich dann mit meinem Wert2 und uebergebe dann die
Differenz daraus an meinen Motorregler...
Ich berechne mir immer den Sollwinkel, die Sensoren geben mir den
Istwinkel und der PID-Regler berechnet mir dann einen Wert den ich mit
dem neuen Winkel abgleichen kann um diesen dann an den Motorregler
weiterzugeben...
Hi,
Jein. Das Aufintegrieren der Drehrate ist nicht ganz der richtige Weg.
Der ACC gibt Dir den Winkel, nicht der Gyro.
Der Gyro dient erstmal dazu per Drehrate 0 den aktuellen Winkel zu
halten. Der reagiert längst bevor man das am ACC merkt.
Langfristiger (so im Sekundenbereich) wird auf den vorgegebenen Winkel
ausgeregelt.
Gyro ist also ähnlich wie P und Acc ähnlich I. D würde ich erstmal
weglaassen. Wenn man die Regler der prof. Steuerungen nicht zu weit
aufreisst, kann da D auch auf 0 bleiben.
D wäre die Ableitung vom Gyro.
Mit dem Knüppel übersteuerst Du den Gyro, also die Drehrate und
letztlich auch den Acc aber der ist eben träge (in der Software).
Tipp zum Testen bzw. rumprobieren:
Den Quadro an zwei Motoren aufhängen und diese deaktivieren.
Die anderen beiden Motoren drehen so bei mittlerer Drehzahl, so daß der
Copter noch in den Seilen hängt.
Jetzt ist er nur noch in einer Achse frei und Du kannst die Regelung der
beiden drehenden Motoren testen (das ist dann + Konfiguration).
Gruß,
Norbert
Jaa man muss sich da erstmal reinfuchsen ;)
Also ich hoffe das ich dich richtig verstanden habe...
Mit dem uebersteuern des Gyros meinst du das ich mir den aktuellen
Winkel vom Gyro holen soll + meinen aktuell gesteuerten Winkel.
Das muesste doch dann der Winkel sein den ich haben will.
Hi,
der Gyro liefert Dir keinen Winkel sondern nur die Drehrate in °/s!
Und so wie Du das beschreibst soll der Knüppel auch nur die Drehrate
steuern.
Also quasi wie ein Querruder am Flächenflieger ohne V-Form.
Gruß,
Norbert
Aehm ja genau drehrate...
Genau der Knueppel soll mir nur die Drehrate steuern. Je groesser der
Knueppelausschlag ist, desto mehr Drehrate habe ich.
Also muss ich die Drehrate vom Steuern nehmen und diese mit der Drehrate
des Gyros vergleichen.
Die Differenz daraus muss ich dann mit meiner Drehrate vom Steuern
addieren.
Danach diesen Wert umrechen sodass ich auf meine ms komme die dann an
meinen Regler sende.
Ich hoffe wirklich das das jetzt so richtig ist -.-
Hi,
ja, so ungefähr. Da kommt jetzt der PID-Regler ins Spiel und wenn Du
X-Konfiguration willst kommen noch ein paar Knoten im Hirn dazu.
Jetzt noch die zweite Achse dazu und der Wahnsinn ist fast komplett.
Jetzt muß ich Dich in die Welt des Experimentierens entlassen denn
weiter habe ich das damals nicht getrieben.
Nachdem mir wirklich klar wurde was dahinter steckt hab ich das ganz
schnell wieder gelassen.
Gruß,
Norbert
Was zum Geier ist denn nun wieder die X-Konfiguration....
Im Grunde genommen muss das ja moeglich sein so einen PID-Regler zum
implementieren auch ohne Doktor Titel ;)
Ich werde einfach immer weiter forschen bis ich es habe :)
Experimentieren ist immer gut und ohne waere es doch langweilig ;)
Dann Danke ich dir und den anderen auch fuer die echt tolle Hilfe :)
Norbert S. schrieb:> Nachdem mir wirklich klar wurde was dahinter steckt hab ich das ganz> schnell wieder gelassen.
War bei mir auch so.. Lieber vorhandenen Code mit Verständnis lesen als
ohne Verständnis rumbasteln und letzendlich nur Moppsen :D
Es gibt irgendwo noch eine Bachelorarbeit als PDF zum Thema Steuerung
und Aufbau einer QuadrocopterMCU mit aller Mathematik und Theorie..
Du könntest Dich mal vom GY-80 Board inspirieren lassen. Das hat zwar
I2C und kein SPI, dafür aber Magnetfeld-, Gyro-, Beschleunigungs-,
Temperatur- und Luftdrucksensoren zusammen auf einer winzigen Platine.
Die Kalibrierung und Aufbereitung der Messdaten ist keineswegs trivial,
aber es gibt eine Reihe von Beispielprogrammen und Literatur von den
Sensorherstellern. Ich könnte mir vorstellen, dass man damit z.B. einen
dsPIC schon gut beschäftigen könnte, für die Fluglagenkontrolle brauchst
Du ja sicher eine gewisse Echtzeitfähigkeit.
Also ich will auch nicht soooo tief in das Thema einsteigen, aber ein
bisschen will ich schon wissen, alleine weil es mich beschaeftigt wie es
geht ;)
Ich werde in der Steuerung ein PI ode auch einen PID Regler einsetzen
bzw. programmieren.
Ich habe mir auch schon ein paar Tutorials durchgelesen und angeschaut.
Auch die Bachelorarbeit habe ich gelesen und bin mir recht sicher das
ich es gut verstanden habe wie es Funktioniert.
Also ob jetzt I2C oder SPI ist mir eigentlich wurscht mittlerweile. Ich
hatte mich halt noch nicht mit I2C beschaeftigt gehabt und waere
deswegen lieber auf SPI gegangen. Das hat sich jetzt aber geaendert.
Vermutlich wird das schwierigste das filtern und kalibrieren der
Sensoren sein. Die Aufbereitung natuerlich auch..
Sollte das alles funzen, heist es experimentieren ;)