ich bin gerade dabei ein Konzept für eine Servoregelung zu machen, Dabei komme ich bei der Auswahl des Bussystems nicht weiter. Das Projekt: Aufbau einer Servosteuerung für einen Scheibenwischermotor mit einem ATmega8, PID-Reglung, H-Brücke, Poti als Winkelgeber usw. Davon sollen es später 3 identische geben damit ich eine 3-Achsteuerung aufbauen kann. Es gibt nur einen Master, zurzeit mein PC, der alle 3 Servos ansteuern soll. Es könnte aber auch mal eine Standalone Lösung werden mit eigener µC Platine ohne PC. Die zu versendenden Daten sollen Hauptsächlich die Koordinaten für die Bewegung sein. Aber auch Abfragen zur Fehlersuche wie derzeitige "ist" Position oder PID Parameter. Auch soll es möglich sein, dass sich ein Servo im Fehlerfall bemerkbar macht. Die Distanzen sind wenige Meter (kleiner 10m, Garten <-> Wohnung). Ja das soll ein Rasensprenger werden mit dem man z.B. per Joystick die Spritzdüse bewegen kann. Ja ich weiß auch, dass es im Baumarkt Geräte gibt die die Aufgabe mechanisch lösen für 30€. Aber das macht doch keinen Spaß! Lösung 1 RS232: Derzeit mit einem Servo, RS232 und PC ist das recht einfach. Das könnte ich auch für 3 Erweitern indem Datenpakete verschickt werden, die eine Zieladresse beinhalten. Für die Fehlermeldung der Servos könnten die die RXD Leitung runter ziehen und der Master fragt alle ab wer das war. Lösung 2 RS485 ist schön mit dem differentiellen Signal und der sauberen Kommunikation. Aber das ist mit der seriellen Schnittstelle und UART im µC nicht mehr machbar oder? Da brauche ich weiter Hardware? Lösung 3 2Draht Bus ist im µC implementiert aber wie bekomme ich den an den PC? Und das ist wohl mehr für kürzere Strecken gedacht. Lösung 4 CAN Hat einen gewissen Heimvorteil weil ich da Beruflich mit in Kontakt komme. Da würde sich mein Chef bestimmt freuen wenn ich da mehr drüber weiß. Aber da benötige ich doch am µC noch einen CAN Kontroller und am PC eine CAN Karte oder? Solche Karten habe ich wohl gefunden aber immer ohne Preis. Sind die so teuer? Und dann benötige ich doch auch bestimmt ein Anwendungsprogramm für den PC? Kann man auf die Karten da dann auch mit eigenen Programmen z.B. Visual Basic zugreifen? Lösung 5 LIN Sparversion vom CAN würde auch genau meiner Topologie entsprechen 1 Master mehrere Slaves. Sonst wohl ähnlich CAN. Was sagt Ihr dazu? Wie würdet Ihr das mit Kenntnissen in Programier- und µC Anwendungen mit Hobby Niveau machen?
Soweit es die Kommunikation zwischen Controllern angeht ist CAN einfach. Kann man intern im Controller haben, ist aber oft einfacher und sogar billiger extern mit MCP2515. Der PC wiederum mag CAN nicht so sehr, kommt mit RS485/422 viel besser klar, dazu muss bloss das Signal seiner RS232-Schnittstelle auf RS4xx umgesetzt werden: MAX232+MAX485 und fertig. Und wenn es sich um einen einzigen Master handelt, ist RS485 problemlos einsetzbar.
PS: Wenn du allerdings annimmst, dass das mal wächst, und der Standalone-Controller mit dem PC um den Bus konkurriert bzw. miteinander kommuniziert, ist CAN irgendwann sinnvoller. Ein sinnvoller Weg, dem PC Zugang zu CAN zu verschaffen geht über den USB-Interface-Chip FT2232C, an dem ein CAN Controller MCP2515 oder SJA1000 hängt.
Klare Sache: CAN Gerade auch, weil Du es beruflich verwenden kannst/willst würde ich das als Lernprojekt machen. Außerdem ist's nicht unlösbar schwierig. Als Anbindung zum PC nimmst Du ebenfalls einen µC - einen, der sowohl CAN als auch UART (serielle Schnittstelle) hat. Noch einen MAX232 dran und das war's. Zumindest HW-seitig ist der Schnittstellenumsetzer fertig. Als nächstes machst Du Dir Gedanken, was Du übertragen willst, und dann schreibst Du eine SW (für den µC) die die Übersetzung von der seriellen Schnittstelle auf/von CAN macht. Und schon ist der Schnittstellenumsetzer auch SW-seitig fertig. PC-seitig bedient Deine VB/C#... SW nur noch die serielle Schnittstelle. viel Erfolg!
Mit Hausbus speziell nichts, aber eben allgemein mit Bussystemen. Ich denke dafür ist das das beste Forum. Ja danke für die Beiträge! So wie sich das hier abzeichnet ist wohl CAN der Sieger. Wenn ich die Datenblätter richtig verstanden habe setzt der MCP2515 die UART Signale hardware mäßig in CAN um. Das Protokoll muss im angeschlossenen Controller umgesetzt werden. Ganz im Gegenteil zum SJA1000, hier wird auch das Protokoll mit abgearbeitet. Ist das so richtig? Mit USB am Rechner anzusprechen ist mir etwas mulmig. Ich hab gehört das ist nicht ganz ohne, besonders mit XP und ich habe noch nichts vergleichbares gemacht. Ich glaube ich mach das in zwei Schritten. Als erstes bringe ich ersteinmal die Servosteuerung alleine per RS232 zum laufen. Wenn ich die dann im Griff habe implementiere ich CAN und die PC Steuerung. So habe ich nicht so viele Unbekannte gleichzeitig.
MCP2515: Nix UART. SPI. Hat fast jeder Microcontroller von Haus aus. Meist als eigene Funktionseinheit. SJA1000: Parallelanschluss. Braucht wesentlich mehr Pins und mehr Platz. Eigentlich nur sinnvoll, wenn der verwendete Controller schon einen adressierbaren 8bit-Datenbus mitbringt. Den FT2232C spricht man über eine DLL von FTDI an. Kein Hexenwerk. In dessen Datasheet ist die Anbindung eines SJA1000 beispielhaft aufgeführt.
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.