Forum: Mikrocontroller und Digitale Elektronik PC-Kommunikation mit mehreren Mikrokontrollern


von obelix (Gast)


Lesenswert?

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.

von Gast (Gast)


Lesenswert?

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.

von Hannes L. (hannes)


Lesenswert?

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

...

von Sven W. (woehlb)


Lesenswert?

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!

von obelix (Gast)


Lesenswert?

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)??

von Maik G. (speedy)


Lesenswert?

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

von Frank B. (frankman)


Lesenswert?

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.

von Frank B. (frankman)


Lesenswert?

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

von obelix (Gast)


Lesenswert?

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.

von Raimond (Gast)


Lesenswert?

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

von Maik G. (speedy)


Lesenswert?

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

von obelix (Gast)


Lesenswert?

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

von obelix (Gast)


Lesenswert?

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.

von Maik G. (speedy)


Lesenswert?

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.

von Frank B. (frankman)


Lesenswert?

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.

von Frank B. (frankman)


Angehängte Dateien:

Lesenswert?

Da, so habs ich gemacht

von I_ H. (i_h)


Lesenswert?

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.

von Tomas K. (Firma: tktronic) (tktronic)


Lesenswert?

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.

von obelix (Gast)


Lesenswert?

Danke für Eure Antworten.
Ich denke ich bin jetzt schin ein ganzes Stück weiter.

von Gast (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.