Forum: PC-Programmierung Arduino-Oszilloskop [Arduino-Control]


von Martin L. (sbond)


Angehängte Dateien:

Lesenswert?

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
von chris (Gast)


Lesenswert?

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

von Martin L. (sbond)


Lesenswert?

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

von Martin L. (sbond)


Angehängte Dateien:

Lesenswert?

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

von MatFreak (Gast)


Lesenswert?

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.

von Martin L. (sbond)


Lesenswert?

...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

von Martin L. (sbond)


Angehängte Dateien:

Lesenswert?

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

von Kevin (Gast)


Lesenswert?

UND WARUM ALLES DOPPELT???

von Martin L. (sbond)


Lesenswert?

...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]"

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.