Forum: Mikrocontroller und Digitale Elektronik Kommunikation über 100m


von Tobi (Gast)


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?

von Falk B. (falk)


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.

von Karl H. (kbuchegg)


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.

von Tobi (Gast)


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?

von Magic S. (magic_smoke)


Lesenswert?

Kannst Du Dir z.B. bei DMX-512 abschauen. Da sind 100 Meter gar nichts 
und die Datenkabel liegen oft direkt neben Lastkabeln zu gedimmten 
Lampen mit etlichen 100kW Leistung. Wenn Du dann noch geschirmte Kabel 
und eine Fehlererkennung verwendest, sollte das sehr zuverlässig werden.

von Karl H. (kbuchegg)


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.

: Bearbeitet durch User
von Thomas Z. (tezet)


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

von m.n. (Gast)


Lesenswert?

Tobi schrieb:
> Gibt es eine drahtlose Möglichkeit?

Wenn ein Kabel verlegt werden kann, nimm ein Kabel; zwei Adern + Schirm 
reichen für eine Duplex-Übertragung aus.

von Tobi (Gast)


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?

von Frank (Gast)


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.

von Karl H. (kbuchegg)


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.

: Bearbeitet durch User
von m.n. (Gast)


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

von Tobi (Gast)


Lesenswert?

Danke für die ausführlichen Informationen.

Werde mir ein passendes Datenformat überlegen und dann einfach 
ausprobieren.

von Karl H. (kbuchegg)


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.

von Bränko (Gast)


Lesenswert?

Hi Tobi,

wie wäre es mit Funk? Pollin hat z.B. ne Menge Module an die man via SPI 
dran geht.

Beitrag "RFM12 - Funkmodul"

Arduino Libs lassen sich auch dazu finden.

Ansonsten wie hier schon gesagt wurde: einer ist der Chef alle anderen 
zeigen nur an.

Bestes,
Bränko

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.