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.
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
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
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.
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.
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.
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 €.
Nano ist klar, welchen Reader kannst du vorschlagen?
:
Bearbeitet durch User
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 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)
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
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 ;-)
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.
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?
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.
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.
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.
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++
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.
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
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
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.
ja, indem du genau diesen Datenstrom in eine Datei verfrachtest (wie auch immer).
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.