Hallo, Was ich machen möchte, ist eine Verbingung von einem Sensor mit einem Rechner der die Daten verarbeitet und damit dann wieder einen Motor ansteuert. Das Ganze dann möglichst nah an Echtzeit. Ich hatte vor einen Arduino zu verwenden, weiß aber nicht mit welchen Verzögerungen ich da rechnen muss. Die Verzögerung sollte unter einer Sekunde liegen. Falls ein Arduino das nicht schafft, gibt es Alternativen?
Leon W. schrieb: > Falls ein Arduino das nicht schafft, gibt es > Alternativen? Der Arduino ist nicht das Problem, der packt das Locker. Dein PC ist das Problem, solange du kein Echtzeitbetriebssystem benutzt lässt sich einfach keine Aussage treffen wie der sich verhalten wird.
Leon W. schrieb: > Die Verzögerung sollte unter einer > Sekunde liegen. Das ist ja sehr lange da musste wahrscheinlich noch eine Verzögerungsroutine einbauen.
Ein paar mehr Infos wären nicht schlecht. Z. B.: -wie definierst du Echtzeit? 10ms, 1ms, ... -um was für einen Sensor handelt es sich? Anschlussart, Protokoll?, ADC? -Wie sieht die Verarbeitung aus? speichern auf einer SD Karte? UART an PC? -Wie sieht die Ansteuerung vom Motor aus? PWM? Prinzipiell ist ein Arduino völlig ausreichend.
Eumel schrieb: > Der Arduino ist nicht das Problem, der packt das Locker. Dein PC ist das > Problem, solange du kein Echtzeitbetriebssystem benutzt lässt sich > einfach keine Aussage treffen wie der sich verhalten wird. Der soll mal erklären was er Messen will. Eventuell ist der Arduino ja überflüssig.
ja ja schrieb: > Der soll mal erklären was er Messen will. Eventuell ist der Arduino ja > überflüssig. Was das Echtzeitproblem nicht löst. Ich würde eher vermtuen, dass man den PC weglassen kann. Sensoren auslesen, Daten verarbeiten und dann einen Motor ansteuern kann ein Arduino auch alleine ;)
Eumel schrieb: > Sensoren > auslesen, Daten verarbeiten und dann einen Motor ansteuern kann ein > Arduino auch alleine ;) Ja so gehts vieleicht auch aber ein PC ist ja meist immer vorhanden. Aber heutzutage haben die keine Seriellen und parallelen Schnittstellen mehr und USB ist dann halt saulangsam was die Reaktionszeit angeht Die Datenübertragungsrate ist dafür gewaltig höher.
Also mein Plan ist die Messung des Drehwinkels eines E-Motors, ich hatte vor dies bsp. über ein Speichenrad und einen Lichtsensor zu machen, dann sollte ein Programm, vorzugsweise auf Windows, diese Daten interpretieren und einen Motor wieder in Gang setzen. Die Verarbeitung findet auf jedem Fall auf dem Rechner statt. Also optimal wären Zeiten unter 20 ms. Über die Verbindung hatte ich mir noch keine Gedanken gemacht, wobei ich mich erinnere dass USB für geringe Verzögerungen nicht geeignet sein soll. Edit: ich möchte später am PC mit Interface die Motoren steuern können, deswegen brauche ich die Verbindung.
Mhmm, auf einem Windowsrechner wird das schwer. Warum muss die Berechnung auf dem PC erfolgen? Ist es eine so komplexe Rechnung? Man kann die Berechnung auch auf dem uC machen und die Ergebnisse an den PC senden.
Die Berechnung an sich dürften nicht komplex sein, aber der PC soll als Alternative zu den Sensoren auch in der Lage sein die Motoren anzusteuern, also wenn ich z.B. ein RC-Auto bewege soll der PC über die Motorbewegungen wissen welche Position das Auto hat und umgekehrt möchte ich die Motoren auch über eine Eingabe am PC steuern. Wobei das ferngesteuerte Auto nur ein Beispiel ist.
Leon W. schrieb: > vorzugsweise auf Windows sagen wir mal gewohnheitsmäsig weil gerade für Echtzeitanwendungen ist Windows sehr ungeeignet. Da gibt es Linux mit real-time-kernel und VXwork glaub ich. Wenn ichs richtig verstanden habe soll das eine Art Positionsregler für einen Motor werden. Dann macht der Microcontroller die Posi.-Regelung und Sendet die Istpositon an den PC und erhält von dort die Sollposi. richtig? Und wo ist der Sensor der schnell ausgelesen werden soll?
ja ja schrieb: > Dann macht der Microcontroller die Posi.-Regelung und Sendet die > Istpositon an den PC und erhält von dort die Sollposi. richtig? > Richtig > Und wo ist der Sensor der schnell ausgelesen werden soll? Direkt am Motor, verbunden mit dem Arduino. Ich dachte da an ein Speichenrad mit Lichtsensor, ist noch nicht optimal aber, in die Richtung wirds gehen.
Leon W. schrieb: > Die Berechnung an sich dürften nicht komplex Positions-regler können ganz schön komplex werden. Leon W. schrieb: > aber der PC soll als > Alternative zu den Sensoren auch in der Lage sein die Motoren > anzusteuern, Als alternative zum Microcontroller sollte das heissen vieleicht. Aber da gibts halt nur ein entweder oder. Zwei Steuerungen für eine Sache da ist eine überflüssig.
Leon W. schrieb: >> Und wo ist der Sensor der schnell ausgelesen werden soll? > Direkt am Motor, verbunden mit dem Arduino. Ich dachte da an ein > Speichenrad mit Lichtsensor, Aber dann ist doch diese Gabellichtschranke (schätz ich mal) gar nicht mit dem PC verbunden. Das ist doch eine relativ langsame Verbindung zur Anzeige des Sollwertes. Sowas würde ich mit USB-serial-Adapter machen.
Also wenn ich 1. Daten von einem Sensor am PC berechnen möchte, in diesem Fall die Motorposition 2. Am PC berechnete Daten an den Mikrocontroller schicke um mit diesem den Motor anzusteuern ist nicht der Mikrocontroller sondern das Betriebssystem der kritische Punkt? Wobei Windows ungeignet ist und es mit Linux aber prinzipiell umsetzbar ist?
Naja, es ist umsetzbar aber nicht grade trivial. (Und nur mit Real Time Linux)
ja ja schrieb: > Aber dann ist doch diese Gabellichtschranke (schätz ich mal) gar nicht > mit dem PC verbunden. Das ist doch eine relativ langsame Verbindung zur > Anzeige des Sollwertes. Sowas würde ich mit USB-serial-Adapter machen. Ich war davon ausgegangen, dass ich den Mikrocontroller für die Verbindung der Sensoren zum PC brauche.
Es kommt drauf an, wie der Sensor kommuniziert. Wenn du einen nimmst, der direkt per RS-232 kommuniziert, dann brauchst du den uC nicht.
Mein Vorhaben worauf ich letztendlich hinauswollte, war einen beweglichen Stuhl zu bauen, der mittels Positionsangaben aus einem Flugsimulatorprogramm dann seine Neigung verändern sollte. Aber da scheint mir dann ja schon Windows einen Strich durch die Rechnung zu machen. Vielen Dank für eure Hilfe hierbei, ich hätte mich ganz schön geärgert wenn ich mir das ganze equipment dafür schon gekauft hätte ;)
Mit Pc direkt wird das nichts, dafür ist ein Windows PC einfach ungeeignet. Was aber geht, ist eine Kombination aus µC und Pc. Der Pc gibt nur die Zielposition an den µC. Zb 10 cm Hub Im µC läuft dann ein Regelkreis der die Sensordaten in Realtime also zb 20ms ausliest und daraus den Istwert ermittelt um dann den Sollwert einzuregeln. Das heißt der Pc steuert den Zielpunkt an in dem er den Zielpunkt als Sollgröße liefert. Der µC regelt den Motor von der Istgröße zur Sollgröße. So ganz trivial ist ein solcher Regelkreis allerdings nicht. Je nachdem welchen Motortyp du verwenden willst würde ich allerdings eher einen anderen µC verwenden. Es gibt µC die direkt eine BLDC Unterstützung integriert haben. Abgesehen davon wird du für den Stuhl 3 Achsen bedienen müssen und zwar mit einer linearer und einer rotations Bewegung. Das heißt insgesamt 6 Motoren die da geregelt werden müssen. Ich denke das der Arduino da hoffnungslos überfordert ist. Sowohl von der Rechenleistung als auch von der reinen Anschaltmöglichkeiten ( Pins, Timer,...) Vom mechanischen Aufbau für den Stuhl mal ganz abgesehen der auch nicht gerade das einfachste sein dürfte.
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.