INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino im RC-Modellbau
21.02.2014, 09:39
Beitrag #1
Arduino im RC-Modellbau
Hallo zusammen,
möchte mich kurz vorstellen, bin neu hier.
Komme eigentlich aus der Modell Heli Szene und bin über Quadrokopter und Nachtflugbeleuchtung zum Arduino gekommen.
Möchte hier in dem Thread ein wenig über Arduino- RC- Anwendungen Plaudern und mal meine laienhaften Projekte vorstellen.
Freu mich schon auf eure Kommentare Wink

Sollte das Thema in einer anderen Rubrik besser passen @ Mod, bitte verschieben!

Grüße, Bernhard

Projekte To Do: RC-Lichtsteuerung für Slow Flyer - Simply Servo Walker - Spektrum SAT über Arduino einlesen und verarbeiten!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2014, 09:46
Beitrag #2
RE: Arduino im RC-Modellbau
(21.02.2014 09:39)Bernhard Kerscher schrieb:  Hallo zusammen,
möchte mich kurz vorstellen, bin neu hier.
Komme eigentlich aus der Modell Heli Szene und bin über Quadrokopter und Nachtflugbeleuchtung zum Arduino gekommen.
Möchte hier in dem Thread ein wenig über Arduino- RC- Anwendungen Plaudern und mal meine laienhaften Projekte vorstellen.
Freu mich schon auf eure Kommentare Wink

Sollte das Thema in einer anderen Rubrik besser passen @ Mod, bitte verschieben!

Grüße, Bernhard

Hallo Bernhard,

erstmal Willkommen hier!

Das Thema gefällt mir-
und notfalls passt es überall rein.
Deiner Ansage entnehm ich, dass Du ja ein bissel Erfahrung mitbringst.
Vielleicht fängst Du, da wir hier im Hardware Bereich sind - mal einfach mit Deiner Hardware an und stellst eines Deiner Projekte vor und lässt die Rotoren kreisen.
Neugierig wartend.

Sloompie

Dimidium facti, qui coepit, habet: SAPERE AUDE, incipe!©Horaz

Vor allem sapere aude! oder wie Immanuel Kant sagt:
"Habe Mut, dich deines eigenen Verstandes zu bedienen!"

Es tut auch nicht weh! Daher: incipe! oder Tu es! wie Yoda sagen würde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2014, 09:57 (Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2014 08:24 von Bernhard Kerscher.)
Beitrag #3
RE: Arduino im RC-Modellbau
Na das ist mal eine nette Begrüßung... Danke schön!
Also Erfahrung... na ja, ich "borge" mir die Codeteile durch Copy and Paste zusammen und verändere das nach meinen Vorstellungen lach.....
Zur Programmierung werde ich euch schon noch löchern.

Also, dann mal loß:
Das letzte fast abgeschlossene Projekt ist eine Nachtflugbeleuchtung für einen Heli.
Habe mir dazu eine Uniweiße Haube für meinen Heli bestellt und einen Heckausleger aus Polistyrolplatten angefertigt.
Auf diese habe ich dann LED Streifen in versch. Farben nach meinen Vorstellungen geklebt und verkabelt.
Gesteuert wird das ganze mit einem Mini Pro , das ist zwar etwas überdimensioniert, lag aber von den Quadroversuchen noch da.
Lese an einem PIN mit Pule in den Empfänger ein und schalte dann an 4 Ausgängen je über einen 100Ohm Widerstand Mosfets IRF540N an.
Die wiederum hängen Minusseitig an den LED Streifen und an 3s.

Hier mal der Code dazu:
Code:
/********** Lichtsteuerung für Nachtflugheli 23.02.2014 **********/

/*
23.02.2014: Kommentare und Warnblinken bei Ausfall Empfängersignal hinzu gefügt.
*/


/********** Ein und Ausgänge werden definiert **********/
int rc_pin = 2;   //Empfängereingang
int rc_signal;    // Wert der vom Empfänger übermittelt wird
int led1 = 9;     //PWM Ausgang Fenster LEDs
int led2 = 10;    //PWM Ausgang Haube LEDs
int led3 = 11;    //PWM Ausgang Heck LEDs
int led4 = 3;     //PWM Ausgang Flash LEDs
int brightness = 0;    // Helligkeit
int step = 2;          // Steps


/********** Setup, wird nur ein Mal bei Programmstart ausgeführt **********/
void setup()  {

  pinMode(rc_pin, INPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  funktion();              // Aufruf der Funktionsprüfung
}

int rc_read()            // Funktion um RC-Kanal auszulesen
{
  int rc_in = pulseIn(rc_pin, HIGH, 100000);
   return rc_in;
}


/********** Start der Hauptschleife Loop **********/
void loop()  {
  
   rc_signal = rc_read();                  // aktuellen RC-Wert abfragen
  
   if(rc_signal >= 1000 && rc_signal <=1200) {   // Knüppelposition abfragen
   digitalWrite(led1, 0);
   digitalWrite(led3, 0);
   digitalWrite(led4, 0);
   haube();                // nur Haube pulsiert
   }
  
   else if(rc_signal >= 1201 && rc_signal <=1400) {   // Knüppelposition abfragen
   digitalWrite(led3, 0);
   digitalWrite(led4, 0);
   haube();  
   analogWrite(led1, brightness);  // Fenster pulsiert mit Haube
   }

   else if (rc_signal >=1401 && rc_signal <=1750) {  // Knüppelposition abfragen
   digitalWrite(led1, 1);  
   digitalWrite(led2, 1);   // alle LEDs an
   digitalWrite(led3, 1);
   digitalWrite(led4, 0);
   }
  
   else if (rc_signal >=1751 && rc_signal <=2000) {  // Knüppelposition abfragen
   digitalWrite(led1, 0);
   digitalWrite(led2, 0);   // alle LEDs Strobo
   digitalWrite(led3, 0);
   digitalWrite(led4, 1);
   delay(50);
   digitalWrite(led4, 0);
   delay(50);
   }
  
   else {            // Knüppelposition 1000 bis 1200 oder Ausserhalb definition, Warnblinken
   digitalWrite(led1, 1);  
   digitalWrite(led2, 1);
   digitalWrite(led3, 1);
   digitalWrite(led4, 0);
   delay(500);
   digitalWrite(led1, 0);  
   digitalWrite(led2, 0);
   digitalWrite(led3, 0);
   delay(500);
  }
}
/********** Ende der Hauptschleife Loop **********/


/********** Sprungmarke für den Funktionstest der LEDs **********/
void funktion()  {

  delay(2000);               // warte 2 sec
  analogWrite(led1, 10);     // bunte LEDs mit 10% ansteuern
  analogWrite(led2, 10);
  analogWrite(led3, 10);
  delay(500);
  analogWrite(led1, 0);
  analogWrite(led2, 0);
  analogWrite(led3, 0);
  delay(1000);
  analogWrite(led4, 10);      // weiße LEDs mit 10% ansteuern
  delay(500);
  analogWrite(led4, 0);
  delay(3000);
}


/********** Sprungmarke für die Pulsierphase der Haube **********/
void haube()  {

     analogWrite(led2, brightness);  
     brightness = brightness + step;
     if (brightness == 0 || brightness == 100) {
     step = - step;
  }    
  delay(20);
}


Angehängte Datei(en) Thumbnail(s)
           

Projekte To Do: RC-Lichtsteuerung für Slow Flyer - Simply Servo Walker - Spektrum SAT über Arduino einlesen und verarbeiten!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2014, 18:36
Beitrag #4
RE: Arduino im RC-Modellbau
hoi Bernhard,

ein Compass beleuchtet - Smile hat was... so findest den auch im Dunkeln.
Das darf nurnicht mein besorgter Vierbeiner sehen, der macht sich schon Gedanken wegen der rotierenden Messer und jetzt auch wegen dem Strom.

Danke auch für den Code -
sollte ja einfach nachzustricken sein. Smile
Aber erst mal sind andere Dinge auf der Ardu-Lernliste abzuarbeiten.

Ein Tipp: Codes lesen sich leichter, wenn Du oben die # anklickst
Code:
dann Deinen Code einfügst und mit "Close Tags" oben beendest.

Dein Code ist noch relativ überschaubbar, glaub mir bei anderen Codes im Forum wünscht Du Dir, wenn man die Funktion nutzt.
Ich (und ich bin sicher nicht nur ich ) bin auf weitere Projekte gespannt.
Grüsse
Sloompie

Dimidium facti, qui coepit, habet: SAPERE AUDE, incipe!©Horaz

Vor allem sapere aude! oder wie Immanuel Kant sagt:
"Habe Mut, dich deines eigenen Verstandes zu bedienen!"

Es tut auch nicht weh! Daher: incipe! oder Tu es! wie Yoda sagen würde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2014, 13:13 (Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2014 08:21 von Bernhard Kerscher.)
Beitrag #5
RE: Arduino im RC-Modellbau
Danke Sloompie,
das mit Code ist erledigt, ging ja noch nachträglich.

Da mein Nachtflugheli bei meinen Flugkollegen gut an kam, stellte mir ein Freund die Aufgabe sowas in klein für seinen SlowFlyer zu basteln.
Da ich schon länger diesen Versuch mit nem ATTiny45 machen wollte, war das genau der "Ansporn" den ich brauchte.
Es gibt ja div. Anleitungen im Netz, wie man mit dem Arduino als ISP den Tiny45 proggt.
Na was soll ich sagen... funktionierte auf Anhieb.
Hab ne kleine Platine gemacht.
Wieder wie gehabt, Pulse in an PB0 und vier Ausgänge.
Um verschiedene Blinkmuster zu erzeugen hab ich erst Ein und Ausschalten der Ausgänge mit div. Delay Zeiten programmiert.
Hier hab ich aber das Problem, das ich erst Umschalten kann wenn die Blinkfolge abgeschlossen ist.
Ein User aus einem Modellbauforum zeigte mir ein Verfahren mit dem TIMER.
Hab das mal so umgesetzt wie ich das verstanden hab und, it works.
Bilder und Code morgen.

Was noch zu tun ist, an den Schaltpunkten beginnen die LEDs zu flackern, evtl. muss man hier noch das Signal entschärfen???

Bitte gebt mir Kommis und den einen oder anderen Tipp für meine Codes, würd mich freuen.
Grüße, Bernhard
Code:
/********** Tiny45 Lichtsteuerung 22.02.2014 ***********/
/*
23.02.2014: Struktur überarbeitet, Kommis gepflegt
*/


/********** Ein/Ausgänge werden definiert **********/
int rc_pin = 0;  // Empfängereingang PB0
int rc_signal;   // Wert der vom Empfänger übermittelt wird
int led1 = 1;    // PB1
int led2 = 2;    // PB2
int led3 = 3;    // PB3
int led4 = 4;    // PB4


/********** Setup wird nur ein Mal bei Programmstart ausgeführt **********/
void setup()  {

  pinMode(rc_pin, INPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  initialisieren();      // Aufruf der Initialisierungsphase
}

int rc_read()            // Funktion um RC-Kanal auszulesen
{
  int rc_in = pulseIn(rc_pin, HIGH, 100000);
   return rc_in;
}


/********** Hauptschleife (Loop) des Programms **********/
void loop()  {
  
     rc_signal = rc_read();

     if(rc_signal >= 1000 && rc_signal <=1200) { // Knüppelposition abfragen
    
     reset();          // Alle LEDs aus
  
     int time1 = millis() % 5000;   // definiere Timer mit 5sec
     if (time1 > 0 && time1 < 100)  // zwischen 0ms und 100ms LED1 an
     digitalWrite(led1, 1);
     else if (time1 > 300 && time1 < 400)  // zwischen 300ms und 400ms LED1 an
     digitalWrite(led1, 1);
     else
     digitalWrite(led1, 0);    // übrige Zeit LED1 aus
     }
    
  
     else if(rc_signal >= 1201 && rc_signal <=1500) { // Knüppelposition abfragen
    
     reset();
  
     int time1 = millis() % 800;                // Lauflicht alle LEDs
     if (time1 > 0 && time1 < 200)
     digitalWrite(led1, 1);
     else
     digitalWrite(led1, 0);
    
     int time2 = millis() % 800;
     if (time2 > 200 && time1 < 400)
     digitalWrite(led2, 1);
     else
     digitalWrite(led2, 0);
    
     int time3 = millis() % 800;
     if (time3 > 400 && time1 < 600)
     digitalWrite(led3, 1);
     else
     digitalWrite(led3, 0);
    
     int time4 = millis() % 800;
     if (time4 > 600 && time1 < 800)
     digitalWrite(led4, 1);
     else
     digitalWrite(led4, 0);
     }
    
    
     else if(rc_signal >= 1501 && rc_signal <=1800) { // Knüppelposition abfragen
    
     reset();
    
     digitalWrite(led1, 1);         // alle LEDs dauer an
     digitalWrite(led2, 1);
     digitalWrite(led3, 1);
     digitalWrite(led4, 1);
     }
    
    
     else if(rc_signal >= 1801 && rc_signal <=2000) { // Knüppelposition abfragen
    
     digitalWrite(led1, 1);       // Strobo alle LEDs
     digitalWrite(led2, 1);
     digitalWrite(led3, 1);
     digitalWrite(led4, 1);
     delay(50);
     digitalWrite(led1, 0);
     digitalWrite(led2, 0);
     digitalWrite(led3, 0);
     digitalWrite(led4, 0);
     delay(50);
     }
    
    else {     // Wenn Knüppelwerte ausserhalb definition mache gar nix
    
  }
}
/********** Ende der Hauptschleife **********/



/********** Sprungmarke für alle LEDs aus **********/
void reset(){
    digitalWrite(led1, 0);
    digitalWrite(led2, 0);
    digitalWrite(led3, 0);
    digitalWrite(led4, 0);
}


/********** Sprungmarke für Initialisierungsphase im Setup **********/
void initialisieren(){
    digitalWrite(led1, 0);
    digitalWrite(led2, 0);
    digitalWrite(led3, 0);
    digitalWrite(led4, 0);
    delay(2000);
    digitalWrite(led1, 1);
    digitalWrite(led2, 1);
    digitalWrite(led3, 1);
    digitalWrite(led4, 1);
    delay(300);
    digitalWrite(led1, 0);
    digitalWrite(led2, 0);
    digitalWrite(led3, 0);
    digitalWrite(led4, 0);
    delay(300);
    digitalWrite(led1, 1);
    digitalWrite(led2, 1);
    digitalWrite(led3, 1);
    digitalWrite(led4, 1);
    delay(300);
    digitalWrite(led1, 0);
    digitalWrite(led2, 0);
    digitalWrite(led3, 0);
    digitalWrite(led4, 0);
    delay(500);
}


Angehängte Datei(en) Thumbnail(s)
   

Projekte To Do: RC-Lichtsteuerung für Slow Flyer - Simply Servo Walker - Spektrum SAT über Arduino einlesen und verarbeiten!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.03.2014, 12:24
Beitrag #6
RE: Arduino im RC-Modellbau
Sorry Bernhard,
ich war in letzter Zeit hier etwas weniger aktiv....
gibt ja noch andere Sachen ausser Arduino Smile

Wie ich sehe - hast Du Deinen Thread ja noch um Bilder und weiteren Code erweitert...

Aber noch Probleme, was das Flackern bei den LED angeht???

Huh

Ich sag erst mal Piep - und seh mir Deine Sachen gleich mal in Ruhe an.
Greetz
Sylvia

Dimidium facti, qui coepit, habet: SAPERE AUDE, incipe!©Horaz

Vor allem sapere aude! oder wie Immanuel Kant sagt:
"Habe Mut, dich deines eigenen Verstandes zu bedienen!"

Es tut auch nicht weh! Daher: incipe! oder Tu es! wie Yoda sagen würde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.04.2014, 21:11
Beitrag #7
RE: Arduino im RC-Modellbau
Moin Bernhard,

da ich ebenfalls im RC-Modellbau aktiv bin, werde ich Deine Postings verfolgen. Allerdings bin ich mit meinen Modellen nicht in der Luft sondern auf der Straße. Ich denke Schnittstellen wird es zwischen den Medien in denen wir uns bewegen genug geben.

Vielleicht findet sich im Forum noch der eine oder andere lizensierte Funkamateur, der den Arduino in den Digitalen Betriebsarten einsetzt. Das wäre ein zusätzliches Highlight.

Gruß
Armin de DO1XXY
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.04.2014, 11:53
Beitrag #8
RE: Arduino im RC-Modellbau
(04.04.2014 21:11)do1xxy schrieb:  Moin Bernhard,

da ich ebenfalls im RC-Modellbau aktiv bin, werde ich Deine Postings verfolgen. Allerdings bin ich mit meinen Modellen nicht in der Luft sondern auf der Straße. Ich denke Schnittstellen wird es zwischen den Medien in denen wir uns bewegen genug geben.

Vielleicht findet sich im Forum noch der eine oder andere lizensierte Funkamateur, der den Arduino in den Digitalen Betriebsarten einsetzt. Das wäre ein zusätzliches Highlight.

Gruß
Armin de DO1XXY

Servus Armin,
freut mich, gerne höhre ich aber deine Meinung über meine Projekte und freu mich auf Feedbacks und Tipps dazu.
Du kannst auch gerne deine Sachen mal einstellen.
Momentan ists bei mir in Sachen Arduino grad am ruhiger werden, denn jetzt geht die Flugsaison wieder los :-)
Grüße, Bernhard

Projekte To Do: RC-Lichtsteuerung für Slow Flyer - Simply Servo Walker - Spektrum SAT über Arduino einlesen und verarbeiten!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  LCD Anzeige für Arduino Mega2560 an Arduino Due? DaniDD 1 818 03.06.2015 12:16
Letzter Beitrag: DaniDD
  Arduino Pin mit anderem Arduino auslesen - geht das? Gelegenheitsbastler 8 3.243 08.05.2015 20:49
Letzter Beitrag: Bitklopfer
Question Arduino Mega ADK oder Arduino Due? Baja-Junky 1 4.176 14.08.2013 21:16
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste