Hallo, ich möchte von meinem PC aus mehrere Mikrokontroller über eine Schnittstelle ansteuern (zur Steuerung deiner Modellbahn). Jeder Mikrokontroller hat verschiedene Steueraufgaben (z.B. Weichen, Licht, Signale, etc.). Ich möchte die Mikrokontroller wenn möglich mit der seriellen Schnittstelle ansteuern um möglichst wenige Pins zu Belegen. Kann ich die Mikrokontroller einfach alle mit der seriellen Schnittstelle verbinden (natürlich mit dem MAX232 dazwischen) oder gibt es da evtl. Probleme mit der Datenübertragung?? Besteht dann noch die Möglichkeit mit einem Bootloader zu arbeiten, sodass ich die Software eines Mikrokontrollers über die Serielle Schnittstelle austauschen kann, oder werden dann immer alle Mikrokontroller neu geschrieben? Oder habt Ihr eine andere Idee wie ich die Kommunikation mehrer Mikrokontroller und dem PC am einfachsten realisieren kann?? Im Voraus schon mal Danke für Eure Hilfe.
Hallo, du kannst eigentlich alle MC an die Sendeleitung bzw. Empagsleitung hängen (evt. mußt du das Signal Verstärken). Dann denkst du dir ein nettes "Protokoll" aus mit denen du die MC auswählst z.b reagiert MC1 nur wenn ein "Hallo1" String über die Leitung kommt. Beim Programmieren musst du das Bootloader Programm starten und dann de MC Resten um ihn zu programmieren.
Schau Dir mal beim blauen C die serielle Relais-Karte an. Die Beschreibung dazu kann man herunterladen, sie enthält auch die Beschreibung des Protokolls. Falls es ohne Mikrocontroller gehen soll (serielle Schieberegister), dann schau mal hier: http://www.hanneslux.de/mobast/index.html ...
Mehrere Mikrocontroller direkt an der seriellen Schnittstelle des PC's(RS232) werden nicht so ohne weiteres funktionieren. Die RS232 muß erst in eine RS485 umgesetzt werden. Im Gegensatz zur RS232(Punkt zu Punkt Verbindung) definiert die RS485 einen Bus. Also an den PC einen RS232/RS485-Adapter stecken. Vor den UART's aller Mikrocontroller einen MAX485(RS485 Treiber) oder Ähnliches schalten, und den BUS entsprechend dem Beispiel im Datenblatt des MAX485 zusammenschalten. Bei der Auswahl des RS485 Treiber mußt Du darauf achten ob eine halb- oder vollduplex Verbindung realisiert werden soll. Für Deine Anwendung wird aber wahrscheinlich eine halbduplex Verbindung reichen. Was man dann für ein Kommunikationsprotokoll über den RS485 Bus fährt, ist eine ganz andere Geschichte. Tschau Sven!
Danke für Eure Antworten. Das Hilft mir schonmal weiter. Ich habe aber nun noch eine weitere Frage. Ich suche nun noch einen Treiberbaustein um meinen Weichendecoder zu realisieren, der über meinen AVR-Mikrokontroller (Atmege 32) angesteuert wird. Ich habe zwar eine Weichendecoder-Schaltung gefunden, die einen ULN2804 verwendet, allerdings kann dieser nur 0,5 A (0,6 A peak). Meine Messungen haben ergeben, dass die Weichen 1,2 - 3 A Stromaufnahme haben, sodass ich denke das der ULN2804 ungeeignet für diese Anwendung ist. Meint ihr ich kann die ULN2804 trotzdem verwenden?? Wenn nicht, welchen günstigen Treiberbaustein könnt ihr mir empfelen (ich muss insgesamt 30 Spulen schalten)??
??? mehrer Pic´s??? Ähmmm mal ne frage, wieso nutzt du net die Funktion aus Pic_BASIC_II [EXPO|EXPI] vorteil nur 2 datenkanäle und diese Dann emtweder in einer Schltung als 32 Bit oder Mehr oder via Mux|Demux. geb dir deshalb den Tipp, weil ich selber grad in der richtung eine ModelleisenBahn für einen Ausbildungkollegen Plane... und als ersatz für dein Treiberproblem... würd i sagen denk mal in Richtung FET. MFG Speedy
Vergiss jetzt mal das Geschreibsel von oben. Dein Problem ist ganz einfach zu lösen: Du brauchst eine RS485-Schnittstelle. Dazu verwendest du einen RS485-Treiber. Je ein IC schließt Du an die TXD und RXD-Leitung Deiner Mikrocontroller an. Diesen verwendest Du statt dem üblichen RS232-Chip ( z.B. der MAX232) Dann werden alle Mikrocontroller mit einer zweiadrigen Leitung miteinander, über den RS485-Chip verbunden. Ebenso Dein PC. Ich habe mir testweise ein TTL-RS232-Kabel von FTDI besorgt und da dann direkt einen LTC485 angeschlossen, das Kabel liefert dann sogar die 5 Volt für den Chip.(Und die Kosten waren sehr niedrig, im Vergleich zu käuflichen Lösungen) Nun können alle Mikrocontroller mit Deinem PC kommunizieren, das Protokoll ist das gleiche, wie bei RS232. Nur die Übertragung der Daten, also der "physical layer" ist nicht mehr -15V bis 15V, sondern eben ein diferenzielles Signal.
> Meine Messungen haben ergeben, dass die Weichen 1,2 - 3 A Stromaufnahme > haben, sodass ich denke das der ULN2804 ungeeignet für diese Anwendung > ist. > > Meint ihr ich kann die ULN2804 trotzdem verwenden?? > Nein, kannst Du nicht, Deine Weiche braucht halt einfach zu viel Strom! Du könntest aber, wie in guter, alter Vätersitte, einzelne Transistoren oder MOSFET´s verwenden. Dann kannst Du viel mehr Strom schalten. Du kannst aber auch mehrere Kanäle des ULN2803 parallel verschalten, dann geht es unter Umständen. > Wenn nicht, welchen günstigen Treiberbaustein könnt ihr mir empfelen > (ich muss insgesamt 30 Spulen schalten)?? Besorge Dir doch einfach 30 Logic-Level-FET´s, die 2A Dauerstrom liefern können. Die kannst Du dann direkt mit Deinem yC verbinden. Das kostet fast nix und geht prima.
Danke für Eure Antworten. Ich werde mich die Tage dann mal mit der RS485-Schnittstelle auseinandersetzen. Als MOSFET habe ich jetzt mal diesen hier gewählt: ZVN4206A (gibts bei Reichelt für 0,30 Euro) Ist der geeignet? Ich hab leider noch nicht viel Erfahrung mit MOSFETs.
Hallo Obelix, darf man Fragen, was für Antriebe (welche Spur) das sind? Bis zu 3A erschheint mir ganz schön heftig. Ich habe mir auch schon Decoder gebaut (Roco Spur N) und die 2804A haben es bis jetzt durchgehalten. Gruß Raimond
obelix wrote: > Danke für Eure Antworten. > > Ich werde mich die Tage dann mal mit der RS485-Schnittstelle > auseinandersetzen. > > Als MOSFET habe ich jetzt mal diesen hier gewählt: ZVN4206A (gibts bei > Reichelt für 0,30 Euro) > Ist der geeignet? > Ich hab leider noch nicht viel Erfahrung mit MOSFETs. also dein ZYN4208A macht nur 0,8A mit mein Tip wäre bei ca 3 A der IRF1404 Imas 126A also locher ausreichend... jedoch 1,70€/ stück
Danke für Eure Antworten. @Raimond: Das sind H0 Antriebe. Ich habe mich auch schon gewundert, dass diese so viel Strom ziehen. @Maik Geßner: Der ZVN4206A kann wenn ich das Datenblatt richtig verstanden habe 0,6 A Dauerstrom und 8 A bei Pulsen, oder habe ich da was falsch verstanden??
Also, die Sache mit dem Treiber IC hab ich jetzt gelöst. Ich hab einen brauchbaren Transistor (BD679) für diese Steueraufgabe gefunden. Funktioniert auch alles Einwadnfrei. Nun habe ich noch eine Frage zu der RS485 Schnittstelle: Ich finde beim Suchen nach Infos zum RS485-Bus meinst nur Infos zum Profibus. Ich verstehe noch nicht genau, wie der Profibus mit der RS485 zusammenhägt. ich habe aber folgende Schaltung gefunden: http://www.e-lab.de/diverse/RS232-ProfiSCH.pdf Kann ich diese benutzen, um die RS485-Schnittstelle zu realisieren?? Die Mikrokontroller kann ich doch dann einfach mit dem MAX485 oder so an den Bus ansschließen. Hier muss ich allerdings auch einen Mikrokontroller-Pin zum Festlegen der Übertragungsrichtung beschalten, oder?? Nochmal Danke für Eure Antworten.
obelix wrote: > Danke für Eure Antworten. > > @Raimond: Das sind H0 Antriebe. Ich habe mich auch schon gewundert, dass > diese so viel Strom ziehen. > > @Maik Geßner: Der ZVN4206A kann wenn ich das Datenblatt richtig > verstanden habe 0,6 A Dauerstrom und 8 A bei Pulsen, oder habe ich da > was falsch verstanden?? Nein hast du nich. ich rechne da aber generell so, das ich locker 10% sicherheit im Dauerstrom habe. und wenn ich 3A Spulen-I fahre dann ich ja net gesagt, das dieser Strom nur einige µsec. anliegt. lass mal einen Fehlerfall eintretten... dann ham sich deine 8A pules mal schnell erledigt. ich en erfahrungswert.
obelix wrote: > Also, die Sache mit dem Treiber IC hab ich jetzt gelöst. Ich hab einen > brauchbaren Transistor (BD679) für diese Steueraufgabe gefunden. > Funktioniert auch alles Einwadnfrei. > > Nun habe ich noch eine Frage zu der RS485 Schnittstelle: > Ich finde beim Suchen nach Infos zum RS485-Bus meinst nur Infos zum > Profibus. Ich verstehe noch nicht genau, wie der Profibus mit der RS485 > zusammenhägt. Profibus ist zwar entfernt auch RS485. Aber nur "physikalisch", Protokoll ect. ist anders. > ich habe aber folgende Schaltung gefunden: > http://www.e-lab.de/diverse/RS232-ProfiSCH.pdf > > Kann ich diese benutzen, um die RS485-Schnittstelle zu realisieren?? > > Die Mikrokontroller kann ich doch dann einfach mit dem MAX485 oder so an > den Bus ansschließen. Hier muss ich allerdings auch einen > Mikrokontroller-Pin zum Festlegen der Übertragungsrichtung beschalten, > oder?? ja, das brauchst Du. Max485 geht, denke ich. > > Nochmal Danke für Eure Antworten.
Hab mir zu dem Zweck einen RS232 auf I2C Konverter gebaut. Da I2C mit 5V läuft kannst du die Sachen direkt an die uCs hängen. Mit ein paar zusätzlichen Optokopplern will ich später mal meine Gerätschaften galvanisch getrennt verbinden.
frank, denke bitte dran, RS485 musst Du als Bus betreiben. Aso vorne und hinten schön abschliessen mit 120 Ohm. Je nach Bitrate dürfen Deine Stichleitungen zu im Busverlauf angeschlossenen Geräten nicht zuuuu lang sein. Um aus'm PC raus die Sache zu machen brauchst Du einen Konverter RS232<->485. Also 232<->TTL <-> TTL<->485. Kannste selber bauen, IC's gibt es da genug (Linear hat da ziemlich kompaktes Zeugs...). Falls Du half-duplex machst, brauchst Du nur 2 Leitungen. Die Buszuteilung geht über deine Protokoll-SW. Allerdings musst Du deinem 232-485 Konverter für den PC beibringen von Tx auf Rx umzuschalten. Ginge über ein Modemsteuersignal z.B. Allerdings muss das von 232->TTL gewandelt werden. Der Rest wäre dann SW. Gutt lack, tom.
Danke für Eure Antworten. Ich denke ich bin jetzt schin ein ganzes Stück weiter.
RS485 ist gut, um sehr lange Leitungen mit hoher Geschwindigkeit zu überbrücken. Wie Frank oben gezeichnet hat, braucht man allerdings einen Portpin, um die Datenrichtung des Treibers umzuschalten. Deutlich einfacher wird die Sache, wenn Du CAN-Bus Treiber verwendest. Zum einen spart man einen µP-Pin und zum anderen ist der CAN-Bus kollisionsfest. 500kBit/s sind auf 100m erreichbar; bei 62,6kBit/s sogar 1km. Da wird kein Zug Verspätung bekommen :-) Wesentlich wichtiger ist jedoch das Busprotokoll - die Software. Wenn Du es PC-seitig auf die Reihe bekommst, empfehle ich den Multiprozessormodus. Dabei wird ein 9.Datenbit mit übertragen, welches als Kennung für Adresse/Daten verwendet wird. Klingt kompliziert, ist aber sehr einfach und elegant. 8051, AVRs und viel andere µPs unterstützen diesen Modus direkt mit ihrer UART.
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.