Hallo alle zusammen, ich bin neu im Forum und interessiere mich für die Programmierung (C#, Java und Python Kenntnisse sind vorhanden) und hoffe, dass mir hier im Forum jemand weiterhelfen kann. Folgendes Szenario: Angenommen, ich habe eine kleine Achterbahn im Garten (jaja, das geht jetzt nur um das Prinzip :-) . Ich habe natürlich keine Achterbahn). Dazu möchte ich gerne eine Steuerung in C# (gerne auch Java) schreiben mit GUI und der ganzen Logik dahinter. Die GUI beinhaltet eine Skizze der Strecke mit der Anzeige in welchem Block der Zug momentan ist und Buttons für das Starten aus der Station, Notstop, usw. Dazu muss die Software logischerweise mit den Bremsen, Transportrollen (Ein- und Ausschalten) und Sensoren (um zu wissen, wo der Zug gerade ist) kommunizieren. Nun ist meine große Frage: Wie wird solch eine Kommunikation zwischen Computer-Programm und "richtiger" Elektronik realisiert. Die aktuellen Zustände der Sensoren (Metall neben dem Sensor erkannt oder nicht) sollen dazu übertragen werden und die Transporträder auf der Strecke ein- und ausgeschaltet werden können. Ich brauche dazu ja eine Art USB-Interface, mit dem ich beispielsweise 20 Sensoreingänge und 20 Ausgänge für Steuersignale habe (welche über ein Relais die Transportrollen ein und ausschalten) doch genau hier hört mein Wissen auf. Wie realisiere ich solch ein Projekt. Erfahrung im Umgang mit Mikrocontrollern habe ich noch keine. Selbstverständlich ist mir klar, dass das nicht auf den Sicherheitsstandards funktioniert, wie richtige Achterbahnen ausgestattet sind. (Wobei ich mich auch frage, wie das dann realisiert wird. Vielleicht gibt es ja einen Mitarbeiter bei einem Achterbahnhersteller hier im Forum ;-) ) Ich danke euch sehr für eure Hilfe! Das Ganze möchte ich gerne für eine Abschlussarbeit machen. Beste Grüße
Naja, du brauchst einen Mikrocontroller der mit deinen Sensoren/Aktoren und mit dem PC redet. Der Mikrocontroller redet mit den Sensoren/Aktoren per I/O Ports und mit dem PC per USB/WLAN/o.ä. mittels einer vereinbarten "Sprache" (die du dir vorher ausgedacht hast). Dein PC Programm redet dann mittels dieser Sprache über USB/WLAN/o.ä. mit deinem Mikrocontroller. Das ist ein Weg so etwas zu machen. Und eigentlich auch der übliche Weg.
Hallo, vielen Dank für deine Antwort. Kannst du mir da einen Ansatz liefern, bei was für einem Mikrocontroller ich für mein Vorhaben anfangen könnte? Es wäre natürlich perfekt, wenn es da schon eine Bibliothek für C# oder Java geben würde. Viele Grüße
Du kannst nicht einfach von 0 auf 100 mit einem Großprojekt anfangen (die Sicherheitsaspekte ignorieren wir hier ja sowieso erstmal). Nimm dir einen Arduino und bastel da einige LED und Taster ran. Dann verbinde das mit deiner PC Software. Das ist IMHO ein guter (und günstiger) Einstieg ins Thema.
Hallo, das Stichwort "Arduino" habe ich gesucht. Vielen Dank - dann werde ich mich da mal einlesen! VG
Luke P. schrieb: > das Stichwort "Arduino" habe ich gesucht. Du bist halt vollkommen unwissend und kannst deswegen garnicht ermessen, welchen Schaden du dir antust, wenn du ernsthaft auf Arduino setzt... Das einzige, was von Arduino (für Anfänger) ganz gut zu gebrauchen ist, sind die billigen Hardware-Clones. Die ersparen zumindest für den Anfang den Bau eigener Hardware-Kerne. Die Arduino-Software-Scheisse sollte man allerdings von Anfang an dringendst vermeiden. Das führt in den Abgrund. Recht schnell ist der Punkt erreicht, bei dem es mit dem simplen Zusammenschieben von Wichsvorlagen nicht mehr getan ist, weil die entweder grundsätzlich in Konflikt stehen oder zumindest indirekt über die unzureichende Performance des Systems. Arduino-Software ist nämlich typisch ziemlich bis dramatisch ineffizient! Das gilt auch und gerade für die Software, die nötig ist, um irgendwelche idiotischen und typisch völlig überteuerten "Shields" benutzen zu können...
Hallo, das ist gut zu wissen. Hättest du eine brauchbare Alternative bzw. wie gehe ich das ganze Thema am Besten an? Gibt es ein gutes Buch, mit welchem ich gut einsteigen kann? Programmiert Ihr eure eigenen Hardware-Kerne? Dazu ist dann denke ich mal Assembler notwendig, oder? Viele Grüße
Hallo, Lass dich von c-hater nicht verunsichern. Der Name ist Programm. Definiere erst mal ganz genau deine Anforderungen. Wie viele Inputs und wie viele Outputs brauchst du. Danach kannst du dann entscheiden, was du für die eine Schnittstelle brauchst. Ich finde z. Bsp. Die labjack hat nicht so schlecht. Die fallen leider meistens aus den Budget. Beim Arduino kommst du relativ schnell zu Ergebnissen, aber auch der hat nur begrenzt ein und ausgänge.
Hallo, vielen Dank für deine Antwort! Am Budget sollte es nicht scheitern. Die Schnittstelle kann ruhig bis 200€ kosten. Ich weiß ja nicht, wie weit man damit kommt. Eingänge würde ich ca. 20 brauchen und Ausgänge ca. 15. Mit dieser Anzahl wäre das Ganze am schönsten für mich aufzubauen. Nach unten skalieren kann ich es natürlich trotzdem, dass ich mit 10 Eingängen und 7 Ausgängen zurecht kommen würde. Labjack werde ich mir mal ansehen - danke für den Tipp. Viele Grüße
Es geht ja darum erstmal den Anfang zu machen. Und dafür ist Arduino super. Und Arduino zwingt einem auch nicht im System zu bleiben. Man kann später andere Entwicklungsumgebungen nutzen, man kann den Bootloader weglassen und man kann eigene Boards designen. Und man kann später selbstverständlich auch einen der 5000 anderen gängigen Mikrocontroller nutzen wenn man merkt das der Arduino ungeeignet ist. Aber um auch nur ansatzweise abschätzen zu können, welcher der 5000 gängigen Mikrocontroller am besten für das geplante Projekt geeignet ist, sollte man wenigstens so viel Erfahrung haben schonmal eine LED per Mikrocontroller angesteuert zu haben. Also einfach mal für <10€ nen Arduino kaufen und sich die Sache erstmal anschauen.
> Also einfach mal für <10€ nen Arduino kaufen und sich die Sache erstmal > anschauen. Rausgeworfenes Geld und verschwendete Zeit. IO-Warrior - codemercs.com Hat auch fuer Hochsprachen passende APIs.
c-hater schrieb: > Die Arduino-Software-Scheisse > es mit dem simplen Zusammenschieben von > Wichsvorlagen nicht mehr getan ist > Arduino-Software ist nämlich typisch ziemlich bis > dramatisch ineffizient! Was kann Arduino dafür, dass Du zu dämlich bist, ein paar Zeilen c zu schreiben? > um irgendwelche idiotischen und typisch völlig > überteuerten "Shields" benutzen zu können... Niemand ist gezwungen, diesen dusseligen UNO auf Shields zu stecken - man darf gerne selbst löten. Warnung: Den Lötkolben fasst man an dem Ende an, wo das Kabel heraus kommt. ---------- Keiner N. schrieb: > Wie viele Inputs und wie viele Outputs brauchst du. Im Eingang stand je 20, das wären 40 Ports - die kaum ein µC haben wird. Das schreit nach externer Hardware neben dem µC, ob Luke dazu eine Chance hat? > Beim Arduino kommst du relativ schnell zu Ergebnissen, Genau das ist sein großer Vorteil. Eine serielle Kommunikation zum PC (über USB) bekommt man direkt hin, ein paar Ports abzufragen ist schnell selbst geschrieben. > aber auch der hat nur begrenzt Ein- und Ausgänge. Und immer genau einen zu wenig :-)
... schrieb: > IO-Warrior - codemercs.com Ist eine weitere Möglichkeit. Stößt aber evtl. an Grenzen (z.B. Echtzeitanforderungen).
Luke P. schrieb: > Nach > unten skalieren kann ich es natürlich trotzdem, dass ich mit 10 > Eingängen und 7 Ausgängen zurecht kommen würde. Wenn ich mich gerade nicht verzählt habe, kann man am Arduino-Nano 18 Ports digital nutzen. Aus einem anderen Thread oder Forum: "Die Pins 0 bis 13 und die Analogen Pins A0 bis A5, die als Digitale Ein/Ausgaenge verwendet werden koennen. Wenn ein analoger Eingang mit pinMode als digitaler Ein/Ausgang definiert wurde, werden aus A0 bis A5 die Pins 14 bis 19. A6 und A7 kann man nicht digital nutzen." D0 und D1 sind für die serielle Kommunikation belegt und daher nicht beliebig nutzbar, wenn man diese braucht!
> Ist eine weitere Möglichkeit. Stößt aber evtl. an Grenzen (z.B. > Echtzeitanforderungen). Die steuernde Applikation soll auf einem PC-Host laufen. Die wird also auch die "Echtzeitfaehigkeit" bestimmen. Und eine serielle Schnittstelle dazwischen waere irgendwie "echtzeitfaehiger"? Glaube ich nicht. Soll der TO das selber ausprobieren oder mal belastbare Zahlen was Reaktionszeiten angeht, herausruecken.
Vielen Dank für die ganzen Antworten. Die Reaktionszeit sollte unter 500ms liegen. Das wäre kein Problem. Dann werde ich mir IO-Warrior ansehen.
... schrieb: > Die steuernde Applikation soll auf einem PC-Host laufen. > Die wird also auch die "Echtzeitfaehigkeit" bestimmen. > Und eine serielle Schnittstelle dazwischen waere irgendwie > "echtzeitfaehiger"? Glaube ich nicht. Es geht darum das man im Mikrocontroller auch eine gewisse Intelligenz packen kann. Das Protokoll über die serielle Schnittstelle muss nicht zwingend nur Ports an-/abschalten. Es kann auch komplexe Funktionen aktivieren die der Mikrocontroller dann autark ausführt (halt z.B. praktisch wenns was zeitkritisches ist). Deine Lösung ist ja deswegen nicht falsch (so etwas wird seit 30 Jahren mit PCs genutzt (z.B. per paralleler Schnittstelle)). Aber es gibt halt Unterschiede zur MCU Lösung. Eine weitere Lösung können auch ein Raspberry Pi + MCU sein. Es gibt viele Wege, kommt halt immer auf die Anforderung an.
> Die Reaktionszeit sollte unter 500ms liegen. Fuer dedizierte Hardware ist das entspannter Wert. Aber Windows ist da mitunter eigen. > Es kann auch komplexe Funktionen > aktivieren die der Mikrocontroller dann autark ausführt Die er dann ja auch noch extra debuggen muesste? So hat er alles in seiner Applikation.
Ach, nimm doch einfach einen Raspberry Pi mit Windows 10 IoT. Dazu das Pi Display, und fertig ist, da hast du dann Visualisierung und Ansteuerung in einer Kiste, plus den Vorteil dass du in visual studio und c# arbeiten kannst. Kein rumgefuhrwerke mit c, Mikrocontroller und ner Schnittstelle, die bei den Anforderungen alle nicht nötig sind. Die Einstiegshürden sind auch so schon hoch genug.
Luke P. schrieb: > Notstop Notstop in Hardware auf der tiefstuntersten Ebene implementieren. Wenn auf PC müsste der PC echtzeitfähig sein (ist Windows nicht) und die Hardware drunter müsste periodisch überprüfen ob die PC Software noch läuft, usw. Das schafft man nicht
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.