Forum: Mikrocontroller und Digitale Elektronik Arduino Quadrocopter, über PWM


von Jan (Gast)


Lesenswert?

HI,

wir versuchen einen Quadrocopter über einen Arduino MEGA zu steuern und 
möchten die Motoren über ein PWM SIgnal ansteuern.
Desweiteren möchten wir die Sender (angeschlossen über 10 pins, davon 2 
power/GND) auslesen... Das funktioniert gar nicht.

hat jmd eine idee wie der Code zum auslesen lauten könnte??

VG

JAN

von Horsti (Gast)


Lesenswert?

Mit diesem Text wirst du hier wahrscheinlich keine konstruktive Antwort 
erwarten können. Formulier das ganz schnell mal um und stelle konkrete 
Fragen zu konkreten Problemen mit deinen Lösungsansätzen, sonst werden 
dich manche hier in der Luft zerreißen.

Mit "Das funktioniert gar nicht", ohne Signalbeschreibung oder 
Anschlussplan, sowie Code funktioniert das hier wahrscheinlich nicht.

Grüße vom Horst

von wurst (Gast)


Lesenswert?

Jan schrieb:
> wir versuchen einen Quadrocopter über einen Arduino MEGA zu steuern und
> möchten die Motoren über ein PWM SIgnal ansteuern.
> Desweiteren möchten wir die Sender (angeschlossen über 10 pins, davon 2
> power/GND) auslesen... Das funktioniert gar nicht.
>
> hat jmd eine idee wie der Code zum auslesen lauten könnte??
>
> VG
>
> JAN

Die Motoren werden mit BLCD-Treibern angesteuert und diese Treiber 
wiederrum mit einem PPM-Signal. Dieses Signal wird mittels Timern 
generiert und auf den Treiber gegeben.

Ferner wollt ihr nicht den Sender auslesen, sondern den Empfänger. Der 
Empfänger hat für jeden Kanal einen Ausgang --> doof. Also seht ihr zu, 
dass ihr den Empfänger auf Summensignal umprogrammiert 
(Bedienungsanleitung) oder falls das nicht möglich ist in öffnet und das 
Summensignal abgreift. Anschließend gebt ihr das Summensignal auf einen 
ICP-Pin des Atmega und schreibt Code, welcher die einzelnen Pulslängen 
misst und weiter verarbeitet.

Fazit: Das ist alles viel zu kompliziert für euch. Die obige Frage ist 
so strukturiert, dass sie diesen Schluss bei mir erzeugt. Lasst euch 
aber nicht entmutigen, sondern seht zu, dass ihr jemanden mit 
Programmierkenntnissen in eurem Team habt. Hier im Forum wird kaum einer 
bereit sein das alles für euch zu machen. ;)

von Jan (Gast)


Lesenswert?

Tag again,

den Beschleunigungssensor, sowie den Empfänger können wir bereits mit 
dem Arduino MEGA 2560 auslesen.

Leider schaffen wir es weiterhin nicht die Regler/Motoren anzusteuern.
Wir haben es mit einem PWM-Signal versucht, da wir PPM noch nicht 
kennen. Gibt es dazwischen eine Convertierungsmöglichkeit? Oder kann man 
ein PPM-Signal mit dem Arduino ausgeben?

Für Lösungsvorschläge eurerseits danke im voraus

JAN

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:
> Tag again,
>
> den Beschleunigungssensor, sowie den Empfänger können wir bereits mit
> dem Arduino MEGA 2560 auslesen.
>
> Leider schaffen wir es weiterhin nicht die Regler/Motoren anzusteuern.

Regler aus dem Modellbau?

Die werden wie ganz normale Servos angesprochen

Modellbauservo Ansteuerung

von Jan (Gast)


Lesenswert?

hi,

also wir benutzen bl-ctrl 2.0 Regler für brushless motoren, welche ein 
PPM Signal benötigen. Leider haben wir auf unserem Arduino nur PWM 
Ausgänge ...

Unsere Frage ist deshalb, wie wir damit unsere Motoren ansteuern können 
...(Convertierung von PWM in PPM - das war unsere bisherige Idee..)

mfg Jan

von Timmo H. (masterfx)


Lesenswert?

PPM ist nicht anderes als die Aneinandergereihung von mehreren PWM 
Signalen. Du bekommst z.B. 9 PWM signale per Zeitmultiplex 
aneinandergereiht als PPM signal. Du musst nur die Pulsdauer eines jeden 
Pulses bestimmen und die Pause entsprechend anpassen,sodass die BDLC 
Treiber eben ein 50,100 oder 200 Hz PWM bekommen (mit 1-2ms High)

von TestX .. (xaos)


Lesenswert?

Jan schrieb:
> also wir benutzen bl-ctrl 2.0 Regler für brushless motoren, welche ein
> PPM Signal benötigen.

PPM ist EINE möglichkeit bei den dingern...aber nur die primitivste...
ausgelegt sind die dinger um über den I2C bus gesteuert zu werden... 
siehe anleitung auf mikrokopter.net ... also ein wenig datenblätter 
lesen sollte man schon können...

von Dennis H. (t1w2i3s4t5e6r)


Lesenswert?

Also mal ehrlich, bei Mikrokopter ist bis ins letzte Detail alles 
dokumentiert. Ihr wollt die fertig geschmierten Schnittchen nicht allein 
in den Mund bekommen, sondern von jemanden in den Mund geschoben 
bekommen. Und ein zweiter soll euren Mund bewegen. Im Eingangsposting 
wird nur geredet, rein gar nix gesagt. Nicht hauptsache Information 
rüberbringen, sondern hautpsache wichtige Informationen rüberbringen. 
Ich bin garantiert kein Mensch, der ein Talent für kurze 
Infobeschreibungen kann, aber wenn du einfach gesagt hättest, du 
möchtest mit einem Arduino einen Brushlessregler von Mikrokopter.de 
ansteuern hätte jeder gewusst, was du meinst. Und ganz ehrlich, lesen 
musst du selber, wie schon gesagt, bei Mikrokopter.de ist echt alles 
beschrieben.


MfG Dennis

von Jan (Gast)


Lesenswert?

danke Timmo, das hilft uns dabei sicher weiter :)

von KaDe (Gast)


Lesenswert?

Hallo habe folgendes gefunden für Euer Vorhaben

http://www.fancy-creations.de/index.html


Gruss KaDe

von KaDe (Gast)


Lesenswert?


von min (Gast)


Lesenswert?


von Electronics'nStuff (Gast)


Lesenswert?

Dennis H. schrieb:
> Ihr wollt die fertig geschmierten Schnittchen nicht allein
> in den Mund bekommen, sondern von jemanden in den Mund geschoben
> bekommen. Und ein zweiter soll euren Mund bewegen.

Du hast noch die zwei Leute vergessen, die ihnen dabei einen Stuhl 
hinstellen. Nicht, dass die sich noch was brechen beim hinsetzen.

von Username (Gast)


Lesenswert?

Die einfachste möglichkeit ESC's mit dem Arduino anzusteuern ist es, die 
Arduino Servo library zu verwenden --> 
http://arduino.cc/de/Reference/Servo
1
#include <Servo.h> 
2
3
Servo myservo;
4
5
void setup() 
6
{ 
7
  myservo.attach(9);
8
  myservo.write(SPEED);
9
} 
10
11
void loop() {}

Für "SPEED" die gewünschte Geschwindigkeit einsetzen und die ESC's 
darauf programmieren.

von Hassan El Khamis (Gast)


Lesenswert?

#include <Servo.h> // include the Servo library


Servo m1;
Servo m2;
Servo m3;
Servo m4;

void setup()
{
  m1.attach(13);
  m1.write(0);
  delay(3000);
  m2.attach(12);
  m2.write(0);
 delay(3000);
  m3.attach(9);
  m3.write(0);
  delay(3000);
  m4.attach(7);
  m4.write(0);
  delay(3000);

}

void loop()
{
 m1.write(160),
 m2.write(160),
 m3.write(160),
 m4.write(160);
;

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.