Pages: [1]   Go Down
Author Topic: RC Motorsteuerung für viermot. Elektroflugzeug  (Read 1085 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 33
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Zusammen,

als Scale Modellbauer möchte ich beim meinem Nachbau einer viermotorigen Douglas DC-6 (siehe RC-network.de / Scale Forum (einen Link darf ich nicht senden) einige Scale Funktionen realisieren. So sollen die vier (Elektro) Motore in der orgiginalgetreuen Startreihenfolge gestartet werden:

Start Motor 3 - 3s Warten
Start Motor 4 - 3s Warten
Start Motor 2 - 3s Warten
Start Motor 1 - BEREIT

Sobald die Motoren laufen, sollen alle Motoren mit dem Kanal 1 gesteuert werden. Theoretisch kann ich das mit meinem 12Kanal Sender tun. Aber dazu muss ich vier Kanäle allein für die vier Motoren opfern.

Meine Idee ist es, das über zwei Kanäle zu steuern: K1 ist Gas und K12 (z.B.) ist ein Mode Schalter. Der kann (über einen Schalter am Sender) drei Werte annehmen:
1ms = Motoren Starten, dauert dann einige Sekunden bis das Programm lief. Am Ende des Programms laufen alle Motoren mit x ms (auszuprobieren).

1,5ms=Normaler Gas Betrieb (alle Regler bekommen die ms des Kanal 1 gesetzt, praktisch vierfach V-Kabel)

2ms=Taxi: nur die beiden innern Motore werden angesteuert.

Ich bin völlig neu und werde mich vermutlich doof anstellen smiley-wink Ich habe mir ein Ardino Nano und das Buch "Arduino - Physical Computing für Bastler, Designer und Geeks" bestellt. Darüber hinaus habe ich Arduino 0018 installiert.

Ich habe schließlich schon die Servo Lib gefunden und mir einen theorischen Ansatz, wie ich Servos ansteuern kann erarbeitet (das scheint ja nicht so schwer zu sein und ob es Servos oder Regler sind, ist sicher irrelevant).

So wie ich es verstanden habe läuft nach der Initialisierung eine Endlosschleife, die ständig läuft (loop).

Kann mir jemand bitte einen groben Überblick geben, wie ich so etwas so programmieren kann, dass es sicher und stabil läuft? Ich benötige zunächst keinen Code (den werde ich im Forum später posten), sondern vielleicht Hinweise auf die wichtigsten Fallstricke, in die ein Anfänger läuft.

Sehr vielen Dank!

Alexander
Logged

0
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3501
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Also was die Programmierung angeht müsste man grob eine Idee haben was Du schon kannst. Was Fallstricke angeht: achte darauf die Stromversorgung ausreichend zu entkoppeln, sonst wird der Arduino manchmal merkwürdige Sachen machen.

Weiterhin wäre es schlau sich zu überlegen was passieren soll wenn der Arduino "abstürtzt" oder anderweitig austickt. Sobald die Software ansonsten sauber läuft ist es dann an der Zeit, daß hier http://www.mikrocontroller.net/articles/AVR-Tutorial:_Watchdog durchzulesen. Und auch die Links die unten angegeben werden.

Und Du musst Dir Gedanken machen was passieren soll wenn der Arduino kein Signal mehr bekommt.

Und auch was passiert wenn der Arduino nicht mehr genug Strom bekommt.

Gruß, Udo
Logged

Check out my experiments http://blog.blinkenlight.net

0
Offline Offline
Newbie
*
Karma: 0
Posts: 33
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Udo,

erst einmal vielen Dank. Meine Kenntnisse sind praktisch Null, was Mikrocontroller betrifft. Programmierung in C ist kein Problem. Auch Interrupts stellen für mich kein Problem dar.

Mit dem Hinweis auf den Watchdog hast Du mir schon sehr geholfen.

Was die Stromversorgung betriftt, so mache ich mir keine Sorgen. Ich habe vier mal 3A BEC (aus den vier YGE Reglern der neuesten Generation). Da bricht nichts ein. Eine DC-6 wird "scale" geflogen, d.h. es sind keine nennenswerten Belastungen auf den Rudern. Ich bin weit, weit unterhalb der zur Verfügung stehenden 12A.

Bei Signalausfall müssen die Motoren abgeschaltet werden. Eine vernünftige andere Alternative gibt es nicht. Allerdings ist das auch ein extrem unwahrscheinlicher Fall. Und: gibt es für das Arduiono kein Signal mehr, habe ich keine Kontrolle mehr über die Querruder, Höhenruder etc. Dann ist der Flieger so oder so verloren.

Nochmals vielen Dank. Das Thema Watchdog ist sehr wichtig. Im Arduino Forum finde ich sicher spazifische Informationen.

Grüße
Alexander
« Last Edit: July 05, 2010, 03:53:15 pm by AlexanderB » Logged

0
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3501
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Alexander,

sicher reicht eine 12A Stromversorgung um keine Einbrüche zu bekommen. Wenn da aber auch die Motoren dranhängen ist da mit Transienten zu rechnen, egal wie stark die Versorgung ist. Das kann bei jedem Lastwechsel auftreten und ist eine sichere Quelle für schwer zu lokalisierende Fehler. Also auf jeden Fall ausreichend entkoppeln. Wie sowas in extra harten Fällen geht steht hier:

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23

In normalen Fällen hier:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1234552261
http://www.thebox.myzen.co.uk/Workshop/Motors_1.html

Es kann auch ohne gut gehen. Aber die Vermutung liegt nahe, daß es vorzugsweise dann schief gehen wird wenn das Modell in der Luft ist smiley-wink

Es kann auch passieren, daß der Arduino kein Signal mehr hat obwohl die Fernsteuerung es noch bekommt. Dazu muß nur ein Kabel rausrutschen oder eine Lötstelle brechen. Ich würde mir vorher gedanken machen was da ein sicherer Default wäre. Vieleicht kann das Modell dann ja die Motoren drosseln oder einen Kreisflug erzwingen. Kann aber auch sein, daß ich nichts von Modellflug verstehe smiley-wink

Gruß, Udo
Logged

Check out my experiments http://blog.blinkenlight.net

0
Offline Offline
Newbie
*
Karma: 0
Posts: 33
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Udo,

vielen Dank für Deine Mühe!

Die Spannungsversorgung wird über ein getaktetes BEC sicher gestellt. Damit werden ja auch die digitalen Empfänger betrieben. Wenn ich erwarten muss, dass ein getaktetes BEC keine ausreichende Spannungs- / Stromversorgung liefern kann, sollte ich das Projekt begraben. Alle meine Modelle verfügen über Telemetrie und immer über eine Überwachtung der Empfängerspannung. Hier gab es noch nie Probleme.

Wenn sich im Flug irgendwo ein Stecker löst, habe ich versagt. Das darf nicht passieren und im Elektroflug mit seinen minimalen Vibrationen (anders als bei einem 100ccm Boxer  :o ) passiert so ewtas nur bei grober bis gröbster Fahrlässigkeit.

Der einzige Fall, dass kein Signal mehr ankommt, kann nur der sein, dass der Empfänger versagt. Das ist aber praktisch auszuschließen. Ich fliege 2,4 GHz mit Satellit am Empfänger und das nur in weniger als 500m Entfernung (eher 300m). Falls es doch passiert, gibt es für die Motoren nur eine Alternative: AUS. Allein schon, weil so ein Modell auch auf Menschen stürzen könnte.

Meine Empfänger verfügen über einen Clone Modus, so dass ich ein Gestell am Boden aufbauen kann an dem vier Motore hängen. Das funktioniert dann parallel während ich ein Modell fliege. Da kann ich beobachten (hören), ob meine Logik richtig arbeitet.

Grüße
Alexander

NACHTRAG: Ich habe gerade Deinen Link zu den Motoren gelesen. In meiner DC-6 werden ausschließlich bürstenlose Motoren verwendet, die über spezielle Regler (vergleichbar Drehstrom) betrieben werden. Die Akkuspannung von 11,1 V wird für den Empfänger und die Servos mit Hilfe eines getakteten BEC auf konstant 5V zur Verfügung gestellt. Da gibt es sicher keine Abhängigkeiten. smiley
« Last Edit: July 06, 2010, 04:17:59 pm by AlexanderB » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 33
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nachdem ich die erste Hürde genommen habe, möchte ich mich bei allen bedanken, die geholfen haben!

Zwar werde ich die Motorsteuerung vielleicht doch nicht programmieren. Aber die andere Aufgabe, die offen war, nämlich einen Gear Door Sequencer, der das Fahrwerk originalgetreu ausfährt und einzieht habe ich hinbekommen.

Er ist so programmiert, dass so viele Servos anschließen kann, wie Pins vorhanden sind. Alle Servos erhalten individuelle Werte für ihre Positionen als auch ihre Wartezeiten und Geschwindigkeiten getrennt nach Einfahren (UP) und Ausfahren (DOWN).

Hier die Initialisierung.

Code:
 // Prepare Servo Parameters and timings
  gearParameters[sNosegear].servoPin = 2;
  gearParameters[sNosegear].upPos_us = 1000;
  gearParameters[sNosegear].downPos_us = 2000;
  gearParameters[sNosegear].delays[GEAR_UP].wait_ms = 100;
  gearParameters[sNosegear].delays[GEAR_UP].delay_ms = 4000;
  gearParameters[sNosegear].delays[GEAR_DOWN].wait_ms = 7500;
  gearParameters[sNosegear].delays[GEAR_DOWN].delay_ms = 4000;

  gearParameters[sNoseDoor].servoPin = 4;
  gearParameters[sNoseDoor].upPos_us = 1000;
  gearParameters[sNoseDoor].downPos_us = 2000;
  gearParameters[sNoseDoor].delays[GEAR_UP].wait_ms = 4500;
  gearParameters[sNoseDoor].delays[GEAR_UP].delay_ms = 750;
  gearParameters[sNoseDoor].delays[GEAR_DOWN].wait_ms = 6700;
  gearParameters[sNoseDoor].delays[GEAR_DOWN].delay_ms = 750;

  gearParameters[sMainGear].servoPin = 3;
  gearParameters[sMainGear].upPos_us = 800;
  gearParameters[sMainGear].downPos_us = 2200;
  gearParameters[sMainGear].delays[GEAR_UP].wait_ms = 100;
  gearParameters[sMainGear].delays[GEAR_UP].delay_ms = 5000;
  gearParameters[sMainGear].delays[GEAR_DOWN].wait_ms = 1000; // Wait for door to open
  gearParameters[sMainGear].delays[GEAR_DOWN].delay_ms = 5000;

  gearParameters[sMainDoor].servoPin = 5;
  gearParameters[sMainDoor].upPos_us = 800;
  gearParameters[sMainDoor].downPos_us = 2000;
  gearParameters[sMainDoor].delays[GEAR_UP].wait_ms = 5500;
  gearParameters[sMainDoor].delays[GEAR_UP].delay_ms = 750;
  gearParameters[sMainDoor].delays[GEAR_DOWN].wait_ms = 100;
  gearParameters[sMainDoor].delays[GEAR_DOWN].delay_ms = 750;

Und so sieht das an einem Testaufbau aus:



Nun kann ich sogar eine Verriegelung des Bugfahrwerks einbauen. Hier hatte ich Bauchschmerzen, da die Mechanik durch die Winkel zum einknicken neigt. Aber mit der Software ist das kein Problem.

Nochmals danke an alle.

Wer die Software haben möchte, sende mir einfach eine PN.

Alexander
Logged

Pages: [1]   Go Up
Jump to: