Hallo Ich will weichen schalten und Rückmelder auslesen. Ich fahre H0 mit Märklin Digital(altes Märklin mit 6021+6050). Das 6050 benutze ich zur Loksteuerung. Für die Weichensteuerung und die Rückmeldung möchte ich einen Eigenen Bus verwenden. Sprich ein PC-Interface(6050) für die Loks und ein PC-Interface(Eigenbau) für die Weichen/Rückmelder. So nun dachte ich an I2C-Bus. Ich würde gern die günstigen AVR-uCs benutzen. Die haben ja TWI. Auf RN-Wissen.de fand ich eine Anleitung zur benutzung von TWI. So doch jetzt hab ich noch ein paar Fragen bezüglich des busses. Der I2C-Bus ist ja eigendlich für interne Komunikatioon gedacht gewesen. Auf meiner Anlage wird 0/5-Volt Pegel warscheinlich nicht ausreichen. Daher möchte ich gerne -12/12 Volt Pegel benutzen. welcher Baustein kann eine solche Wandlung vornehmen? Um die Preise für einen Weichendekoder gering zu halen würd ich gern einen billigen ATMEGA8 mit internem Tackgeber nutzen. Ist der genau genug?(für das Interface natürlich einen mit externem Tack, da sonst RS232 nicht laufen wird). So dann wäre da noch das Adressproblem. 127 sind zu wenig. Und laut RN-Wissen unterstütz der AVR auch keine 10bit-Adressen als sklave. Also möchte ich ein USB ähnliches protokoll verwenden. Wenn ein Sklave angeschlossen wird, dann soll er automatisch den Master informieren. Er soll für diesen Welcome z.b die Adresse 127 benutzen. Dann teilt der Sklave dem Host eine art MAC-Adresse mit. Also eine Art Fertigungsnummer. Der Host verteilt dem Sklaven dann eine Adresse. Um den Adressraum zu erweitern soll neben dem normalen Adressbyte noch ein 2. Adressbyte übertragen werden. Erst wenn dieses mit der vom Master am anfang übertragenen Adresse übereinstimmt soll der Rest des Packetes empfangen werden. Dann hätte ich einen 7Bit+8Bit = 15Bit Adressraum. Der Computer soll die Dekoder immer mit ihrer Fertigungsnummer ansprechen. Der Host soll also eine einfache liste haben, in dem die temporären Adressen und die Festen Adressen stehen. So dass wars dann eigendlich auch schon. Außer dass ich gern einen Multimaster Bus nutzen würde. Geht das mit AVR's? Gruß Flashbanger
Nimm statt TWI das UART, hänge 2 Transistoren (pnp-npn Paar, offener Kollektor Ausgang) als Treiber dran. TX des Masters kommt an diesen Treiber und das ist dann die Leitung, an die (über Schutzwiderstände) sämtliche RX-Leitungen der Slaves angebunden werden. Die Slaves erhalten dieselbe Ausstattung und sämtliche Treiber werden an eine zweite Leitung angeschlossen, die an die RX-Leitung des Masters angeschlossen wird. Die Leitungen werden mit 1kOhm am jeweiligen Ende (Master TX am Ende der Modellbahn-Platte / Master RX im Maste-Modul) nach 5V hochgezogen. Das Protokoll wird so gestaltet, das jedes Modul angefragt wird und anschließend seine Informationen ausspuckt. Multimaster ist nicht erforderlich. Durch die Benutzung des UART hast Du eine leicht zu programmierende Schnittstelle, die noch dazu den Multi-Processor-Communication-Mode unterstützt, bei dem das 9te Bit zur Deklarierung einer Adresse und eines Framebeginns benutzt werden kann. Das UART ist zudem sehr störsicher. 57600 Baud sind damit locker realisierbar, was bei entsprechendem Protokoll bis zu 1000 Adressierungen pro Sekunde erlaubt. Bei der Anlage, die mein Freund und ich projektiert haben (mit derzeit 58 Modulen, Anzahl steigend) funktioniert diese Interface-Variante sehr schön. Der Hauptcontroller (Master) kann dann noch -zig Knöpfe und Displays bedienen oder aber eine Anbindung an einen PC realisieren, auf dem die Steuersoftware läuft. So kann man bei entsprechendem Aufwand die Züge über das Internet steuern ;-).
Ich denke mal, dass dann jedes Bus-Mitglied einen genauen tacktgeber benötigt oder? Außerdem möchte ich ja die UART auch zwischen PC und Interface nutzen. Ich bräuchte also einen AVR mit 2 UARts. Außerdem ist das doch dann nicht Synconisiert, oder? Gruß Flashbanger
wie wär es mit einer solchen schaltung? Ichw eis nur leider net ob ich die transistoren richtig rum angeschlossen habe. Die schaltung soll die 0/5 Volt pegel links entnehmen und wenn die leitung umschalt high führt, dann soll das sognal auf 0/12 Volt verstärkt werden. In der ruhephase ist umschalt = 0. Das gerät befindet sich im lauschmodus. Wenn etwas gesendet werden soll, wird umschalt auf high geschaltet. Nur das mit dem Quittungs-Byte wird nicht klappen. es sei den man kann vor dem senden des Quittungsbytes die Leitung umschalt auf High schalten und nacher wieder auf low. Gruß Flashbanger
>Ich denke mal, dass dann jedes Bus-Mitglied einen genauen tacktgeber >benötigt oder? Ein Keramik-Resonator 4 oder 8 MHz, kostet 30 Cent. >Außerdem möchte ich ja die UART auch zwischen PC und Interface nutzen. >Ich bräuchte also einen AVR mit 2 UARts. Mega128 als Hauptcontroller (Master) nehmen. Da sind dann noch jede Menge Pins für andere Funktionen dran und vieeel Flash und SRAM. >Außerdem ist das doch dann nicht Synconisiert, oder? Dafür sorgt die Software. Wenn es an einer Seite einen Flashenhals geben sollte, programmiert man einen Ringpuffer für ein- und abgehende Daten. Ist i.d.R. kein Problem. >Die schaltung soll die 0/5 Volt pegel links entnehmen und wenn die >leitung umschalt high führt, dann soll das sognal auf 0/12 Volt >verstärkt werden. Das ist unnötig, Du kommst mit 0/5V-Pegeln aus.
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.