Gimbal Steuerung

Status
Nicht offen für weitere Antworten.
#1
Ich möchte gerne eine Gimbal-Steuerung an meinem Hexacopter realisieren.

Bisher steuer ich Kamera Pitch über das Poti der Fernsteuerung.

Vorhanden ist ein Brushlessgimbal, größtenteils Eigenbau mit Martinez Steuerung

Anforderungen: Kamera Pitch, Yaw steuerbar

Meine Idee: Das Signal vom Empfänger teilweise durch ein Arduino Mini zu schleifen z.b. Yaw, Throttle und einen Schalter-Kanal, setze ich diesen Kanal auf High, dann wird der Copter z.b. auf Positionhold gesetzt, die Kanäle werden auf das Martinez Gimbal bzw. ein Servo für Yaw geschaltet und ich kann die Kamera steuern

Bekannt ist mir nur die Gimbal-Steuerung am Kamera-Copter über eine 2. Fernsteuerung


Macht es Sinn die Signale durchzuschleifen oder ist das Arduino Board zu langsam?

Hat jemand schon etwas Ähnliches gebaut?
 

olex

Der Testpilot
#2
Ich habe so was ähnliches mir einfach mit meiner Taranis programmiert, ohne zusätzlicher Hardware aufm Copter. Beim Umlegen eines Schalters (in der Taranis wird dabei der Flugmodus 2 aktiviert) wird der linke Stick deaktiviert, Gaskanal fest auf Mitte gesetzt (Schweben), und die Funktion des rechten Sticks geändert - was früher Rollen war ist jetzt Gieren (drehen der Kamera), und Nick ist Gimbalnick anstatt Copternick. Das Ganze ist mit entsprechenden Mixern in den Taranis Modelleinstellungen realisiert, die im Flugmodus 2 aktiv werden.
 
#3
Habe leider keine programmierbare Fernsteuerung :(

Da man bei einer Naza auch keine Programmierung möglich ist, bleibt mir wohl nur die Arduino-Lösung

Habe leider auch nur etwas Erfahrung mit der Arduino, bisher jedoch keine RC-Signale ausgewertet.
 
#4
Gedacht war es so:

Wenn Schalter x der Fernsteuerung in der unteren Position ist,
dann werden alle Signale durchgeschleife (Input = Output)

Ist Schalter x in der oberen Position,
dann wird Kanal Y auf einen anderen Pin gelegt und ich drehe damit mein Gimbal
 
#6
// Variablen
const int chA=1; //Gas
const int chB=2; //Yaw
const int chC=3; //Switch


const int chAout=4; //Gas
const int chBout=5; //Yaw
const int chCout=6; //Switch
const int chDout=7; //Neigung Kamera
const int chEout=8; //Yaw Kamera
const int chFout=9; //Switch durchgeschliffen


int ch1; //Varibles to store and display the values of each channel
int ch2;
int ch3;



// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(115200);
// Set input pins
pinMode(chA, INPUT);
pinMode(chB,INPUT);
pinMode(chC,INPUT);


pinMode(chAout,OUTPUT);
pinMode(chBout,OUTPUT);
pinMode(chCout,OUTPUT);
pinMode(chDout,OUTPUT);
pinMode(chEout,OUTPUT);
pinMode(chFout,OUTPUT);

}

//Main Program
void loop() {
// read the input channels
ch1 = pulseIn (chA,HIGH); //Read and store channel 1
Serial.print ("Ch1:"); //Display text string on Serial Monitor to distinguish variables
Serial.print (ch1); //Print in the value of channel 1
Serial.print ("|");

ch2 = pulseIn (chB,HIGH);
Serial.print ("Ch2:");
Serial.print (ch2);
Serial.print ("|");

ch3 = pulseIn (chC,HIGH);
Serial.print ("Ch3:");
Serial.print (ch3);
Serial.print ("|");

//Auswertung

chC == chFout;

if (ch3>950 && ch3<1050)
{
chA == chAout;
chB == chBout;
}

else if (ch3>1950 && ch3<2050)
{
chA == chDout;
chB == chEout;
}

}
Funktioniert das so?

Hätte dann noch folgende Probleme:
-im Schalterzustand 0: Yaw Kanal Kamera 50% Signal generieren damit der Servo mittig steht
-im Schalterzustand 1: Gaskanal 50% Signal generieren (im umgeschalteten Zustand)
-den letzten Wert der Kameraneigung speichern und beibehalten
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten