Hi! Ich beschäftige mich schon seit Längerem mit µControllern von Atmel. Nun möchte ich einen sog. Temperaturlogger bauen. Da habe ich allerdings noch einige Fragen zur Hard- bzw. Software: Als Controller dachte ich an einen Atmega 8. Richtige Wahl? Sollte halt Stromsparend sein. Getaktet wird der Mega mit einem 1MHz Quarz. Wegen niedrigem Stromverbrauch und Genauigkeit. 1 Taster am µC und die Datenübertragung via RS232 an den PC zu Starten. Temperatur Sensor wird wohl ein DS1820 werden. Günstig und der ADC entfällt. Ansteuerung über I²C. Nun die Frage Nach dem Speichermedium: EEPROM oder SD Karte? Was ist Strom sparender? Ansteuerung? Als Stromversorgung dachte ich an 3-4AA Batterien/Akkus. Evtl. auch 1-zelliger LiPo. Sollte von der Spannung her langen. Brauch ich noch nen Spannungsregler oder langt die Brown-Out Detection? Nun zu den Software Fragen: Programmieren wollte ich erst einmal in Bascom. Mit einem Timer werde ich die Uhr mitlaufen lassen, die Uhrzeit wird dann mit den Messwerten gespeichert. Zwischen den Messungen wird der µC in einen SleepMode versetzt damit der Stromverbrauch niedrig bleibt. Auf EEPROM kann ich ja nur Sektoren-weise zugreifen? Wenn ich einen Messwert speichern will, müsste ich also einen Sektor nach dem anderen mit Datum und dann meinem Temperaturwert füllen? Wie kann ich bei Tastendruck die Sektoren nacheinander auslesen? Ich hoffe das war nicht zu viel, Grüße, Max!
Max schrieb: > Auf EEPROM kann ich ja nur Sektoren-weise zugreifen? Wenn ich einen > Messwert speichern will, müsste ich also einen Sektor nach dem anderen > mit Datum und dann meinem Temperaturwert füllen? wenn du das EEPROM im AVR meinst, das kannst du byteweise beschreiben
Hi, Bernd! EIgentlich dachte ich, es wäre geschickt ein externes EEPROM zu verwenden. Ob Paralell oder Seriell weiss ich nicht. Was bedeutet byteweise beschreiben? Ich kann alles da hin schreiben, wo ich will? So?: 01.01.2011 09:30 25,5° 01.01.2011 10:00 22,0° 01.01.2011 26° Also ein endloslanger "Datenstrom"? grüße, Max
>Temperatur Sensor wird wohl ein DS1820 werden. Günstig und der ADC >entfällt. Ansteuerung über I²C. Nö, 1-Wire. >Wie kann ich bei Tastendruck die Sektoren nacheinander auslesen? Such dir ein anderes Hobby.
Ok, der Sensor ist wirklich 1-wire, hab da wohl was verwechselt. dummy schrieb: >>Wie kann ich bei Tastendruck die Sektoren nacheinander auslesen? > > Such dir ein anderes Hobby. Wirklich? Gut, die Sektoren haben ne Nummer. Ich bräuchte also doch nur die Nummer vom ersten Sektor, und dann einfach den betreffenden Sektor auslesen, Sektor Nummer +1 und dann den auslesen? und immer so weiter? grüße, Max
Was soll der Mega8 ? Nicht Kleckern, sondern Klotzen... schoepf aus dem Vollen und leiste dir einen Mega32. Der ueberaus happige Mehrpreis lohnt sich allemal. Und dann... was soll der 1MHz Quarz? Der bringt gar nichts. Irgendwann musste kommunizieren, moeglicherweise Seriell, dh ein 1.8432MHz Quarz passt besser. Dann fuer den stromsparenden Betrieb, einen Uhrenquarz mit 32kHz. Dann als Speicher, nimm einen Atmel AT45DB321 Datenflash mit 4MByte. Das ist von der Komplexitaet her einfacher wie eine SD Karte, etwas komplzierter wie ein EEPROM. Und groessenmaessig auch dazwischen.
Hi Max, ich habe ähnliches hier laufen. Atmega8 mit seriellem EEProm und DS18S20. Auf das EEProm kannst du byteweise zugreiffen (wurde ja schon gesagt), also keine Klimmzüge mit ihrgendwelchen Sekotren/Pages notwendig, einfach die Adresse schicken und gut is ... Problematisch ist/war bei mir, dass es die EEProms nur bis 64K gibt - je nach dem wie viele Daten du für einen Datensatz brauchst (du hast da ne Uhrzeit ...), kann das viel oder wenig sein ... SD wäre natürlich toll(er) - es gibt auch diverse fertig benutzbare Libs dafür ... vom Aufwand her ist da aber schon eine Nummer größer - ausserdem wird dir dazu der Atmega8 vermutlich nicht reichen (zuwenig Speicher), da müsstest du evtl. auf einen 168 oder gar 328 ausweichen, hängt von der verwendeten SD-Library ab. Stromversorgung aus 4 AA funktioniert bei mir - ich benutze keinen Spannungregler (und auch kein BC, wenn Saft alle dann alle). Laufzeit liegt bei ner guten Woche (ich habe mir nicht viel Mühe gegeben das ganze wirklich stromsparend zu machen, da ging noch einiges. Was du auf jeden Fall brauchst ist ein 32 KHz Quarz, sonst kannst du nicht die super-Schlafmodi des Atmega nutzen. 1 MHz Quarz zur normalen Taktversorgung hat bei mir nicht funktioniert, weil damit die serielle Schnittstelle nicht funktionierte (Abweichung zu groß) - entweder was größeres (mehr Stromverbrauch), oder was "krummeres" :) Was bei mir auch gar nicht mal sooo schlecht funktioniert hat war der interne Oszilator (weniger Stromverbrauch) - dann kannst du seriell aber nur mit ca. 4000 bit/s übertragen ... Für eine serielle Schnittstelle wirst du vermutlich auch noch einen MAX232 brauchen - zur Pegelanpassung an den PC (?) ... ich habe mich darum gekonnt gedrückt: Ich habe ein BT-222 Modul rangehängt und hole die Daten per Bluetooth ab ... dadurch spare ich den MAX, drückt etwas den Stromverbrauch (aber hebt den Baupreis :)) hth CHH
Wie lange und wie oft willst Du denn die Temperatur erfassen? Davon hängt es ab, wieviel EEPROM Du brauchst. Serielle EEPROMs sind billig und es gibt sie bis zu 1 MBit (128kByte) und man kann 4 (teils sogar 8) davon zusammenschalten. Mit einem PIC als µC kannst Du im SLEEP-Modus bei laufendem Timer (32768 kHz) auf unter 1 µA Stromverbrauch kommen, bei Atmels gibt es das sicher auch. Die EEPROMs brauchen im Standby nochmal 3-5 µA je Stück (die von Microchip etwas mehr). Du kannst Dir also ausrechnen, wie lange das ganze läuft (bitte berücksichtigen, dass der µC auch ab und zu aufwacht und dann mehr Strom verbraucht). Die RS232-Schnittstelle programmierst Du per Software invertierend, dann sparst Du Dir den MAX232.
Hi! Okay, Quarz wird dann also ein 1.8432MHz. Übertragung zum PC wird seriell, der max232 wird auf jedenfall extern wegen dem Stromverbrauch. Trotzdem bin ich wegen dem Speicher noch Unschlüssig: EEPROM ist einfach hat aber womöglich wenig Speicher. Wie ist da der Stromverbrauch? SD Karte wäre komplizierter. Fertige LIBs wären natürlich Klasse, sowas gibts aber nur in C? Egal, das wär dann endlich mal nen Grund C in Angriff zu nehmen ;D! Wie siehts da in Sachen Stromverbrauch im Vergleich zu den EEPROMS aus? SD Karte braucht wahrscheinlich ein wenig Strom, aber wenn ich einen größeren Controller bräuchte, wäre der Verbrauch wahrscheinlich größer? CHH schrieb: > Problematisch ist/war bei > mir, dass es die EEProms nur bis 64K gibt - je nach dem wie viele Daten > du für einen Datensatz brauchst (du hast da ne Uhrzeit ...), kann das > viel oder wenig sein ... hmm, angenommen ich mache einen Messwert alle 10 min, bräuchte ich ja garkeine Uhrzeit?! Die Messwerte könnte man ja in einem Excel Dokument speichern und gleich noch Datum/Uhrzeit hinzufügen? ein einfacher Temperaturwert wie z.B. "20,5" würde ja langen. Wie krieg ich raus was das für nen Speicherbedarf hat? bei 20µA würde das Ding an einem 2000mAh Akku 100000 Stunden laufen? Grüße, Max
Max schrieb: > bei 20µA würde das Ding an einem 2000mAh Akku 100000 Stunden laufen? nee träum weiter.... der Akku ist nach 1000 Stunden bereits durch die Selbstentladung leer. (zumindest bei normalen Zellen). Gruß Anja
Anja schrieb: > nee träum weiter.... der Akku ist nach 1000 Stunden bereits durch die > Selbstentladung leer. (zumindest bei normalen Zellen). Ich meine ohne die Selbstentladung? Sorry, hab ich vergessen. Aber n halbes Jahr Betrieb sollte doch drin sein? Batterien halten sich doch auch in der Packung recht lang? Naja, so lange wollte ich eh nicht aufzeichnen. Habt ihr noch Ideen wegen dem Speicher?
Max schrieb: > hmm, angenommen ich mache einen Messwert alle 10 min, bräuchte ich ja > garkeine Uhrzeit?! Die Messwerte könnte man ja in einem Excel Dokument > speichern und gleich noch Datum/Uhrzeit hinzufügen? ein einfacher > Temperaturwert wie z.B. "20,5" würde ja langen. Wie krieg ich raus was > das für nen Speicherbedarf hat? indem du's ausrechnest! stephan_ schrieb: > Die > RS232-Schnittstelle programmierst Du per Software invertierend, dann > sparst Du Dir den MAX232. der MAX invertiert aber nicht nur!
> der MAX invertiert aber nicht nur!
aber die meisten PCs können TTL-Pegel als RS232 einlesen, sofern nicht
invertiert (meist sogar 0..3.3V)
Max schrieb: > hmm, angenommen ich mache einen Messwert alle 10 min, bräuchte ich ja > garkeine Uhrzeit?! Die Messwerte könnte man ja in einem Excel Dokument > speichern und gleich noch Datum/Uhrzeit hinzufügen? jein ... das ist die gleiche Falle in die ich damals getappt bin :) Ganz ohne Uhrzeit geht es nicht, weil du dir irgendwo/irgendwie merken solltest von wann dein erster Messwert ist - sonst kannst du hinterher (mit z.b. Excel) keine Uhrzeit für deine Messwerte bestimmen, nur ein "10 Minuten später". Grad bei längeren Auswertungen ist das aber blöd, weil du dan z.b. nicht erkennen kannst, welche Messwerte aus der Nacht sind ... Ich habe das Problem bislang nicht gelöst - sondern merke mir (noch immer), wann ich meinen Logger eingeschalten habe ... naja, blöd, tut's aber - und ist einfacher/stromsparender, als ne RTC (die man irgendwie stellen können muss). > ein einfacher > Temperaturwert wie z.B. "20,5" würde ja langen. Wie krieg ich raus was > das für nen Speicherbedarf hat? naja, hat schon jemand geschrieben: Ausrechnen ... :D Wenn du dich auf einen Tempereraturbereich von 127 "Werten", also z.b. von 0-127 Grad - oder -64 - 63 Grad ... bei einer Auflösung von 0,5 Grad beschränken kannst/magst, dann brauchst du zum Speichern eines Wertes ein Byte: 127 "Temperaturwerte" sind 7 Bit + 1 Bit (0,5 oder 0,0) = 8 Bit = 1 Byte. Wenn du ein 64k Eeprom nimmst, kannst du 65535 Messwerte speichern ... wenn du das alle 10 Minuten machst, kommst du auf ca. 450 Tage wo dir der Speicher reicht ((10 Minuten * 65535)/60/24 ) ... also tendenziell länger, als dir der Akku reicht ... ;) Ich weiß nicht was du vor hast - aber für so nen Fall würde ich nicht mit SD oder DataFlash rumtun, das ist irgendwo den (Mehr)Aufwand nicht wert ... Es gibt natürlich auch andere Möglichkeiten die Werte zu speichern - das dürfte halt eine relativ einfache sein. Natürlich ist zum Auslesen dann etwas Code notwendig, weil man die gespeicherte Form wieder in was lesbares umwandeln muss ... aber mei. Wenn du wirklich deine String-Repräsentation speichern wolltest, dann bräuchtest du für einen Messwert ca. 5x so viel Platz ... entsprechend wäre der Speicher nach nicht mal 100 Tagen voll ... hth CHH
Max schrieb: > Nun möchte ich einen sog. Temperaturlogger bauen. Da habe ich allerdings > noch einige Fragen zur Hard- bzw. Software: > > Als Controller dachte ich an einen Atmega 8. Richtige Wahl? > Sollte halt Stromsparend sein. Für Stromsparend nimmt man meist die TI MSP430 Serie. Die ist in der Hinsicht ungeschlagen. > 1 Taster am µC und die Datenübertragung via RS232 an den PC zu Starten. Und kein MAX232, sondern ein MAX3223 mit Autoshutdown. > Temperatur Sensor wird wohl ein DS1820 werden. Günstig und der ADC > entfällt. Ansteuerung über I²C. > Nun die Frage Nach dem Speichermedium: EEPROM oder SD Karte? > Was ist Strom sparender? Ansteuerung? Am stromsparendsten ist ein batteriegepuffertes SRAM. EEPROMS müssen ja fürs Schreiben erst ihre interne Ladungspumpe anwerfen. Was auch schick, aber teuer ist, sind die FRAMs von Ramtron. > Als Stromversorgung dachte ich an 3-4AA Batterien/Akkus. Evtl. auch > 1-zelliger LiPo. Sollte von der Spannung her langen. Brauch ich noch nen > Spannungsregler oder langt die Brown-Out Detection? LP2980-3.3V > Nun zu den Software Fragen: Programmieren wollte ich erst einmal in > Bascom. Mann, mann. Als ich noch jung und hybsch war, haben wir das alles in Assembler programmiert. fchk
Wenn man nicht gerade in der Wüste, wo es keinen Strom gibt, messen
will, dann kann man mit einem kleinen Netzteil die Schaltung versorgen
und die Akkus dienen nur als Puffer.
Damit muss man auch nicht auf jedes mA(µA) achten.
Mit einer SD Karte, die es heute mit Speicherkapazitäten im GB-Bereich
preiswert gibt, kann man Massenspeicher aufbauen, die monatelang die
Daten aufzeichnen können.
>Egal, das wär dann endlich mal nen Grund C in Angriff zu nehmen ;D!
Richtig!
Falls Du einen genügend langen Atem hast, dann könnte ein 2. Gerät auf
minimalen Stromverbrauch getrimmt werden.
MfG
Wolfgang-G schrieb: > Wenn man nicht gerade in der Wüste, wo es keinen Strom gibt, messen > will, dann kann man mit einem kleinen Netzteil die Schaltung versorgen > und die Akkus dienen nur als Puffer. Nun, Trafo oder SNT kommt iegentlich nicht in Frage. Ind der Wüste will ich nicht loggen, aber vielleicht irgendwo wo es keine Steckdose gibt. Niedriger Stromverbrauch ist ausserdem mal eine nette Herausforderung. Wolfgang-G schrieb: >>Egal, das wär dann endlich mal nen Grund C in Angriff zu nehmen ;D! > Richtig! Frank K. schrieb: > Mann, mann. Als ich noch jung und hybsch war, haben wir das alles in > Assembler programmiert. ok... ich glaub ihr habt mich überzeugt :D Frank K. schrieb: > Für Stromsparend nimmt man meist die TI MSP430 Serie. Die ist in der > Hinsicht ungeschlagen. Ich denke dass ich wohl bei AVRs bleiben werde. Da habe ich schon ISP, etc. CHH schrieb: > Ich habe das Problem bislang nicht gelöst - sondern merke mir (noch > immer), wann ich meinen Logger eingeschalten habe ... naja, blöd, tut's > aber - und ist einfacher/stromsparender, als ne RTC (die man irgendwie > stellen können muss). So hab ich mir das auch schon vorgestellt :D Wie genau geht denn die Uhr mit dem ext. Quarz? Nicht dass dann irgendwann Tag und Nacht vertauscht sind :-/. CHH schrieb: > Wenn du ein 64k Eeprom nimmst, kannst du 65535 Messwerte speichern ... Ein 64K EEPROM sollte also reichen. CHH schrieb: > hth > CHH Hat geholfen! Vielen Dank!
Max schrieb: > Wie genau geht denn die Uhr mit dem ext. Quarz? Nicht dass dann > irgendwann Tag und Nacht vertauscht sind :-/. mit einigen Sekunden pro Monat würde ich schon rechnen ...
Hi! CHH schrieb: > mit einigen Sekunden pro Monat würde ich schon rechnen ... okay, das wäre aber akzeptabel. Nun häng' ich immernoch beim Speicher, denn die EEPROM sind ja doch recht teuer. SD Karte wär auch für zukünftige Projekte nützlich. Wie ist das mit der Ansteuerung bei SD Karten? Wenn ein Sektor nicht immer voll Gefüllt wird, wäre ja kein Problem, Speicher is ja genug da :D. Da könnte man dann auch gleich Uhrzeit mitspeichern. Wie ist der Stromverbrauch einer SD Karte? größer als EEPROM? Hat die einen "Schlafmodus"? SD Karte wenn dann mit fertiger Lib und Dateisystem? Da könnte mann dann auch vom PC über nen Kartenleser drauf zugreifen? Grüße, Max
Max schrieb: > Nun häng' ich immernoch beim Speicher, denn die EEPROM sind ja doch > recht teuer. Teuer? Bei Reichelt kostet ein 25LC1024 (SPI) oder ein 24AA1025 (I2C) 3.15€. Und das sind 1024 Kilobit, also 128kByte. Solltest Du SPI Flashes wählen und dafür in Kauf nehmen, eine 256 Byte Page im Speicher zu puffern und dann erst wegzuschreiben, bekommst Du bei Farnell für 2.79 netto einen Atmel AT26DF321 mit 32 MBit, also 4 MByte. Ist Dir das zu teuer? fchk
> denn die EEPROM sind ja doch recht teuer
ein 24c512 hat 65536 Bytes und kostet bei R* 1.10 wenns von Atmel ist
und 1.40, wenn es von Microchip stammt ...
n'Abend! Okay, mit dem Teuer hab ich wohl was falsches ergoogelt. Okay, Also wären EEPROMS nicht wirklich teuer. Trotzdem denke ich dass eine SD Karte eventuell doch besser wäre? grüße, Max
>Trotzdem denke ich dass eine SD Karte eventuell doch besser wäre?
Die ist aber ungefähr drei Zehnerpotenzen schwerer zu bedienen
als ein EEPROM. Anfänger bleiben da meist schon in der Init kleben;)
Lass das mal lieber sein.
holger schrieb: >>Trotzdem denke ich dass eine SD Karte eventuell doch besser wäre? > > Die ist aber ungefähr drei Zehnerpotenzen schwerer zu bedienen > als ein EEPROM. Anfänger bleiben da meist schon in der Init kleben;) > Lass das mal lieber sein. Okay, also doch EEPROM. SD dann in Zukunft. Ich halte für die Hardware fest: ATMega8 DS1820 EEPROM á lá 25LC1024 4 Batterien externer MAX232 zur PC Übertragung Taster zum Starten der Übertragung Hünerfutter Dann werd' ich diese Hardware demnächst mal zambasteln und layouten, tipps bzgl. Software immer her damit! Grüße, Max
Frank K. schrieb: > Solltest Du SPI Flashes wählen und dafür in Kauf nehmen, eine 256 Byte > Page im Speicher zu puffern und dann erst wegzuschreiben, bekommst Du > bei Farnell für 2.79 netto einen Atmel AT26DF321 mit 32 MBit, also 4 > MByte. blöde Frage: Bekommt man die Dinger auch noch wo anders zu realistischen Preisen? Farnell will von mir leider kein Geld (weder Student noch Firma), Digikey ist irgendwie teuer - und die normalen Läden scheinen die Dataflashs zu ignorieren ... CHH
Also ich würde eine RTC, einen seriellen EEPROM und einen Temperaturfühler nehmen und über I2C oder SPI an den µC anschließen. Den RTC stellst du so ein, dass er alle 10 Minuten den µC aufweckt und dieser dann die Temperatur einliest und auf dem EEPROM speichert. Danach geht er wieder in Sleep. Der EEPROM und die Temp.sensoren haben ja meist auch einen Standbymodus, wo sie nur wenige µA Strom benötigen. Den RTC kannst du ja über die serielle Schnittstelle stellen. Auch weis ich nicht, was dein Schalter immer soll. Den Vorgang die Daten an den PC zu senden leitest du doch eh mit einer Software vom PC aus ein. Für den PC musst du dir natürlich auch noch ein kleines Programm schreiben, welches die Daten abholt und in eine vernünftige Form bringt, damit man sie mit Excel wieder einlesen kann. Dieses Programm könnte dann auch gleich die Uhr stellen in deinem Logger. Die Daten würde ich so abspeichern, dass du nur um Mitternacht das Datum schreibst und dann kommen halt alle 10 Minuten ein Byte für die jeweilige Temperatur. Das PC Programm rechnet dann die genaue Uhrzeit des jeweiligen Bytes aus und speichert es auf dem PC als kompletten Datensatz ab. Wenn du das mal hochrechnest, kommst du auf 150 Bytes pro Tag. Bei einem 1024kBit (=128kByte) EPROM könntest du so über 2 Jahre abspeichern. Da machen die Batterien sicher eher schlapp. Bei einem Ruhestrom von ca. 50µA sollte eine Batterie mit 1000mAh auch so ca. 2 Jahre halten (wenn sie sich nicht vorher selbst entladen hat). Mit einem solchem Aufbau kannst du also getrost ein Jahr überbrücken. Für die Übertragung würde ich mir ein eigenes Kabel löten, wo in dem einen Stecker der Max232 sitzt und mit von der Batterie versorgt wird, sobald man ihn an den Logger ansteckt. Gruß Sven
Wenn Du als Temperatursensor einen TSIC nimmst, dann kannst Du noch mehr Strom sparen, die TSICs kann man nämlich mit einem µC-Port abschalten (der TSIC wird über 220 Ohm auf den Portpin geschaltet statt auf VDD). Steht im TSIC Datenblat so drin, ich habe das ausprobiert, geht wunderbar.
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.