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.
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.
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:>>> _________> | | |-----|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.
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".
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.