Forum: Mikrocontroller und Digitale Elektronik Mehere AVR an USART funkionieren nicht mehr


von Tobi (Gast)


Lesenswert?

Bin gerade bei meinem ersten AVR-PRojekt, hab dabei für meine 
Modelleisenbahn ein Steuergerät für Weichen und Signale gebaut. Diese 
werden für jede Weiche/Signal verbaut und der passende Stellbefehl kommt 
vom PC über USART.

Die einzelnen Einheiten funktionieren einbahnfrei. Ich habe diese dann 
über eine Sternverdrahtung an einen MAX 232 und den PC angeschlossen. 
Ich brauche nur eine Kommunikation zwischen PC und Weiche.

Das ganze ging auch ganz gut, aber als ich ca. die 30 Weiche mit AVR 
angeschlossen habe ging die ganze Kommunikation nicht mehr. Entnehme ich 
den AVR wieder funktioniert alles wie bisher. Auch mit einem anderen AVR 
funktionier es leider immer noch nicht.

Was könnten die Probleme/Fehler sein und wie kann ich das lösen.

von Peter II (Gast)


Lesenswert?

Tobi schrieb:
> Die einzelnen Einheiten funktionieren einbahnfrei. Ich habe diese dann
> über eine Sternverdrahtung an einen MAX 232 und den PC angeschlossen.
> Ich brauche nur eine Kommunikation zwischen PC und Weiche.

wie hast du das genau gemacht? Bidirektionales Rs232 kann man nicht so 
einfach mit mehre Teilnehmer aufbauen.

von Ingo L. (corrtexx)


Lesenswert?

Tobi schrieb:
> Was könnten die Probleme/Fehler sein und wie kann ich das lösen.
Fan-out Problem?!
https://de.wikipedia.org/wiki/Fan-Out

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Offenbar kann der eine MAX232 nicht mehr als 29 AVRs mit Daten 
versorgen. Du verwendest also RS232, welches nur für eine 
Punkt-zu-Punkt-Verbindung gedacht ist, als Bus?!?

Zeig doch mal Dein Schaltbild dazu, damit wir nicht noch mehr durch die 
Glaskugel sehen müssen.

: Bearbeitet durch Moderator
von Ingo L. (corrtexx)


Lesenswert?

Frank M. schrieb:
> Du verwendest also RS232, welches nur für eine
> Punkt-zu-Punkt-Verbindung gedacht ist, als Bus?!?
Grundsätzlich funktioniert das auch, wenn er nur den Weichen Befehlen 
gibt und diese nicht antworten (also nur TXD).

Allerdings stellt sich mir die Frage, warum wurde kein I2C verwendet? 
Das ist doch genau dafür gedacht!

von Tobi (Gast)


Lesenswert?

Ingo L. schrieb:
> Allerdings stellt sich mir die Frage, warum wurde kein I2C verwendet?
> Das ist doch genau dafür gedacht!

Am Anfang erschien mir die Variante mit dem USART als die einfachere. Im 
Nachhinein sicher nicht. Jetzt ist aber einiges schon verbaut und würde 
gerne nicht wieder alles ausbauen.

Frank M. schrieb:
> Zeig doch mal Dein Schaltbild dazu, damit wir nicht noch mehr durch die
> Glaskugel sehen müssen.

Kommunikation sieht ungefähr so aus:




                  _______
                 |         |    |-----|AVR
                 |         |    |
PC mit RS 232----| MAX 232 |----|-----|AVR
                 |         |    |
                 |_________|    |-----|AVR

von Peter II (Gast)


Lesenswert?

Tobi schrieb:
> Kommunikation sieht ungefähr so aus:

das hilft wenig weiter, welche Leitungen genau?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Tobi schrieb:
> Kommunikation sieht ungefähr so aus:
>
>
>                   _________
>                  |         |    |-----|AVR
>                  |         |    |
> PC mit RS 232----| MAX 232 |----|-----|AVR
>                  |         |    |
>                  |_________|    |-----|AVR

Dann machs so:

                     _____
                    |         |    |-----|AVR
                    |         |    |
PC mit RS 232---+---| MAX 232 |----|-----|AVR
                |   |         |    |
                |   |_________|    |-----|AVR
                |
                |   _____
                |   |         |    |-----|AVR
                |   |         |    |
                +---| MAX 232 |----|-----|AVR
                    |         |    |
                    |_________|    |-----|AVR


Und denke daran, nicht mehr als 25 Stück an einen MAX232 zu hängen, 
damit es auch stabil läuft.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Ingo L. schrieb:
> Grundsätzlich funktioniert das auch, wenn er nur den Weichen Befehlen
> gibt und diese nicht antworten (also nur TXD).

Grundsätzlich aber nur bis zu einer bestimmten Anzahl von Empfängern, 
das Konzept ist nicht beliebig skalierbar.

> Allerdings stellt sich mir die Frage, warum wurde kein I2C verwendet?
> Das ist doch genau dafür gedacht!

Naja, I2C ist eigentlich für Kommunikation auf einer oder auch zwei 
Platinen innerhalb eines Gerätes gedacht. Ich schätze aber, dass der TO 
hier Strippen bis zu mehreren Metern hat. Jaja.... soll ja auch laufen, 
aber eigentlich ist auch I2C dafür nicht gedacht.

Das beste wäre hier wohl RS485, wobei es hier auch eine (physikalische) 
Grenze von Busteilnehmern gibt.

von Ingo L. (corrtexx)


Lesenswert?

Verbessert sich die Sache wenn du die Baudrate runter nimmst?

von Ingo L. (corrtexx)


Lesenswert?

Frank M. schrieb:
> Naja, I2C ist eigentlich für Kommunikation auf einer oder auch zwei
> Platinen innerhalb eines Gerätes gedacht. Ich schätze aber, dass der TO
> hier Strippen bis zu mehreren Metern hat. Jaja.... soll ja auch laufen,
> aber eigentlich ist auch I2C dafür nicht gedacht.
Man muss ja auch nicht mit MHzen über die Leitung tatken... Wenn man es 
etwas langsamer angeht gibts bei n paar Metern keine Probleme.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Ingo L. schrieb:
> Man muss ja auch nicht mit MHzen über die Leitung tatken... Wenn man es
> etwas langsamer angeht gibts bei n paar Metern keine Probleme.

Soll er jetzt 29 AVR-Module wegwerfen, alles in I2C umbauen, damit er 
dann das 30te anschließen kann?

Ich habe doch oben schon die Lösung hingepinselt: Einfach einen weiteren 
MAX232 parallel anschließen und dann hat der TO für weitere zwei Dutzend 
AVR-Module Luft.

von Tobi (Gast)


Lesenswert?

Frank M. schrieb:
>                      _________
>                     |         |    |-----|AVR
>                     |         |    |
> PC mit RS 232---+---| MAX 232 |----|-----|AVR
>                 |   |         |    |
>                 |   |_________|    |-----|AVR
>                 |
>                 |    _________
>                 |   |         |    |-----|AVR
>                 |   |         |    |
>                 +---| MAX 232 |----|-----|AVR
>                     |         |    |
>                     |_________|    |-----|AVR

Hab ich schon probiert, funktioniert leider nicht. Das macht anscheinend 
die RS 232 Schnittstelle nicht mit.

Hab es mal so probiert

                      _______
                     |         |        |-----|AVR
                     |         |        |
 PC mit RS 232-------| MAX 232 |---+----|-----|AVR
                     |         |   |    |
                     |_________|   |    |-----|AVR
                                   |
                                   |
                                   |
                      _______    |
                     |         |   |    |-----|AVR
                 +---|         |---+    |
                 |   | MAX 232 |        |-----|AVR
                 +---|         |--------|
                     |_________|        |-----|AVR


Gibt aber auch keine Verbesserung, leider.

Ingo L. schrieb:
> Verbessert sich die Sache wenn du die Baudrate runter nimmst?

Noch nicht, würde ich mal ausprobieren. Was ist den zu empfehlen, habe 
aktuell 9600.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tobi schrieb:
> Das macht anscheinend die RS 232 Schnittstelle nicht mit.
Doch. Die macht noch einiges mehr mit.

> Gibt aber auch keine Verbesserung, leider.
Dann ist da ein Fehler in deiner Schaltung. Die gepostete würde (mit 
passendem Massebezug) durchaus funktionieren.

> Baudrate ... aktuell 9600.
Das ist langsam genug.

Hast du ein Oszilloskop?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Tobi schrieb:
> Hab ich schon probiert, funktioniert leider nicht. Das macht anscheinend
> die RS 232 Schnittstelle nicht mit.

Das glaube ich nicht. Normalerweise ist es überhaupt kein Problem, an 
eine RS232 mehrere Empfänger anzuhängen. Du musst etwas falsch gemacht 
haben.

> Hab es mal so probiert
>
>                       _________
>                      |         |        |-----|AVR
>                      |         |        |
>  PC mit RS 232-------| MAX 232 |---+----|-----|AVR
>                      |         |   |    |
>                      |_________|   |    |-----|AVR
>                                    |
>                                    |
>                                    |
>                       _______    |
>                      |         |   |    |-----|AVR
>                  +---|         |---+    |
>                  |   | MAX 232 |        |-----|AVR
>                  +---|         |--------|
>                      |_________|        |-----|AVR

Das geht aber nur, wenn Du die Anzahl der AVRs pro MAX232 reduzierst. Du 
bist mit 29 Stück an einer instabilen Schwelle. Außerdem ist diese 
Lösung "von hinten durch die Brust ins Auge".

Der MAX232 hat doch 2 Transceiver, warum dann nicht so:

                            ----------
              +------- R1In +        + 25 x AVR
PC RS232 -----|             | MAX232 |
              +------- R2In +        + 25 x AVR
                            ----------

Geh dabei signifikant runter von den 29 "Verbrauchern".

: Bearbeitet durch Moderator
von Tobi (Gast)


Lesenswert?

Lothar M. schrieb:
>> Das macht anscheinend die RS 232 Schnittstelle nicht mit.
> Doch. Die macht noch einiges mehr mit.
>
>> Gibt aber auch keine Verbesserung, leider.
> Dann ist da ein Fehler in deiner Schaltung. Die gepostete würde (mit
> passendem Massebezug) durchaus funktionieren.


Dann werde ich nochmal die Schaltung kontrollieren und schauen ob das 
dann funktioniert.

Lothar M. schrieb:
> Hast du ein Oszilloskop

leider nur ein sehr einfaches, glaube dass ich nicht die 
Flankensteilheit oder ähnliches rausbekommen würde.

von Ingo L. (corrtexx)


Lesenswert?

Tobi schrieb:
> leider nur ein sehr einfaches, glaube dass ich nicht die
> Flankensteilheit oder ähnliches rausbekommen würde.
Das musst du auch nicht. Lediglich gucken ob die Amplitude noch erreicht 
wird.

von Joachim B. (jar)


Lesenswert?

Tobi schrieb:
> Das ganze ging auch ganz gut, aber als ich ca. die 30 Weiche mit AVR
> angeschlossen habe ging die ganze Kommunikation nicht mehr. Entnehme ich
> den AVR wieder funktioniert alles wie bisher. Auch mit einem anderen AVR
> funktionier es leider immer noch nicht.

kannst du mal sagen welche Längen welche Strippen haben?

ist PC zu MAX lang oder MAX zu AVR lang, der feine Unterschied.

Die längsten Strippen sollten PC zu MAX sein, vom MAX zu AVR sollten nur 
wenige cm betragen, evtl. wie schon geschrieben MAX mehrere AVR in 
Gruppen zusammenfassen die kurz angebunden sind, die längeren Strecken 
eben vom PC zu MAX verteilen.

von Georg G. (df2au)


Lesenswert?

Nur, um ganz sicher zu gehen: Du sagst, mit 29 AVR geht es, mit 30 
nicht. Ist es egal, welcher der AVR die Nummer 30 ist oder ist es ein 
ganz bestimmter AVR, der alles zunichte macht?

von Tobi (Gast)


Lesenswert?

Georg G. schrieb:
> Nur, um ganz sicher zu gehen: Du sagst, mit 29 AVR geht es, mit 30
> nicht. Ist es egal, welcher der AVR die Nummer 30 ist oder ist es ein
> ganz bestimmter AVR, der alles zunichte macht?

Ist egal welchen ich rausnehme.
Drum denke ich auch das es kein Problem mit den Längen der Strippen 
geben sollte.

von Tobi (Gast)


Lesenswert?

Frank M. schrieb:
> ----------
>               +------- R1In +        + 25 x AVR
> PC RS232 -----|             | MAX232 |
>               +------- R2In +        + 25 x AVR
>                             ----------

Hab meinen MAX 232 neu verdrahtet, jetzt klappt wieder alles.

Danke für die Hilfe.

von Der Andere (Gast)


Lesenswert?

Tobi schrieb:
> Hab meinen MAX 232 neu verdrahtet, jetzt klappt wieder alles.

Dann geh mal auf maximal 20, und nimm lieber einen 2. MAX232 wenn du 
mehr als 40 brauchst.
Man muss nicht bis auf Kante gehen, sonst geht es nächste Woche wieder 
nicht, wenn z.B. die Netzspannung mal 3% Unter oder 5% Überspannung hat, 
oder bei der nächsten Hitzewelle es im Raum 7° wärmer ist.

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.