Hallo Leute, ich erfasse mit meinen Arduino Uno Spannungswerte mittels der zugehörigen ADCs. Diese werden anschließend über die serielle Schnittstelle an Simulink gesendet. Dort werden diese Daten mittels eines Scope angezeigt. Soweit funktioniert alles toll. Leider passt die Zeitachse in Matlab mit der Echtzeit nicht überrein. Mittels dem Simulinkblock Real Time Pacer kann eine deutliche Verbesserung erzielt werden. Jedoch entstehen ebenfalls noch Ungenauigkeiten von 10-30ms. Weiters habe ich es mit Real-Time Synchronizatin versucht was leider immer zu einen Absturz führt vom meinen Windows 7 BS. In Simulink verwende ich die Arduino Bibliothek. Gibt es eine Möglichkeit die Daten des Arduino UNO in Echtzeit zu erfassen. Sprich jeden Abtastzeitpunkt in Echtzeit (0.1ms) wird im Scope ein neuer Wert angezeigt. Wäre dies Möglich so könnte ich mit einer Systemidentifikation fortfahren. Danke für die Antworten mfg
Georg jun B. schrieb: > Jedoch entstehen ebenfalls noch Ungenauigkeiten von 10-30ms. > > Weiters habe ich es mit Real-Time Synchronizatin versucht was leider > immer zu einen Absturz führt vom meinen Windows 7 BS. > > In Simulink verwende ich die Arduino Bibliothek. > > Gibt es eine Möglichkeit die Daten des Arduino UNO in Echtzeit zu > erfassen. Sprich jeden Abtastzeitpunkt in Echtzeit (0.1ms) wird im Scope > ein neuer Wert angezeigt. Zu faul nachzulesen was dieser Arduino kann... Gehen die Daten tatsächlich über eine echte serielle an den PC oder über USB? Falls letzteres, dann geht dies nicht. Allenfalls könnte zwischengespeichert werden, um diesen Eindruck zu erzeugen (die begrenzte Bildwiederholrate und die langsame Verarbeitung im Gehirn sprechen dann allerdings immer noch dagegen...)
Georg jun B. schrieb: > Sprich jeden Abtastzeitpunkt in Echtzeit (0.1ms) wird im Scope > ein neuer Wert angezeigt. Erstmal solltest du "Echtzeit" genau definieren. Und da sind 0.1 ms schon sehr kurz. Oft zählen viel größere Zykluszeiten noch als "Echtzeit". Das Problem an der Arduino Standard-Funktion zum Auslesen von Analogdaten ist die fehlende Performance. Wenn du das Problem gelöst hast, musst du noch schauen/abschätzen, ob auch die eingestellte Baud-Rate des virtuellen Com-Ports ausreicht. Du solltest erstmal dein Problem von dem blöden Matlab entkoppeln und schauen, ob du die geforderte Echtzeit-Anforderung mit dem Arduino überhaupt schaffst. Ich habe im Hinterkopf, dass ein normaler Atmega ADC nicht mehr als 32 kHz Samplefrequenz schafft (korrigiert mich, ich habe auch nur Halbwissen). Und das auch definitiv nicht mit den Standard-Arduino-Funktionen. Ein Arduino ist kein Oszi! Ansonsten schau mal nach Poor Man's Oscilloscope.
>Gehen die Daten tatsächlich über eine echte serielle an den PC oder über >USB? Falls letzteres, dann geht dies nicht. Warum nicht? >Du solltest erstmal dein Problem von dem blöden Matlab entkoppeln und >schauen, ob du die geforderte Echtzeit-Anforderung mit dem Arduino >überhaupt schaffst. Der Arduino kann bei maximaler Auflösung bis 15kSPS. Angenommen ich baue jetzt in Matlab Simulink einen einfachen Regler auf (z.b diskreter PI-Regler) und stelle eine Abtastzeit von 0.01sec ein und spiele diesen Regler anschließend auf den Arduino runter. Der Arduino braucht für die Berechnung eines Ausgangssignals 0.005sec,also die Hälfte der Abtastzeit d.h es entsteht kein "Überlauf". Gibt der Arduino dann tatsächlich alle 0.01sec einen neuen Wert auf seinen Ausgang den DAC aus? mfg
Georg jun B. schrieb: >>Gehen die Daten tatsächlich über eine echte serielle an den PC > oder über >>USB? Falls letzteres, dann geht dies nicht. > > Warum nicht? > >>Du solltest erstmal dein Problem von dem blöden Matlab entkoppeln und >>schauen, ob du die geforderte Echtzeit-Anforderung mit dem Arduino >>überhaupt schaffst. Hast du es mittlerweile hinbekommen ? Wenn ja, könntest du eine Lösung präsentieren bzw. kurz zeigen ?
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.