Forum: Mikrocontroller und Digitale Elektronik Sensoren am PC auslesen, möglichst Verzögerungsfrei


von Leon W. (lonxx)


Lesenswert?

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?

von Eumel (Gast)


Lesenswert?

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.

von ja ja (Gast)


Lesenswert?

Leon W. schrieb:
> Die Verzögerung sollte unter einer
> Sekunde liegen.

Das ist ja sehr lange da musste wahrscheinlich noch eine 
Verzögerungsroutine einbauen.

von icke (Gast)


Lesenswert?

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.

von ja ja (Gast)


Lesenswert?

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.

von Eumel (Gast)


Lesenswert?

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

von ja ja (Gast)


Lesenswert?

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.

von Leon W. (lonxx)


Lesenswert?

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.

von icke (Gast)


Lesenswert?

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.

von Leon W. (lonxx)


Lesenswert?

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.

von ja ja (Gast)


Lesenswert?

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?

von Leon W. (lonxx)


Lesenswert?

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.

von ja ja (Gast)


Lesenswert?

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.

von ja ja (Gast)


Lesenswert?

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.

von Leon W. (lonxx)


Lesenswert?

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?

von icke (Gast)


Lesenswert?

Naja, es ist umsetzbar aber nicht grade trivial. (Und nur mit Real Time 
Linux)

von Leon W. (lonxx)


Lesenswert?

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.

von icke (Gast)


Lesenswert?

Es kommt drauf an, wie der Sensor kommuniziert.
Wenn du einen nimmst, der direkt per RS-232 kommuniziert, dann brauchst 
du den uC nicht.

von Leon W. (lonxx)


Lesenswert?

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

von Ralph (Gast)


Lesenswert?

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