Funk, Zeitkritisches und Co.
Hio. Also ich habe gerade ein kleines neues Nebenprojekt und da brauch ich natürlich ein klein wenig Unterstützung von euch.
Also, es geht darum (der Rest ist eigentlich egal) etwas sehr Zeitabhängiges zu realisieren. Stellt euch ganz abstrakt zwei Menschen etwa in Entfernung von 100 Meter vor. Diese stehen auf einer komplett geraden Ebene und haben dadurch logischerweise Sichtkontakt miteinander, können sich aber nicht höhren, also nicht miteinander reden (warum ist egal). Jetzt will der eine dem anderen aber ganz schnell ein Startbefehl mitteilen, damit der andere dann sofort was anfängt zu machen was sehr zeitkritisch ist und in Verbindung mit dem Sender (also dem, der den Startbefehl so schnell wie möglich zu übertragen versucht) steht. Und was macht der gelehrte Experte? Er greift zu einer Funklösung. Soweit ungefähr was ich vorhabe. Es geht einfach darum, eine Art kurzen Startbefehl zu via Funk zu übermitteln welcher extrem schnell beim Empfänger da ist (also ohne Verzögerung dazwischen) damit der Empfänger dann was zeitkritisches sofort startet.
Jetzt hab ich mal im dem Webshop www.robotikhardware.de nachgeschaut und folgendes gefunden:
- RN-FUNK 1.0
- RT868F4 (868MHz-FM-Mehrkanal-Transceiver)
Meine ersten Gedanken: Das ist die Lösung. Zwar net ganz billig aber noch bezahlbar. Funk ist ja extrem schnell (Lichtgeschwindigkeit) und deswegen ja eigentlich bestens geeignet. Aber dann der Schreck: Funk-Datenverzögerung 20 ms! Das wäre bei meinem Projekt doch eine zu hohe Verzögerung. Ich habe weiter geforscht und dann folgende Zeilen im Datenblatt des Mehrkanal-Transceiver gefunden:
Zitat:
Latenzzeit (Echtzeit-Verzögerung):
Für sogenannte Echtzeit-Anwendungen ist die Information wesentlich, wie lange ein Signal von der Auslösung zur
Reaktion am Empfänger benötigt.
Das Funkmodul verzögert ein gesendetes Byte, unabhängig von der eingestellten Baudrate, um ca. 20ms. Die
Zeitdifferenz des Startbits am Sender zum Startbit am Empfänger beträgt demnach genau diese ca. 20ms.
Die Ursache dieser Verzögerung liegt in der internen Aufbereitung der seriellen Daten für das Funkprotokoll.
Wenn ich das jetzt richtig verstanden habe, dauert das Senden eines Bytes genau 20 ms?! Wenn ja, währe das ganze ja nicht so schlimm. Wenn wir uns das Szenario mit den zwei Menschen noch mal vorstellen, und die Empfänger-Person wüsste dass das übertragen des Startbefehls immer 20 ms dauert (also der Startbefehl, wenn er bei ihm ankommt schon vor 20 ms war) könnte er bei seiner zeitkritischen Aktion die er dann ausführen muss diese Zahl ja miteinbeziehen, oder etwa nicht? Die Antwort auf die Frage ist mir sehr wichtig.
Des weiteren interessiert mich sehr wie störanfällig das ganze ist. Reicht da schon ein anderer der durch die Gegend funkt und mein kurzer Startbefehl (nur ein Byte, also ein Buchstabe) ist schon dahin?? Ich hab irgendwo gelesen, das es per Gesetz gereglt einige Kanäle im 868 Mhz Band gibt, auf denen nur extrem kurz was gesendet werden darf?! Kann mir da vielleicht jemand mehr sagen? Auch diese Antwort auf diese Frage ist mir äußerst wichtig.
Und dann würde ich noch gerne wissen, wie lange es dann dauert bis der Empfänger einen Interrupt bekommt, weil ein Zeichen empfangen wurde (der USART muss das ja auch noch erst auswerten). Oder ist diese minimale Zeitspanne unrelevant? Ich würde einen Atmega8L einsetzen mit einem einem Takt von 7.3728 Mhz. Das müsste eigentlich schnell genug sein.
Und dann noch ne Frage. Gibts
Viele liebe Grüße und nen schönen Abend
Lutz
P.S.: Sorry, aber mir ist einfach kein besserer Titel eingefallen ;)...