Forum: Mikrocontroller und Digitale Elektronik Daten auf PC übertragen (Excel-Format)


von Moritz (Gast)


Lesenswert?

Hallo,

ich bin dabei einen Datenlogger zu entwerfen.
Dieser speichert mir Beschleunigung, Himmelsrichtung und die Uhrzeit 
alle 10 Sekunden in einem Eeprom (15byte pro log).
Nach 12h möchte ich die Daten gerne auf einen PC übertragen und in Excel 
öffnen können.
Ich verwende: uC LPC936 (8051), RTC DS1307, Himmelsrichtung u. 
Beschleunigung LSM303dlh, Speicher 24xx512.

Kann mir jemand einen einfachen, leichtbzu realisierenden Vorschlag 
machen wie ich die Daten auf den PC im Excel Format bekomme?

USB oder Seriell? Vielleicht mit FT232? Vielleicht noch ein paar 
Grundsätzliche Tips?

Grüsse.

von Klaus W. (mfgkw)


Lesenswert?

Wahrscheinlich am einfachsten vom MC aus per RS232.
Weil es kaum noch Rechner mit echter RS232 gibt, kann man dort einen 
USB-RS232-Wandler nehmen, der als virtueller COM-Port erscheint.

Als Datenformat ist wahrscheinlich am einfachsten CSV (comma separated 
values), das kann ziemlich jede BWL-Software verwursten und ist am MC 
leicht zu erzeugen.

: Bearbeitet durch User
von 6A66 (Gast)


Lesenswert?

Moritz schrieb:
> Kann mir jemand einen einfachen, leichtbzu realisierenden Vorschlag
> machen wie ich die Daten auf den PC im Excel Format bekomme?

Wenn Du auf den PC übertragen willst bruachst Du ohnehin eine 
Schnittstelle, USB oder seriell.
Mach das seriell und übertrage die Daten mit jeweils einem Komma 
separiert in lesbarer Form. Die Daten speicherts du am PC mit einem 
Terminalprogramm. Die Komma-separierten daten kann Excel direkt einlesen 
(CSV Datei).

Beispiel:
Uhrzeit, Wert1, Wert2, Wert3
Uhrzeit, Wert1, Wert2, Wert3
Uhrzeit, Wert1, Wert2, Wert3

rgds

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Klaus Wachtler schrieb:
> Als Datenformat ist wahrscheinlich am einfachsten CSV (comma separated
> values), das kann ziemlich jede BWL-Software verwursten und ist am MC
> leicht zu erzeugen.

Seh ich auch so. Excel-Format ist komplizierter und bringt keinen 
Vorteil. Nimm lieber CSV, du beschränkst dich dann nicht unnötig auf 
eine bestimmte Auswertungssoftware.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Moritz schrieb:
> USB oder Seriell? Vielleicht mit FT232? Vielleicht noch ein paar
> Grundsätzliche Tips?

Vielleicht wärs noch geschickt, jede übertragene Zeile mit einer 
Prüfsumme zu ergänzen. Die lässt sich dann im Tabellenprogramm (egal 
welches du am Ende einsetzt) relativ leicht gegenprüfen.

von mausi (Gast)


Lesenswert?

Aus welchen Grund nimmst noch etwas aus der alten 8051 Linie? Du musst
jetzt wahrscheinlich Treiber für deine Sensoren entwickeln.
Nimm den Arduino und vergiss die Unkenrufe.

von Gerald K. (geraldk)


Lesenswert?

Wenn Du bereit bist auf einen Arduino zu wechseln, kann man dort den 
1307 anschließen und einen SD-Karten Reader, dann kannst Du unabhängig 
vom PC die Daten schreiben und später die SD-Karte in den PC stecken.
Fertige Programme gibt es schon dafür (Datalogger).
Wenn man einen Arduino Nano und einen Reader in China kauft, dauert das 
zwar 2 bis 3 Wochen, kostet aber weniger als 10 €.

von Heinz L. (luli)


Lesenswert?

Nano ist klar, welchen Reader kannst du vorschlagen?

: Bearbeitet durch User
von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Excel kann leider keine richtigen CSV-Dateien importieren. Typisch MS.

Die Kommas (CSV=Comma-seperated-values) müssen stattdessen ein Semikolon 
ersetzt werden. Der Dezimalpunkt muß auch richtig gewählt werden.
Ansonsten gibt der uC einen Text aus, den man am PC speichert und mit 
Excel öffnet (Endung .CSV).

von ... (Gast)


Lesenswert?

das ist so nicht ganz richtig. es ist beim Datenimport sehr wohl möglich 
Excel unterschiedliche Komma, Trennzeichenkombinationen beizubrigen - 
sowohl beim manuellen Import, wie auch in Makros.

Korrekt ist allerdings, dass Excel per default die Ländereinstellungen 
verwendet und entsprechend *.csv dateien interessant interpretiert ;)


Was das Projekt angeht...
kennst du OpenLog (Sparkfun)
kennst du LogView/Openformat (www.logview.info)

von Mophzk (Gast)


Lesenswert?

Hallo,

wenn du eine rs232 Schnittstelle verwendest willst, kannst du eigentlich 
auch direkt aus excel über VBA auf den com Port zugreifen und dir die 
empfangenen Daten in ein Tabellenblatt einfügen. Dann kannst du die 
Datei in jedem beliebigen Format abspeichern welches von excel 
unterstützt wird.

Gruß mophzk

von Wolfgang (Gast)


Lesenswert?

6A66 schrieb:
> Die Daten speicherts du am PC mit einem
> Terminalprogramm. Die Komma-separierten daten kann Excel direkt einlesen
> (CSV Datei).
>
> Beispiel:
> Uhrzeit, Wert1, Wert2, Wert3
> Uhrzeit, Wert1, Wert2, Wert3
> Uhrzeit, Wert1, Wert2, Wert3

Viel Spaß auf einem PC mit deutscher Zahlendarstellung (speziell 
Dezimalkomma), falls die Werte als Floatingpoint übertragen werden 
sollen ;-)

von c-hater (Gast)


Lesenswert?

Bernd Rüter schrieb:

> Excel kann leider keine richtigen CSV-Dateien importieren.

Natürlich kann es das. Wenn der Benutzer die entsprechenden 
Möglichkeiten von Excel richtig benutzt.

> Typisch MS.

Nö, typisch DAU. Wenn Doppelklick nicht funktioniert, ist er schon 
völlig überfordert.

Das Problem ist einfach, daß Excel standardmäßig die systemweiten 
Locales benutzt. Will man was anderes, muß man das Excel einfach nur 
sagen.

von 0815-DAU (Gast)


Lesenswert?

c-hater schrieb:
> Will man was anderes, muß man das Excel einfach nur sagen.

Danke für den Hinweis. Hast du für OpenOffice auch einen entsprechenden 
Tip zum Überschreiben der Systemeinstellungen?

von Bernd D. (Firma: ☣ ⍵ ☣) (bernd_d56) Benutzerseite


Lesenswert?

Meine shell Scripte generieren einfache html table, tr,td, Daten.
Dieses html Dokument nenne ich allerding einfach *.xls.
Excel erkennt das und ist glücklich.
Vorteil, einfache Formatierungen wie rotfärben von Grenzwerten und 
Überschriften habe ich so gleich mit.

von Uwe K. (ukhl)


Lesenswert?

Bernd Rüter schrieb:
> Excel kann leider keine richtigen CSV-Dateien importieren. Typisch MS.
>
> Die Kommas (CSV=Comma-seperated-values) müssen stattdessen ein Semikolon
> ersetzt werden. Der Dezimalpunkt muß auch richtig gewählt werden.
> Ansonsten gibt der uC einen Text aus, den man am PC speichert und mit
> Excel öffnet (Endung .CSV).

Das C bei CSV darf man nicht ernst nehmen. Das Komma als Trennzeichen 
ist denkbar ungeeignet. Das Semikolon ist schon besser.

Noch besser ist ein <TAB> als Trennzeichen. Wenn man das Ganze dann 
einfach mit der Endung .XLS versieht, geht es auch mit einem 
Doppelklick.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Uwe K. schrieb:
> Noch besser ist ein <TAB> als Trennzeichen. Wenn man das Ganze dann
> einfach mit der Endung .XLS versieht, geht es auch mit einem
> Doppelklick.

Gerade mal probiert, Excel murmelt dann zwar etwas über eine 
"beschädigte Datei", schluckt das Ganze dann aber doch.

Ich empfehle aber auch eine CSV mit Semikolon als Trenner. Das wird von 
Excel (und auch von vielen anderen Programmen) anstandslos verarbeitet.

von Gerald K. (Gast)


Lesenswert?

Heinz L. schrieb:
> Nano ist klar, welchen Reader kannst du vorschlagen?

Was meinst Du mit "Reader", den Editor oder die IDE ?

Als IDE gibt es beim Arduino erst mal nur einen Standard, zur Zeit 
Arduino Version 1.6.1.
Einfach nur die .exe datei ausführen und installieren, ist in Sekunden 
passiert. Der eingebaute Editor ist recht sparsam ausgestattet, reicht 
aber für kleine Projekte.

Wers komfortabler haben will nimmt den Notepad++

von Heinz L. (luli)


Lesenswert?

Gerald K. schrieb:
> Heinz L. schrieb:
>> Nano ist klar, welchen Reader kannst du vorschlagen?
>
> Was meinst Du mit "Reader", den Editor oder die IDE ?
>
> Als IDE gibt es beim Arduino erst mal nur einen Standard, zur Zeit
> Arduino Version 1.6.1.
> Einfach nur die .exe datei ausführen und installieren, ist in Sekunden
> passiert. Der eingebaute Editor ist recht sparsam ausgestattet, reicht
> aber für kleine Projekte.
>
> Wers komfortabler haben will nimmt den Notepad++

war ein Versehen von mir, der SD-Reader war gemeint.

von 6A66 (Gast)


Lesenswert?

Wolfgang schrieb:
> Viel Spaß auf einem PC mit deutscher Zahlendarstellung (speziell
> Dezimalkomma), falls die Werte als Floatingpoint übertragen werden
> sollen ;-)

Das kann man dem Excel alles richtig sagen :)
Auch dass er den Delimiter als Komma nehmen soll und der Dezimalpunkt 
als Punkt.
Aber man kann auch mit Delimiter Semikolon übertragen und mit 
Dezimaltrenner Komma, dann muss man beim import nicht extra denken. 
Kannst Du alles einstellen.
Am einfachsten wahrscheinlich mit Semikolon und Komma.
Aber das kann man ja in der Source schön definieren :)

rgds

von moritz (Gast)


Lesenswert?

Danke für die vielen Antworten.
Muss ich dann jewels ein Komma, also ein zusatzliches byte mit im Eeprom 
anlegen? Also nach jedem datenlog? Oder schlimmer: nach jedem seperatem 
wert also x koordinate KOMMA y Koordinate KOMMA usw... Das währen ja 
dann zusatzlich 14 byte

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

moritz schrieb:
> Muss ich dann jewels ein Komma,

Semikolon, s.o.

> also ein zusatzliches byte mit im Eeprom  anlegen?

Nein, Du streust die zusätzlichen Semikolons erst beim Senden über den 
UART ein, also so:

    Sende Wert 1
    Sende Semikolon
    Sende Wert 2
    Sende Semikolon
    ...
    Sende Wert N
    Sende CR + LF ("\r\n")

Das ganze programmierst Du am besten als Schleife. Dann musst Du nicht 
jedes Byte einzeln im Programm senden - auch wenn ich es jetzt hier so 
angedeutet habe.

von moritz (Gast)


Lesenswert?

Danke.
Und das Format (csv )wird dann im pc erzeugt?

von Klaus W. (mfgkw)


Lesenswert?

ja, indem du genau diesen Datenstrom in eine Datei verfrachtest (wie 
auch immer).

von moritz (Gast)


Lesenswert?

Danke.

von Wolfgang (Gast)


Lesenswert?

6A66 schrieb:
> Am einfachsten wahrscheinlich mit Semikolon und Komma.

Diese Philosophie hat den klitzekleinen Nachtteil, dass einem ein 
Großteil der PC-Nutzer auf dieser Welt ins Gesicht springen, weil bei 
ihnen ein Komma absolut nichts mit Floating Point Zahlen zu tun hat. Und 
die Anzahl der C-Compiler für µCs, die freiwillig z.B. bei printf() 
bereit sind, eine Dezimalkomma zu verwenden, kann man wahrscheinlich an 
einem Finger abzählen.

von Moritz (Gast)


Lesenswert?

Sorry,
muss hier nochmal nachfragen. Ist dass bloedsinn die 15byte 
abzuspeichenrn?
Soll ich die daten vom accelerator und bearing sensor nicht erst 
auswerten und dann ablegen? Die daten waeren dann doch viel kleiner 
oder?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.