Xbee: zu geringe Reichweite
Hallo!
Für meinen Quadrocopter verwende ich Xbee Funkmodule.
um genau zu sein, das XBee-PRO 802.15.4,63mW,Drahtantenne
Momentan teste ich die Motoren, indem ich mit einem Xmega einen Dualshock2 (PS2 Controller) auswerte und die Daten der Y Achse eines Sticks per UART zum Copter sende, der dann die Motoren entsprechend ansteuert.
Das Problem ist, dass das nur auf einer Reichweite von weniger als einem Meter funktioniert obwohl ja eigentlich ein Km möglich sein sollte.
Früher hatte ich das Problem, dass die gesendeten Daten nur sporadisch ankamen.
Das konnte ich beheben, indem ich die Länge der Antennen verdoppelt habe, danach funktionierte es einwandfrei, aber halt nur auf einer sehr kleinen Entfernung.
Einen Konfigurationsfehler kann ich eigentlich Ausschließen, da ich die beiden Funkmodule erstmal auf Werkseinstellungen zurücksetze und sie dann standardmäßig mit 63mW (18dBm) senden.
Ja, das wird noch auf 10 geändert, wenn es funktioniert, damit ich legal bleibe.
Die Initialisierung des Xbees sieht dabei so aus:
Fernbedienung:
Code:
_delay_ms(1000);
UART_Comm::Send_Xcommand("+++");
_delay_ms(1000);
_delay_ms(100);
/* Werkseinstellungen
_delay_ms(100);
UART_Comm::Send_Xcommand("ATRE",true);
_delay_ms(200);
UART_Comm::Send_Xcommand("ATWR",true);
_delay_ms(200);
UART_Comm::Send_Xcommand("ATCN",true);
_delay_ms(200);
*/
UART_Comm::Send_Xcommand("ATID3432",true);
_delay_ms(100);
UART_Comm::Send_Xcommand("ATMY1",true);
_delay_ms(100);
UART_Comm::Send_Xcommand("ATDH0",true);
_delay_ms(100);
UART_Comm::Send_Xcommand("ATDL2",true);
_delay_ms(100);
UART_Comm::Send_Xcommand("ATWR",true);
_delay_ms(100);
UART_Comm::Send_Xcommand("ATCN",true);
_delay_ms(100);
Copter:
Code:
_delay_ms(1000);
UART_Comm::Send_Xcommand("+++");
_delay_ms(1000);
_delay_ms(100);
/* Werkseinstellungen
_delay_ms(1000);
_delay_ms(100);
_delay_ms(100);
UART_Comm::Send_Xcommand("ATRE",true);
_delay_ms(200);
UART_Comm::Send_Xcommand("ATWR",true);
_delay_ms(200);
UART_Comm::Send_Xcommand("ATCN",true);
_delay_ms(200);*/
UART_Comm::Send_Xcommand("ATID3432",true);
_delay_ms(100);
UART_Comm::Send_Xcommand("ATMY2",true);
_delay_ms(100);
UART_Comm::Send_Xcommand("ATDH0",true);
_delay_ms(100);
UART_Comm::Send_Xcommand("ATDL1",true);
_delay_ms(100);
UART_Comm::Send_Xcommand("ATWR",true);
_delay_ms(100);
UART_Comm::Send_Xcommand("ATCN",true);
_delay_ms(100);
Die Werkseinstellungen sind auskommentiert, die müssen ja nicht jedes mal wieder hergestellt werden.
Das senden von Daten erfolgt dabei wie erwartet über UART, ich denke, den Code brauche ich nicht reinzustellen.
Die Datenübertragung erfolgt momentan noch mit einer Baudrate von 9600, die wird später natürlich noch raufgeschraubt.
Hat jemand eine Idee, woran es liegen kann, dass die Reichweite so gering ist?
Das Problem ist übrigens unabhängig davon, ob die Motoren laufen oder nicht.
mfg
Olaf
Liste der Anhänge anzeigen (Anzahl: 2)
Hi, danke für die Antwort!
Die Frequenz beträgt 2.4GHz.
Wie genau sollte so eine senkrecht hängende Litze aussehen?
vor allem wie lang?
Standardmäßig hat das Xbee eine Lambda/8 Antenne.
Könnte eine zu lange Antenne Probleme bereiten, z.B. das Anpassungsnetzwerk überlasten?
Habe von Antennen wirklich wenig Ahnung....
Und wie kann ich dafür sorgen, dass die Antenne nicht in die Rotoren gerät?
Das Xbee ist nur etwa 4cm vom Nächsten Rotor entfernt.
Ich müsste dann erstmal die Antenne fest verlegen oder weiter unten hängen lassen.
Oder ist es möglich eine Leitung zu legen, die zur Antenne führt, aber selbst nicht als Antenne wirkt?
Zwei Fotos zur Verdeutlichung im Anhang.
Würde vlt auch eine Richtantenne am Sender eine Verbesserung bringen?
mfg
Olaf