Forum: Mikrocontroller und Digitale Elektronik Einzelnes Byte von atmega8 zu atmega8 über langen Kabelweg senden?


von Phillip P. (phillip)


Lesenswert?

Hallo,

ich bin ein blutiger µC-Anfänger (bzw. hatte noch nie einen µC in der 
Hand, aber meine Bestellung ist unterwegs ;-)), und bin dabei 
Vorüberlegungen für mein "Jungfern-Projekt" anzustellen bzw. mich 
einzulesen.

Wenn ich das Projekt kurz schildern darf:

Ich bin Gitarrist und will einen Fußschalter (mit 8 Tastern) bauen, der 
mir über ein 5-10m Kabel ein Relais-Board ansteuert, welches 
verschiedene Gitarren-Effektgeräte aus dem Signalweg nimmt bzw. 
reinschaltet.

Im Fußschalter soll ein atmega8 sein, der einerseits meine 
Schaltzustände "toggelt" (und entsprechend 8 Status-LEDs ansteuert), 
sowie die 8-bit-Zahl, die den Zustand des Fußschalter repräsentiert, bei 
jeder Änderung über das lange Kabel an den zweiten atmega8 sendet. 
Programmieren will ich (erst mal) mit Bascom.

Meine Frage:

Welche Schnittstelle / welches Protokoll soll ich für die Übertragung 
nehmen?

(ideal wäre, wenn ich mit einem 5-adrigen Kabel auskommen könnte, 2 
Leitungen sind bereits für Masse und Stromversorgung vorgesehen)

Ich hatte eigentlich TWI/I2C im Auge, aber in einem Beitrag stand, diese 
wäre für lange Verbindungswege nicht geeignet (?). Warum ist das so - 
wegen der möglichen Einstreuungen?

Ich habe die Aufgabe, ein Byte über ein 5-10m Kabel zu schicken, wohl 
etwas unterschätzt :-/. Kann mir da jemand Tipps geben, damit ich mein 
neu gewonnenes Hobby nicht gleich wieder frustriert an den Nagel hänge 
;-)?

Danke und lg,
Phil

von Klaus W. (mfgkw)


Lesenswert?

RS232 ist dafür geeignet

von gast (Gast)


Lesenswert?

da auf der bühne doch einige geräte sind und kabel über kabel rumliegen 
..

wäre vlt eine RS485 verbindung im halbduplexmode was
man brauch 2 adern und vlt nen schirm ..
man könnte quasi eine XLR strippe verwenden die eh überall da rumliegt 
^^

wenn es nur die 2 teilnehmer sind .. is das gesammte protokoll sehr 
einfach


serielle schnittstelle mit max485 treiber
in den senderoutinen den sendepin aktivieren und gut is


bei 9600baud sind so ohne was mehre hundert meter möglich

von Michael M. (Gast)


Lesenswert?

Phillip P. schrieb:
> Ich bin Gitarrist und will einen Fußschalter (mit 8 Tastern) bauen, der
> mir über ein 5-10m Kabel ein Relais-Board ansteuert, welches
> verschiedene Gitarren-Effektgeräte aus dem Signalweg nimmt bzw.
> reinschaltet.
schönes projekt!

> Welche Schnittstelle / welches Protokoll soll ich für die Übertragung
> nehmen?
das protokoll ist ja softwareseite - das musst du dir selber überlegen.
mein tipp wäre, keins zu verwenden und einfach jedes byte als daten zu 
verwenden.


> Ich hatte eigentlich TWI/I2C im Auge, aber in einem Beitrag stand, diese
> wäre für lange Verbindungswege nicht geeignet (?). Warum ist das so -
> wegen der möglichen Einstreuungen?
alles richtig.
ich würde dir eine differentielle übertragung empfehlen. rs422 zum 
beispiel.
differentiell heißt, dass zum eigentlichen signal noch das logisch 
inverse parallel mitübertragen wird.
sprich: eine 1 ist auf leitung A 5V und auf leitung B 0V.
das nutzsignal entsteht dann aus der wortwörtlichen differenz beider 
signale. dabei wird ausgenutzt, dass sich eingekoppelte störungen (R) 
auf leitung A und B gleich auswirken.
du hast also A+R und B+R. bei der subtrahierung (A+R)-(B+R) verschwindet 
die störung R wieder. so viel zum theoretischen exkurs.
du brauchst also 2 differentiell-wandler wie z.b. den max485 und 
entweder 2 oder 4 leitungen - je nachdem, ob du gleichzeitig senden und 
empfangen willst, oder nicht.

von Thorsten (Gast)


Lesenswert?

...und wenn man sich etwas tiefer mit der Materie auseinandersetzt, 
stellt man fest, dass man 2 oder 4 Leitungen PLUS MASSE braucht. Beim 
Auswählen der Kabel beachten ;-)
Gruss,
Thorsten

von gast (Gast)


Lesenswert?

^^
naja 5 adriges XLR liegt auch meist in der kiste  :P

von Tim (Gast)


Lesenswert?

Würde auch zu RS485 raten. Die Treiber sind auch nicht
teurer als RS232.
Als Kabel reicht Klingeldraht völlig aus.

TWI hat 4,7K gegen +. Das ist nicht besonders resistent gegen
Störungen von außen...

von Michael M. (Gast)


Lesenswert?

Thorsten schrieb:
> stellt man fest, dass man 2 oder 4 Leitungen PLUS MASSE braucht. Beim
er schreibt, dass spannung darüber übertragen wird. ich geh davon aus, 
dass masse da dabei ist =)

von gast (Gast)


Lesenswert?

und als protokoll

entweder  datenbyte + CRC
oder 2x das selbe datenbyte  hintereinander
mehr aufwand würde ich dort nicht betreiben

von Phillip P. (phillip)


Lesenswert?

Erst mal vielen Dank für die schnellen Antworten!!!
Ist das normal hier im Forum ;-)?

Ich werde mir also mal die vorgeschlagenen RS-Specs genauer ansehen.

Das heißt also ohne zusätzlichen Treiber ist das nicht umsetzbar?

Ich hatte als Kabelverbindung ein Midi-Kabel (5-polig) geplant. Ich 
möchte wie gesagt über dieses Kabel auch den im Fußschalter befindlichen 
mega8 und die LEDs speisen.

@Michael: Wenn dich das Projekt interessiert können wir ja in Kontakt 
bleiben, dann kann ich dir meine Resultate zukommen lassen. Für die 
Relais-Geschichte habe ich geeignete Schaltpläne für das Entprellen der 
Relais etc. gefunden (ist ja gar nicht so unheikel bei 
Gitarren-Signalen).

zu "differentielle übertragung": hmmm, das erinnert doch irgendwie an 
die Übertragung von Mikro-Pegeln über XLR? Ist ja dasselbe Prinzip...

Zum Senden/Empfangen: Eigentlich ist die Verbindung nur in eine Richtung 
(nennt man das Halb-Duplex?) - d.h. ich habe eine Chance mit 2 Leitungen 
+ Masse auszukommen, richtig?


HMMM, ok, danke für die Impulse - wenn noch mehr kommen, bin ich auch 
nicht böse :-).

LG! Phillip

von Experte (Gast)


Lesenswert?

> und als protokoll
>
> entweder  datenbyte + CRC

Wozu? Viel zu kompliziert!

Einfach zyklisch übertragen. Du willst ja nur von A nach B ein Byte 
übetragen.

Am einfachsten serielle Schnittstelle, z.B. mit 300 Baud, damit kannst 
Du 30 mal die Sekunde ein Byte übertragen. Das machst Du aber nur z.B. 
15 mal in der Sekunde, dann gibt es auch keine Probleme falls der 
Empfänger mal aus dem Tritt kommt.

In der Epfangssoftware kannst Du noch einen "Filter" einbauen z.B. nur 
wenn ein Byte zwei oder dreimal hintereinander gleich empfangen wurde, 
wird wirklich umgeschaltet. Damit bist Du sehr immun gegen Störungen.

Und bei 300 Baud, 15 Bytes die Sekunde reicht sogar ein einfacher 
Controller-Pin unsymetrisch als Ausgang. Ausgang am Sender und Eingang 
am Empfänger z.B. mit 470 Ohm in Serie schützen.

Das dürfte für den Anfang mehr als ausreichend sein.

von flotter dreier (Gast)


Lesenswert?

>entweder  datenbyte + CRC
>oder 2x das selbe datenbyte  hintereinander
>mehr aufwand würde ich dort nicht betreiben

wennschon mehrfach, dann 3-fach. von zweifach hat man garnix, weil man 
evtl. nicht weiß, welches der beiden nun falsch ist.

von Phillip P. (phillip)


Lesenswert?

@experte:

OK, danke für den Tipp - klingt einfach ;-).


> Ausgang am Sender und Eingang
> am Empfänger z.B. mit 470 Ohm in Serie schützen.

Dumme Frage: D.h. der Widerstand kommt jeweils zw. Pin am Controller und 
der Leitung? Wovor schützt dieser Widerstand? Danke.

von Michael M. (Gast)


Lesenswert?

der kommt nirgens hin =)
nimm lieber die "handfeste" variante mit dem differentiellen treiber.

von Experte (Gast)


Lesenswert?

> Dumme Frage:

Gibt es nicht.

>  D.h. der Widerstand kommt jeweils zw. Pin am Controller und
> der Leitung?

Ja.

> Wovor schützt dieser Widerstand?

Am Ausgang schirmt der Widerstand die Kabelkapazität ab und macht das 
Signal auf dem Kabel "langsamer". Das verhindert Über- und 
Unterschwinger und schützt den Ausgang vor Überlastungen.

Am Eingang (und am Ausgang) begrenzt der Widerstand, falls doch Über- 
oder Unterschwinger auftreten oder Falls Störungen einstrahlen, die 
Ströme über die Schutzdioden auf erträgliche Größen.

von gast (Gast)


Lesenswert?

ich finde gerade hier sollte man nicht sparen !!
aufer bühne soll viel passieren ... aber die hardware muss sicher sein

ich würde beim max485 bleiben und gut
das ding isn 8pinner
alternativ SN75176 .. is baugleich zum max485 aber billiger


der portpin geht auch ... wenn aber dort störungen reinkommen ..
geht die sucherei los

auf kurzen strecken und zum testen kann man sowas machen ..
aber ansonst wenn es ein fester berieb sein soll ...
immer über einen treiber

von H.J.Seifert (Gast)


Lesenswert?

Was auch sicher funktioniert - TTY-Schnittstelle mit 20mA.
Direkte Kopplung ist wirklich nicht zu empfehlen, wird bei der 
Leitungslänge aber auch funktionieren.
Im Bühnenbetrieb ist mit heftigen Störungen zu rechnen, zyklische 
Übertragung würde das aber überdecken.
Also: RS485.

von Thomas B. (escamoteur)


Lesenswert?

Die Treiberbausteine sind ja auch nicht furchtbar teuer.

Wenn Du später mal auf Drahtlosumsteigen willst, schau Dir mal die xBee 
Module an.

Gruß

Tom

von Phillip P. (phillip)


Lesenswert?

Danke für den Tipp mit xBee.
Sind aber relativ teuer, diese Module...?

Ich hab mir schon Threads zu den Pollin-Billig-Funkmodulen angesehen, 
vielleicht versuche ich es später mal damit.

von Thomas B. (escamoteur)


Lesenswert?

Die xBees kosten so um die 20€ und ist eben zigBee standard. Ich 
sicherlich sicherer als die Billig Funkmodule.

Gruß

Tom

von Karl H. (kbuchegg)


Lesenswert?

Ganz ehrlich:
Für Bühnentauglichkeit würde ich einen großen Bogen um Funk machen.

In Abwandlung des Sprichworts:
Wer WLAN kennt nimmmt Kabel

von Thomas B. (escamoteur)


Lesenswert?

Na zigBee ist ja im gegensatz zu WLAN genau für zuverlässigen Einsatz 
bei kleinen Datenmengen konzipiert worden.

Ich baue gerade an einer Bühneneffektsteuerung für meine Auftritte mit 
zigBee Modulen.

Gruß

Tom

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.