PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Funkübertragung



Gerko
11.05.2007, 16:20
Hallo Leute!

Ich habe vor kurzem ein Projekt begonnen, bei dem es darum geht die Laufzeit eines Pferdes auf einer Rennstrecke mit Hilfe von Lichtschranken zu messen.

Hört sich einfach an, ist es auch :)

Mein Problem liegt nun darin ein Funkmodul zu finden, das sowohl eine Sichere Übertragung (möglichst keine Störungen) als auch eine Distanz von ca. 200m überbrücken kann. Die Datenmengen sind nicht sonderlich groß (ein Impuls / Station).

Ich habe Erfahrungen mit dem Easy Radio Funkmodul gemacht, finde allerdings das dieses Modul für diesen Zweck eher überfunktional ist, da ich doch nur einen einzelnen Impuls senden muss.

Um sich das ganze genauer vorstellen zu können, eine kurze Erklärung des Aufbaus:
Die Messpunkte befinden sich am Anfang, in der Mitte und am Ende der Rennstrecke (somit 3 Sender)
Die Daten (Impule) werden von einem Programm das bereits an einem Laptop vorhaden it verarbeitet (1 Empfänger)

Hat nun irgendjemand eine Idee welcher "Aparat" (Sender, Empfänger) dazu infrage kommen würde?

mfg
Gerko

Gerko
13.05.2007, 09:31
Bitte helft mir !!!

PhilippW
13.05.2007, 10:09
Hallo!

Bei Conrad gibt es Funkmodule von Aurel.
Ich kann dir aber nicht sagen, wie das mit mehreren Sendern pro Empfänger aussieht.
Such mal nach den Artikeln 190224 und 190276 und 190337 und 190325...
Wie gesagt, ohne Gewähr.
Guck auch mal, ob du die Seite dort im (Online-)Katalog findest, da es noch ein paar Module mehr gibt.

Mit freundlichen Grüßen

Philipp

shaun
13.05.2007, 11:00
Ich überarbeite gerade ein altes Projekt, das auch Lichtschranken und Funkübertragung beinhaltet. Problem an Deiner Feststellung, Du bräuchtest ja nur einen Impuls: in dem Fall reagiert der Empfänger dann auf alles, was in der Nähe auf der gleichen Frequenz irgendwas sendet. Bei uns warens dann am Ende Funkgeber für ZVn, die unsere Zeitmessung gestoppt haben. Nun gibt's statt Tonfrequenz eine digitale Übertragung von Timecodes (Anzahl von 100us-Inkrementen, die von Unterbrechung der Schranke bis Präambelende vergangen sind plus Prüfsumme), und das Ganze dann noch bidirektional. Warum? Ganz einfach: entweder sendet jede Lichtschranke -zig mal die Zeit in der Hoffnung, das eine ungestört ankommt, oder das Erfassungsgerät fragt gezielt die Lichtschranken nach aktuellen Zeiten, bis der Empfang quittiert wird. Ist aber nicht wirklich so ganz trivial...

PhilippW
13.05.2007, 11:10
Wenn der Preis eine nicht ganz so große Rolle spielt gibt es da noch die Funk-Daten-Modems (190188 mit 190200).
Das ganze lässt sich dann über die RS232/serielle-Schnittstelle betreiben und funktioniert auch bidirektional.
Aber das wäre wie mit Kanonen auf Spatzen schießen...

Gerko
13.05.2007, 13:53
Mit Kanonen, eher mit einer Atombombe auf Ameisen und sowas is illegal :) also da bin ich noch besser drann mit meinem easy radio um ~ 30 Euro das ganze projekt realisiere, ich dachte mir zwar das da doch etwas einfaches, ähnlich einem Morsegerät, gibt. Naja, vielleicht fällt jemandem ja noch etwas ein

shaun
13.05.2007, 13:54
Würde ich so nicht sagen, meine Lösung ist auch recht aufwändig, aber wenn es deterministisch und fehlertolerant sein muss, bleibt einem nicht viel Anderes. Ist das Timing der Conrad-Dinger denn hinreichend spezifiziert?

PhilippW
13.05.2007, 15:22
Zu den kleinen Aurel-Modulen kann ich leider nicht viel sagen.
Aber über diese Transceiver-Module hab ich meinen ersten Roboter gesteuert und kann eigentlich nichts Negatives (bis auf den Preis) berichten.

shaun
13.05.2007, 17:39
Hast Du getestet, ob das Zeitverhalten reproduzierbar ist? Heisst: wenn ich einmal ein Datenpaket der Länge n schicke, kommt es dann ein für allemal nach der selben Zeit komplett am Empfänger an? Ich denke nicht, denn nach aussen wird das Modul nicht kundtun, ob die Fehlerkorrektur zuschlagen musste und eine Wiederholung angefordert hat (sofern das überhaupt geschieht)

Gerko
13.05.2007, 18:38
Ok, also ich habe jetzt beschlossen das ich mit Atombomben auf Ameisen schießen will, allerdings reicht dieser transceiver nicht für eine bidirektionale Übertragung aus oder?

kann man überhaupt eine Bidirektionale übertragung zwischen einer Zentrale und 3 Clients realisieren?
Wenn ja, mit welchem Funkmodul?


Würde ich so nicht sagen, meine Lösung ist auch recht aufwändig, aber wenn es deterministisch und fehlertolerant sein muss, bleibt einem nicht viel Anderes. Ist das Timing der Conrad-Dinger denn hinreichend spezifiziert?

Wie genau funktioniert solch eine digitale Übertragung von Timecodes überhaupt? Und kann ich damit auch eine Genauigkeit von 1ms erreichen?
Für so eine Übertragung werde ich mit hoher Wahrscheinlichkeit auch einen Kontroller verwenden müssen, recht dazu ein ATmega16 aus, und gibt es für eine solche Anwendungen Programmbeispiele?

PhilippW
13.05.2007, 19:40
Hast Du getestet, ob das Zeitverhalten reproduzierbar ist? Heisst: wenn ich einmal ein Datenpaket der Länge n schicke, kommt es dann ein für allemal nach der selben Zeit komplett am Empfänger an? Ich denke nicht, denn nach aussen wird das Modul nicht kundtun, ob die Fehlerkorrektur zuschlagen musste und eine Wiederholung angefordert hat (sofern das überhaupt geschieht)

Soweit hab ich es nicht getestet und kann daher leider nichts dazu sagen...

wkrug
13.05.2007, 19:57
Ich hab auch mal mit so einem Projekt begonnen, hab es aber dann nicht zu Ende geführt.
Das erste Problem mit den kleinen Funkmodulen ist, das man einfach nicht an die benötigte Reichweite herankommt.
Das zweite Problem ist eine ausreichende Synchronisation der Uhren im Sender sowie im Empfänger hinzukriegen.
Das dritte Problem sind die Laufzeiten die es bei verschiedenen Funkmodulen gibt.
Das Vierte Problem ist das Fehlerhandling

Meine Lösung war am Ende ein PMR zu verwenden, das eine PTT Funktion auf einem Klinkenstecker hatte.
Damit wäre es möglich bei ausreichender Reichweite ohne lästige Laufzeiten die paar benötigten Bits zu übertragen.
Wenn man die PMR- Geräte zum Umbau nicht öffnen muß, dürfte das Ganze auch legal sein.

Leistungsmäßig dürfte ein ATMEGA 16 für dein Projekt mehr als ausreichend sein.

Ich bastel zur Zeit mit den Funkmodulen von Pollin rum (RFM01, RFM02 von hope rf) und hab auch schon eine Reichweite von ca. 140m erreicht.
Ob da noch mehr drin ist, oder ob die Module Signallaufzeiten haben, kann ich zur Zeit noch nicht beantworten.
Da ich die Dinger für ein Telemetriesystem brauch, sind die Signallaufzeiten für mich auch nicht so interessant.

Im RC-Lineforum ( http://www.rclineforum.de/forum/thread.php?threadid=146235&sid=8972706e157efec3e414a214124cd701 ) bastelt zur Zeit jemand mit den XBEE Modulen rum und hat da schon einige Erfahrung gesammelt - Vieleicht kann er Dir weiterhelfen.

Gerko
13.05.2007, 20:39
Ich habe gerade entdeckt das es zu meinem easy radio bereits eine 2. generation gibt. Die Reicheite dürfte damit kein Problem mehr darstellen, da es eine Repeater funktion besitzt (hier der Link: http://www.roboter-teile.de/Shop/themes/kategorie/detail.php?artikelid=47&source=2). Sollte sie also nicht ausreichen, kann ich einfach je nach Ortsage eine Zwischenstation setzen. Das der ATmega 16 ausreicht beruhigt mich schon mal, mit anderen Controllern hab ich zu meinem bedauern noch keine Erfahrung gesammelt. Dieses XBEE Modul hat soweit ich das gelesenhabe laut hersteller nur ca. 100m reichweite, das erscheint mir doch etwas wenig.

Mit dem Easy Radio hätte ich also nur noch 2/4 Problemen, die Reichweite und die Synchronisation fällt weg, weil das doch das easy Radio meines wissens selbst regelt.
Was ist mit den Laufzeiten der verschiedenen Funkmodule gemeint?
Das Fehlerhandling erscheint mir bis jetzt noch das schwerste Problem. Hierführ werde ich ein ausgeklügeltes Übertragungsprotokoll benötigen, also wie bereits von shaun erwähnt mit prüfsumme...

shaun
13.05.2007, 21:13
Kurz gesagt: bei jedem Event an einem der Funksender wird ein Timer gestartet, der angibt, wie viele 100us-Inkremente seit dem Event vergangen sind. Wenn die Basis von Gerät x die aktuelle Liste erfragt, beginnt dieses nach Abschluss des Befehlsempfangs die Präambel zu senden und unmittelbar (us-Bereich) die aktuellen Timerwerte zu sichern. Anschliessend werden diese dann mit Prüfsumme gesendet. Am Präambelende ist der Empfänger der Basis eingeschwungen, die Latenz ist ab dann vernachlässigbar und vor allem konstant. Die Timerwerte, die die Zeitdifferenz zwischen Event und Präambelende angeben, werden empfangen, geprüft und gespeichert. Wenn ein Fehler aufgetreten ist, wird die Abfrage wiederholt, ansonsten bestätigt und die Events werden aus der Liste entfernt.
Wenn Du Module mit eingebauter Intelligenz und ggf auch Fehlerkorrektur benutzt, ist die Latenz vermutlich komplett unbestimmbar, daher setze ich auch die "nackten" Transceiver von Aurel bzw funkmodul.com ein.
Bisher reicht die Reichweite, wenn nicht, muss ich wohl über eine Repeater-Funktion der einzelnen Geräte nachdenken...

Gerko
14.05.2007, 15:37
Hmm, ich versteh das bis jetzt nur zu 90%, das Prinzip ist mir jetzt klar geworden, aber ich wie sieht das dann in der Realität aus, also wie kann man das im Microcontroller realisieren?
Gibts dazu vielleicht eine Nachtlektüre, oder Programmbeispiele?

shaun
14.05.2007, 16:48
Ich habe leider keine gefunden. Mein Projekt gibt es in Varianten seit 1998, bisher ist aber noch der Vorgänger von 1996 in diskreter CMOS-Logik im Einsatz. Entsprechend hat sich auch die Software immer wieder gewandelt, die endgültige Version ist noch nicht wirklich als fertig zu bezeichnen, da ich im Moment am Systemmanagment (Akkuüberwachung und -Ladung, Datenübrtragung über die IR-Strecke,...) arbeite.
Vom verstandenen Prinzip zum Programm ist ja nur noch der Schritt des Programmierens zu gehen, da ich nicht weiss, auf welchem Level Du in hardwarenaher Programmierung und uC-Schaltungsdesign bist, kann ich Dir schlecht eine passende Lektüre empfehlen.

Gerko
14.05.2007, 20:08
Ich werde nun das Funkmodul RT868F5 bestellen. Der erse einblick in das Datenblatt hat mich recht fasziniert :)
Außerdem werde ich einen ATmega 32 verwenden, der mega 16 kostet gerademal 50cent weniger :( Gib es eigentlich beim Prorammieren einen Unterschied zwischen diesen 2 Controllern? Und wo liegen eigentlich die Unterschiede?

Ist es besser wenn ich einen 16MHz Quarz verwenden, oder enstehen da nur mehr Fehler?

shaun
14.05.2007, 22:32
Hab ich mir auch angesehen, das Timing ist ja auch einigermaßen beschrieben, aber nur um auszuprobieren, wie es sich bei Übertragungsfehlern verhält und dann doch wieder an einer proprietären Lösung zu kleben war mir der Preis dann doch zu hoch. Ich möchte mein Protokoll schon noch kennen. Was meinst Du mit dem Quarz, besser als was? Ein langsamerer? Hängt davon ab, wieviel Rechenleistung Du brauchst und wie viel Energie Du zur Verfügung hast. Ich habe ATmega16 in den Lichtschranken und takte die Dinger mit 14.318 MHz, aber eher aus traditionellen Gründen.

Gerko
15.05.2007, 15:47
Was meinst du mit "ich möchte mein Protokoll schon noch kennen", heißt das jetzt, ja das kannst das Modul für diesen Zweck verwenden, oder nein, nimm ein anderes.

Beim Quarz: Biher habe ich nur mit einem 4Mhz Quarz gearbeitet, war bis jetzt auch ausreichen, doch jetzt wo es ja quasi eine Echtzeitanwendung sein sollte, dachte ich mir schnellerer Quarz, schnelleres Programm. Da der ATmega32 allerdings max 16MHz unterstützt, habe ich bedenken, ob dieses Tempo auch ohne Fehler eingehalten werden kann, oder soll ich doch einen langsameren verwenden, denn ich erreiche mit meinen 100us Inkrementen sowieso keine höhere Genauigkeit.

edit: Ich habe gerade im Datenblatt des ATmega32 gelesen das man mit 8Mhz eine Betriebsspannung von 2,7 bis 5,5 verwenden kann, mit 16Mhz allerings 4,5-5,5 Volt. Da das Funkmodul eine Betriebsspannung von 3,3 Volt benötigt, werde ich doch nur einen 8Mhz Quarz verwenden.

Zum Funkmodul, hier habe ich ebenfalls das Datenblatt nochmals gelesen :) und herausgefunden das ich eine Mindestverzögerung von 7ms erhalten werde. Gibt es also schnellere Module?

shaun
15.05.2007, 17:33
Da liegt der Hund ja auch begraben: mindestens 7ms. Und wie viel maximal? Vor allem: kann man das bei jeder Übertragung auf 1ms oder besser genau ermitteln? Siehste... Sicher gibt es schnellere Module, alle ohne integrierte Intelligenz sind erstmal schneller, und dadurch, dass man das Ende der sowieso notwendigen Präambel vor der eigentlichen Datenübertragung als Marker benutzt, sollte es schon sehr genau werden. In diesem Moment ist der Sender eingeschwungen, der Empfänger hat seine Verstärkung eingeregelt und die Verzögerung ist minimal und konstant.

Gerko
15.05.2007, 20:40
du sprichst die ganze Zeit von Funkmodulen ohne Inelligenz, aber wo findet man so etwas?

Nehmen wir mal an ich würde doch bei dem RT868F5 bleiben, kann ich damit überhaupt eine Punkt zu Mehrpunkt Verbindung aufbauen?

Ich dachte mir ich teile einfach jedem Sender ein anderes Kanal zu, aber kann der Empfänger auch 3 Kanäle gleichzeitig überwachen? Ich will nämlich nicht das die Sender untereinander kommunizieren, sondern nur Sender mit Empfänger. Außerdem soll jeder Sender alle 5 Sekunden einen Bericht an den Emfpänger abgeben in dem er bestätigt das er noch funktionsfähig ist.