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!
10.05.2016, 11:14 (Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2016 11:16 von t0bsN.)
ich habe noch nicht so viel Erfahrungim Bereich Arduino und steh gerade vor einem Problem.
Die Aufgabe ist, ein Signal über Signalgenerator am analogen Eingang des Arduino zu lesen und in Labview als Graph, sozusagen als Oszi Bild darzustellen.
Dazu habe ich mir das Labview Interface for Arduino geladen und damit eigentlich soweit alles aufgebaut. Jedoch kann ich mir nur sehr kleine Frequenzen anzeigen lassen... sobald ich ein sinus oder rechteck am Eingang habe mit mehr als ca 40Hz wird der sinus zum dreieck etc...
Weis zufällig jemand wie ich das Problem lösen kann ?
Ich hab mal geschaut...bei einem Sinus von 50Hz hat er auf einer Sinuswelle gerade mal 7 Abtastpunkte...das ist laut Datenblatt ja viel zu wenig was er eig können müsste :/
ps.: den standard arduino ide von labview und mein vi hab ich mal mit angehängt
Anzeige
10.05.2016, 11:38 (Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2016 11:43 von GerdW.)
Zitat:Jedoch kann ich mir nur sehr kleine Frequenzen anzeigen lassen...
Mess doch einfach mal die Ausführungszeit deiner FOR-Loop - dann bekommst du ein Gefühl dafür, wie schnell (oder langsam) die Funktion "Analog Read Pin" ist…
Du verwendest eine Baudrate von 250kbaud, damit kannst du ca. 25kB pro Sekunde übertragen. Wenn man dies jetzt durch die Anzahl der Bytes teilt, die pro Pin-Abfrage verschickt werden, bekommst du eine maximale Samplerate bei Einzelwertabfrage. Hinzu kommt aber noch die Zeit, die der Arduino zum Verarbeiten der Kommandos und zum Verschicken der Messwerte benötigt… Und evtl. gibt es noch eine maximale Samplerate beim ADC des Arduino, da hast du sicherlich ein Datenblatt zur Verfügung!
Ja also laut Datenblatt sollte er ja 10k samples pro sekunde schaffen....dh. frequenzen von 100Hz sollten problemlos möglich sein darzustellen...
und im netz gibt es ja einige Oszi Programme für den Arduino, die ich mal getestet habe, da zeigt es mir problemlos auch 400Hz signale an
Meine Vermutung ist, dass der Fehler bzw die verlangsamung in der von labview vorgefertigten datei (LIFA_Base) für den arduino liegt... jedoch ist diese für mich extrem unübersichtlich..
habe versucht den Code zu kürzen, jedoch kommt es dann schon beim initialisieren der kommunikation zu einem fehler :/
evtl kennt ja jmd die genauen Stellen oder zusatzbefehle um die Sache zu beschnleunigen
10.05.2016, 13:00 (Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2016 14:00 von jg.)
Zitat:Meine Vermutung ist, dass der Fehler bzw die verlangsamung in der von labview vorgefertigten datei (LIFA_Base) für den arduino liegt... jedoch ist diese für mich extrem unübersichtlich..
Ja, deine Vermutung dürfte in die richtige Richtung gehen.
Aber wenn du sagst, dass dieser doch sehr übersichtliche C-Code (selbst für einen C-Amateur wie mich!) für dich schon "unübersichtlich" ist, dann solltest du wohl besser die Finger davon lassen…
Hast du mal die Ausführungszeit des VIs AnalogReadPin bestimmt? Kannst du das mal hier anhängen?
@Jens:
Wer im Glashaus sitzt, sollte nicht mit Steinen schmeißen! ("überrpüfen")
(10.05.2016 14:06 )t0bsN schrieb: Evtl hat der Arduino ein Problem mit dem gleichzeitigen Lesen und Schreiben der Daten ?
Das ist sowieso ein Grundproblem an deinem ersten VI (soll heißen die 3 parallelen Komm-VIs). Über eine serielle Leitung kannst nichts gleichzeitig schreiben sondern immer nur sequentiell!
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Also ich habe das ganze mal auf eine Comm-Leitung gekürzt, jedoch ist das Ergebnis auch nicht besser.
Gibt es den in Labview direkt die Möglichkeit mittels das Arduino Plugins daten zuerst im internen Speicher zu speichern und dann abzurufen und als Graph zu zeigen ? Falls ja wie ?