Einzelnes Byte von atmega8 zu atmega8 über langen Kabelweg senden?

#1487916
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
Gast #1487924
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
Gast #1487925
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.
Gast #1487936
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...
#1487952
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
Gast #1487953
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.
Gast #1487955
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.
Gast #1487966
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.
Gast #1487971
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
Gast #1488183
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.

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