"Oszilloskop"-Programm für Daten aus dem UART?

Hallo zusammen,

was ich derzeit suche ist eigentlich zu einfach, als dass man es glauben möchte, dass es das nicht schon fertig gibt. Man nehme einen beliebigen µC mit ADC und UART (ich dachte an AVR-Teile, weil die so schöne DIP-Gehäuse haben ;-) und messe damit eine handvoll Spannungen, die dann via UART an den PC gehen und dort mit einer Art Oszilloskopoberfläche angezeigt werden. Auf der X-Achse sollte die Zeitskalierung passen, muss aber nicht zwingend verstellbar sein, dto auf der Y-Achse. So was gibts doch sicher schon fertig, ich bin nur mal wieder unfähig, die Bäume im Wald auszumachen, oder? Wer weiss auf Anhieb was fertiges? Den µC schaff ich ohne Stress, mit der PC-Programmierung hab ichs nicht so :-( Was nettes plattformunabhängiges wäre noch schöner, weil ich auch nach und nach von Windows wegkommen will...

Für gestandene Javaprogrammierer ist das wahrscheinlich etwas um die Finger morgens warmzutippen, für mich wäre das einfach Einarbeitung zur Unzeit.

Vielen Dank für alle Hinweise

Marte

Reply to
Marte Schwarz
Loading thread data ...

Am Wed, 7 Apr 2010 19:22:23 +0200 schrieb Marte Schwarz:

Die Daten in Dateien packen und mit Gnuplot visualisieren?

formatting link

Sehr flexibel, über ein paar Konfigurationsdateien zu steuern. Die Ausgabe ist allerdings starr, Knöpfe drehen um mal hineinzuzoomen wie am Oszi geht da nicht ohne weiteres.

Lutz

--
Mit unseren Sensoren ist der Administrator informiert, bevor es Probleme im 
Serverraum gibt: preiswerte Monitoring Hard- und Software-kostenloses Plugin 
 Click to see the full signature
Reply to
Lutz Schulze

Hochsprache ( d.h. FORTH ) im Controller vereinfacht die Erstellung von solchen Trivialanwendungen sehr: kann man gleich im Controller auf Dezimal wandeln, die Zahlenkolonnen in ASCII-Klartext ausdrucken. Das dann in Terminalprogramm mitschreiben, das File in MathCad einlesen wo man nicht nur plotten sondern auch rechnen und FFT machen kann. MathCad exportiert dann zumindest Microsoft RTF was gut genug zum Einlesen in mein Adobe DTP-Programm ist.

MfG JRD

Reply to
Rafael Deliano

Marte haette das wahrscheinlich lieber "online", ohne Files schaufeln zu muessen. M.W. geht das ganze mit Excel VBA, aber da ich kein Programmierer bin kann ich nicht sagen wie die das gemacht hatten. Jedenfalls war alles was an Programm gebraucht wurde in MS-Office bereits enthalten und damit auf dem Rechner vorinstalliert.

Vermutlich ginge es auch mit OpenOffice und Phyton, da koennte Frank sicher mehr zu sagen. Mit DAQFactory geht es definitiv, aber das hat nicht jeder.

--
Gruesse, Joerg

http://www.analogconsultants.com/
 Click to see the full signature
Reply to
Joerg

Moin!

Gabs auf irgendeiner c't-CD nicht mal eine Gratisversion von LabVIEW? Graph-Anzeigen, Knöppe und sowas ist da alles schon fertig und schnell zusammengestöpselt. Vor allem bist Du dann flexibel darin, was Du noch an Daten mit dem Controller austausche willst (Trigger, Samplerate, Relais für Vorverstärker etc).

Gruß, Michael.

Auf

Reply to
Michael Eggert

Das wäre aber nun wirklich mit dem Finger durch die Nase ins Knie gefickt. (Jedenfalls, wenn nicht gleichzeitig auch eine Archivierung der Daten gewünscht ist)

Unter richtigen OS gibt es für sowas Pipes. Alles, was man vor Gnuplot braucht, ist da also eine Demuxer, der die von ttySx eintreffenden Daten kanalweise splittet und an n (=Kanalzahl) Pipes verfüttert.

Das Problem ist hier, daß tty von Haus aus keine Kanäle kennt. Hier wäre also ein Protokoll fällig, welches diese Kanäle schafft und dieses Protokoll muß sowohl der Demuxer auf PC-Seite beherrschen als auch Muxer (also der µC).

Ein sinnvoller Ansatz (unter vielen) wäre z.B., das Modbus-Protokol zu verwenden. Das ist einerseits ein recht verbreiteter Standard, benutzt außerdem serielle Verbindungen und unterstützt "Kanäle" in vielfältiger Form. Im einfachsten Fall ist der µC ein einzelnes Modbus-Gerät, der seine Meßdaten über verschiedene "Register" bereitstellt.

Es ist ziemlich wahrscheinlich, daß es PC-seitig freie Modbus-Implementierungen gibt. Eine konkrete Empfehlung habe ich allerdings momentan nicht.

Das klassische Problem von OpenSource, möchte ich fast sagen. Interaktivität gibt's oft garnicht oder nur stark eingeschränkt. Es ist halt um Größenordnungen einfacher, blöde EVA-Kommandozeilenprogramme zu schreiben als eventgesteuertes Zeug, wo jederzeit DAUs mit ihren unqualifizierten Eingaben das komplette Chaos anrichten können...

Reply to
Heiko Nocon

Ich würde das mit Borland Delphi oder alternativ mit Lazarus machen. Lazarus ist quasi ein Delphi Clone und weitgehend plattformunabhängig und kostenlos.

Sowohl bei Delphi, als auch bei Lazarus gibt es die Komponente TChart, mit der man Daten sehr bequem plotten kann. Geht in Delphi etwas bequemer als bei Lazarus, ist aber fast identisch. Die X-Achse kann auch als Zeitachse beschriftet werden. In das Chart kann man dann auch hineinzoomen. Achsenbeschriftung und Darstellung ist einfach konfigurierbar.

Man benötigt dann noch eine Komponente für die serielle Schnittstelle. Ist aber auch keine große Sache.

Für ein simples Programm würde man wohl ca. 1/2 h benötigen. Hängt natürlich von den tatsächlichen Anforderungen ab.

Gruß

Stefan DF9BI

Reply to
Stefan

Keine Ahnung was das kostet, aber fragen kostet nichts:

formatting link

Wie man es selbst friemelt weiss ich nicht, kann mich aber dunkel erinnern dass "mscomm" oder so aehnlich verwendet wurde um den RS232 Datenstrom in Excel zu bekommen.

[...]
--
Gruesse, Joerg

http://www.analogconsultants.com/
 Click to see the full signature
Reply to
Joerg

Nunja, da steht nix davon, daß das Programm in der Lage wäre, auf _einer_ seriellen Verbindung eintreffende Daten _mehrerer_ Kanäle aufzudröseln und getrennt zu verarbeiten. Von der Angabe eines konkreten Protokolls für diesen Zweck mal ganz zu schweigen.

Ja klar, _ein_ Datenstrom über _eine_ Leitung ist natürlich kein Problem, das kann man notfalls mit mscomm.ocx, Excel und ganz wenigen Zeilen VBA-Code machen.

Wobei Excel auch nicht gerade das Mittel der Wahl ist, um Datenströme "live" darzustellen. Für interaktive Auswertungen bestehender multivektorieller Daten ist Excel mit seinen mächtigen Pivot-Charts allerdings wirklich ein echt gutes Werkzeug. Allerdings nicht für große Datenmengen, denn für Pivot-Tabellen und -Charts gelten nach wie vor lächerliche geringe Maximalzahlen von Datensätzen, die Winzigweich für den Rest von Excel schon vor einiger Zeit deutlich ausgeweitet hat, nur eben nicht für diesen Bereich, wo's wirklich nützlich wäre...

Reply to
Heiko Nocon

Ich würde Qt empfehlen:

formatting link

Die neueste Qt Distribution hat gleich eine recht passable IDE integriert (Qt Creator), die sowohl unter Linux, als auch unter Windows läuft. Wenn du schon C++ kannst, sollte so ein Projekt, mit durcharbeiten eines Qt Tutorials oder anpassen einer Beispielanwendung, in 1-2 Tagen machbar sein.

Rolf Mennekes hatte mich letztens auch auf Qwt aufmerksam gemacht:

formatting link

Habe es noch nicht ausprobiert, sieht aber vielversprechend aus. Spart man sich die Arbeit, sowas selber zu programmieren.

Um den seriellen Port plattformunabhängig mit Qt anzusprechen, gibt es auch was Gutes fertiges: qextserialport, was ich schon erfolgreich unter Windows und Linux eingesetzt habe und problemlos läuft.

Java wäre auch möglich, aber da ist der serielle Port nicht auf allen Plattformen immer einfach anzusprechen. USB per HID Device wäre sowieso meine Empfehlung, statt serieller Port.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Marte Schwarz schrieb:

Zeitskalierung und UART? Nehmen wir mal 38400 Baud, 8 bit, Start/Stopp dann kommen wir auf 3840 Byte pro Sekunde, nehmen wir eine

16-bit-Auflösung, dann sind es 1920 Worte pro Sekunde als Stream. Nehmen wir noch das Abtasttheorem dazu, landen wir so bei einem knappen Kiloherz Signalauflösung. Das kann man aber vergessen, weil der PC das UART nicht als Echtzeitstream verarbeitet, also alles über ein paar hundert Hertz zum Salat wird. Dann nehmen wir noch Kanäle und Protokoll dazu und ich frage mich, was Du damit noch messen willst? Gib die Werte im Terminal aus und zeichne mit... ;o)

PC-Oszi für den unteren Audiobereich und langsame Signale gibt es, dazu nimmt man aber die Soundkarte, vielleicht sogar mehrere USB-Soundkarten. Fertige Programme dazu gibt es auch.

Alternativ schreibst Du mit programmierter Abtastung in einen Speicherbereich und überträgst den Auszug über UART in eine Datei. Also Schnappschüsse, die dann, wie schon beschrieben, über Excel oder ähnliches angezeigt werden. Dann brauchst Du ein "Terminalprogramm", mit dem Du den uC die Zeitauflösung vorgibst, der könnte bei der Übertragung damit sogar x/y-Paare berechnen, indem pro Speicherseite von Null aufaddiert wird. Das bedeutet entweder PC-seitige Programmierung, oder Du hast Tasten an den uC. Möglichst viel PC-seitig programmieren wird IMHO dann einfacher - die Werte dann noch skaliert auf x/y-Koordinaten klatschen, macht ein gestandener Javaprogrammierer beim Hochfahren. Könntest Du für so ein Projekt also mal eben lernen. ;o)

Sicher, mehrkanalige Computer-Digitaloszilloskope, da habe ich schon Karten gesehen. Die können für die Schnappschüsse auch triggern und Spannungsbereiche einstellen. Die unbedeutenden Details, die Du bei Deiner Projektidee möglicherweise übersehen hast, wurden da berücksichtigt...

Wenn das nach ein paar Monaten endlich läuft, kannst Du es aber und hast herausgefunden, dass das vielleicht doch nicht so einfach ist...

Ed

Reply to
Edzard Egberts

Am Wed, 07 Apr 2010 21:16:51 +0200 schrieb Heiko Nocon:

IMHO kann Gnuplot auch mit mehreren Datenkanälen in einer Datei umgehen, aber in der Tat wäre LabView hier besser geeignet. Hatte ganz vergessen dass das spätestens seit der Version in der ct auch kostenlos zu nutzen ist.

Nicht nötig. Hier kommen die Daten aus einigen MC in der Form 'abcd=1.2345,efgh=9.876' usw., abgeschlossen von einem Zeilenende. Das sollte sich mit LabView problemlos zerlegen lassen.

Lutz

--
Mit unseren Sensoren ist der Administrator informiert, bevor es Probleme im 
Serverraum gibt: preiswerte Monitoring Hard- und Software-kostenloses Plugin 
 Click to see the full signature
Reply to
Lutz Schulze

Hallo,

ich bastele seit einiger Zeit an einem Programm, welches deinen Zweck erfüllen kann. Das Programm ist GTK-Basierend, läuft derzeit auf Linux und Windows.

Ein etwas älterer Screenshot:

formatting link

Die Funktionen die bis jetzt realisiert sind:

- Kommunikation zum µC (Objektbasiert über ein extra Programm, derzeit USB)

- Darstellung von 4 Kanälen (bis zu 16 Vorgesehen), (auf dem µC werden die Daten im RAM abgelegt, nach Trigger event + Triggernachlauf an die Oberfläche übertragen)

- Einstellen verschiedener Parameter wie Triggerkanal, Triggerflanke, Abtastrate etc.

Es ist aber so das dieses Programm Teil eines Programmpaketes ist und einiges an Aufwand für den Benutzer bedeutet. Neben der etwas aufwendigeren Gestaltung der Kommunikation zum µC sind auf dem PC Programmpakete wie MinGw(für Windows), Gtk, Gtkextra cmake etc. notwendig.

Wenn jemand ernsthaftes Interesse daran hat an so einem Programm mitzuarbeiten könnte ich mir gut vorstellen das bisher getane unter GPL oder als Semi-Free-Software verfügbar zu machen.

Gruß Arne

Reply to
Arne

Hi Rafael,

Das mach ich bisher in C auch so. Ach ja: Die Diskussion ob C bereits als Hochsprache zu zählen ist, sparen wir uns hier besser ;-)

Genau das soll es eben nicht werden... Es soll die Daten eben in "Echtzeit" anzeigen.

Marte

Reply to
Marte Schwarz

Da gilt erstmal der Slogan "Gibs schon" :-)

Willst Du die Darstellungssoftware wirklich selber schreiben oder reicht Dir auch was fertiges?

Vielleicht hilft Dir ja dass:

formatting link

Und Parallax hat da auch ein 2 Kanaloszi mit offengelegtem Protokoll (PropScope), allerdings ist die Windowssoftware dann wieder nicht offen. Hier das Forum dazu

formatting link
Kaufbar hier:
formatting link

M.

Reply to
Matthias Weingart

Hallo Jörg,

der Kandidat hat 99 Punkte erreicht (Mit 100 hättest Du so viele Waschmaschinen gewonnen, wie Du alleine tragen kannst ;-)

Mir geht es wie Dir. Ich weiss, dass es Leute gibt, die das mal zwischendurch reinhacken. Denen ist das dann fast egal worein, ob das jetzt in einer Worddatei läuft (hatte ich mal einen Studenten, der hat einfach alles in Word gemacht) oder ob das mit gnuplot oder Martlab oder Labview läuft.

Genausowenig wie die c't Version von Labview, die es eben nicht an jeder Strasenecke zu kaufen gibt. Ausserdem kann ich mich erinnern, dass die serielle Schnittstelle mit Labview nicht ganz ohne war. Die entsprechende Vereinfachung gabs erst in späteren Versionen. Ich hab auch schon gelesen, dass es einen Freeware-Clone (Ansatz) zu Labview gäbe... Aber ich suche eigentlich was fertiges. Das µC-Programm daran anzupassen schien der einfachere Weg zu sein. Aber anscheinend bin ich doch nicht so blind, wie ich mich gestern fühlte...

Ich hoffte, die Programmierung auf PC-Ebene umgehen zu können... Momentan sieht es nicht danach aus :-(

Marte

Reply to
Marte Schwarz

Am Thu, 8 Apr 2010 08:59:27 +0200 schrieb Marte Schwarz:

In einem Format ausgeben welches diese Software versteht?

formatting link

Nicht ganz kostenlos, aber vielleicht findet sich noch besseres.

Lutz

--
Mit unseren Sensoren ist der Administrator informiert, bevor es Probleme im 
Serverraum gibt: preiswerte Monitoring Hard- und Software-kostenloses Plugin 
 Click to see the full signature
Reply to
Lutz Schulze

Am Thu, 8 Apr 2010 09:08:07 +0200 schrieb Marte Schwarz:

Hier ein Link (nicht getestet od das noch funktioniert):

formatting link

Serielle Kommunikation dazu hier:

formatting link

Lutz

--
Mit unseren Sensoren ist der Administrator informiert, bevor es Probleme im 
Serverraum gibt: preiswerte Monitoring Hard- und Software-kostenloses Plugin 
 Click to see the full signature
Reply to
Lutz Schulze

Hallo Heiko,

Du meinst, ich könnte das Datenformat gleich so wählen, dass Gnuplot es als "Datei" liest? Klingt nicht schlecht.

Das verstehe ich wiederum nicht. Gnuplot nimmt doch einfach die Zahlen hintereinander und weist diese Leerzeichengetrennt den entsprechenden Kanälen zu, bis ein Zeilenumbruch kommt, dann folgt der nächste Zeitwert. Zum Abschluß das Redraw Kommando und das Teil wird auf den Bildschirm geworfen. Das hat sogar richtig Charme. Jetzt muss ich nur noch herausbekommen, wie man gnuplot beibringt, die Tastatureingaben von der seriellen Schnittstelle zu erwarten... Auf diese Ebene bin ich mit Ubuntu noch nicht vorgedrungen. Unter Windows habe ich schon eine Vorstellung, wie ich das machen könnte :-)

TTY nicht, aber Gnuplot doch schon.

Das ist schon mal ein Ansatz wert, mal probieren...

Danke für den Tip

Marte

Reply to
Marte Schwarz

Hi Jörg,

Die Daten nach Excel zu bekommen ist nicht so schwer, da gibts im Netz eine Anleitung, aber dann muss man in Excel immer noch mit VBA rummachen...

Marte

Reply to
Marte Schwarz

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.