Go Down

Topic: Arduino-Oszilloskop - [Nano Version] (Read 14017 times) previous topic - next topic

SBond

Ja, da hast du recht. Ein Geschwindigkeitsverlust würde sich nicht vermeiden lassen. Ich werde mal ein besseres Kommunikationsprotokoll schreiben, um die Kanäle ggf. zu steuern. Habe so etwas schon mal bei meinem alten "Arduino-Control" gemacht, allerdings auf "reiner Text"-Basis. Das funktioniert zwar, ist aber sehr ineffizient. Das neue Protokoll ist von der Funktion zwar schon fertig, aber noch nicht programmiert. Die Funktion als Oszi wird dabei nur gering eingeschränkt, da das Programm nur Befehle sendet, wenn ein Zustand geändert werden soll. (z.B. Kanäle hinzuschalten oder Auflösungen ändern). Je nach dem wie das Ergebnis ist, werde ich notfalls 2 Versionen anfertigen.

Aber momentan steht erst mal noch der reine Graph im Vordergrund, so wie einige Basis-Funktionen. Ich denke mal, dass ich Mittwoch die ersten Ergebnisse hochladen kann.

domspitze

Einen Geschwinigkeitsverlust wegen einem zusätzlich Kanal fände ich nicht so gut. Ich weiß, dass viele nach mehr Kanälen schreien und ein 2. wäre sicherlich nett. Aber die Geschwindigkeit ist es, die Dein Projekt von anderen Arduino-Ozilloskopen (wie Scopino) abhebt.

SBond

Ja, wahrscheinlich hast du Recht. Ich konzentriere mich erst mal auf einen Kanal. Auch da gibt es dann ja noch viele spielereien (wie FFT, Impuls/Frequenz-Messung) die ich dann anschließend einbauen kann. "Scopino" ist auch recht interessant. Es macht immer wieder spaß, andere Werke anzuschauen und diese zu vergleichen.

michael_x

#18
Apr 29, 2013, 06:46 pm Last Edit: Apr 29, 2013, 09:04 pm by michael_x Reason: 1
Ich bin begeistert !

50 Hz Signale aufzeichnen ist ja nicht die Kunst, aber hier sieht man z.B. super Prellen eines Aus-Schalters auf der Trafo-Eingangsseite (quasi einen 12 V Trafo als Zündspule, der arme Arduino...), Nachtrag: und den Unterschied den ein kleiner 10nF Kondensator ( bei ca. 30k Widerständen ) macht.
Mit LTSpice sieht immer alles viel sauberer aus ...

Nach diesem Lob, meine Zusatzwünsche:
- Schau dir doch bitte das mit dem Trigger nochmal an: Ist das wirklich nur die steigende Flanke ?
(Wenn ich mein auf "128" getriggertes um 2.5V symmetrisches Signal ansehe, kippt das sehr häufig zwischen steigender und fallender Flanke hin und her )

- Wie könnte man die Geschwindigkeit / horizontale Auflösung variieren, ohne den Arduino jedesmal umprogrammieren zu müssen ?
Arduino sollte sich ein bisschen was vom PC sagen lassen, entweder nach Reset oder auch im laufenden Betrieb ( wenn ein Serial.available() nicht zu sehr bremst )
a) dynamisch die Baudrate anpassen
b) mit definierter Wartezeit zwischen Messungen
 


SBond

ja, das ist schon eine tolle Spielerei. Ich konnte bisher auch mein Programm sinnvoll verwenden. z.B. das Beobachten einer geregelten Fahrraddynamo-Spannung, mit der ich während der Fahrt ein Smartphone laden kann.

Das Programm ist gerade in Entwicklung. Ich arbeite täglich daran und der neue Graph ist fast fertig. Dadurch wird die Darstellung viel dynamischer und der Bereich lässt sich dann auch beliebig mit der Maus verschieben oder zoomen. Es ist momentan eine unschöne Arbeit, da alles schon sehr komplex geworden ist und viele Berechnungen gemacht werden müssen.

Die Version, die hier zur Verfügung steht, ist natürlich viel einfacher gestrickt. Auch der Trigger ist sehr einfach aufgebaut und führt daher noch sein Eigenleben, wenn schon ein leichtes Rauschen im dargestellten Signal ist.

Die Geschwindigkeit wird sich soweit auch steuern lassen. Ich werde später noch ein Protokoll einbinden, der wieder eine Kommunikation mit dem Arduino ermöglicht. Aber meine aktuellen Ziele sind erstmal die Fertigstellung des Graphen mit vernünftigen Basisfunktionen :)

Ich hoffe, dass ich bis Wochenende eine neue Version hochladen kann. ...je nach dem, wo es noch Probleme gibt.


lg
SBond

SBond

Hi Leute,

ja... das Update verspätet sich noch ein klein wenig. Es ist alles etwas aufwändiger geworden, als gedacht. Der neue Graph, ist aber schon fast fertig. Ich muss noch einige Fehler beheben und die Werte anpassen. Würde es jemand mal für mich austesten und die FPS-Werte bei der Standardgröße durchgeben? Wichtig wäre für mich zumindest der Prozessortyp und die FPS-Rate, da ich gerne die Leistungsfähigkeit bei verschiedener Hardware auswerten möchte.

Der Graph ist jetzt dynamisch aufgebaut und man kann den sichtbaren Bereich mit der Maus verschieben und mit dem Mausrad zoomen. Es können auch unbegrenzt viele Kanäle dargestellt werden. Zur Zeit sind 3 Modis einprogrammiert:

Modus 1: Oszi-Modus (sehr hohe Darstellungsgeschwindigkeit bzw. Echtzeitdarstellung der Werte vom Arduino)
Modus 2: Aktualisierungs-Modus (allgemein für langsame Prozesse)
Modus 3: scrolling-Modus (allgemein für langsame Prozesse, scrollt aber den Graphen kontinuierlich)


hier mal Modus 1 (32-Bit version) mit einem Testsignal:



bis dann...

lg SBond

J3RE

#21
May 09, 2013, 12:28 am Last Edit: May 10, 2013, 11:48 am by J3RE Reason: 1
Ich habe es einmal getestet.

Modus 1 - 64-Bit Version


Das Verschieben des Graphs mit der Maus und das Zoomen funktioniert super. Die Skalierungen auf den Seiten ist auch sehr hilfreich. Ich freue mich schon auf die Finale-Version. :)

Grüße,
J3RE

dut

nice work!

ich habe 1 Frage, wie man die Frequenz von diesem Code zu berechnen. kann mir jemand erklären den Code
dut eden rockes

SBond

meinst du die FPS-Rate?

Wenn es für dich einfacher ist, dann kannst du deine Frage auch in Englisch schreiben ;)

dut

oh ok..i write in English..

sorry for noob question..i want to know how to calculate FPS-rate? and i want to know how the coding work..i cant understand that..
dut eden rockes

SBond

no problem :D

It's pretty simple to calculate the FPS rate:  FPS = (plotted values per seconds) / (graph width)
so... each pixel of the graph (in width direction) represents one value.


my pseudo code:


Code: [Select]


While (1)

; plot a Pixel
;--------------------------

...
...
...


; calc FPS rate
;--------------------------

time_difference = ElapsedMilliseconds() - old_time

If (time_difference >= 1000)
old_time = ElapsedMilliseconds()
MyFPS = plot_counter/graph_width
SetGadgetText(FPS_label, "FPS: " + StrF(MyFPS,2))   ; show FPS rate with 2 decimal place
counter = 0  ; reset counter
Else
counter + 1  ; count up

EndIf

...
...
...

Wend



Could I help you?



Megaionstorm

domspitze hat recht, vorallendingen die Skala zum leichteren Ablesen der Messwerte muss noch hinzugefügt werden !
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

SBond

jo, ist drin ;)

Heute will ich noch Messspitzen und ein kleines "Triggerkreuz" implementieren. Gestern hat mich die Programmiersoftware ja fast in den Wahnsinn getrieben. Wenn alles halbwegs reibungslos funktioniert, dann kommt am Sonntag ein Update mit dem neuen Graphen.  ...jetzt muss ich erstmal noch einige nervige Fehler ausbügeln.

Feija

au, ein sehr schönes Projekt! Mein Respekt.....

siehst du ne Möglichkeit das auch aufn Mac zum Spielen zu bekommen?

Würd mir ungern nen Windows installieren wollen.


LG
Feija

sth77

Da in PureBasic (erhältlich für Linux, Windows und MacOS) programmiert wird, sollte (mit kleinen Anpassungen) auch eine Mac-Version möglich sein.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Go Up