Kommunikation über 100m

Gast #4103275
Lesenswert?

Hallo,

ich befinde mich gerade in den Vorüberlegungen zu einem neuen Projekt.
Hierbei soll es zwei Anzeigen mit LED-Zahlen geben, welche eine zuvor 
eingestellten Zeit runterzählen (z.B. 120 sec auf null).
Das ganz wird von einem Steuergeät aus gesteuert. Wobei dieses den 
Startbefehl und die maximale Zeit vorgibt. Jede Anzeige und das 
Steuergeät soll ein eigenen Mikrocontroller bekommen. Die Anzeigen und 
das Steuergerät befinden sich ca. 60m - 100m voneinander entfernt.

Mein aktuelles Problem liegt darin, wie ich die Kommunikation zwischen 
den einzelnen Einheiten hinbekommen soll.
Kann ich da die USART-Schnittselle verwenden? (ggf. mit Pegelwandler)
Wie kann ich die beiden Anzeigen dazu bringen, dass diese geleichzeitig 
anfangen runterzuzählen? (maximale Differenz sollte unter 100 ms liegen)
Gibt es eine drahtlose Möglichkeit?

Jemand eine Idee?
#4103289
Lesenswert?

@ Tobi (Gast)

>das Steuergerät befinden sich ca. 60m - 100m voneinander entfernt.

Nicht sooo weit.

>Kann ich da die USART-Schnittselle verwenden? (ggf. mit Pegelwandler)

Kann man.

>Wie kann ich die beiden Anzeigen dazu bringen, dass diese geleichzeitig

einfach gleichzeitig den befehl dazu senden.

>anfangen runterzuzählen? (maximale Differenz sollte unter 100 ms liegen)

Eine Ewigkeit für einen Mikrocontroller.

>Gibt es eine drahtlose Möglichkeit?

Sicher. Nimm eines der vielen Funkmodule ala Zigbee & Co.
Die kann man als drahtlosen UART betreiben.
#4103298
Lesenswert?

Tobi schrieb:

> Wie kann ich die beiden Anzeigen dazu bringen, dass diese geleichzeitig
> anfangen runterzuzählen? (maximale Differenz sollte unter 100 ms liegen)
> Gibt es eine drahtlose Möglichkeit?

Indem die Anzeigen ihrem Namen gerecht werden und genau (und 
ausschliesslich) das tun was ihr Name aussagt: anzeigen.
runterzählen tut die Zentrale und die teilt den Anzeigen mit, was sie 
anzuzeigen haben.

Es gibt nur einen Zeitzähler, daher kann auch nichts ausser Tritt 
geraten.
Gast #4103315
Lesenswert?

Karl Heinz schrieb:
> Indem die Anzeigen ihrem Namen gerecht werden und genau (und
> ausschliesslich) das tun was ihr Name aussagt: anzeigen.
> runterzählen tut die Zentrale und die teilt den Anzeigen mit, was sie
> anzuzeigen haben.

Wie sollte ich dann die Anzeige genau gestallten?

Habe ich da nur meine LED's drin und die bekommen parallel die Daten zum 
Anzeigen oder kann ich das auch serielle durch Bitschieben etc. lösen?
#4103325
Lesenswert?

Tobi schrieb:
> Karl Heinz schrieb:
>> Indem die Anzeigen ihrem Namen gerecht werden und genau (und
>> ausschliesslich) das tun was ihr Name aussagt: anzeigen.
>> runterzählen tut die Zentrale und die teilt den Anzeigen mit, was sie
>> anzuzeigen haben.
>
> Wie sollte ich dann die Anzeige genau gestallten?

So wie du das jetzt auch vor hast.
Da werkelt ein µC drinnen.
Aber der macht von sich aus gar nichts mehr ausser ständig auf die 
Zentrale zu hören, ob und was er anzuzeigen hat. Und genau das macht er 
auch.

> Habe ich da nur meine LED's drin und die bekommen parallel die Daten zum
> Anzeigen oder kann ich das auch serielle durch Bitschieben etc. lösen?

Wie hattest du es denn jetzt vor, das Innenleben zu gestalten?


Gewöhn dich an den Gedanken, einem µC auch scheinbar einfache und 
triviale Aufgaben anzuvertrauen. Es ist einfach oftmals die simpelste 
Lösung.
#4103329
Lesenswert?

Tobi schrieb:
> Wie sollte ich dann die Anzeige genau gestallten?
>
> Habe ich da nur meine LED's drin und die bekommen parallel die Daten zum
> Anzeigen oder kann ich das auch serielle durch Bitschieben etc. lösen?

Sende einfach den anzuzeigenden String "120"
Die Anzeige muss den Rest machen:
- eine 7-Segmentanzeige zeigt für eine "2" ein paar Segmente an
- eine 5x8-Punktmatrix-Anzeige schaltet die betreffenen LEDs die eine 
"2" bilden ein

Dann kannst Du auch später einen TFT-Monitor nachrüsten ...
Gast #4104086
Lesenswert?

Thomas Z. schrieb:
> Sende einfach den anzuzeigenden String "120"
> Die Anzeige muss den Rest machen:
> - eine 7-Segmentanzeige zeigt für eine "2" ein paar Segmente an
> - eine 5x8-Punktmatrix-Anzeige schaltet die betreffenen LEDs die eine
> "2" bilden ein

Hört sich ja relativ einfach an. Werde das soweit mal probieren.

Gibt es einen Richtwert welche Baudrate ich verwenden sollte?

Mein größten bedenken stecken aktuell im Siganlpegel. Reicht hier die 
TTL-Spannung vom Mikrocontroller aus oder brauche ich mehr?
Gast #4104100
Lesenswert?

>Mein größten bedenken stecken aktuell im >Siganlpegel. Reicht hier die 
TTL-Spannung vom >Mikrocontroller aus oder brauche ich mehr?

Definitiv nicht bei 100m.
Du brauchst auf jeden Fall einen Treiber.
Ich würde einen RS485 mit Twisted Pair Leitung nehmen.

Übertragungsrate gerade so schnell das du die benötigten Daten darüber 
übertragen bekommst.
Mehr ist nicht nötig und würde sich eher negativ auswirken.
#4104105
Lesenswert?

Tobi schrieb:

> Hört sich ja relativ einfach an.

'Einfach' ist immer relativ.

Wenn du in der Lage bist, deine ursprüngliche Lösungsidee umzusetzen, 
dann müsstest du auch diese umsetzen können. Die 'Zutaten' sind genau 
die gleichen, nur sind die Aufgabenstellungen etwas anders verteilt, was 
das Komplettsystem softwaremässig sogar einfacher macht, als dein 
ursprünglicher Ansatz.

> Gibt es einen Richtwert welche Baudrate ich verwenden sollte?

Man kann das natürlich ausrechnen, weil man ja berechnen kann, wie lange 
1 Zeichen af der UART bei einer bestimmten Baudrate braucht. Wenn dir 
gar nichts anderes einfällt, dann nimm einfach mal 9600 Baud. Das ist so 
ungefähr eine Standardbaudrate, bei der man als Mensch die Verzögerung 
vom Absenden eines Zeichens bis zum Empfang nicht mehr richtig wahrnimmt 
und mit der man schon recht weite Distanzen recht problemlos überbrücken 
kann. Deine 5 oder 6 Bytes flutschen da in 0 komma nix drüber.

> Mein größten bedenken stecken aktuell im Siganlpegel. Reicht hier die
> TTL-Spannung vom Mikrocontroller aus oder brauche ich mehr?

Bei 100m würde ich auf jeden Fall mal MAX232 einsetzen, also eine 
Standard-RS232 probieren. Ordentliche Leitungen vorausgesetzt kommt man 
mit 9600 ca 150m weit. Grössere Baudraten können funktionieren, wenn 
alles passt. Ist aber kein Pferdefuss, denn die Baudrate kann man ja im 
Programm einstellen und dann ganz einfach mal Versuche machen. :-)
Wenn du mit einer Standard-RS232 nicht weiter kommst, dann muss man auf 
differentielle Übertragung und Twisted Pair Kabel setzen. Aber bei 100m 
müsste es auch so gehen. Vor Jahren hab ich das mal auf ca. diese 
Distanz probiert und es hat keine Probleme gegeben.
Gast #4104107
Lesenswert?

Tobi schrieb:
> Hört sich ja relativ einfach an. Werde das soweit mal probieren.

Das ist auch etwas zu einfach. Die Zeichenkette verschickt man besser 
mit Startzeichen, Längenangabe, Prüfsumme und Endzeichen, damit sie der 
Empfänger nur anzeigt, wenn die Daten plausibel sind. Beispiel:
:l120pCR, wobei l=Anzahl Bytes, p=Prüfsumme und CR=Endzeichen sind.

> Gibt es einen Richtwert welche Baudrate ich verwenden sollte?

Bei 19200 Baud würde obige Nachricht in < 5 ms übertragen

> Mein größten bedenken stecken aktuell im Siganlpegel. Reicht hier die
> TTL-Spannung vom Mikrocontroller aus oder brauche ich mehr?

Du brauchst auf jeden Fall einen TX-Treiber, mit einem 
Abschlußwiderstand auf der Empfängerseite. Eine TI-Applikation empfiehlt 
130 Ohm und erreicht mit RS232-Bausteinen 300 m bei 19,2 kBd.
Quelle: Selected Interface Circuits Data Book, 1982
#4104154
Lesenswert?

Tobi schrieb:
> Danke für die ausführlichen Informationen.
>
> Werde mir ein passendes Datenformat überlegen und dann einfach
> ausprobieren.
1
S
2
120
3
119
4
118
5
117
6
116
7
...
8
003
9
002
10
001
11
000
12
E

nicht mehr Aufwand als notwendig. Der Satellit kann ja auch noch 
Plausibilitätscheck machen. Jede nächste Zahl muss um 1 kleiner sein als 
die vorhergehende. Mit den Ausnahmen natürlich, dass er nach einem Start 
erst mal eine grosse Zahl kriegt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren