Hallo Leute, ...ich bin ganz neu hier :D Ich habe mir vor kurzem ein Arduino-Board (und noch einige andere) zugelegt und bin begeistert. Nach viel spielerei habe ich jetzt nach einer Möglichkeit gesucht, die vom Arduino gesendeten Daten (serial.print) auf einem PC zu visualisieren. ...quasi wie mit einem Oszilloskop. Leider war das Ergebnis der Suche sehr ernüchternd. :( ...und darum programmiere ich jetzt selber ein Software-Oszi. Meine Software ist noch im Alpha-Stadium und wird später natürlich als Freeware angeboten. Funktionen: -Übertragung der Daten zwischen Software und Arduino mit einer Baudrate von 250000 (ca. 31 Kb/s ,maximal) -Bis zu 2850 Datenpakete können pro Sekunde ausgewertet werden. -bis zu 10 Kanäle können gleichzeitig dargestellt werden (könnten noch sehr viel mehr sein, aber 10 sollten ja wohl reichen) -der Zustand aller Analoge Pins,Digitale Pins, Variablen im Arduinocode, können angezeigt und auch im laufenden Betrieb geändert werden (auch setzen von PWM) -neben dem Graph steht auch eine Konsole/Terminal zur Verfügung -der freie SDRAM und die Laufzeit des Arduino können angezeigt werden wird auch noch kommen: -Messen von Impulsen -lesen/schreiben/sichern/rücksichern/formatieren des EEPROM -Triggern von periodischen Signalen (steigende und fallende flanke) -Single-Shot-Modus -Rolling-Modus -X-Y-Betrieb -HoldOff-Modus -Mittelwertbildung von Signalen -Grenzwertüberwachung -differenzbild von zwei Signalen erzeugen -Datenlogging ...und was noch so ansteht ;) Zur kommunikation mit dem Arduino wird im C-Code ein header eingebunden (benötigt ca. 8KB Flash und 0,5KB SDRAM. Dieser kommuniziert dann mit der Software automatisch. Ohne Header kann die Software aber noch "manuell" mit dem Arduino kommunizieren und oszilloskopieren. Der einzige große Nachteil der Software.... es ist mit AutoIt geschrieben. Es ist also nur ein langsamer Interpreter. Zum Zählen von 0 auf 1 Mrd braucht es bei mir 43 sek. (C braucht 4 sek und PureBasic schafft es in 0,3 sek.) Bei meinen Tests auf verschiedenen Rechnern konnte ich 80 - 300 Messungen (aller Arduino-Eingänge/Ausgänge gleichzeitig) pro Sekunde plotten. Sehr viel schneller geht es aber eh nicht, da man mit den ca. 20-30 Kb/s die man empfängt keine Darstellungsfrequenz im KHz-Bereich schafft. naja... es würde mich freuen, wenn noch jemand eine gute Idee hätte, was man noch brauchen könnte. Zwischen Weihnachten und Neujahr können dann auch die ersten Leute testen. ...wer möchte noch ein paar Infos zum Screenshot: Die blaue Kurve ist die Lade/Entladekurve eines Kondensators(47µF) und die gelbe Kurve ist mein Poti, mit dem ich die Obergrenze des Kondensators einstelle. Es Dient nur zum Test meiner Software und hat keinen tieferen Sinn. mfg -SBond-
:
Gesperrt durch Moderator
Sieht gut aus, Dein Screenshot. Vielleicht wäre Processing als GUI noch eine Möglichkeit: http://accrochages.drone.ws/en/node/90 http://arduino.cc/forum/index.php/topic,8077.0.html
Auf Processing bin ich auch schon mal gestoßen. Allerdings hatte ich damit immer ein paar Schwierigkeiten. Und für Messungen, die man mal eben schnell machen möchte, ist es auch nur bedingt geeignet. Ich denke mal so ein kleines portables Programm ist schon schöner :D
Hi Leute, Ich habe nach langem hin und her noch mal etwas neues geschrieben. Ich nenne es "Arduino-Oszilloskop [Nano Version]" und mit einer Dateigröße von ca. 54 KB ist es doch relativ schlank. Mit diesen kleinen Oszilloskop kann man mit dem Arduino (bzw. mit dem reinen ATmega) Spannungsverläufe darstellen. Beim Arduino ist eine Zeitauflösung von 50µs problemlos möglich. Unterstützte Baudraten: 100 bis 1843200, wobei der Arduino bei mir bis zu 550K geschafft hat. Mit den verschiedenen Modis kann man auch periodische Signale triggern oder Signale bis zu 83 Minuten lang grafisch aufzeichnen. Die empfangenen Daten werden byteweise eingelesen und als Binärdaten interpretiert. 1 Byte entspricht ein Messwert, womit ein Messwert dem entsprechend eine Auflösung von 8 Bit (256 Werte) haben kann. Das Programm ist für einfache Messungen bis in den unteren KHz-Bereich geeignet. ;) Arduino-Sketch und weitere Daten sind im Programm hinterlegt. ...eventuell kann es ja jemand gebrauchen ;) lg SBond
Wenn du eine Matlab Lizenz zur Verfügung hast, wäre es Überlegung Wert es damit zu realisieren. Matlab ist ja bekanntlich sehr mächtig in Sachen Signalverarbeitung. Der Haken ist nur die Lizenz... Für Studenten gibts die aber für "nur" ca. 80 Öcken. Wie komme ich nun auf Matlab? Ich habe selbst schon an das Gleiche wie du gedacht und will Matlab dafür verwenden, da es mir in Sachen Signalverarbeitung am geeignetsten erscheint. Man kann seinen fertigen Code am Ende auch schön in eine Exe Datei verpacken. Ich kam allerdings bis heute nicht dazu etwas in Matlab zu basteln. Das Matlab für so eine Sache durchaus geeignet ist, zeigen mir Projekte aus meinem Arbeitsleben, in welchen Oszilloskopierte Werte aus einer Excel Datei ausgelesen und hinsichtlich Mustererkennung, das geht in Richtung Neuronale Netze wenn dir das etwas sagt, sehr gut funktioniert. Eine Matlab/Simulink Anbindung gibt es ja meines Wissens nach für den Arduino inzwischen.
...naja bin mir nicht ganz sicher, ob ich das machen würde ;) Ich arbeite ab und zu mit Matlab. Hauptsächlich Simulink, da dies für regelungstechnische Simulationen perfekt ist. Für allgemeine Anwendungen und Programme, ist es aber nur bedingt geeignet. ...schätze ich mal. Umfangreiche Programme mit etwas größerem Quellcode (>10000) kann ich mir mit Matlab nicht so richtig vorstellen. Für technische bzw. mathematiche Probleme, ist es denke ich mal besser geeignet. Da müsste ich mich aber auch noch mal richtig belesen. lg SBond
kleines Update: Version 1.0.0.1 Abtastrate um das 2,44-Fache erhöht: ca. 48K Samples/Sek, Zeitauflösung ca. 21 µs lg SBond
...du musst ja nicht gleich so brüllen :( Dennoch hast du Recht. Ich konnte mich nicht so richtig entscheiden. Von jetzt an geht es hier weiter: Beitrag "Re: Arduino-Oszilloskop [Arduino-Control]"