Hexacopter mit Arduino Mini Pro ohne Summensignal

gfunk

Erfahrener Benutzer
#21
mithilfe von einem mini (pro) und dem hier:
//Reads PPM signals from 6 channels of an RC reciever, translates the values to
//PWM and prints the values to serial port.
//Works with Spectrum DX7 (haven't tested anything else)

//Create variables for 8 channels
int RXCH[6];
volatile int RXSG[6];
int RXOK[6];
int PWMSG[6];

void setup() {

//Start communication to serial port
Serial.begin(115200);

//Assign PPM input pins. The receiver output pins are conected as below to non-PWM Digital connectors:
RXCH[1] = 4; //Throttle
RXCH[2] = 6; //Aile / Yaw
RXCH[3] = 5; //Elev. / Pitch
RXCH[4] = 2; //Rudd. / Roll
RXCH[5] = 7; //Gear
RXCH[6] = 8; //Aux / Flt Mode

for (int i = 1; i < 7; i++){
pinMode(RXCH, INPUT);
}

}

void loop() {

// Read RX values
for (int i = 1; i < 7; i++){ //for each of the 6 channels:
RXSG = pulseIn(RXCH, HIGH, 20000); //read the receiver signal
if (RXSG == 0) {RXSG = RXOK;} else {RXOK = RXSG;} //if the signal is good then use it, else use the previous signal
PWMSG = map(RXSG, 1000, 2000, 0, 511); //substitute the high values to a value between 0 and 511
constrain (PWMSG, 0, 2000); //make sure that the value stays within the disired boundries

// Print RX values
//Serial.print(" || Ch: ");
// Serial.print(i);
Serial.print(" / PWMSG: ");
Serial.print(PWMSG);
//Serial.print(" / RXSG: ");
//Serial.print(RXSG);
delay(20);
}
Serial.println();
}

kann man sich um €15 einen eigenenkonverter basteln, der unter anderem auch noch ganz leicht zu einem liposaver "aufgerüstet" werden kann...
 

FireFox

Erfahrener Benutzer
#22
gfunk006 hat gesagt.:
also hier ist die hexaX-config und hier wäre die hexaPlus-config

so ich hoffe jetzt passts :)

motor[0] = PIDMIX(-1/2,+1/2,+1); //REAR_R //pin 9 - 3 (rotor)
motor[1] = PIDMIX(-1/2,-1/2,+1); //FRONT_R //pin10 - 5
motor[2] = PIDMIX(+1/2,+1/2,-1); //REAR_L //pin11 - 2
motor[3] = PIDMIX(+1/2,-1/2,-1); //FRONT_L //pin 3 - 0
motor[4] = PIDMIX(-1 ,+0 ,-1); //RIGHT //pin 8 - 4
motor[5] = PIDMIX(+1 ,+0 ,+1); //LEFT //pin13 - 1

so ich hoffe jetzt ists verständlich

besten Dank

werde es heute nach der Arbeit gleich mal aufspielen und testen.
schönen Tag.

Gruß
Manuel
 

FireFox

Erfahrener Benutzer
#23
Hab hier noch was ausm Nachbarforum gefunden.

Kann es sein, dass die Ausgänge unterschiedlich sind? Analog? Digital?

Zitat aus Forum:
"
habs selber nicht getested aber ich nehm an des läuft über die selbe funktion wie auch die Gimbal Ansteuerung, und da diese auf dem Port mit den Analogen Eingangen (Digitale Ausgänge) sitzt macht das Sinn

Code: Alles auswählen
//****** advanced users settings *************

/* PIN A0 and A1 instead of PIN D5 & D6 for 6 motors config and promini config
This mod allow the use of a standard receiver on a pro mini
(no need to use a PPM sum receiver)
*/
//#define A0_A1_PIN_HEX


das #define auskommentieren und dann sollts gehen.

gruß Chris
"


Kannst du dir das evtl nochmal anschauen gfunk006




ach ja, hier mal kurz die Spec zum Arduino Pro Mini


Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the TX-0 and RX-1 pins of the six pin header.

External Interrupts: 2 and 3. These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value. See the attachInterrupt() function for details.

PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the analogWrite() function.

SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). These pins support SPI communication, which, although provided by the underlying hardware, is not currently included in the Arduino language.

LED: 13. There is a built-in LED connected to digital pin 13. When the pin is HIGH value, the LED is on, when the pin is LOW, it's off.

The Pro Mini has 6 analog inputs, each of which provide 10 bits of resolution (i.e. 1024 different values). Four of them are on the headers on the edge of the board; two (inputs 4 and 5) on holes in the interior of the board. The analog inputs measure from ground to VCC. Additionally, some pins have specialized functionality:

I2C: 4 (SDA) and 5 (SCL). Support I2C (TWI) communication using the Wire library.

There is another pin on the board:

Reset. Bring this line LOW to reset the microcontroller. Typically used to add a reset button to shields which block the one on the board.

Danke

besten Gruß
Manuel
 

FireFox

Erfahrener Benutzer
#25
jep, ich weiß.
ist aber egal
wir brauchen ja diese 3. Funktion mit dem Schalter einfach nicht verwenden bzw. einfach keinen Schalter zuweisen für den Not-Stop.
dürfte also kein Problem darstellen.

Gruß
Manuel
 

FireFox

Erfahrener Benutzer
#27
Nein, noch nicht bzw. wir sind noch nicht zum testen gekommen.
Werde es heute Nachmittag mal versuchen, wenn ich von der Arbeit zu Hause bin.
werde das Sketch dann mal aufspielen und versuchen zu testen.

btw:
@gfunk006:

hast du dir das oben mal angesehen, was ich gepostet habe, mit dem A0,A1,A2.
Der Arduino hat anscheinend unterschiedliche Ausgänge?

Gruß
Manuel
 

gfunk

Erfahrener Benutzer
#28
FireFox hat gesagt.:
Code: Alles auswählen
//****** advanced users settings *************

/* PIN A0 and A1 instead of PIN D5 & D6 for 6 motors config and promini config
This mod allow the use of a standard receiver on a pro mini
(no need to use a PPM sum receiver)
*/
//#define A0_A1_PIN_HEX


das #define auskommentieren und dann sollts gehen.

gruß Chris
"
Kannst du dir das evtl nochmal anschauen gfunk006
Hätte jetzt nichts im code gefunden, welche version wir da verwendet?

hast du die letzte mod von mir getestet?
sollte doch so passen für dich?
 

gfunk

Erfahrener Benutzer
#29
FireFox hat gesagt.:
Nein, noch nicht bzw. wir sind noch nicht zum testen gekommen.
Werde es heute Nachmittag mal versuchen, wenn ich von der Arbeit zu Hause bin.
werde das Sketch dann mal aufspielen und versuchen zu testen.

btw:
@gfunk006:

hast du dir das oben mal angesehen, was ich gepostet habe, mit dem A0,A1,A2.
Der Arduino hat anscheinend unterschiedliche Ausgänge?

Gruß
Manuel
jaja, sind aber eingänge...
der poster hat digitalpin 5 und 6 für die motoren genommen und den empfänger auf den analogen eingängen gelegt.

erklärung:
digitale eingänge erkennen nur EIN oder AUS (das berühmte binäre 1 und 0)
die analogen eingänge haben zwischen "ganz" AUS und "ganz "EIN" 1023 Schritte...

können daher aber auch einfach nur zum erkennen von 1 und/oder 0 verwendet werden...


aber wie gesagt, teste mal die eine konfig, nach deinen aussagen brauchst du ja nicht mehr.

sg
 

FireFox

Erfahrener Benutzer
#31
Hallo!

so, wollte es gerade testen.
Es funktioniert leider nicht.
ich kann deinen Sketch leider nicht mal kompilieren.



MultiWiiV1_8_hexap_mod.cpp: In function 'void writeMotors()':
Output:43: error: 'NUMBER_MOTOR' was not declared in this scope
MultiWiiV1_8_hexap_mod.cpp: In function 'void writeAllMotors(int16_t)':
Output:55: error: 'NUMBER_MOTOR' was not declared in this scope
MultiWiiV1_8_hexap_mod.cpp: In function 'void initOutput()':
Output:81: error: 'NUMBER_MOTOR' was not declared in this scope
MultiWiiV1_8_hexap_mod.cpp: In function 'void mixTable()':
Output:340: error: 'NUMBER_MOTOR' was not declared in this scope
Output:342: error: 'NUMBER_MOTOR' was not declared in this scope
MultiWiiV1_8_hexap_mod.cpp: In function 'void serialCom()':
Serial:72: error: 'MULTITYPE' was not declared in this scope

hast du ihn selbst mal getestet bzw. zumindest mit dem Arduino-Programm mal kompiliert?

Hat das bei dir funktioniert?

Gruß
Manuel
 

FireFox

Erfahrener Benutzer
#32
habe auch gerade mal selbst in den Sktech geschaut, in der config.h

du hast ja auch nicht den hexa-Typ definiert
#define HEX6X war noch auskommatiert.

Auch der Ordner-Name passte nicht zum File-Namen.
was aber recht schnell geändert war.

was hast du denn im Sketch alles geändert?

gruß
Manuel
 

comicflyer

Ich mach' alles kaputt...
#33
gfunk006 hat gesagt.:
mithilfe von einem mini (pro) und dem hier:
//Reads PPM signals from 6 channels of an RC reciever, translates the values to
//PWM and prints the values to serial port.
//Works with Spectrum DX7 (haven't tested anything else)

//Create variables for 8 channels
int RXCH[6];
volatile int RXSG[6];
int RXOK[6];
int PWMSG[6];

void setup() {

//Start communication to serial port
Serial.begin(115200);

//Assign PPM input pins. The receiver output pins are conected as below to non-PWM Digital connectors:
RXCH[1] = 4; //Throttle
RXCH[2] = 6; //Aile / Yaw
RXCH[3] = 5; //Elev. / Pitch
RXCH[4] = 2; //Rudd. / Roll
RXCH[5] = 7; //Gear
RXCH[6] = 8; //Aux / Flt Mode

for (int i = 1; i < 7; i++){
pinMode(RXCH, INPUT);
}

}

void loop() {

// Read RX values
for (int i = 1; i < 7; i++){ //for each of the 6 channels:
RXSG = pulseIn(RXCH, HIGH, 20000); //read the receiver signal
if (RXSG == 0) {RXSG = RXOK;} else {RXOK = RXSG;} //if the signal is good then use it, else use the previous signal
PWMSG = map(RXSG, 1000, 2000, 0, 511); //substitute the high values to a value between 0 and 511
constrain (PWMSG, 0, 2000); //make sure that the value stays within the disired boundries

// Print RX values
//Serial.print(" || Ch: ");
// Serial.print(i);
Serial.print(" / PWMSG: ");
Serial.print(PWMSG);
//Serial.print(" / RXSG: ");
//Serial.print(RXSG);
delay(20);
}
Serial.println();
}

kann man sich um €15 einen eigenenkonverter basteln, der unter anderem auch noch ganz leicht zu einem liposaver "aufgerüstet" werden kann...

Öhhm, hab ich das richtig verstanden?
Das oben als .pde-Sketch auf den Arduino pro mini.
Eingänge wie gehabt und auf Pin8 kommt ein Summensignal?
Das wäre ja cool...

CU Eddy
 

gfunk

Erfahrener Benutzer
#34
[/quote]
Öhhm, hab ich das richtig verstanden?
Das oben als .pde-Sketch auf den Arduino pro mini.
Eingänge wie gehabt und auf Pin8 kommt ein Summensignal?
Das wäre ja cool...

CU Eddy
[/quote]

sollte funktionieren, habs aber nicht getestet
 

gfunk

Erfahrener Benutzer
#35
FireFox hat gesagt.:
Hallo!

so, wollte es gerade testen.
Es funktioniert leider nicht.
ich kann deinen Sketch leider nicht mal kompilieren.



MultiWiiV1_8_hexap_mod.cpp: In function 'void writeMotors()':
Output:43: error: 'NUMBER_MOTOR' was not declared in this scope
MultiWiiV1_8_hexap_mod.cpp: In function 'void writeAllMotors(int16_t)':
Output:55: error: 'NUMBER_MOTOR' was not declared in this scope
MultiWiiV1_8_hexap_mod.cpp: In function 'void initOutput()':
Output:81: error: 'NUMBER_MOTOR' was not declared in this scope
MultiWiiV1_8_hexap_mod.cpp: In function 'void mixTable()':
Output:340: error: 'NUMBER_MOTOR' was not declared in this scope
Output:342: error: 'NUMBER_MOTOR' was not declared in this scope
MultiWiiV1_8_hexap_mod.cpp: In function 'void serialCom()':
Serial:72: error: 'MULTITYPE' was not declared in this scope

hast du ihn selbst mal getestet bzw. zumindest mit dem Arduino-Programm mal kompiliert?

Hat das bei dir funktioniert?

Gruß
Manuel
ups, das war dann zum schluss dann doch schon zuviel hin und her...
hab gestern mit dem summensignal (für meinen kopter) herumgespielt.

und die config dürfte da wohl von beidem etwas abbekommen haben.
werd das mal überarbeiten ;)
 

FireFox

Erfahrener Benutzer
#36
Achso, okay.
alles klar.
wenn du so weit bist, gib kurz bescheid, dann teste ich wieder.

du kannst es aber ja vorab schonmal bei dir kompilieren, damit du siehst, ob es zumindest da keine Probleme gibt.

Gruß
Manuel
 

gfunk

Erfahrener Benutzer
#37
hab mir das mit den analogen ausgängen nochmal angesehen... mein arduino ist leider fix auf einen parisboard verlötet, wobei einige pins nicht "angeschlossen" sind.
muss das erst mal auslöten und ordenlich machen.
kanäle motor 1-4 funktioniert bei mir...
kann aber nichts über die kanäle 8 und 13 oder a0 und a1 laufen lassen weil sie eben (im moment noch) nicht vorhanden sind.

wirst dich wohl noch etwas gedulden müssen
 

FireFox

Erfahrener Benutzer
#38
Alles klar, danke für deine Mühe.

habe mir jetzt für den Übergang, damit ich mit dem Flyduspider anfangen kann von www.multirotorshop.de das MEGA CPU Board gekauft.
Bin aber nach wie vor an einer Arduino-Lösung interessiert, für einen evtl. 2. Hexacopter.

Gruß
Manuel
 

comicflyer

Ich mach' alles kaputt...
#39
Hi gfunk,
ich störe nur ungern nochmal, aber hab Nachsicht mit einem Ahnunglosen :rot:

Ich glaube als Ausgang ist nicht Pin 8 definiert. Ich finde dazu keinen für mich lesbaren Hinweis, wo das Summensignal rauskommt.

Ich hab diesen Beitrag gefunden, aber da steht auch nix... :???:

Ich habs grad mal zusammengestrickt, aber tutet natürlich nicht.

Wenn Du nochmal helfen könntest :)

CU Eddy
 

JUERGEN_

Generation 60++
#40
apropo PPM Encoder Board,

hier ein [size=medium]ATmega328 PPM Encoder Board[/size]
- > http://paparazzi.enac.fr/wiki/ATmega328_PPM_Encoder_Board

:rot:
 
FPV1

Banggood

Oben Unten