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.
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.
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
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
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!
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
Tobi schrieb: > Kommunikation sieht ungefähr so aus: das hilft wenig weiter, welche Leitungen genau?
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.
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.
Verbessert sich die Sache wenn du die Baudrate runter nimmst?
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.
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.
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.
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?
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
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.
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.
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.
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?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.