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.
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.