PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fliegende Kugel



Reinhard
15.07.2011, 13:49
Hallo,

http://www.spiegel.de/video/video-1138178.html

wer baut das nach?
Sollte in Hobbyausführung für weniger als 800 Teuronen möglich sein.
Meiner Ansicht nach benötigt man 3 Piezokreisel für die "Eigenstabilität", oder?

Quade
15.07.2011, 14:07
Auf jeden Fall nicht schlecht

hätte ich auch gern

Gruß Micha

warthox
15.07.2011, 15:37
800€ :eek:

niemals. max 200€ komplett mit akku excl. sender/empfänger

Crizz
15.07.2011, 16:33
seh ich auch so, mit nem Arduino und WMC sollte das kein Thema sein.

LazyZero
18.07.2011, 08:15
KKmulticopter kann das schon. VTOL oder SingleCopter firmware vorarausgesetzt.

Gruß Christian

Teichhermelin
18.07.2011, 23:53
Das Ding sieht ja wirklich nicht schlecht aus.

ronco
18.08.2011, 09:55
Hi,


seh ich auch so, mit nem Arduino und WMC sollte das kein Thema sein.

soweit so gut :P nur wie macht mann das den jetzt damit ?
habe so ein fertiges board hier liegen und hab auch schon mal in die MWC 1_8 software geguckt. ich kann aber bisher "nur" javascript und php leider noch kein c :(

mein ansatz wäre den tricopter zu nehmen. da ist yaw ja schon auf einem servo... jetzt müsste man roll und pitch noch vom throttle lösen und auch jeweils auf ein servo legen.

wenn mir hier jemand ungefähr sagen könnte wo ich da ansetzen müsste würde ich mich daran geben..


gruß

felix

ronco
18.08.2011, 13:06
sorry für den doppelpost :(

aber habe mal angefangen am code rum zu basteln ... breuchte aber hilfe .. throttle von allen axen entkoppeln hat schonmal gelappt hab auch für die anderen drei servos schon was kopiert .. aber die zeigen keine reaktion..

was mir (denke ich) noch fehlt ist, wie ich die definirten servos mit dem atomicServo verbinde..

hier meine änderungen

config.h


/* For Flying Ball */
#define FBALL


/* The type of multicopter */
//#define GIMBAL
//#define BI
//#define TRI
//#define QUADP
//#define QUADX
//#define Y4
//#define Y6
//#define HEX6
//#define HEX6X
//#define OCTOX8 //beta
//#define OCTOFLATP //beta
//#define OCTOFLATX //beta
//#define FLYING_WING //experimental

...
...
#define YAW_DIRECTION 1 // if you want to reverse the yaw correction direction
//#define YAW_DIRECTION -1

#define PITCH_DIRECTION 1 // if you want to reverse the pitch correction direction <- neu von mir
//#define YAW_DIRECTION -1

#define ROLL_DIRECTION 1 // if you want to reverse the roll correction direction <- neu von mir
//#define YAW_DIRECTION -1
...
...

/* you can change the tricopter servo travel here */
#define TRI_YAW_CONSTRAINT_MIN 1020
#define TRI_YAW_CONSTRAINT_MAX 2000
#define TRI_YAW_MIDDLE 1500

/* you can change the Flying Ball servo travel here */
#define FBALL_YAW_CONSTRAINT_MIN 1020
#define FBALL_YAW_CONSTRAINT_MAX 2000
#define FBALL_YAW_MIDDLE 1500

#define FBALL_PITCH_CONSTRAINT_MIN 1020
#define FBALL_PITCH_CONSTRAINT_MAX 2000
#define FBALL_PITCH_MIDDLE 1500

#define FBALL_ROLL_CONSTRAINT_MIN 1020
#define FBALL_ROLL_CONSTRAINT_MAX 2000
#define FBALL_ROLL_MIDDLE 1500


in der def.h


...
#if defined(PROMINI)
#define LEDPIN_PINMODE pinMode (13, OUTPUT);
#define LEDPIN_SWITCH PINB |= 1<<5; //switch LEDPIN state (digital PIN 13)
#define LEDPIN_OFF PORTB &= ~(1<<5);
#define LEDPIN_ON PORTB |= (1<<5);
#define BUZZERPIN_PINMODE pinMode (8, OUTPUT);
#define BUZZERPIN_ON PORTB |= 1;
#define BUZZERPIN_OFF PORTB &= ~1;
#define POWERPIN_PINMODE pinMode (12, OUTPUT);
#define POWERPIN_ON PORTB |= 1<<4;
#define POWERPIN_OFF PORTB &= ~(1<<4); //switch OFF WMP, digital PIN 12
#define I2C_PULLUPS_ENABLE PORTC |= 1<<4; PORTC |= 1<<5; // PIN A4&A5 (SDA&SCL)
#define I2C_PULLUPS_DISABLE PORTC &= ~(1<<4); PORTC &= ~(1<<5);
#define PINMODE_LCD pinMode(0, OUTPUT);
#define LCDPIN_OFF PORTD &= ~1;
#define LCDPIN_ON PORTD |= 1;
#define STABLEPIN_PINMODE ;
#define STABLEPIN_ON ;
#define STABLEPIN_OFF ;

#define DIGITAL_SERVO_FBALL_YAW_PINMODE pinMode(3,OUTPUT);
#define DIGITAL_SERVO_FBALL_YAW_HIGH PORTD |= 1<<3;
#define DIGITAL_SERVO_FBALL_YAW_LOW PORTD &= ~(1<<3);
#define DIGITAL_SERVO_FBALL_ROLL_PINMODE pinMode(10,OUTPUT);
#define DIGITAL_SERVO_FBALL_ROLL_HIGH PORTD |= 1<<3;
#define DIGITAL_SERVO_FBALL_ROLL_LOW PORTD &= ~(1<<3);
#define DIGITAL_SERVO_FBALL_PITCH_PINMODE pinMode(11,OUTPUT);
#define DIGITAL_SERVO_FBALL_PITCH_HIGH PORTD |= 1<<3;
#define DIGITAL_SERVO_FBALL_PITCH_LOW PORTD &= ~(1<<3);

...
...

#define MULTITYPE 4
#elif defined(FBALL)
#define MULTITYPE 5 //wird zwar net klappen für die GUI aber denke gimbal kommt dem am nächsten
#elif defined(GIMBAL)

...
...



in Output



#if defined(BI) || defined(TRI) || defined(SERVO_TILT) || defined(GIMBAL) || defined(FLYING_WING) || defined(CAMTRIG) || defined(FBALL)
#define SERVO
#endif

#if defined(GIMBAL) || defined(FLYING_WING)
#define NUMBER_MOTOR 0
#elif defined(FBALL)
#define NUMBER_MOTOR 1 // nur ein motor
#elif defined(BI)
#define NUMBER_MOTOR 2
#elif defined(TRI)
#define NUMBER_MOTOR 3
#elif defined(QUADP) || defined(QUADX) || defined(Y4)
#define NUMBER_MOTOR 4
#elif defined(Y6) || defined(HEX6) || defined(HEX6X)
#define NUMBER_MOTOR 6
#elif defined(OCTOX8) || defined(OCTOFLATP) || defined(OCTOFLATX)
#define NUMBER_MOTOR 8
#endif

...
...

#if defined(SERVO)
void initializeServo() {
#if defined(TRI)
DIGITAL_SERVO_TRI_PINMODE
#endif

#if defined(FBALL)
DIGITAL_SERVO_FBALL_ROLL_PINMODE
DIGITAL_SERVO_FBALL_PITCH_PINMODE
DIGITAL_SERVO_FBALL_YAW_PINMODE
#endif

#if defined(SERVO_TILT) || defined(GIMBAL) || defined(FLYING_WING)
DIGITAL_TILT_ROLL_PINMODE
DIGITAL_TILT_PITCH_PINMODE
#endif
#if defined(CAMTRIG)
DIGITAL_CAM_PINMODE
#endif
#if defined(BI)
DIGITAL_SERVO_TRI_PINMODE
DIGITAL_BI_LEFT_PINMODE
#endif
TCCR0A = 0; // normal counting mode
TIMSK0 |= (1<<OCIE0A); // Enable CTC interrupt
}
...
...
void mixTable() {
int16_t maxMotor,a;
uint8_t i,axis;

#define PIDMIX(X,Y,Z) rcCommand[THROTTLE] + axisPID[ROLL]*X + axisPID[PITCH]*Y + YAW_DIRECTION * axisPID[YAW]*Z

#if NUMBER_MOTOR > 3
//prevent "yaw jump" during yaw correction
axisPID[YAW] = constrain(axisPID[YAW],-100-abs(rcCommand[YAW]),+100+abs(rcCommand[YAW]));
#endif
#ifdef FBALL
motor[0] = PIDMIX(0, 0, 0);
servo[0] = constrain(FBALL_YAW_MIDDLE + YAW_DIRECTION * axisPID[YAW], FBALL_YAW_CONSTRAINT_MIN, FBALL_YAW_CONSTRAINT_MAX); //YAW
servo[1] = constrain(FBALL_ROLL_MIDDLE + ROLL_DIRECTION * axisPID[ROLL], FBALL_ROLL_CONSTRAINT_MIN, FBALL_ROLL_CONSTRAINT_MAX); //ROLL
servo[2] = constrain(FBALL_PITCH_MIDDLE + PITCH_DIRECTION * axisPID[PITCH], FBALL_PITCH_CONSTRAINT_MIN, FBALL_PITCH_CONSTRAINT_MAX); //PITCH
#endif



ich hab nochnet ganz verstanden was diese ISR funktionen? so machen .. vllt. liegt auch da das problem

hoffe hier weiss jemmand was ich falsch mache :P vllt. tappe ich ja auch total im dunkeln -.- ist mein erster versuch in C.

gruß

felix

Crizz
18.08.2011, 15:54
Gute Frage, ich bin mit Arduino leider nicht so fit, war nur so ein Gedankenblitz, muss man mal austüfteln

ronco
18.08.2011, 21:07
hmm schade :(

bin aber ein bischen vorran gekommen...

habe jetzt das yaw servo am leufen :D habe also auch rausgefunden wo ich die servos noch einragen muss nur leider giebts immer komische sachen wenn ich pitch und roll dazu tun will :(

habe auch den namen von FBALL in SINGLE geändert ... also nicht wundern ;P

in Output



...
...

ISR(TIMER0_COMPA_vect) {
static uint8_t state = 0;
static uint8_t count;
if (state == 0) {
//http://billgrundmann.wordpress.com/2009/03/03/to-use-or-not-use-writedigital/
#if defined(TRI) || defined (BI)
DIGITAL_SERVO_TRI_HIGH
#endif
/////////////////////////////////////////////////////////
#if defined(SINGLE) //<- hier auf high
DIGITAL_SERVO_SINGLE_YAW_HIGH
#endif
///////////////////////////////////////////////////////////////////
OCR0A+= 250; // 1000 us
state++ ;
} else if (state == 1) {
OCR0A+= atomicServo[0]; // 1000 + [0-1020] us
state++;
} else if (state == 2) {
#if defined(TRI) || defined (BI)
DIGITAL_SERVO_TRI_LOW
#endif
////////////////////////////////////////////////////////////////////
#if defined(SINGLE) //<- hier auf low
DIGITAL_SERVO_SINGLE_YAW_LOW
#endif
/////////////////////////////////////////////////////////////////////////////
#if defined(BI)
DIGITAL_BI_LEFT_HIGH
#endif
#if defined(SERVO_TILT) || defined(GIMBAL) || defined(FLYING_WING)
DIGITAL_TILT_PITCH_HIGH
#endif
OCR0A+= 250; // 1000 us
state++;
} else if (state == 3) {
OCR0A+= atomicServo[1]; // 1000 + [0-1020] us
state++;
} else if (state == 4) {
#if defined(SERVO_TILT) || defined(GIMBAL) || defined(FLYING_WING)
DIGITAL_TILT_PITCH_LOW
DIGITAL_TILT_ROLL_HIGH
#endif
#if defined(BI)
DIGITAL_BI_LEFT_LOW
#endif
state++;
OCR0A+= 250; // 1000 us
} else if (state == 5) {
OCR0A+= atomicServo[2]; // 1000 + [0-1020] us
state++;
} else if (state == 6) {
#if defined(SERVO_TILT) || defined(GIMBAL) || defined(FLYING_WING)
DIGITAL_TILT_ROLL_LOW
#endif
#if defined(CAMTRIG)
DIGITAL_CAM_HIGH
#endif
state++;
OCR0A+= 250; // 1000 us
} else if (state == 7) {
OCR0A+= atomicServo[3]; // 1000 + [0-1020] us
state++;
} else if (state == 8) {
#if defined(CAMTRIG)
DIGITAL_CAM_LOW
#endif
count = 10; // 12 x 1000 us
state++;
OCR0A+= 250; // 1000 us
} else if (state == 9) {
if (count > 0) count--;
else state = 0;
OCR0A+= 250;
}
}
#endif

habe das yaw servo ja wie das vom tri eingeordnet ... nur wenn ich jetzt pitch und roll wie z.b. DIGITAL_TILT_PITCH und ROLL einordne bleiben die servos aus und das yaw servo spinnt :(

naja werde mich da durch wursteln ;) .. über hilfe würde ich mich dennoch freuen :)


gruß

felix

ronco
18.08.2011, 21:52
wieder ein stück weiter..

kann jetzt alle achsen auf ein servo tun :S



#define DIGITAL_SERVO_SINGLE_YAW_PINMODE pinMode(3,OUTPUT);
#define DIGITAL_SERVO_SINGLE_YAW_HIGH PORTD |= 1<<11;
#define DIGITAL_SERVO_SINGLE_YAW_LOW PORTD &= ~(1<<11);
#define DIGITAL_SERVO_SINGLE_ROLL_PINMODE pinMode(10,OUTPUT);
#define DIGITAL_SERVO_SINGLE_ROLL_HIGH PORTD |= 1<<10;
#define DIGITAL_SERVO_SINGLE_ROLL_LOW PORTD &= ~(1<<10);
#define DIGITAL_SERVO_SINGLE_PITCH_PINMODE pinMode(11,OUTPUT);
#define DIGITAL_SERVO_SINGLE_PITCH_HIGH PORTD |= 1<<3;
#define DIGITAL_SERVO_SINGLE_PITCH_LOW PORTD &= ~(1<<3);


immer da wo ich für low und high PORTD ... 3 vergebe gehts .. halt auch auf pin 3 nur reagieren die anderen net .... hier muss ich warscheinlich irgentwas anderes einstellen

vllt weiß ja wer was :P

gruß

felix

ronco
19.08.2011, 10:46
So habs :D

werde am WE mal sowas bauen und testen .. die GUI wurd wohl nicht dammit funktionieren .. aber mal sehn.. wenn noch jemmand testen will einfach ne PN mit der email an mich .. das ist leider zu groß ums hier hochzuladen.

die lösung



#define DIGITAL_SERVO_SINGLE_YAW_PINMODE pinMode(3,OUTPUT);
#define DIGITAL_SERVO_SINGLE_YAW_HIGH PORTD |= 1<<3;
#define DIGITAL_SERVO_SINGLE_YAW_LOW PORTD &= ~(1<<3);
#define DIGITAL_SERVO_SINGLE_ROLL_PINMODE pinMode(10,OUTPUT);
#define DIGITAL_SERVO_SINGLE_ROLL_HIGH PORTB |= 1<<2;
#define DIGITAL_SERVO_SINGLE_ROLL_LOW PORTB &= ~(1<<2);
#define DIGITAL_SERVO_SINGLE_PITCH_PINMODE pinMode(11,OUTPUT);
#define DIGITAL_SERVO_SINGLE_PITCH_HIGH PORTB |= 1<<3;
#define DIGITAL_SERVO_SINGLE_PITCH_LOW PORTB &= ~(1<<3);


gruß felix...

Tr4n5P0rT3r
19.08.2011, 11:39
Bin sehr gespannt drauf, mach bitte ein Video von der "Kugel" wenn du die Möglichkeit dazu hast.

Claus Eckert
19.08.2011, 12:07
Hi

Klasse Idee so etwas "Lowcost" nachzubauen.

Was man mit Depron, Elektronik und Hirnschmalz alles anstellen kann. ;)

Lustig finde ich immer die Marketing-Ideen. Unter den Labeln "Terrorbekämpfung" und "Katastropheneinsatz" läßt sich Vieles verkaufen.
Spätestens wenn es um Lautlosigkeit bei Terrorbekämpfung oder Wärmebildkameras, Messsonden etc. für Katastropheneinsätze geht, schlägt die Physik und die Gravitation grausam zu und solche Projekte verschwinden in der Aservatenkammer.

Als spaßiges Flugmodell mit außergewöhnlichem Experimentier-Status, taugt es aber allemal. ;)

comicflyer
19.08.2011, 13:23
Da war doch mal was :D

Michi hatte sowas ähnliches 2006 in Rödinghausen dabei. Aber ohne Bekreiselung oÄ...
Flugphasenumschaltung der Mischer von gleich- auf gegensinnig über Knüppelschalter.
Torquerei ab ~1:50


http://www.youtube.com/watch?v=b-eu4jM_V8M

CU Eddy

ronco
19.08.2011, 19:17
ja werde wenns fliegt mal ein video machen ..

dachte grade noch die WMC software wäre in der ausführung auch ein super autopilot für flächenmodelle .. laufen alle 3 achsen drüber. gas kann man ja direckt nehmen wenn man mag.. oder als torque hilfe für anfänger :P


gruß felix

ronco
22.08.2011, 13:03
Erste tests :D

habe die software nochmal umgeschrieben .. so das es jetzt mit 4 servos gehen soll .. jeh ein servo pro klappe. soweit geht das auch schon. habe auch mal sowas aus selitron gebaut .. ist aber glaub ich zu wackelig also fliegt sehr unstabiel ..

werde also nochmal von vorne anfangen..

habe bisher nur ein kleines video von der servo / gyro reaktion

http://www.youtube.com/watch?v=pyztkE121t4

ich tendiere aber doch immer mehr dazu mir einen tri zu bauen :P

naja wiegesagt die geänderte MWC software gibts auf pn anfrage ..



gruß felix

gfunk006
12.10.2011, 18:34
gibts noch jemanden der den ball hinbekommen hat?

ronco
12.10.2011, 20:19
Hi,

ich habe damit noch nicht weiter gemacht. hatte ein WMCboard mit der software als letztes in nem kleinen flieger .. der hoverte super ;) .. wiegesagt .. ich denke von der software seite her sollte das gehn .. mann müsste sich nur mal mühe beim aufbau geben

gruß

felix

Hummerfresse
27.08.2012, 17:21
Hi Leute

gibts irgendwelche Neuigkeiten zu dem Thema.
Hätte im Moment etwas Zeit und würde mir sowas gerne bauen.
am besten auf MWC Basis.

Evtl finden sich ja noch paar Leute die mitmachen.

Gruß
Manuel

-1-9-8-6-
01.09.2012, 01:11
Hmmm, schau mal auf youtu

Ich habe einige Videos gesehen die das Konzept umgesetzt haben. Über die Videolinks könntest Du dann weitersuchen und mit den Leuten die aktiv im Thema sind (oder waren) in Kontakt kommen.