Hast du das schon mal ohne Kabel, also nur mit ganz kurzer Leitung probiert?
Die Spannung geht in welche Richtung und ist gut abgeblockt?
Hast du das schon mal ohne Kabel, also nur mit ganz kurzer Leitung probiert?
Die Spannung geht in welche Richtung und ist gut abgeblockt?
Eine normale Leitung, also 2 Leiter etwa in einem Telefonkabel hat etwa 100 Ohm Wellenwiderstand. Der Abschluss um Reflexionen zu vermeiden wäre damit 100 Ohm - allerdings ist das für den AVR eine zu große Last, und mit Abschluss auch auf der Senderseite hätte man zu wenig Amplitude. Eine Möglichkeit wäre den Abschluss nur auf der Empfängerseite und auch nur AC gekoppelt für die höheren Frequenzen (so ab etwa 1 MHz) zu machen. Das wäre dann ein Widerstand von etwa 100-150 Ohm und ein Kondensator von 1 - 5 nF in Reihe.
Ein Alternativ wäre es das Signal gleich auf der Senderseite so langsam zu machen, dass erst gar keine so steilen Flanken auftreten: also etwa 1 K als Serienwiderstand und dazu ein Kondensator von vielleicht 10-50 nF nach Masse - der kann auch gut auf der Empfängerseite sein. Wobei ggf. auch ein RC Filter auf der Empfängerseite hilfreich wäre um kurze Störungen die erst auf der Leitung reinkommen zu reduzieren. Also etwa 100 Ohm noch auf der Empfängerseite in Reihe.
Die Beschriebenen Störungen müssen auch nicht von Reflexionen kommen. Die Gefahr ist vor allem das kurze Störungen auf der Taktleitung die Zählung durcheinander bringen. Da ließe sich relativ gut in Software abfangen: wenn das Datenbit ausgewertet wird, muss die Taktleitung noch auf High sein, sosnt war es eher nur eine Kurze Störung auf der Leitung. Vor allem wenn man den Niderohmigen Abschluss wählt hat man auch ein Übersprechen zwischen den beiden Datenleitungen über die gemeinsame Masse. Da wäre es ggf. sogar von Vorteil das Signal nicht über 2 Leitungen sondern etwa als 1-Wire Protokoll über unterschiedlich lange Pulse (also etwa 50 µs bzw. 200 µs ) zu senden. Das erfordert etwas mehr Aufwand beim Empfänger, ist aber bei der geringen Geschwindigkeit kein Problem.
Hallo,
ich muss mich entschuldigen. Es war tatsächlich noch ein Software-Fehler auf der Empfängerseite. Der Code dazu ist keine 10 Zeilen lang und sehr überschaubar. Und wurde natürlich 1000x von mir überprüft. Trotzdem sieht man oft den Wald vor lauter Bäumen nicht.
Ich habe ein uraltes Oszi zur Verfügung, das hätte ich als nächstes rausgekramt, um mir das Signal mal anzuschauen udn am Busabschluß zu experimentieren. Aber vorher wollte ich mir Lösungen und Vorschläge von euch einholen, damit ich grob die Richtung weiß, in die ich suchen muss.
Aber nun läuft es ja zum Glück einwandfrei.
Das mit den 100 Ohm habe ich mir mittlerweile auch schon "ergoggelt", da dies gerne als Abschlußwiderstand für Flachbandleitungen genommen wird. Ich denke mein Leiterabstand im Kabel ist ähnlich. Das meine 4k7 völlig falsch waren leuchtet mir jetzt ein. Ich hatte bei den 100R aber Bedenken, dass der AVR das treiben kann und mir schon Datenblätter zu Bustreibern angesehen. Zum Glück ist das jetzt alles nicht mehr notwendig.
Nur der Vollständigkeit halber, weil es gefragt wurde: Die 5V Versorgung kommen vom Empfänger und sind auf der Sender-Seite noch mal mit 10µF gepuffert; außerdem natürlich die obligatorischen 100nF am ATmega8. Außer dem Controller gibt es nur 4 Potis mit 10k an Last. Die 10µF sollte also ausreichend sein.
Viele Grüße
Andreas
Lesezeichen