mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS485 stört Atmega


Autor: Josef Öttl (josef-muc)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo RS485-Atmel Spezialisten,
ich bin momentan dabei für meine Gartenbahn ein paar Weichen über einen
Atmega32 anzusteuern. Das Protokoll basiert auf RS485 mit 62500 baud,
9N1. Als Treiber verwende ich einen Max485. Programmiert ist es mit
Bascom mit den Befehlen Inputbin Var bzw. Printbin Var. Mein Testaufbau
funktioniert soweit einigermassen, jedoch stelle ich fest, dass von Zeit
zu Zeit mein Atmega offensichtlich selbständig resetet bzw.
unkontrollierte Aktionen durchführt. Stecke ich den Bus ab, ist das
Problem beseitigt. Habe bereits versuchsweise auf Interruptsteuerung
umgestellt. Hier wird aber das Ganze noch extremer. Ich muss noch
hinzufügen, dass der Master(Zentrale) kontinuierlich Daten sendet. Hat
jemand eine Vermutung wo hier der Fehler liegen könnte.

Josef

Autor: mischa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo

habe mir weder den source-code angeschaut, noch kenne ich mich mit
atmega aus. habe aber einige erfahrung mit rs485 und pic.

ich würde empfehlen als erstes die rs485 daten welche beim slave
ankommen anzuschauen. am besten mit einem terminal programm auf dem pc,
z bsp docklight. die daten müssen auf rs232 gewandelt werden. entweder
mit max232 oder ttl-pegel direkt an pc sollte auch funktionieren
somit siehst du ob der fehler von der übertragung kommt (was ich eher
glaube) als vom programm

wenn es die kabelstrecke ist : was für kabel sind drin, impedanz,
länge? hast du terminator widerstände drin, grösse?

viel erfolg

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Block-Kondensatoren am Controller?
Liefert die Stromversorgung genug Strom?

Ich habe mir das Programm auch nicht angeguckt, vermute aber auch eher
ein Schaltungsproblem.

Autor: topla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf jeden Fall ist die Wartezeit (150ms) nach dem Senden viel zu lang.
Damit rechnet die Zentrale nicht und die nächsten Sendeversuche dürften
gegen den Baum laufen. Frage nach dem Senden des letzten Bytes den
Status ab und wenn senden fertig, sofort Sender ausschalten.

Thomas

Autor: conrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vermute auch, daß Abblockkondensatoren helfen würde. Das Resetverhalten
zeigt, daß die Versorgungsspannung zu stark absinkt. Hast du R und C am
Reseteingang?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist der C am Reset-Pin nicht ein alter Zopf aus der Zeit, wo die AVRs
noch kein BOD hatten?

...

Autor: Niels Huesken (monarch77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich an Eisenbahnen, Weichen und lange Gleise denke, denke ich auch
an wahnsinnige Induktionsspitzen und nicht filterbare Störspannungen.
Das da der MC etwas ins trudeln gerät, verwundert mich überhaupt
nicht.

Ich empfehle eine galvanische Trennung der Schaltung z.B durch
Optokoppler.

Autor: topla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Monarch77:
Die Rede ist hier von einem Eingabebus, der zwischen der
Digitalzentrale und den Handgeräten besteht. Geht so aus der Frage
nicht hervor, aber der Kontext der Lenz-Steuerung ergibt das.
Störungen dürften da nicht die große Rolle spielen, allerdings hat auch
Lenz in den RS-485-Eingangsleitungen A und B irgendwelche Filter sitzen,
ich konnte die Bauelemente aber noch nicht identifizieren.

@josef-muc:
Speist Du den ATMega aus dem LMAB-Bus? Dann beobachte mal die 12V des
LMAB-Busses. Kann sein, die Zentrale nimmt die 12V weg (Reset für die
Eingabegeräte?), vielleicht immer dann, wenn sie meint, daß auf dem Bus
irgendwas passiert ist (misslungene Zugriffe?), was nicht anders zu
regeln ist.

Thomas

Autor: conrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@...HanneS... Lux (HanneS)

Wenn er sagt, er hat Resetverhalten... kann er es doch probieren, weiß
ja keiner ob er BOD deaktiviert hat.

Autor: Josef Öttl (josef-muc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo meine Spezialisten.
Der Reihe nach mein momentaner Hardwareaufbau:
-Verbindungskabel ist Telefonkabel mit RJ-Stecker. Länge ca. 1,0 m
-Kein Abschlusswiderstand
Auf dem Testboard in der A/B Leitung zum RS485 Treiber je ein 100 Ohm
Widerstend in Reihe sowie je eine Z-Diode mit 7.5 Volt gegen Masse.
(Identisch mit meiner Lenz-Handsteuerung LH30 bzw. LH100).
RO/DI gehen direkt zum Atmega RX/TX-Eingang des Atmega-Uarts.
RE/DE gehen auf den Port d.4 und werden beim Senden auf +5V geschaltet.

Mein Atmega ist mit einer getrennten Spannungsversorgung gespeist und
mit einem 5V Spannungsregler geregelt. Am gleichen  Pfad hängt auch der
Max485 sowie das Display. Später will ich jedoch die LM-Leitungen der
Zentrale verwenden.
Mit einem Multimeter messe ich ca. 4,85 V DC. Schwangt geringfügig
zwischen 4.8 und 4.85 Volt
Blockkondensatoren habe ich momentan keine vorgesehen.
Störungen von extern scheiden aus, da die RS485 Verbindung nur zwischen
Zentrale und meiner Steuerung besteht. Die
Weichenschaltung erledigt die Zentrale und ist vollkommend getrennt
vom RS485.
@tobla: Wir hatten ja schon ein paar mal Kontakt. Die Wartezeit nach
dem Senden hat sich bei mir als OK erwiesen. Könnte diese ja vermutlich
noch nach unten korrigieren. Warten bis Sendepuffer leer habe ich
versucht. Die Zentrale brachte dabei aber jedesmal die Rückmeldung
"Übertragungsfehler".
Ich werde jetzt mal meine Spannungsversorgung überprüfen und am
RX/TX-Eingang des Atmels Blockkondensatoren einbauen.
Ich vermute ebenfalls das es an der Spannungsversorgung liegt.
Ich werde mich nach dem Umbau wieder melden.
Grundsätzlich möchte ich das ganze ja mit dem Empfangsinterrupt
steuern, da ich ja die Adressfilterung vornehmen muss. Mit Inputbin
ist dies nicht möglich, da ich keinen Zugriff auf das RXB8 Bit habe.

Josef

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Blockkondensatoren gehören an die Stromversorgung des AVRs und nicht an
RX/TX. Blockkondensatoren sind unbedingt erforderlich, besonders, wenn
die Stromversorgung über längere Leitungen erfolgt.

...

Autor: topla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe jetzt gerade keinen Handregler zum Zerlegen hier, aber 100
Ohm-Widerstände in den A-/B-Leitungen würde ich bezweifeln wollen. Aber
wenn Du in einem Handregler schon nachgesehen hast... Beim GZIO-Bus
(9600bd) sitzen da irgendwelche Datenfilter mit ca. 13 Ohm. Und die
A-/B-Leitungen immer schön verdrillen. Und der HanneS hat es schon
geschrieben, Blockkondensatoren so dicht wie möglich an die
Spannungsversorgungseingänge des AVR, aber nicht an die
Datenleitungen!

Thomas

Autor: Josef Öttl (josef-muc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,
ich habe meinen Handregler LH30 zerlegt und mal geschaut, was Lenz so
eingebaut hat. Hier sind wirklich je ein 100 Ohm Widerstand sowie zwei
Z-Dioden verbaut. Vermutlich Überspannungsschutz. Lenz verwendet
normales Telefonkabel (rund bzw. als Spiralkabel). Die Leitungslänge
ist ja nicht besonders lang. Beim RS-Bus schreibt er eine verdrillte
Leitung vor. Abschlusswiderstände sind laut Lenz nicht unbedingt
erforderlich.
Das mit den Blockkondensatoren habe ich wohl falsch verstanden.  Bei
meinem Demoboard ist lediglich ein Elko mit 470 mF vor dem
Spannungsreglelr-IC. Zwischen VCC und GRD direkt am Atmega befindet
sich ein Tantal mit 0,1 mF. Wie gross und wie sollten die
Blockkondensatoren eingebaut sein?

Josef

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
100nF (100 Nanofarad) Keramik
Die sind als SMD nicht größer als ein Zuckerkorn, vielleicht sind sie
ja doch da und du hast sie nur übersehen...

...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.