Hallo, ich würde gerne eine kleine simple Schaltung bauen, die mir über einen Zeitraum von ca. 8 Stunden alle paar Minuten die aktuelle Temperatur abspeichert. Das ganze sollte natürlich mit einem Mikrocontroller (Atmel) realisiert werden. Die Signalkonditionierung und das Auswerten des Temperatursensors sollte kein Problem darstellen. Ich weiß jedoch noch nicht, wie ich die Daten am besten auf den PC bekommen soll. Währe für alle Vorschläge und Hilfe dankbar. Momentan habe ich mir 2 eventuelle Lösungen überlegt. 1. Speichern der Daten auf eine SD-Karte. Hierfür müsste ich wahrscheinlich in FAT32 schreiben und ein Textdokument für eine csv-Datei erstellen? Gibt es hier entsprechende Bibliothek für GCC? So weit ich mich im Internet informiert habe kann ein SD-Karte direkt über SPI angesteuert werden. 2. Speichern in den Flashspeicher und diesen später über RS232 auslesen. Hierfür bräuchte ich dann eine Bibliothek in C oder C++ die auf die RS232 Schnittstelle bzw. einen USB-RS232-Adapter zugreift. Persönlich würde ich Variante 1 bevorzugen. Kann mir jemand ein Display empfehlen auf dem ich die aktuelle Temperatur sowie die Uhrzeit darstellen kann? Müsste mich in die Ansteuerung noch einarbeiten. Bin also auch für Hilfestellung bezüglich eines Displays dankbar.
Üblich wäre heute: Per USB an den PC übertragen, dort als Speichermedium (1 Datei, 100 Zeilen a 5 Zeichen) erscheinen. Das kann auch ein AVR, der kein USB Interface hat (obwohl man sich dann mit der Software mehr Mühe machen muss).
A. R. schrieb: > 2. Speichern in den Flashspeicher und diesen später über RS232 auslesen. > Hierfür bräuchte ich dann eine Bibliothek in C oder C++ die auf die > RS232 Schnittstelle bzw. einen USB-RS232-Adapter zugreift. Wieso brauchst du dafür ein Bibliothek? Das sind 10 Zeilen Code? Hast du dich schonmal mit RS232 usw. beschäftigt? > Kann mir jemand ein Display empfehlen auf dem ich die aktuelle > Temperatur sowie die Uhrzeit darstellen kann? Müsste mich in die > Ansteuerung noch einarbeiten. Bin also auch für Hilfestellung bezüglich > eines Displays dankbar. Standard 16x2 LCD Display. Code dafür gibts Tonnenweise im Netz und in der Codesammlung. Eventuell nimmst du dir grad etwas zuviel aufeinmal vor. Denn deine Vorkenntnisse scheinen recht übersichtlich zu sein. gruß cyblord
>Üblich wäre heute: >Per USB an den PC übertragen, dort als Speichermedium (1 Datei, 100 >Zeilen a 5 Zeichen) erscheinen. >Das kann auch ein AVR, der kein USB Interface hat (obwohl man sich dann >mit der Software mehr Mühe machen muss). Gerade bei USB habe ich hier im Forum mehrmals gelesen, dass dies sehr kompliziert sein soll. Deswegen würde ich eine einfachere Lösung bevorziehen. Möchte für die Schaltung privat aktuell nicht viel Zeit aufwenden. >Wieso brauchst du dafür ein Bibliothek? Das sind 10 Zeilen Code? Hast du >dich schonmal mit RS232 usw. beschäftigt? Ich habe schon RS232 seitens eines Mikrocontrollers in Assembler programmiert, das war aber kein Atmel. Mir währe neu neu das ich unter Windows ohne Bibliothek auf eine RS232 Schnittstelle zugreifen kann. Man muss unter C doch schon für einfache mathematische Operationen math.h einbinden. >Standard 16x2 LCD Display. Code dafür gibts Tonnenweise im Netz und in >der Codesammlung. Das werde ich nachher mal googlen. >Eventuell nimmst du dir grad etwas zuviel aufeinmal vor. Denn deine >Vorkenntnisse scheinen recht übersichtlich zu sein. Vorkenntnisse sind schon vorhanden aber nicht speziell mit Mikrocontrollern. Deswegen schrieb ich ja auch, dass es eine einfache Lösung sein soll.
A. R. schrieb: > Ich habe schon RS232 seitens eines Mikrocontrollers in Assembler > programmiert, das war aber kein Atmel. Mir währe neu neu das ich unter > Windows ohne Bibliothek auf eine RS232 Schnittstelle zugreifen kann. Man > muss unter C doch schon für einfache mathematische Operationen math.h > einbinden. Ja gut also wenn es bereits an der Ansteuerung der seriellen Schnittstelle am PC scheitert... Unter Linux braucht man doch nur die entsprechende Device-File des Anschlusses zu beschreiben/lesen. Unter Windows kann man mit OpenFile("COM1".....) auf die Schnittstelle zugreifen. windows.h wäre hier deine Bibliothek. > Vorkenntnisse sind schon vorhanden aber nicht speziell mit > Mikrocontrollern. Deswegen schrieb ich ja auch, dass es eine einfache > Lösung sein soll. Einfach ist halt so ne Sache wenn es an Vorkenntnissen fehlt. Und an PC-Programmierung. Aber für SD-Karten gibts für AVRs ebenfalls unendlich viele Libs und Quellcode. Also such dir was raus, speicher den Temp da drauf und steck die nachher in den PC. Ich frage mich wozu der Thread hier gut sein soll. Soll hier jemand für dich fertigen Code zusammensuchen? Mehr isses ja nicht. Wenn dabei KONKRETE Fragen auftauchen kann man diese ja dann gezielt stellen. Aber so isses doch irgendwie fruchtlos. gruß cyblord
>Ja gut also wenn es bereits an der Ansteuerung der seriellen >Schnittstelle am PC scheitert... Unter Linux braucht man doch nur die >entsprechende Device-File des Anschlusses zu beschreiben/lesen. Unter >Windows kann man mit OpenFile("COM1".....) auf die Schnittstelle >zugreifen. windows.h wäre hier deine Bibliothek. Was heißt denn das er bereits an der Ansteuerung der seriellen Schnittstelle scheitert. Nur weil ich es noch nie gemacht habe heißt das nicht, dass ich das nicht hinbekommen würde. Woher soll ich denn wissen, mit welchen Funktionen ich auf die Schnittstelle zugreifen kann. Soetwas kann man sich nicht aus den Fingern saugen sondern muss man nachlesen. Aber danke für den Hinweis mit "OpenFile" und windows.h damit hätte ich schon ein paar Stichpunkte zur Suche bei google. >Ich frage mich wozu der Thread hier gut sein soll. Soll hier jemand für >dich fertigen Code zusammensuchen? Mehr isses ja nicht. Wenn dabei >KONKRETE Fragen auftauchen kann man diese ja dann gezielt stellen. Aber >so isses doch irgendwie fruchtlos. Ich habe nie etwas geschrieben das mir jemand den Code zusammensuchen soll. Ich habe geschrieben was ich vor habe und 2 Wege geschrieben wie ich mir vorstellen könnte so etwas zu realisieren. Da ich aber keinen der Wege bereits gegangen bin kann ich nicht abschätzten welcher Weg wie viel Aufwand ist. Deswegen hatte ich mir von etwas erfahreneren Forenbenutzern erhofft, dass diese abwägen welcher Weg Sinnvoller ist. Z.B. hätte der Einwand kommen können, dass Flashspeicher nur x mal beschrieben werden kann und man deswegen definitiv eine SD-Karte verwenden sollte oder das es extrem umständlich ist eine SD-Karte zu beschreiben und es deswegen mehr Sinn macht die Daten über RS232 zu übertragen. Ich wollte vermeiden beide Wege zu gehen um dann zu erkennen das einer der Wege nicht zielführend ist. Vielleicht hätten auch so Kommentare kommen können wie:"Ich habe da einen super Link zum Einarbeiten in Displayansteuerung". Ich habe mich jetzt für den Weg mit der SD-Karte entschieden, konnte im Internet ein paar gute Erklärungen zur Ansteuerung von LCD-Display finden und habe eben die notwendigen Sachen bestellt. Falls das später jemanden interessieren sollte sind hier die angesprochenen Links zu Displays: http://www.sprut.de/electronic/lcd/index.htm#4x40 Beschreibt den HD44780 gut. http://www.stefan-buchgeher.info/elektronik/lcd/lcd.html http://www.rn-wissen.de/index.php/LCD-Modul_am_AVR Programmbeispiel für GCC
Meine Idee wäre: Einen Arduino uno nehmen und ein Shield mit SD-Ram, mit den dazugehörigen Libraries wäre das schnell realisierbar. Temperatursensor könnte über I2C oder ähnliches angebunden werden.
Fragen über Fragen... :-) Wie groß darf die Schaltung sein (Abmessungen)? Vorgaben zum Stromverbrauch? Genaues Messintervall? Temperaturbereich? Genauigkeit der Temperatur? Zeitstempel mit aufzeichnen? Genauigkeit der Zeit? Maximale Materialkosten? Stückzahl? Sorry, falls manche der Fragen schon beantwortet waren und ich sie übersehen habe. Prinzipiell lässt sich eine solche Anforderung auch mit einem ATtiny13A realisieren, der die Daten auf eine SD-Karte schreibt - ohne Dateisystem, denn sowas braucht man bei diesen einfachen Daten wirklich nicht. Einfacher ist aber bestimmt mit einem Adruino oder Ähnlichem - besonders, wenn es ein Einzelstück werden soll.
>Wie groß darf die Schaltung sein (Abmessungen)? Spielt eigendlich keine Rolle. Denke eine Lochrasterplatinengröße. Also ca. 160mm x 100mm. Das ganze soll simpel sein also eine Montage auf Lochraster reicht. >Vorgaben zum Stromverbrauch? Das Gerät muss nicht Batteriebetrieben sein. Ich denke das einzige was viel Leistung verbraucht ist das Display (mit Beleuchtung) und dieses werde ich wahrscheinlich mit einem Transistor per Tastenklick einschalten bzw. nach einer bestimmten Zeit ausschalten. Also wenige mA Stromverbrauch im Durchschnitt wäre der Wunsch. Dann könnte man das ganze später mit einem 9V Block für ein paar Tage betreiben. >Genaues Messintervall? Minimalvorgabe: Einmal alle 10 min für 8 Stunden. Mehr sollte jedoch mit einer SD-Karte problemlos möglich sein. Ich denke da ein sekündliches Abspeichern der Temperatur. >Temperaturbereich? 10 °C bis 40°C oder mehr. >Genauigkeit der Temperatur? +/- 0,5 °C oder besser. >Zeitstempel mit aufzeichnen? Ja >Genauigkeit der Zeit? besser als 1min Abweichung auf 8h >Maximale Materialkosten? Kleiner 100 Euro. Ich schätze der reine Materialwert wird bei ca. 40 Euro sein. Das teuerste war das Display. Sachen sind schon bestellt. >Stückzahl? 1 Vielleicht erstelle ich später mal eine Platine. Dann wäre das ein Prototyp auf Locherraster + eine Platine. Da die Sachen ja schon bestellt sind möchte ich mein Konzept kurz vorstellen. Mikrocontroller: ATmega644PA-20PU im DIP 40 Gehäuse Temperatursensor: Analog: LM335 Genauigkeit 0,5°C oder Digital: TSIC306 Genauigkeit 0,3°C Den LM335 würde ich dann entsprechend mit einem OP an den Spannungsbereich des A/D-Wanlders angepasst, was natürlich die Genauigkeit noch weiter senkt. Also ersteinmal wird der TSIC306 verwendet Als Quarz wird ein 16MHz Quarz verwendet. Dieser hat eine Genauigkeit von 20ppm. Bei einem Temperaturbereich von 0°C bis 50°C verbessert sich die Genauigkeit auf 5ppm. Das ist ein Fehler von 432ms pro Tag. Die aktuelle Zeit wird über Taster eingestellt. Das verwendete Display kann ich heute Abend nennen falls Interesse besteht. Die SD-Karte möchte ich über SPI ansteuern. >Prinzipiell lässt sich eine solche Anforderung auch mit einem ATtiny13A >realisieren, der die Daten auf eine SD-Karte schreibt - ohne >Dateisystem, denn sowas braucht man bei diesen einfachen Daten wirklich >nicht. Kann ich die Daten ohne Dateisystem auslesen?
A. R. schrieb: >>Prinzipiell lässt sich eine solche Anforderung auch mit einem ATtiny13A >>realisieren, der die Daten auf eine SD-Karte schreibt - ohne >>Dateisystem, denn sowas braucht man bei diesen einfachen Daten wirklich >>nicht. > > Kann ich die Daten ohne Dateisystem auslesen? Wozu willst du den Weg gehen. Dein Mega644 hat 64KBytes Flash und 4K SRAM. Der Rest deines Programms (ohne den SD Teil) braucht vielleicht 0.5K Flash und ein paar Zig-Bytes SRAM. Was hast du mit dem Rest vom Flash/SRAM vor, dass du dem nicht auch noch die Verwaltung der Filestruktur auf der SD-Karte überantworten willst? Den µC mit Gewalt zu 99% unausgelastet lassen?
Hi, wenn es schnell gehen soll AT90USBKEY. vorhanden ist: 1. USB Schnittstelle zum Datenauslesen und Einstellen der Logparameter 2. Dataflash zum Speichern der Temperaturwerte 3. Temperatursensor (NTC) oder einfach einen DS18B20 anschließen 4. Led's zur Statusanzeige 5. Quarz für die genaue Zeitbasis 6. Bootloader 6. wer es braucht den Joystick (Menuesystem mit Display an einem Port?) Gruß Rene
A. R. schrieb: > Z.B. hätte der Einwand kommen können, dass Flashspeicher nur x mal > beschrieben werden kann und man deswegen definitiv eine SD-Karte > verwenden sollte Was meinst du, was in einer SD-Karte für Speicherbausteine verwendet werden? Das sind auch Flash-EEPROMs.
Werner schrieb: > Was meinst du, was in einer SD-Karte für Speicherbausteine verwendet > werden? Das sind auch Flash-EEPROMs. Stimmt schon, aber die SD-Karte hat ein Speichermanagement, das dafür sorgt, dass die ganzen (z.B.) 2 GB gleichmäßig ausgelastet werden, das heißt, du kannst die paar kB, die du brauchst nicht nur 1000-mal, sondern wahrscheinlich ein paar Millionen Mal beschreiben. A. R. schrieb: > Kann ich die Daten ohne Dateisystem auslesen? Ja. Wäre bei Linux ganz einfach. Mit Windows kenn ich mich nicht so gut aus. Aber wenn du eh einen großen Brummer wie den ATmega644 verwendest, dann schließ ich mich dem Vorschlag von Karl Heinz an. A. R. schrieb: > Da die Sachen ja schon bestellt sind möchte ich mein Konzept kurz > vorstellen. Gefällt mir gut! A. R. schrieb: > Das teuerste war das Display. Hier hätte ich drei 7-Segment-LED-Anzeigen verwendet, denn wenn du das Display eh nur auf Anforderung aktivierst, spielt der Stromverbrauch keine große Rolle. Außerdem hat der ATmega644 genügend Pins, um die Segmente sogar einzeln anzusteuern. A. R. schrieb: > Minimalvorgabe: Einmal alle 10 min für 8 Stunden. In dem Fall brauchst du gar keinen externen Speicher, du kannst alles ins RAM schreiben. Der ATmega644 hat 4 KB SRAM, allein die Hälfte davon reicht schon für 4 Messwerte je Minute, du brauchst ja nur ein Byte je Messwert. Du könntest sogar zum billigeren ATmega324 wechseln, wenn du mit 30-Sekunden-Intervallen zufrieden bist. Ein Gedanke zum Auslesen der Werte: Warum so kompliziert? Du willst ja nur lesen und nichts reinschreiben. Das heißt, du könntest die Daten auch ohne große Pegelwandlung seriell raussenden - eventuell mit Prüfsummen. Das Raussenden entweder per Leitung oder per LED. Markus
@Karl Heinz Buchegger, ich möchte nicht unbedingt auf eine Filestruktur verzichten. Das war wohl ein Missverständnis. Mich hat es nur gewundert das ein Rechner eine SD-Karte ohne Filestruktur lesen kann. Ich dachte das Windows einen Datenträger ohne Filestruktur immer erst einmal formatieren möchte. Deswegen die Nachfrage wie so etwas funktioniert. Ich habe übrigens schon ein paar Seiten bezüglich SD-Karten und dem filesystem gefunden. Werde mich näher damit beschäftigen sobald ich zum Programmieren komme. Hier ein paar Links: http://www.mikrocontroller.net/articles/AVR_FAT32 Beitrag "MMC SD library FAT16 FAT32 read write" http://www.ulrichradig.de/home/index.php/avr/mmc-sd/ http://www.mikrocontroller.net/articles/MMC-_und_SD-Karten http://spurtikus.de/basteln/avr_sd_mmc.html @Rene Zimmermann, danke für den Vorschlag. Aber mir ist eine Eigenenticklung lieber als eine fertige Platine (AT90USBKEY) zu verwenden. Möchte ja selber auch noch etwas zu tun haben. >Was meinst du, was in einer SD-Karte für Speicherbausteine verwendet >werden? Das sind auch Flash-EEPROMs. Richtig, aber der externen Flash ist wesentlich größer und ich kann Ihn ersetzten. Zudem kann ich die SD-Karte direkt in einen Computer einstecken und die Daten so auslesen. Ich denke das beide Wege zielführend sind. Es gibt da kein richtig oder falsch. Ich habe mich halt nun so Entschieden. >Aber wenn du eh einen großen Brummer wie den ATmega644 verwendest, dann >schließ ich mich dem Vorschlag von Karl Heinz an. Ich auch! Hoffe ich kann auf eure Hilfe zählen falls etwas nicht klappen sollte. >Gefällt mir gut! Das freut mich! >Hier hätte ich drei 7-Segment-LED-Anzeigen verwendet, denn wenn du das >Display eh nur auf Anforderung aktivierst, spielt der Stromverbrauch >keine große Rolle. Außerdem hat der ATmega644 genügend Pins, um die >Segmente sogar einzeln anzusteuern. Die Idee ist nicht schlecht ich hatte aber 2 Gründe für ein Display. -Ich wollte lernen ein Display anzusteuern. -Ich möchte ggf. 2 Temperaturen (auf Platine + externer Sensor) und die Uhrzeit ausgeben. Diese soll beim Messbeginn auf die aktuelle Zeit eingestellt werden. Später kommt eventuell ein Modul für Funkempfang hinzu. Mit einem Display bin ich aktuell einfach flexibler. >Warum so kompliziert? Du willst ja nur lesen und nichts reinschreiben. >Das heißt, du könntest die Daten auch ohne große Pegelwandlung seriell >raussenden - eventuell mit Prüfsummen. Das Raussenden entweder per >Leitung oder per LED. Mit seriell meinst du USART? Im Anhang befindet sich der aktuelle Schaltplan. Das Display wird über 2 Steckverbinder angeschlossen. Der Aufbau ist noch nicht fertig. Aber beim Nachmessen viel auf, dass der 16MHz Takt an einem der beiden XTAL Pins leicht verwaschen ist. Jemand eine Idee woran das liegen könnte?
A. R. schrieb: > Jemand eine Idee woran das liegen könnte? Das war dann wohl Pin 13, i.e. der Eingang vom Oszillator
>Das war dann wohl Pin 13, i.e. der Eingang vom Oszillator
Kann ich dann daraus schließen, dass Pin 12 der Ausgang ist und bei
diesem das Signal besser aussieht?
Im Anhang ein paar Bilder damit man sieht, dass sich noch etwas tut.
Einfache serielle Ausgabe: HyperTerminal öffnen, dann Deiner CPU mitteilen, "Daten ausspucken". Dann werden die Daten in CSV Format im HyperTerminal erscheinen (so wie Deine CPU die schickt). Nur noch alles markieren und in eine Textdatei speichern. Dann brauchst Du auch kein PC-Programm schreiben.
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.