PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Funk, Zeitkritisches und Co.



luma
04.10.2005, 19:46
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:



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 ;)...

luma
04.10.2005, 20:07
Und dann habe ich noch folgendes gefunde:
I²C-Funk-Interface 868MHz - Devantech von http://www.roboter-teile.de/Shop/pd1742300666.htm?categoryId=6

Ist das Teil gut? Das gute Stück hat nämlich TWI und das ist für mich ein Pluspunkt...

pebisoft
04.10.2005, 20:20
kannst du mir mal erklären, warum ich mit meinem funkmodul 115000 bps oder andersherum 115000/8 = 14375 byte pro sekunde versenden kann.
mfg pebisoft

Lektor
04.10.2005, 21:49
wenn Sichtkontakt besteht, warum nehmt ihr dann nicht einen Laser. Läßt sich vielleicht besser regeln als Funk. Sollte aber ein Auto im Weg sein, dann geht es natürlich auch nicht. Und der Laserstrahl muß natürlich so eingestellt werden, dass er genau auf den Empfanger trifft. Bei 100m brauch man vielleicht ne genaue Mechanik dafür.
Aber wenn man keine Daten (An/Aus) per Funk senden will, dann gibt es bestimmt auch Schaltungen die von den 20ms verzögerung nicht betroffen sind.

PicNick
05.10.2005, 09:59
Die Sache ist einfacher, wenn der Sender schon vorher weiß, daß ein Signal zu senden sein wird, denn dann könnte er ja die Laufzeiten berücksichtigen. Oder wenigstens eine Art Fenster.
Es dauert immer länger, aus dem Nichts eine halbwegs sichere Verbindung aufzubauen.
Kannst du Näheres über das Problem sagen ?

H.A.R.R.Y.
05.10.2005, 12:03
Die Latenzzeit beträgt also ca. 20ms. Für präzide Messungen ist das natürlich zu ungenau.

Was ist damit:
Der Sender sendet den Startbefehl mit einem Zeitcode. Der Empfänger kann ja dann zum Sender seinen Zeitcode (den mit dem exakten Startzeitpunkt) zurücksenden. Okay, dafür müssen die Funkmodule bidirektional arbeiten. Wenn beide Uhren (Sender und Empfänger) zueinander synchron laufen, dann ist der exakte Zeitpunkt des Ereignisses bekannt und die Zeitmessung kann sehr genau erfolgen.

Dafür müssen sich die Uhren regelmäßig synchronisieren. Das läßt sich über regelmäßige Sendungen der Zeitcodes realisieren.

luma
07.10.2005, 15:22
Hio. Also danke erstmal für die ganzen Antworten!
Laser kommt bei mir nicht in Frage. Das wär mir zu abgedreht und außerdem geht das in meinem Fall auch nicht. Ich hab nicht immer Sichtkontakt...



kannst du mir mal erklären, warum ich mit meinem funkmodul 115000 bps oder andersherum 115000/8 = 14375 byte pro sekunde versenden kann.
mfg pebisoft

Nee, kann ich nich. Vielleicht klärst du uns ja auf...



Die Latenzzeit beträgt also ca. 20ms. Für präzide Messungen ist das natürlich zu ungenau.

Es handelt sich in meinem Fall um nur eine Messung. So präzise muss die jetzt auch nicht mehr sein. +/- 100 ms ist maximal an Ungenauigkeit drin.



Kannst du Näheres über das Problem sagen ?

Also, es soll so ne Art Stoppuhr werden. Mehr kann ich nicht sagen. Und diese Stoppuhr besteht eben aus (bis jetzt natürlich nur in der Theorie) zwei Platinen mit AVR drauf. Die eine muss beim Start der Stoppuhr der anderen via Funk sagen: "So jetzt geht's los". Die die das empfängt startet dann nen Timer und wartet bis ein Stoppsiganl eintrifft (kommt nicht via Funk, sondern anders, wie ist egal) um dann die Uhr zu stoppen. Ich hab halt gedacht, dass wenn man die Latenzzeiten weiß (beim RT868F4 ja 20 ms) man die ja einfach, wenn der Timer später gestoppt wurde, diese Zeit einfach aufrechnet...
Jetzt nochmal die Frage:


Und dann habe ich noch folgendes gefunde:
I²C-Funk-Interface 868MHz - Devantech von http://www.roboter-teile.de/Shop/pd1742300666.htm?categoryId=6

Ist das Teil gut? Das gute Stück hat nämlich TWI und das ist für mich ein Pluspunkt...

Leider hab ich da null mit Latenzen gefunden. UND man kann anscheinened keine Kanäle selber auswählen. Ist das schlimm? UND ist das gute Stück eigentlich einigermaßen Störsicher?


EDIT: Vielleicht ne komische Frage, aber: Beim I²C-Funk-Interface 868MHz - Devantech. So wie ich das verstanden habe, schließt man das direkt an I²C an und kann dann sofort senden und empfangen. Und ein EasyRadio-Modul ist schon drauf. Nur welches?

chr-mt
07.10.2005, 18:04
kannst du mir mal erklären, warum ich mit meinem funkmodul 115000 bps oder andersherum 115000/8 = 14375 byte pro sekunde versenden kann.
Dürfte eigentlich nicht gehen.
Die Bandbreite von standard Funkmodulen reicht dafür nicht aus.
Bei 5 KHz Bandbreite kannst du max. 9600 BpS erreichen.
(Bei Biphase Signalen 4800 BpS)
Ich nehme mal an, daß dein Funkmodul einen Buffer eingebaut hat, der die Daten zwischenspeichert und dann mit 9600 BpS weitersendet.
Der Empfänger setzt die Daten dann wieder auf die ursprüngliche Baudrate rauf.
Deshalb auch die Verzögerung, da erst der Buffer gefüllt wird.
So ist es bei vielen Funkmodulen mit "Intelligenz" gelöst.
Ohne buffer geht das wesentlich schneller, wenn man nur 2-3 Bytes sendet.
Man muß ja auch nicht unbedingt serielle Daten senden, man kann ja auch Töne senden und die auswerten.

Ganz interessante Doku zum Thema serielle Funkübertragung
http://hmradio.de/Dokumente/Infos/applicationnote.pdf

Du hast bei deiner Berechnung übrigens die Start und Stoppbits vergessen..

Gruß
Christopher

Joerg
08.10.2005, 16:30
Hallo Lutz,

nun also der zweite Anlauf ;-)

Die controllerbasierten Funkmodule (egal ob easyradio oder andere) haben eine Firmware, die die gesendeten Zeichen in einen Fifo schreiben und erst mit einer bestimmten Verzögerung tatsächlich senden. Bei den easyradio-Modulen wird hierbei so lange in den Fifo geschaufelt, bis eine kurze Pause im Eingabedatenstrom erkannt wird.
Überhaupt liegt das Augenmerk bei dieser Art von Funkmodulen darin, dem Benutzer eine transparente serielle RS232 Schnittstelle zu bieten und von den ganzen Funkthemen (Modulation, CRC, Sende-Empfangsumschaltung usw.) zu entlasten. Das führt aber dazu, das dies Module nicht mehr synchron arbeiten, also an das Modul geschickte Daten werden nicht mehr sofort über Funk übertragen.
Damit ist dieses Modul bzw. diese Art von Modulen für die Aufgabenstellung eher nicht geeignet.

Es gibt doch nach wie vor die controllerlosen Module von C oder ELV, damit könnte man sicher so etwas machen. Man hat zumindest im Rahmen der Möglichkeiten dieser Module alle Freiheiten, sich das für die Applikation zurechtzubiegen.
Die EasyRadios übertragen die Daten übrigens generell mit 19200bps, egal welche Geschwindigkeit am Interface eingestellt ist.

Beim RF04 wird das EasyRadio Modul (ER400TRS oder ER900TRS) durch eine FTDI USB-Serial Bridge ergänzt. Im PC bekommt man über einen Treiber einen virtuellen COMport, der letztendlich an das Funkmodul durchgereicht wird.

Das CM02 (I2C-Modul) geht einen etwas anderen Weg. Hier wird das EasyRadio ergänzt mit einem Controller, der über ein serielles Protokoll eine I2C-Schnittstelle bedienen kann. Dabei ist dieser Controller auf dem CM02 immer der I2C-Master. Gehandelt wird das ganze von der Gegenstelle (PC mit RF04 oder Controller mit ERxxx). Man schreibt also über die serielle Funkschnittstelle Daten zum I2C-Device, oder holt Daten von einem I2C-Device ab. Das I2C-Device kann von sich aus nicht selbst aktiv werden und Daten übertragen. Das CM02 ist funk- und protokolltechnisch immer ein Slave. Ein gegenseitiger Betrieb von 2 CM02 ist daher ebenfalls nicht möglich.

Ich hoffe etwas weitergeholfen zu haben.

Viele Grüße
Jörg

pebisoft
08.10.2005, 17:26
"Nee, kann ich nich. Vielleicht klärst du uns ja auf..."

deine aussage ist die aufgeschnappte theorie.
mein test ist die praxis, das ist der unterschied.
fazit: glaube nicht alles , was dir untergeschoben wird an gerüchten.
mfg pebisoft

luma
08.10.2005, 21:20
Hio. Danke erstmal an Jörg für die Erklärungen. Schade eigentlich… denn ich wollte eigentlich zwei dieser genannten Funkmodule (CM02) verwenden… Naja, das hat sich jetzt leider erledigt, da die Dinger ja nicht synchron übertragen und man zwei von den Teilen nicht zusammen verwenden kann, weil keiner ein I²C-Master sein kann. Eigentlich blöde…
Nunja, dann gibt’s für mich nur noch zwei Möglichkeiten und die wären:
a) Ich nehme zwei RT868F4 (868MHz-FM-Mehrkanal-Transceiver) von www.robotikhardware.de
b) Ich bastel mir selber was zusammen.
Die erste Variante wäre die einfachere weil ja alles schon fertig ist. Da weiß ich auch die Latenzzeiten. Ich zitiere noch mal:



Latenzzeit (Echtzeit-Verzögerung):
Für so genannte 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.


D. h. ich sende ein Byte und muss 20 ms warten bis es beim Empfänger da ist?! Wenn ich genau weiß wie lange eine Übertragung andauert, kann ich das dann zeittechnisch berücksichtigen. Aber da tut sich für mich noch eine Frage auf die eigentlich nichts mit Thema zu tun hat. Wenn es zwischen jeden gesendeten Byte eine Pause von 20 ms befindet würde eine etwas größere Datenübertragung ja quälend lang dauern!

Jörg, vielleicht kannst du mir ja schreiben a) wie lange der Controller wartet bis nichts mir in den FIFO geschrieben wird um die Daten dann weiter zu verarbeiten und wie lange dann das eigentliche senden eines Bytes dauert?! Wäre die seeehr dankbar für die Infos (hab nämlich nichts im Datenblatt gefunden).

Dann noch zur zweiten Varianten. Eigentlich bin ich ein extremer Anfänger was das erbauen eigener elektronischer Schaltungen angeht…



Es gibt doch nach wie vor die controllerlosen Module von C oder ELV, damit könnte man sicher so etwas machen. Man hat zumindest im Rahmen der Möglichkeiten dieser Module alle Freiheiten, sich das für die Applikation zurechtzubiegen.


Was bedeutet denn C oder ELV? Ist es schwierig da was eigenes zusammenzubauen oder gibt’s da vielleicht sogar ’n Tutorial im Web oder schon was fertig aufgebautes?


Gruß
Lutz

Joerg
08.10.2005, 22:45
Hallo Lutz,


Jörg, vielleicht kannst du mir ja schreiben a) wie lange der Controller wartet bis nichts mir in den FIFO geschrieben wird um die Daten dann weiter zu verarbeiten und wie lange dann das eigentliche senden eines Bytes dauert?! Wäre die seeehr dankbar für die Infos (hab nämlich nichts im Datenblatt gefunden).
Naja es steht etwas verklausuliert drin. Erst mal wartet das Modul auf das Übertragungsende (2 volle Zeichen, macht bei 19200bps genau 1,04ms).
Dann wird eine Präambel gesendet (10ms) dann halt die Daten, 1 Byte dauert 0,52ms. Zum Schluss gibts noch die Checksum und anderer Kram für 13,2ms. Erst nach der Komplettübertragung des Paketes wird es an der Gegenstelle ausgegeben. Dürfte beim RT868 ja genauso sein.
Was ich nicht genau sagen kann, ob das Modul sofort nach dem Erkennen der Pause mit Senden anfängt (laut Datenblatt ja) und ob es beim Empfänger noch irgendwelche Verzögerungen gibt.


Was bedeutet denn C oder ELV? Ist es schwierig da was eigenes zusammenzubauen oder gibt’s da vielleicht sogar ’n Tutorial im Web oder schon was fertig aufgebautes?
C ist Conrad ELV eben ELV. Beide Anbieter haben fertig aufgebaute Funkmodule im Angebot (auch ohne Controller). Es geht also nicht darum, ein Funkmodul selbst aufzubauen. Das wäre schon rechtlich nicht einwandfrei.
Aber selbst die Einbindung eines fertigen controllerlosen Moduls ist nicht so ganz einfach, weil man sich um alles selbst kümmern muss. Es sei denn, man überträgt zu Synchronisation eine einfache Flanke. Das dürfte problemlos auch ohne Manchester-Codierungen und den ganzen Kram gehen.

HTH und Viele Grüße
Jörg

luma
09.10.2005, 12:39
Wenn ich die einzelnen Zeiten zusammenrechne bekomme ich etwa 25 ms... Was mir jetzt noch irgendwie komisch vorkommt ist die Übertragungszeit ja quälend langsam ist. Oder muss man (wenn man was größeres übertragt) nur 1-mal ein Präambel (was ist das) senden und am Schluss dann auch nur 1-mal Checksum und Co senden? Dann wäre die Übertragunszeit von 1 Byte in 0,52 ms ja recht flott...

Ich tendiere jetzt in Richtung EasyRadios, auch wenn die Teile nicht so passend sind. Wahrscheinlich bau ich mir dann ne eigene kleine Platine an, mit welcher man das Funkmodul dann ansteuern kann, weil RN-Funk mir einfach zu teuer ist... Nur wie ich das mache weiß ich noch nicht ;).

Jetzt noch ne Frage: Wenn ich die Daten sende, kann es ja sein, dass genau in diesem Moment jemand anderes auf der gleichen Frequenz funkt. Das würde ja zu Fehler führen... Ich hab im Datenblatt gelesen man kann jedem Datenpaket eine ID geben und am Empfänger checkt man dann halt ob die ID vom eigenen Sender kommt und nicht von "irgendwo her". Gehe ich da richtig mit der Annahme??

Gruß
Lutz

Joerg
09.10.2005, 13:15
Hallo Lutz,

die Präambel und die Endesequenz werden nur einmal pro Paket gesendet. Wenn also der Datenstrom kontinuierlich kommt (Fifogröße beachten), wird solange gewartet, bis eine Pause von mindestens 2 Bytezeiten aufgetreten ist. Dann beginnt der Sendezyklus also Präambel + Byteübertragungszeiten (0,52ms pro Byte) + Endesequenz (Postambel).

Präambel ist eine Folge von ein paar Bytes in einer bestimmten Codierung (0x55/0xaa oder sonstwas) die dem Empfänger anzeigen, dass ein Paket übertragen werden wird. Und um diesen ganzen Kram (Präambel, Postambel usw.) brauchst du dich ja nicht zu kümmern, das macht die Firmware von dem Modul. Du musst nur wissen, wie die arbeitetet, damit für den speziellen Anwendungsfall die beste Lösung rauskommt.

Das mit dem zur gleichen Zeit auf gleicher Frequenz senden kann jederzeit passieren (obwohl in der Praxis eher selten), deshalb gibt es ja die Sicherung mit der CRC. Stimmt diese nicht, wird das Paket verworfen.
Die Daten-ID dient zur Realisierung von Subnetzen und ist hier eigentlich gar nicht notwendig.

Viele Grüße
Jörg

luma
09.10.2005, 16:31
Bin halt noch ein ziemlicher Anfänger was Funk angeht...

Wärst du vielleicht so nett und würdest mir mehr über CRC schreiben? Ich weiß das CRC ne Art Hashcode ist, d. h. es gibt zu jeder Art von Bytefolge nur einen CRC-Code. Ändert man die Bytefolge irgendwie dann ist auch der CRC-Code anders... Ist das schwer mit den EasyRadios zu realisieren?

Joerg
09.10.2005, 16:49
Hallo Lutz,


Wärst du vielleicht so nett und würdest mir mehr über CRC schreiben? Ich weiß das CRC ne Art Hashcode ist, d. h. es gibt zu jeder Art von Bytefolge nur einen CRC-Code. Ändert man die Bytefolge irgendwie dann ist auch der CRC-Code anders... Ist das schwer mit den EasyRadios zu realisieren?
das brauchst du ja nicht extra zu realisieren, das macht ja das Modul schon für dich! Es gibt auch verschiedene Generatorpolynome, keine Ahnung was das EasyRadio hier konkret verwendet.

Viele Grüße
Jörg

luma
10.10.2005, 18:04
Hio. Ich weiß, ich nerv langsam mit meinem Gefrage ;)…
Also, noch vielen Danke für die ganzen vorigen Erklärungen! Hat mir sehr viel weitergeholfen.
Ich tendiere jetzt in Richtung ER400TRS Transceiver als Funkmodul. Da habe ich noch ne kleine Frage. Jörg hat geschrieben, dass das Modul automatisch CRC-Prüfsummen erstellt und damit checken kann ob die Daten nicht von irgendwoher kommen. Dafür braucht das Modul ja auch etwas Zeit. Ist das in den 13 Millisekunden drin? Wird das schon automatisch gemacht oder muss man das erst noch konfigurieren? Ich hab das Datenblatt gewälzt, aber leider nichts dazu gefunden…

So angenommen ich hab jetzt zwei solcher Transceiver. Jetzt muss ich noch auf ner Lochrasterplatine alles „zusamendrahten“. Und da hab ich so meine Probleme, weil ich, wie schon gesagt, null Ahnung von Elektrik habe :(. Wenn ich’s ganz einfach haben möchte, könnte ich mir zwei RN-Funkplatinen kaufen, aber ich will das selber zum laufen bringen und die Platinen sind auch nicht gerade billig für einen armen Schüler. Jetzt halt die Frage wie bau ich das zusammen? An einen PC will ich das ganze nicht anschließen. So wie ich das jetzt nämlich verstanden habe, bräuchte man dann einen MAX-232 Pegelwandler (sowie viel komplizierte Elektronik) welcher den Pegel auf RS-232 Norm anpasst (-12 … -3 V & +3 … +12 V), oder irre ich mich? Ist so was schwer zu bauen, wenn ich das Modul jemals an einen PC anschließen möchte? Etwas verwirrend finde ich dazu die Angaben:



1. Das Modul arbeitet intern mit einem integrierten 3.3 Volt Spannungsregler. Die Logikpegel der Eingangs-/Ausgangs-Pins sind deswegen zwischen 0 Volt und 3.3 Volt. (Siehe Spezifikationen)

1. Die Ausgänge treiben 5 Volt-Logik und die Eingänge werden korrekt betrieben von Logik, die bei 5 Volt arbeitet (CMOS & TTL Logikpegel).


Was jetzt?

Wie gesagt, an einen PC schließ ich das gute Stück erstmal nicht an. Was habe ich denn jetzt noch in der Schaltung zu beachten? Ich glaube man braucht dann noch so was wie einen Spannungswandler welcher die Spannung die z. B. von einem Akku kommt auf 5 V reguliert (ich muss ja genau die Spannung von 5V an ATmega8 sowie an den Transceiver anschließen…)? Öhhm, fehlt dann noch was? An-/Ausschalter natürlich sowie einen µC (ich nehme wie schon gesagt ATmega8). An den µC kann ich ja, so wie ich das dem Datenblatt entnommen, habe direkt das EasyRadiomodul anschließen? Sonst bräuchte man ja eigentlich nichts mehr zum erfolgreichen Betrieben, oder?

Vielleicht gibt’s ja irgendwo in den Tiefen des WWW ja ein kleines Tutorial, das die Grundlagen der Elektrik bespricht?! Wäre sehr dankbar für einen Link.


Viele liebe Grüße
Lutz



P.S.: Ich verzweifle immer wieder an der Bezeichnung GND! Ich bin jetzt in der 11. Klasse und zum Thema Strom haben wir + & - gelernt, nie aber GND! Das Pendant dazu ist ja VCC. VCC steht glaub ich für eine immer gleich bleibende regulierte Spannung (also im meinem Fall 5V). Aber was ist GND? Ist GND einfach der Minus-Anschluss des Akkus? Im Datenblatt von EasyRadio sagen die immer was von „Verbinden mit Versorgungsspannung 0 Volt und Massefläche“. Wie soll ich das jetzt verstehen? Was ist Massefläche, was Versorgungsspannung 0 Volt?

ShadowPhoenix
10.10.2005, 18:34
0V = Massefläche = GND = MINUS (-)

Joerg
11.10.2005, 10:22
Hallo Lutz,


Ich tendiere jetzt in Richtung ER400TRS Transceiver als Funkmodul. Da habe ich noch ne kleine Frage. Jörg hat geschrieben, dass das Modul automatisch CRC-Prüfsummen erstellt und damit checken kann ob die Daten nicht von irgendwoher kommen. Dafür braucht das Modul ja auch etwas Zeit. Ist das in den 13 Millisekunden drin? Wird das schon automatisch gemacht oder muss man das erst noch konfigurieren? Ich hab das Datenblatt gewälzt, aber leider nichts dazu gefunden…
das wird automatisch so gemacht, gehört ja zum EasyRadio-Protokoll. Wie schon mehrfach erwähnt, der Nutzer soll sich nicht mit diesem Zeug herumschlagen müssen, serielle Daten rein und auf der Gegenstelle serielle Daten raus, vollkommen transparent.


An einen PC will ich das ganze nicht anschließen. So wie ich das jetzt nämlich verstanden habe, bräuchte man dann einen MAX-232 Pegelwandler (sowie viel komplizierte Elektronik) welcher den Pegel auf RS-232 Norm anpasst (-12 … -3 V & +3 … +12 V), oder irre ich mich? Ist so was schwer zu bauen, wenn ich das Modul jemals an einen PC anschließen möchte?
Das Modul ist so konstruiert, dass man es mit einem Mikrocontroller direkt verbinden kann, möchte man es an einen PC anschließen, braucht man den genannten Pegelwandler. Aber dann auch nur bei der Verbindung mit dem PC!

Der Pegelwandler besteht aus einem Schaltkreis (MAX232 oder ähnliche) und 4, 5 Kondensatoren für die Ladungspumpe. Also eigentlich auch mit wenig Erfahrung nicht allzu schwer zu bauen. Man sollte aber schonmal einen Lötkolben in der Hand gehabt haben oder jemanden haben, der mal mit draufgucken kann.



Etwas verwirrend finde ich dazu die Angaben:


1. Das Modul arbeitet intern mit einem integrierten 3.3 Volt Spannungsregler. Die Logikpegel der Eingangs-/Ausgangs-Pins sind deswegen zwischen 0 Volt und 3.3 Volt. (Siehe Spezifikationen)

1. Die Ausgänge treiben 5 Volt-Logik und die Eingänge werden korrekt betrieben von Logik, die bei 5 Volt arbeitet (CMOS & TTL Logikpegel).

Was jetzt?

Es ist genauso wie es dasteht. Das Modul arbeitet intern mit 3,3V. Demzufolge kommt an den Ausgängen des Moduls auch nur 3,3V raus. Diese 3,3V reichen aber aus, um eine angeschlossene 5V Logik (Mikrocontroller, Pegelwandler) ordentlich zu treiben. Andersherum ist es genauso, die Eingänge des Moduls sind tolerant gegenüber anderen 5V Ausgängen. Kann man also ohne Bedenken direkt verbinden.

Nur nicht einen PC direkt anschließen, die +/-12V wirken dann in der Regel für das Modul tödlich. Dafür und ausschließlich dafür ist der oben genannte Pegelwandler.


Wie gesagt, an einen PC schließ ich das gute Stück erstmal nicht an.
Dann brauchst du auch keinen Pegelwandler (MAX232).


Was habe ich denn jetzt noch in der Schaltung zu beachten? Ich glaube man braucht dann noch so was wie einen Spannungswandler welcher die Spannung die z. B. von einem Akku kommt auf 5 V reguliert (ich muss ja genau die Spannung von 5V an ATmega8 sowie an den Transceiver anschließen…)? Öhhm, fehlt dann noch was? An-/Ausschalter natürlich sowie einen µC (ich nehme wie schon gesagt ATmega8). An den µC kann ich ja, so wie ich das dem Datenblatt entnommen, habe direkt das EasyRadiomodul anschließen? Sonst bräuchte man ja eigentlich nichts mehr zum erfolgreichen Betrieben, oder?
Ein paar Kondensatoren 100nF wären nicht schlecht, einen an den Mega8, einen an das Funkmodul. Weiterhin die Kondensatoren (Elkos) am Spannungsregler 7805 oder ähnliches nicht vergessen.
Das ER-Modul kann direkt mit dem Mega8 verbunden werden, dabei die TX-Leitung des Controllers mit der RX-Leitung des Moduls verbinden und umgekehrt, also kreuzweise. Den Rest nach Datenblatt vom Easy-Radio verschalten.


P.S.: Ich verzweifle immer wieder an der Bezeichnung GND! Ich bin jetzt in der 11. Klasse und zum Thema Strom haben wir + & - gelernt, nie aber GND! Das Pendant dazu ist ja VCC. VCC steht glaub ich für eine immer gleich bleibende regulierte Spannung (also im meinem Fall 5V). Aber was ist GND? Ist GND einfach der Minus-Anschluss des Akkus? Im Datenblatt von EasyRadio sagen die immer was von „Verbinden mit Versorgungsspannung 0 Volt und Massefläche“. Wie soll ich das jetzt verstehen? Was ist Massefläche, was Versorgungsspannung 0 Volt?
Eigentlich ganz einfach, wie ja auch schon von ShadowPhoenix geschrieben wurde, GND ist das Bezugspotenzial, die sogenannte Masse, zumeist verbunden mit dem Minuspol des Akkus (die Ausnahmen wo das nicht verbunden ist, interessieren hier erstmal nicht).
Für dich ist wichtig zu wissen, dass alle GND-Anschlüsse verbunden werden müssen. Bei Einsatz von mehreren Akkus (einen für Sensorik, einen für die Logik, einen für die Motoren) gehören alle Minuspole damit verbunden.
Speist man eine Schaltung (z.B. Controllerboard) aus einem Netzteil und hängt da Sensoren dran, die Batteriegespeist sind, gehören die Minuspole (== Massepotenzial) verbunden. Aus EMV-Gründen ist es im allgemeinen günstig, große Masseflächen zu haben.

HTH und Viele Grüße
Jörg

luma
11.10.2005, 13:22
Hio. Danke Jörg für die große Anwort!!



Ein paar Kondensatoren 100nF wären nicht schlecht, einen an den Mega8, einen an das Funkmodul. Weiterhin die Kondensatoren (Elkos) am Spannungsregler 7805 oder ähnliches nicht vergessen.


Die ersteren Kondensatoren muss ich ja direkt an den PowerPort des Mega8 und des ER-Moduls anschließen, weil es vorkommen kann, das kurzeitig die Spannung leicht zusammenbricht. Der µC kann dann dann ja nicht mehr richtig betrieben werden. Oder müssen noch wo anders eine paar von diesen 100nF-Kondensatoren hin? Wie ich annehme, müssen das dann auch ungepolte Kondensatoren sein. D. h. ein Elko lädt sich ja solange auf bis nichts mehr reingeht und dann ist das gute Stück nicht mehr leitend, d. h. der Kontakt wird geöffnet. Die ungepolten dagegen laden sich lassen den Strom aber auch wenn sie voll sind fließen und können sich auch in jede Richtung wieder entladen, oder irre ich mich?

Und was hat es mit den Elkos an dem Spannungsregler auf sich?? Kannst mir da bitttteee noch ein bisschen mehr schreiben? Danke :)!



Aus EMV-Gründen ist es im allgemeinen günstig, große Masseflächen zu haben.

Was sind EMV-Gründe?

Joerg
11.10.2005, 15:14
Hallo Lutz,


Die ersteren Kondensatoren muss ich ja direkt an den PowerPort des Mega8 und des ER-Moduls anschließen, weil es vorkommen kann, das kurzeitig die Spannung leicht zusammenbricht.
ja räumlich so dicht an den Controller und an das Funkmodul. Der Sinn von diesen Abblock- oder Stützkondensatoren liegt darin, dass auch bei der CMOS-Technologie im Umschaltmoment für eine ganz kurze Zeit beide Transistoren eines Gatters leiten (solch ein Controller hat ein paar Tausend davon). Der Stützkondensator übernimmt in diesem Fall die kurzzeitig die Stromversorgung und verhindert so, dass irgendwelche bösen Sachen passieren.


Oder müssen noch wo anders eine paar von diesen 100nF-Kondensatoren hin?
zu viel können eigentlich nicht schaden, aber zwei dürften hier vielleicht reichen.


Wie ich annehme, müssen das dann auch ungepolte Kondensatoren sein.
die 100nF typen sollten keram. Kondensatoren sein und damit ungepolt.


D. h. ein Elko lädt sich ja solange auf bis nichts mehr reingeht und dann ist das gute Stück nicht mehr leitend, d. h. der Kontakt wird geöffnet. Die ungepolten dagegen laden sich lassen den Strom aber auch wenn sie voll sind fließen und können sich auch in jede Richtung wieder entladen, oder irre ich mich?
Ja.

Guck dir mal die Grundlagen zu Kondensatoren z.B. im Elektronik-Kompendium http://www.elektronik-kompendium.de an. Ein Kondensator ist ein Kondensator, das hat erst mal nichts mit der Bauart zu tun. Große Kapazitäten lassen sich halt wirtschaftlich als ELKO fertigen. Und damit kommen halt die zusätzlichen Eigenschaften (polarität beachten, sonst Zerstörung usw.) hinzu.


Und was hat es mit den Elkos an dem Spannungsregler auf sich?? Kannst mir da bitttteee noch ein bisschen mehr schreiben? Danke :)!
ja, sowohl am Eingang als auch am Ausgang des Spannungsreglers (7805?) einen Elko 30-100uF vorsehen.


Was sind EMV-Gründe?
Elektromagnetische Verträglichkeit, also dass die Schaltung nicht mehr Störstrahlungen verursacht als zulässig.

Viele Grüße
Jörg

luma
11.10.2005, 16:12
VIELEN DANKE erstmal 8)! Ich schau mir jetzt noch die folgende Adresse an http://www.elektronik-kompendium.de/ . Aber auf jeden Fall mal vielen Dank. Werd dann mal am Wochenende zum nächsten Elektroladen gehen und dort ein bisschen gruschteln.

Schönen Abend noch :),
Lutz

luma
13.10.2005, 13:23
Hio. Jetzt hab ich aber doch noch ne Frage: Anscheinend kann die Platine RN-Funk kein ER900TRS aufnehmen? Warum nicht? Ist doch genau gleich wie ER400TRS nur eben mit ner anderen Frequenz...

Joerg
13.10.2005, 14:25
Hallo Lutz,

ich wüsste nicht warum das nicht gehen sollte, bin aber kein RN-Funk Experte.

Viele Grüße
Jörg

luma
13.10.2005, 20:28
Danke, das hab ich nämlich auch gedacht.

Hach, jetzt hab ich aber noch ne Frage O:). Woher weiß eigentlich ein Transmitter an welches Modul es funken muss, bzw. woher weiß ein Resceiver was er empfangen soll. Du hast ja gesagt, dass macht das Modul automatisch?! Muss man hier noch doch ein bisschen konfigurieren (ID, ...)? Ich hab nämlich vor mehere Zeitmessungen meherer unterschiedlicher Geräte parallel durchzuführen. Mein Basissystem soll dann via Funk alle weiteren Messgeräte erkennen...

Joerg
14.10.2005, 09:31
Hallo Lutz,


Hach, jetzt hab ich aber noch ne Frage O:). Woher weiß eigentlich ein Transmitter an welches Modul es funken muss, bzw. woher weiß ein Resceiver was er empfangen soll. Du hast ja gesagt, dass macht das Modul automatisch?!
Naja bis jetzt war ja immer von eine Peer2Peer Verbindung die Rede, das heißt 1 Sender, 1 Empfänger.
Wenn da jetzt noch ne Subadressierung hinzukommt, wird's natürlich komplizierter.
Fakt ist, die Generation-1 konnten das definitiv noch nicht, wenn ein Sender Daten geschickt hat, kamen die bei allen in Reichweite befindlichen Empfängern auch an und wurden als gültig erklärt, sofern die CRC stimmte.
Bei den neuen Generation-2 Modulen gibt es dafür laut Datenblatt eine Data-ID, sowas wie eine SubNetz-Adresse. Bislang sind die genauen Specs dafür aber noch nicht veröffentlicht, lediglich die "offizielle" Parametriersoftware bietet in den erweiterten Einstellungen die Möglichkeit, diese ID vorzugeben. Inwieweit dieses Feature dann funktioniert und nutzbar ist, entzieht sich meiner Kenntnis.


Ich hab nämlich vor mehere Zeitmessungen meherer unterschiedlicher Geräte parallel durchzuführen. Mein Basissystem soll dann via Funk alle weiteren Messgeräte erkennen...
Also ich hatte vor einiger Zeit (noch Generation-1 Module) der hiesigen TU für ihre Fußballroboter folgendes Vorgehen vorgeschlagen, was die auch erfolgreich umgesetzt haben. Es gibt generell nur Broadcast-Messages. Wenn ein spezieller Teilnehmer erreicht werden soll, gibt es im Nutzdatenstrom reservierte Adressfelder für Source und Target, so dass die Empfängersoftware immer rauskriegen kann, ob das Paket für einen bestimmt ist, oder nicht.

Viele Grüße
Jörg

luma
14.10.2005, 21:32
Also ich hatte vor einiger Zeit (noch Generation-1 Module) der hiesigen TU für ihre Fußballroboter folgendes Vorgehen vorgeschlagen, was die auch erfolgreich umgesetzt haben. Es gibt generell nur Broadcast-Messages. Wenn ein spezieller Teilnehmer erreicht werden soll, gibt es im Nutzdatenstrom reservierte Adressfelder für Source und Target, so dass die Empfängersoftware immer rauskriegen kann, ob das Paket für einen bestimmt ist, oder nicht.


Sei mir nicht böse, aber ich glaube ich hab das net ganz verstanden... Ich versuch das mal zu interpretieren.



Es gibt generell nur Broadcast-Messages.

Also bei Funk kanns nur "Funkmitteilungen". So hab ich jedenfalls "Broadcast-Messages" verstanden. Wenn ich das jetzt richtig verstehe, schickt man eine eindeutige Adresse. Nur das Modul mit dieser Empfangsadresse verwirft die empfangenen Daten dann nicht. Aber eigentlich kann das ja net funktionieren. Wenn ich erst ein Byte mit der Adresse schicke und dann weitere Bytes woher sollen dann die anderen Empfänger wissen ob das jetzt an sie ist oder nicht UND woher wüsste der richtige Empfänger das die Daten auch vom richtigen Sender sind??
Schreib mir doch bitte ein bisschen mehr. Ich weiß ich nerv aber irgendwie muss man's lernen und mich interessiert das jetzt halt brennend O:) O:)!

Joerg
17.10.2005, 14:57
Hallo Lutz,


Wenn ich das jetzt richtig verstehe, schickt man eine eindeutige Adresse. Nur das Modul mit dieser Empfangsadresse verwirft die empfangenen Daten dann nicht. Aber eigentlich kann das ja net funktionieren. Wenn ich erst ein Byte mit der Adresse schicke und dann weitere Bytes woher sollen dann die anderen Empfänger wissen ob das jetzt an sie ist oder nicht UND woher wüsste der richtige Empfänger das die Daten auch vom richtigen Sender sind??
Obige Lösung funktioniert so wie beschrieben. Man hat halt einen etwas größeren Protokolloverhead (zusätzliche Adressinfos) und muss sich um manche Sachen selber kümmern, aber es geht.


.... irgendwie muss man's lernen und mich interessiert das jetzt halt brennend O:) O:)!
ganz genau, nur kann ich dir die Zeit sich da reinzudenken, einzuarbeiten und eigene Versuche zu starten nicht ersparen.

Auf konkrete Fragen gibts ne konkrete Antwort, das ist klar. Ich habe dir für das komplexe Projekt auch einen Lösungsansatz gegeben.
Mehr ist in diesem Rahmen nicht machbar.

Viele Grüße
Jörg