Forum: Mikrocontroller und Digitale Elektronik Sensoren fuer Fluglagestabilisierung


von pad89 (Gast)


Lesenswert?

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

von STK500-Besitzer (Gast)


Lesenswert?

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.

von pad89 (Gast)


Lesenswert?

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.

von Alex W. (a20q90)


Lesenswert?

Arducopter

von unbekannt (Gast)


Lesenswert?

Das gibt es alles schon fertig mit offenen sources..

Der atmega wird zu klein werden, dann wirds ein Atmega328p und auf den 
passt die OpenSource Firmware multiWii.

Das ganze Board fertig inkl. Sensoren geht so ab die 13€ los.

http://www.ebay.de/itm/NEU-MultiWii-Standard-Edition-MWC-SE-v2-5-Flug-Controller-Board-f-FPV-Multirotor-/201353391876?hash=item2ee198ef04:g:IoEAAOSwYGFUxiFN

von pad89 (Gast)


Lesenswert?

Ja auch schon gesehen, aber ich will das alles selber machen, nix mit 
Arduino.

von pad89 (Gast)


Lesenswert?

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...

von Karl H. (kbuchegg)


Lesenswert?

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?

von Stephan G. (Firma: privat) (morob)


Lesenswert?

@karl heinz, das ziemlich kannst du weg lassen, weil die mathematischen 
bibliotheken ... müßte er dann ja auch selber machen

viel spass pad89

von Chr. M. (snowfly)


Lesenswert?

@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.

von Oliver S. (oliverso)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

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....

von Stephan G. (Firma: privat) (morob)


Lesenswert?

die zweite frage ist das eigentlich interessante, weil welche cpu willst 
du verwenden?

von Norbert S. (norberts)


Lesenswert?

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

von Stephan G. (Firma: privat) (morob)


Lesenswert?

@norbert, nichts gegen raketentechnik :)

von Oliver S. (oliverso)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

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.

von Michael U. (amiga)


Lesenswert?

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

: Bearbeitet durch User
von pad89 (Gast)


Lesenswert?

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 ;)

von Alex W. (a20q90)


Lesenswert?

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?

von Alex W. (a20q90)


Lesenswert?

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...

von pad89 (Gast)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

Sorry, nutzte Atmel Studio 7

von Norbert S. (norberts)


Lesenswert?

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

von asd (Gast)


Lesenswert?

pad89 schrieb:
> nutzte Atmel Studio 7

und was nutzt du jetzt? ;-)

von pad89 (Gast)


Lesenswert?

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 ;)

von pad89 (Gast)


Lesenswert?

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 -.-

von Norbert S. (norberts)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

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 ;)

von Rudolph R. (rudolph)


Lesenswert?


von pad89 (Gast)


Lesenswert?

Wuerde auch gehen.

von Philipp K. (philipp_k59)


Lesenswert?

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

: Bearbeitet durch User
von pad89 (Gast)


Lesenswert?

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!!!

von Norbert S. (norberts)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

Genau so habe ich mir das auch gedacht. Das das nicht von Anfang an 
perfekt klappt ist klar, da muss man sich rantasten.

von Buchtzwischendenbeinen (Gast)


Lesenswert?


von Michael U. (amiga)


Lesenswert?

Hallo,

nein, steht zumindest I2C drin.
Und außerdem ist das Teil bestimmt "Arduino compatibel" auch wenn es 
nicht dransteht. ;-)

Gruß aus Berlin
Michael

: Bearbeitet durch User
von pad89 (Gast)


Lesenswert?

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...

von Norbert S. (norberts)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

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.

von Norbert S. (norberts)


Lesenswert?

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

: Bearbeitet durch User
von pad89 (Gast)


Lesenswert?

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 ;)

von Norbert S. (norberts)


Lesenswert?

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

: Bearbeitet durch User
von pad89 (Gast)


Lesenswert?

Norbert S. schrieb:
> Edit: Jemand der sowas bastelt hat kein IPhone...

Wir verstehen uns :D

von Michael U. (amiga)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

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...

von Unbekannt (Gast)


Lesenswert?

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.

von Christoph L. (lassi)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

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

von Bettel (Gast)


Lesenswert?

> 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.

von pad89 (Gast)


Lesenswert?

Baum steht :D

von Bettel (Gast)


Lesenswert?

pad89 schrieb:
> Baum steht :D

Habe ich mit doch gleich gedacht, mit tatkräftiger Unterstützung & 
Beratung bekommst auch du einen Tannenbaum aufgebaut :)

von Norbert S. (norberts)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

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???

von Norbert S. (norberts)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

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...

von pad89 (Gast)


Lesenswert?

Das waere dann der "Einfache Modus"

Im "Profimodus" muessen gesteuerten Winkel addiert bzw. Subtrahiert 
werden.

von Norbert S. (norberts)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

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.

von Norbert S. (norberts)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

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 -.-

von Norbert S. (norberts)


Lesenswert?

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

von pad89 (Gast)


Lesenswert?

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 :)

von Norbert S. (norberts)


Lesenswert?

Hi,

X ist das übliche, ein Motor links vorne, einer rechts vorne, rechts 
hinten, links hinten.
+ ist einer vorne, hinten, links, rechts.

Gruß,
Norbert

von pad89 (Gast)


Lesenswert?

Ach darauf hast du dsa bezogen ;)

Nunja wie ich das weis ich schon so ungefaehr ;) schliesslich fliegt der 
ja schon, wenn auch nicht toll...

von Philipp_K59 (Gast)


Lesenswert?

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..

von Vancouver (Gast)


Lesenswert?

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.

von pad89 (Gast)


Lesenswert?

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 ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.