INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

Arduino Periode messen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

20.09.2023, 09:38
Beitrag #1

Fuchs Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Mar 2013

2023
-
DE


Deutschland
Arduino Periode messen
Liebe community,

ich habe die Aufgabe ein Messsystem neu aufzubauen. Es geht konkret um die Berechnung des Massenträgheitsmoments eines nicht symmetrischen Körpers.
Ein luftgelagerter Aufspanntisch wird in Schwingung versetzt. Eine Lichtschranke gibt einen Spannungsimpuls wenn eine Markierung am Tisch diese durchläuft.
Dieser Spannungsimpuls ist t1. Beim erneuten durchlaufen haben wir t2. Die Zeit dazwischen ist entscheidend.

Ich habe mich für ein günstiges Messsystem entschieden. Für diese Aufgabe verwende ich ein Arduino Nano.
Über LabView die Zeiten zu erfassen und zu berechnen dürfte eigentlich keine Schwierigkeit sein.
Meine Frage ist eigentlich ob es nicht genauer wäre die Zeit auf dem Board selber zu messen?
Wenn ich ein Programm über die Arduino IDE schreibe wird das doch auch auf dem Board gemacht.
Wie unterscheiden sich diese Methoden?
Oder bin ich hier total auf dem Holzweg?



Danke schon mal im Voraus! Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.09.2023, 10:45
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.440
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Arduino Periode messen
Hallo Fuchs,

Zitat:Die Zeit dazwischen ist entscheidend.
Wie sind denn deine Anforderungen bzgl. Auflösung und Genauigkeit?

Zitat:Ich habe mich für ein günstiges Messsystem entschieden. Für diese Aufgabe verwende ich ein Arduino Nano.
Über LabView die Zeiten zu erfassen und zu berechnen dürfte eigentlich keine Schwierigkeit sein.
Meine Frage ist eigentlich ob es nicht genauer wäre die Zeit auf dem Board selber zu messen?
Wenn ich ein Programm über die Arduino IDE schreibe wird das doch auch auf dem Board gemacht.
Wie unterscheiden sich diese Methoden?
Den Arduino zum Erfassen der Spannunsgpulse zu verwenden, ist erstmal ok…

Jetzt geht es aber um die Frage, wo der Zeitpunkt (bzw. genauer der zeitliche Abstand zwischen 2 Pulsen) erfasst wird:
- Wenn "LabVIEW" das machen soll, muss der Arduino deinem PC erstmal die Signale melden. Das geschieht üblicherweise über einen (virtuellen) seriellen Port - und der sorgt für Verzögerungen! Und noch schlimmer: du weißt nicht, welcher Jitter auf diesem Kommunikationkanal wirkt, was sich wiederum auf die Genauigkeit deiner Messung auswirkt…
- Wenn dein Arduino die Zeitdifferenz ermittelt, dann liegt die Genauigkeit im Bereich deiner Schleifeniterationszeit im Arduino. Diese wiederum ist an die maximale Samplerate des ADCs im Arduino gekoppelt: einfach mal das Datasheet lesen…

Eine Alternative wäre noch eine einfache USB-Box wie die USB-6001 von NI. Hier kannst du einen Analogkanal mit 20kHz samplen, kommst also auf eine zeitliche Auflösung von 50µs…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.09.2023, 11:24
Beitrag #3

Fuchs Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Mar 2013

2023
-
DE


Deutschland
RE: Arduino Periode messen
Zitat:Das geschieht üblicherweise über einen (virtuellen) seriellen Port - und der sorgt für Verzögerungen! Und noch schlimmer: du weißt nicht, welcher Jitter auf diesem Kommunikationkanal wirkt, was sich wiederum auf die Genauigkeit deiner Messung auswirkt…
Die benötigte Genauigkeit liegt im Millisekundenbereich.
Wichtig ist die Wiederholbarkeit. Wenn ich 50 Messungen mache und die Streuung zu groß dann ist das blöd! Ich dachte mir schon, dass die Messung am PC nicht so genau ist. Die Frage ist wie ungenau sie ist. Liegt die auch im µs Bereich würde ich das so machen.

Zitat:Wenn "LabVIEW" das machen soll, muss der Arduino deinem PC erstmal die Signale melden.
Die Kommunikation mit dem Nano läuft...


Zitat:- Wenn dein Arduino die Zeitdifferenz ermittelt, dann liegt die im Arduino.
Da fehlt mir im Moment noch ein wenig das Verständnis. Ich schreibe ein Programm auf der Oberfläche von LabView. Wie kann ich nun die Zeit zwischen zwei Signalen auf dem Board messen und mir dann wieder auf dem PC anzeigen lassen?Blink


Zitat:Eine Alternative wäre noch eine einfache USB-Box wie die USB-6001 von NI. Hier kannst du einen Analogkanal mit 20kHz samplen, kommst also auf eine zeitliche Auflösung von 50µs…
Hatte ich erst im Sinn. Es soll aber auch so Smart wie möglich sein. Für die Spannungsversorgung von Magnetventilen (24V) wird letztendlich eine kleine Kunststoffbox verwendet. Da soll auch der Arduino rein. Mit dem USB-6001 hätten wir dann zwei Kästen und mehr Kabelsalat.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.09.2023, 11:52 (Dieser Beitrag wurde zuletzt bearbeitet: 20.09.2023 11:53 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.440
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Arduino Periode messen
Hallo Fuchs,

Zitat:Die benötigte Genauigkeit liegt im Millisekundenbereich.
Du willst also mit >=1kHz samplen…

Zitat:Wichtig ist die Wiederholbarkeit. Wenn ich 50 Messungen mache und die Streuung zu groß dann ist das blöd! Ich dachte mir schon, dass die Messung am PC nicht so genau ist. Die Frage ist wie ungenau sie ist. Liegt die auch im µs Bereich würde ich das so machen.
Beim (virtuellen) COM-Port (VCP) wirkt auf PC-Seite der ganze Treiberstack (USB-LowLevel, USB-Seriell, VISA) und drumherum Windows mit seinem Multitasking: das könnten µs sein, wenn der Virenscanner oder WinUpdate loslegt aber auch mehrere Sekunden…

Zitat:Da fehlt mir im Moment noch ein wenig das Verständnis. Ich schreibe ein Programm auf der Oberfläche von LabView. Wie kann ich nun die Zeit zwischen zwei Signalen auf dem Board messen und mir dann wieder auf dem PC anzeigen lassen?
Das Problem lautet: "Wann startete (oder endete) der erste Puls und wann der darauffolgende Puls?"
Du musst also dir den ersten Zeitpunkt merken und schauen, wann der nächste Puls/Zeitpunkt eintritt. Dann die Differenz bilden!

Wenn du jetzt mit konstanter Samplerate arbeitest, vereinfacht sich das Problem zu: bei welchem Sample trat der erste Puls auf und wieviele Samples später der zweite? Dann einfach "Differenz der Samplenummer / Samplerate" berechnen…

Das kannst du sowohl auf LabVIEW/PC-Seite machen oder im Arduino. Der Arduino hat den Vorteil, dass er als µC "quasi realtime" arbeitet und auch einfach zählen kann. Auf PC-Seite musst du erstmal die ganzen Messdaten vom Arduino (per VCP) übertragen und auswerten - was eben mit Overhead und Jitter behaftet ist. Deshalb würde ich für diese klar umrissene Aufgabe die Lösung direkt auf dem Arduino bevorzugen…

Zitat:Für die Spannungsversorgung von Magnetventilen (24V) wird letztendlich eine kleine Kunststoffbox verwendet. Da soll auch der Arduino rein. Mit dem USB-6001 hätten wir dann zwei Kästen und mehr Kabelsalat.
In eine geringfügig größere Kunststoffbox passt auch die USB-6001 hinein…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.09.2023, 15:33
Beitrag #5

Fuchs Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Mar 2013

2023
-
DE


Deutschland
RE: Arduino Periode messen
OK!
Soweit so gut.
Ich werde die Messung auf dem Board durchführen.
Mir fehlt aber immer noch das Verständnis wie ich das anstelle.
Wenn ich über die LabView Oberfläche schreibe und lese sind genau die Dinge dazwischen die zu einer großen Ungenauigkeit führen.
Wie könnte ein Programm aussehen wo mir nur die Zeit dazwischen anzeigt? Blink

Da habe ich keinen Ansatz.


Zitat:Wenn du jetzt mit konstanter Samplerate arbeitest, vereinfacht sich das Problem zu: bei welchem Sample trat der erste Puls auf und wieviele Samples später der zweite? Dann einfach "Differenz der Samplenummer / Samplerate" berechnen…
Oder liegt die Antwort hier drin und ich verstehe es nicht
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.09.2023, 06:38
Beitrag #6

RMR Offline
Laborkater
**


Beiträge: 238
Registriert seit: Nov 2008

09f1 - 2010SP1(f4) - 2012SP1f5 - 2014 SP1f10 -2017f3
2009
DE_EN

76437
Deutschland
RE: Arduino Periode messen
(20.09.2023 15:33 )Fuchs schrieb:  Ich werde die Messung auf dem Board durchführen.
Mir fehlt aber immer noch das Verständnis wie ich das anstelle.
DAs ist eine sehr gute Idee.
Du solltest dich auf der Arduinoseite mit dem Thema Interrupt und micros befassen.

Zitat:Wenn ich über die LabView Oberfläche schreibe und lese sind genau die Dinge dazwischen die zu einer großen Ungenauigkeit führen.
Wie könnte ein Programm aussehen wo mir nur die Zeit dazwischen anzeigt? Blink
Da habe ich keinen Ansatz.

Ein knapper Ansatz hierfür wäre folgender:

LV: sendet Messungssart an den Nano
Nano: warten auf Interrupt Lichtschranke1
if interupt Lichtschranke1 micros = 0
warten auf Interrupt Lichtschranke 2
if interrupt Lichtschrnake 2
micros = differenzzeit
Serial send differenzeit an LV
LV: Darstellen, speichern, Plotten...

Hope it helps, Ralf aka RMR

100nF passen immer.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.09.2023, 07:45
Beitrag #7

Fuchs Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Mar 2013

2023
-
DE


Deutschland
RE: Arduino Periode messen
Hallo Ralf,

für mein Verständnis ist das nicht möglich. Ich kommuniziere entweder über LV mit dem Arduino oder über die Arduino IDE.

ODER?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.09.2023, 12:07
Beitrag #8

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 206
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
RE: Arduino Periode messen
Servus Fuchs,

ich bin jetzt nicht in dem Thema drin, aber wenn auf dem Board keine Software läuft, die dir die Informationen gibt, die du brauchst, musst du das irgendwie erstellen. Das Board muss ja auch wissen was du willst und wie es die Informationen bekommt. Ich weiß jetzt aber nicht ob es da fertiges gibt oder das mit den richtigen Befehlen abgefragt werden kann.
Klingt jetzt zumindest nicht so, so wie ich das hier lese, also musst du das selbst machen, auf dem Arduino Nano selbst!

MfG Timo

"Auch aus Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen."
Johann Wolfgang von Goethe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.09.2023, 06:00
Beitrag #9

Fuchs Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Mar 2013

2023
-
DE


Deutschland
RE: Arduino Periode messen
Danke für eure Antworten!

Wenn ich ein Programm auf der Oberfläche der Arduino IDE schreibe und mir die ms zwischen zwei Signalen berechnen lasse, wie bekomme ich den Wert der ms auf die Oberfläche von LV?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.09.2023, 06:53 (Dieser Beitrag wurde zuletzt bearbeitet: 22.09.2023 06:54 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.440
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Arduino Periode messen

Akzeptierte Lösung

Hallo Fuchs,

Zitat:wie bekomme ich den Wert der ms auf die Oberfläche von LV?
Ganz einfach ausgedrückt:
Code:
im Arduino:
serial.println("dt=" + ms)

in LabVIEW:
VISARead

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Arduino Ultraschallsensor mit Ni USB-6009 sylar113 5 5.980 27.05.2014 20:03
Letzter Beitrag: jg
  Counter mit definierter Periode / Messfrequenz abfragen Robka 6 7.204 19.05.2010 11:46
Letzter Beitrag: Robka
  Beim Sinus jeden Maximalwert pro Periode erfassen holographics 1 6.617 02.11.2009 22:05
Letzter Beitrag: jg
  Mit DAQmx STOP TASK warten bis periode zu ende SteffenSI 4 6.481 14.06.2009 19:28
Letzter Beitrag: SteffenSI
  Counter für Periode triggern? Thor 0 3.322 27.02.2009 14:18
Letzter Beitrag: Thor

Gehe zu: