Hallo liebe Gemeinde, ich habe mir jetzt diverse Anleitungen und Tutorials angesehen, bin mir aber nicht ganz sicher ob ich den Grund verstanden habe. Grundlegend habe ich folgendes vor: Ich möchte mit einem in Delphi geschriebenen Programm die Temperatur in einem Terrarium ermitteln. Mein Grundgedanke, ein Mikrocontroller ermittelt via. Sensor die Temperatur und speichert diese dann im ROM, welches dann über den PC ausgelesen wird. Was benötige ich als Mindestvoraussetzungen um ein solches Projekt Realisieren zu können. Platine mit Sensor, IC, IC Sockel, div. Widerständen etc. Dazu dann ein Starter Kit mit dem ich den IC Programmieren kann, mir schwebt derzeit "Atmel AVR STK500" vor. Eine Software zum Programmieren wie z.B. AVR Studio. Jetzt wüsste ich gern, erstens hab ich das bis hier richtig verstanden, oder fehlt noch was Gravierendes, z.B. um die Daten zu übertragen oder so ? Und zweitens, habt Ihr Vorschläge, welches Starter Kit, welchen Controller ich verwenden oder meiden sollte um mich in die Materie am besten Einzuarbeiten. Danke fürs Lesen :) und LG Dago
Dennis Schwarzer schrieb: > Ich möchte mit einem in Delphi geschriebenen Programm die Temperatur in > einem Terrarium ermitteln. Gibts denn einen Delphi Compiler für AVRs? Ansonsten ist es eventuell keine gute Idee die Temperaturwerte im "ROM" (ist es ja nicht wirklich, sonst wirds mit dem speichern schwierig ;) ) zu speichern. Wenig Platz und endliche Lebensdauer. Soll dein Gerät denn immer am PC hängen oder nur manchmal also praktisch als Temperatur Logger arbeiten?
Dennis Schwarzer schrieb: > Mein Grundgedanke, ein Mikrocontroller ermittelt via. Sensor die > Temperatur und speichert diese dann im ROM, welches dann über den PC > ausgelesen wird. Wenn das ein Datenlogger werden soll, nimmt man dafür eher eine SD-Karte oder bei weniger Messwerten ein EEPROM.
Zwischen Delphi Programm und AVR braucht es noch ein Protokol und eine serielle Schnittstelle. Dh das UART am AVR benoetigt einen RS232 Treiber, oder einen UART-zu-USB Chip. Plusd den passenden Stecker aufm board.
Dennis Schwarzer schrieb: > und speichert diese dann im ROM, welches dann über den PC ausgelesen > wird. Nö. Im ROM kann man keine Variablen speichern. Dennis Schwarzer schrieb: > Was benötige ich als Mindestvoraussetzungen um ein solches Projekt > Realisieren zu können. Fundierte Mikrocontrollerkenntnisse. Dennis Schwarzer schrieb: > Platine mit Sensor, IC, IC Sockel, div. Widerständen etc. > Dazu dann ein Starter Kit mit dem ich den IC Programmieren kann, > mir schwebt derzeit "Atmel AVR STK500" vor. > Eine Software zum Programmieren wie z.B. AVR Studio. Ein Starterkit brauchst du nicht zwingend. Wenn die Schaltung fertig ist, wird der Controller in der Schaltung mit einem ISP-Programmer programmiert. Dennis Schwarzer schrieb: > Und zweitens, habt Ihr Vorschläge, welches Starter Kit, welchen > Controller ich verwenden oder meiden sollte um mich in die Materie am > besten Einzuarbeiten. Welchen Controller du nimmst, ist eigentlich vollkommen egal. Da dies hier aber ein AVR-Forum ist, wird dir hier, ausser von ein paar wackeren PIC- und sonstwas Jüngern, ein Atmega nahegelegt werden. Das läuft dann auf die alte Gurke, äähhh den beliebten Klassiker, Atmega8 hinaus. Vorschlag 1: Nimm einen Arduino. Da kommst du schnell zum Ziel. Wirst aber nicht viel dabei lernen. Vorschlag 2: Nimm auf keinen Fall einen Arduino. Sondern fange, wie jeder andere auch, mit einem Taster und einer Led an. Der Taster wird vom Controller ausgewertet und die Led leuchtet, blinkt oder leuchtet nicht. Und wenn die Tage nächstes Jahr wieder kürzer werden, kannst du so langsam an dein Terrariumprojekt denken. Aber dann weisst du auch warum was wie oder nicht passiert. mfg.
Thomas Eckmann schrieb: > Wenn die Schaltung fertig > ist, wird der Controller in der Schaltung mit einem ISP-Programmer > programmiert. Noch einfacher geht's mit einem Bootloader. Dann braucht man den IS-Programmer nur beim ersten Mal.
@Eumel : Eigentlich, Nein, soll nicht immer am PC hängen, sonst müsste der PC ja durchgehend eingeschaltet sein zum Messen. Die Temperaturwerte sollen ermittelt und gespeichert werden, wobei mir gerade einfällt, das dann ja keine Zeitangaben mit gespeichert werden würden und somit die Daten mehr oder weniger egal sind. Eine Lösung wo ich direkt den Wert auslese ohne zwischenzuspeichern würde daher auch erstmal reichen (müssen). @Zwoelf gegen Neunzehn : UART sagt mir bis jetzt noch garnichts, da werd ich mich direkt mal einlesen, danke :)
@Thomas Eckmann : Vielen dank für die Ausführlichen Antworten. Fundierte Mikrocontrollerkenntnisse werde ich mir natürlich aneignen, mir ging es in erster Linie um die benötigte Hardware. Das ich den Controller in der Schaltung mit einem ISP-Programmer direkt programmieren kann ist super zu wissen, Danke. Ich denke mal dann werde ich eine Mischung aus Lösung 1 und 2 realisieren. Arduino werde ich mir mal einen holen, denn bei schneller Ergebnissen macht die Arbeit Spaß und die Motivation nimmt zu (grins) Aber wie bei allen Programmiersprachen will ich natürlich auch genau verstehen wann wann wie passieret etc. Werde mir daher dann mal meine Alten Assembler Unterlagen wieder aus dem Keller suchen, mir das ein oder andere Buch besorgen, und alles von der Pike auf, mal zusammen Löten und lernen. Danke.
@ Dennis Schwarzer (dago811) >Arduino werde ich mir mal einen holen, denn bei schneller Ergebnissen >macht die Arbeit Spaß und die Motivation nimmt zu (grins) Klingt OK. >Aber wie bei allen Programmiersprachen will ich natürlich auch genau >verstehen wann wann wie passieret etc. Ja, aber man muss sich nicht krampfhaft mit jedem Krümelkram beschäftigen. >Werde mir daher dann mal meine Alten Assembler Unterlagen wieder aus dem >Keller suchen, mir das ein oder andere Buch besorgen, und alles von der >Pike auf, mal zusammen Löten und lernen. Nicht sinnvoll. Assembler nützt dir hier nix und du verschwendest haufenweise Zeit. ALLES von der Pike auf selber zusammenbauen bringt dich auch nicht weiter.
Wenn Du µC-Anfänger bist, ist ein Starterkit wie das STK500 eine gute Idee. Da ist die Hardware fix und fertig (und fehlerfrei!) und Du kannst Dich in aller Ruhe mit der Programmierung des µC auseinander setzen. Das STK500 kann ich empfehlen, man hat immer ein paar LEDs und Taster "griffbereit", einen RS232-Transceiver drauf, kann über die Pinheader externe Hardware anschließen und es später auch als ISP-Programmierer für eigene Platinen verwenden. Ich würde an Deiner Stelle nicht gleich mit selbstgemachter Hardware anfangen: Da hast Du (ohne Erfahrung) recht viele Fehlerquellen auf einmal. Ich erinnere mich noch an einen Kumpel, der an seinem MAX232 die falschen Kondensatoren drann hatte, und die RS232-Kommunikation mal ging und mal nicht - er hat sich in der Software kaputtgesucht! Sowas passiert Dir mit einem STK500 nicht.
> Ich möchte mit einem in Delphi geschriebenen Programm > die Temperatur in einem Terrarium ermitteln. Dadurch hast du dich selbst auf Plattformen eingeschränkt, für die Delphi existiert, also PC. Du brauchst also einen kleinen PC, die gibt es als Boards. Obwohl prinzipiell Delphi-Programme ROM-fähig sind, ist es meist so, daß diese per DOS ein Programm von einerm Speichernedium holen, das sind heute Solid State Flash Karten, manchmal schon auf der Platine aufgelötet. Als Sensor kann man dann alles anschliessen, was du programmtechnisch abfragen kannst, keine Ahnung was du da kannst, aber ein PC hat einen internen I2C Bus an dem schon Temperatursensoren hängen, nämlich beispielsweise von der CPU, an die man problemlos weitere Temperatursensoren anschliessen kann, beispielsweise LM75. Man kann auch NTC Sensoren ans GamePort anschliessen (falls das Board einen Gameport hat, die meisten Industrie- PCs haben keinen). Oder Module an die serielle Schnittstelle oder USB anschliessen. Das Hauptproblem der PC Boards ist nicht unbedingt deren Grösse, die meisten sind kleiner als ein STK500, sondern deren Stromverbrauch. Auf Batteriie wird also nichts, du brauchst ein Netzteil. Und dann alles schön aquariumdicht einschliessen, denn du willst dir ja keinen Schlag holen. Und die Frage der Anzeige, ein ganzes VGA Display ist möglich, aber ein 2 x 16 Zeichen Display direkt an der Paralellport geht auch, es wird nur anders programmiert. Den grössten Gefallen tätest du dir, wenn du auf die antike Programmierumgebung Delphi verzichten würdest.
@ MaWin: Naja das Delphi eine antike Programmierumgebung ist, darüber kann man streiten, ich arbeite Hauptberuflich damit, und die neuste Programmierumgebungsversion XE3 die ich unter anderem verwende ist gerade mal vor ein paar Monaten veröffentlicht wurden. Und aquariumdicht müsste es nicht unbedingt sein, da ja in einem Terrarium nur bedingt Wasser zu finden ist. Die Frage der Anzeige stellt sich mit auch nicht, denn icch möchte in einem Programm am PC den Sensor auswerten, und nicht auf der Platine sehen wie warm oder kalt es isst. Nichts desto trotz, danke ich dir, und allen anderen für die schnellen und vielen Antworten, tolles Forum hier. Denke hier werde ich künftig öfter anzutreffen sein :)
Dennis Schwarzer schrieb: > Werde mir daher dann mal meine Alten Assembler Unterlagen wieder aus dem > Keller suchen Viele behaupten, daß man nur, wenn man mit Assembler anfängt, etwas lernt. Ich halte das für Quatsch. Wenn man Auto fahren lernt, fängt man auch nicht damit an, den Motor zu zerlegen. Alternative ist dann aber C oder Basic. Dennis Schwarzer schrieb: > Arduino werde ich mir mal einen holen, denn bei schneller Ergebnissen > macht die Arbeit Spaß und die Motivation nimmt zu (grins) Klar kann man damit anfangen. Wenn man dann "richtig" einsteigen will, mit "richtiger" Programmierung, kann man immer noch den ganzen Arduino-Kram runterschmeissen und hat ein funktionsfähiges Board vor sich, daß man mit einem ISP programmieren kann. mfg.
Thomas Eckmann schrieb: > Viele behaupten, daß man nur, wenn man mit Assembler anfängt, etwas > lernt. Ich halte das für Quatsch. Wenn man Auto fahren lernt, fängt man > auch nicht damit an, den Motor zu zerlegen. Soweit ich weiss, wird aber in der Fahrschule immer noch gelehrt, wie das Ganze funktioniert. Perfekt Assembler zu koennen ist sicher nicht noetig, aber per Assemblerprogramm ein paar LEDs zum Blinken bringen steigert das Verstaendnis fuer das, was man dann in C zu tun gedenkt, ungemein. Wo man ohne dieses Grundverstaendnis landet, sieht man an den Fragen wie: "Ich klicke auf Compile und nichts passiert - wie weiter?". fonsana
Also so ein simples Assembler-Programm:
1 | .include "m328Pdef.inc" ; Definitionsdatei für den Prozessortyp einbinden |
2 | |
3 | ldi r16, 0xFF ; lade Arbeitsregister r16 mit der Konstanten 0xFF |
4 | out DDRB, r16 ; Inhalt von r16 ins IO-Register DDRB ausgeben |
5 | |
6 | ldi r16, 0b11111100; 0b11111100 in r16 laden |
7 | out PORTB, r16 ; r16 ins IO-Register PORTB ausgeben |
8 | |
9 | ende: rjmp ende ; Sprung zur Marke "ende" -> Endlosschleife |
sollte man schonmal gesehen haben. Aber viel mehr als LED an und LED aus würd ich jetzt ned unbedingt in Assembler machen wollen. In der Fahrschule lernt man übrigens auch grob was so ein 'Viertaktmotor' überhaupt ist. Thomas
fonsana schrieb: > "Ich klicke auf Compile und nichts passiert - wie weiter?". Das ist richtig. Noch schlimmer finde ich die, die mit einem Timer arbeiten wollen und den über irgendein Clicktool konfigurieren. Wer einen Timer, sowie alles andere auch, benutzen will, der muss sich über die Funktion im klaren sein und die Register richtig einstellen. Ob das nun in C gemacht wird oder mit Assembler. Aber vielleicht sagt sich das auch nur so leicht, wenn man das selbst jahrzehntelang gemacht hat und einfach nur keinen Bock mehr auf dieses Assemblergefriemel hat. mfg.
Hallo, wenn es Dir eher um das Ziel als um den Weg geht, dann würde ich Arduino empfehlen. Das ist sehr gut dokumentiert, relativ einfach vom mechanischen Aufbau und umfangreich von den verfügbaren Bibliotheken. Als Alternative käme möglicher Weise auch ein Raspberry Pi in Frage. Wenn Du mit Linux vertraut bist... Und Pascal Varianten sind dort auch verfügbar. Hier mal ein Beispiel für einen Temperatursensor (allerdings mit Python): http://learn.adafruit.com/adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing/overview Grüße, Steffen
Steffen schrieb: > Hallo, > > wenn es Dir eher um das Ziel als um den Weg geht, dann würde ich Arduino > empfehlen. Das ist sehr gut dokumentiert, relativ einfach vom > mechanischen Aufbau und umfangreich von den verfügbaren Bibliotheken. > > Als Alternative käme möglicher Weise auch ein Raspberry Pi in Frage. > Wenn Du mit Linux vertraut bist... Und Pascal Varianten sind dort auch > verfügbar. Hier mal ein Beispiel für einen Temperatursensor (allerdings > mit Python): > > http://learn.adafruit.com/adafruits-raspberry-pi-l... > > Grüße, Steffen Genau, um die Temperatur in meinem Terrarium zu messen würde ich jetzt auch nen 700 MHz Stromfesser benutzen.
Eumel schrieb: > Genau, um die Temperatur in meinem Terrarium zu messen würde ich jetzt > auch nen 700 MHz Stromfesser benutzen. Würdest Du? Dann nimmst Du wohl für jede Kleinigkeit nen RPi. Und Dein Nick ist dann Programm. ^^ @TE: Der kleine RPi verbraucht 2,5W. Das schöne am RPi, man kann damit alles machen, wie mit nem Linux PC. Darum hier als Alternative, falls Du mal mehr machen willst.
Eumel schrieb: > Genau, um die Temperatur in meinem Terrarium zu messen würde ich jetzt > auch nen 700 MHz Stromfesser benutzen. Das hat jetzt jeder Idiot geschnallt, wie das gemeint ist. Naja fast: Steffen schrieb: > Würdest Du? Dann nimmst Du wohl für jede Kleinigkeit nen RPi. mfg.
Der RPi hat aber weder einen ADC noch einen RTC. Die muss man erst noch dranstricken. So als Möglichkeit, es gibt auch so einen chinesischen Arduino Clone als Datenlogger. z.B.: http://www.watterott.com/de/Seeeduino-Stalker-v2
Jörg D. schrieb: > Der RPi hat aber weder einen ADC noch einen RTC. > Die muss man erst noch dranstricken. Im Link oben wird ein digitaler Temperatursensor benutzt... ein Bauteil. Zur Synchronisation der Uhr kann man NTP nehmen, wenn man es braucht. Dazu steckt man 'nen WLAN Adapter an den USB Port. Hübscher Nebeneffekt: Man kann remote zugreifen und u.a. die gesammelten Daten abgreifen. Grüße, Steffen
Michael A. schrieb: > Wenn das ein Datenlogger werden soll, nimmt man dafür eher eine SD-Karte > oder bei weniger Messwerten ein EEPROM. Sinnvoller Vorschlag. Was mich aber zu der Frage bringt, wie viele Messwerte zwischengespeichert werden müssen und welche Auflösung diese besitzen... Davon hängt entscheidend die Wahl der Hardware ab.
Markus Weber schrieb: > Sinnvoller Vorschlag. Was mich aber zu der Frage bringt, wie viele > Messwerte zwischengespeichert werden müssen und welche Auflösung diese > besitzen... > > Davon hängt entscheidend die Wahl der Hardware ab. Na, wenn wir uns mal kurz einen simplen Temperaturlogger vorstellen. Also irgendein AVR und ein ds18b20 (z.b.). Da kriegt man die Temperaturwerte locker in ein Byte. Einen Timestamp kann man sich auch sparen wenn man den einmal ganz am Anfang setzt und dann in bekannten Abständen misst. Da würde (bei einer Messung alle 10 Sekunden) ein 1Mbit EEPROM zwei Wochen lang reichen. Wobei ich nicht wüsste, wozu man die Temperatur alle 10 Sekunden messen sollte. Ein Abstand von 5 Minuten würde doch auch locker reichen. Also mein Vorschlag für den Threadersteller: Du suchst dir einen neueren AVR aus (PA in der Herstellerbezeichnung, mit RTC funktion) kaufst dir einen Programmer, Kleinteile, EEPROM, Temperatursensor und ein USB Seriell Wandler (gibts bei Ebay für 3 Euro). Damit hast du an Hardware alles was du brauchst. Versorgen kannst du das ganze über 2 AA Batterien. Der Rest ist Software.
Eumel schrieb: > Na, wenn wir uns mal kurz einen simplen Temperaturlogger vorstellen. Das ist Spekulation. Aber ok, stellen wir uns das vor. :-) > Wobei ich nicht wüsste, wozu man die > Temperatur alle 10 Sekunden messen sollte. Ein Abstand von 5 Minuten > würde doch auch locker reichen. Richtig! Genau das ist einer der Punkte, die über die notwendige Hardware entscheiden. Die meisten einfachen Mikrocontroller (z.B. 8-Bit-AVR) haben schon ein EEPROM an Bord. Alternativ davon kann man die Temperatur auch ins SRAM schreiben. Wenn wir mal annehmen (spekulieren), dass ein Messabstand von 10 Minuten ausreicht, sind es nur 144 Werte je Tag, man kann also auf externen Speicher verzichten. AD-Wandler sind auch an Bord, das könnte die Temperaturmessung noch einmal vereinfachen – falls man nicht auf besonders hohe Messgenauigkeit angewiesen ist. > Also mein Vorschlag für den Threadersteller: > Du suchst dir einen neueren AVR aus (PA in der Herstellerbezeichnung, Die neuesten AVR mit hoher Speicherkapazität haben gar kein PA im Namen. Das PA ist ein Hinweis auf einen neueren Typ, aber kein sicheres Kennzeichen. Beispiel: ATmega88A und ATmega328 sind entwicklungstechnisch gleichzusetzen. Dasselbe gilt für ATmega324A und ATmega1284 sowie für ATtiny2313A und ATtiny4313. > mit RTC funktion) kaufst dir einen Programmer, Kleinteile, EEPROM, > Temperatursensor und ein USB Seriell Wandler (gibts bei Ebay für 3 > Euro). Damit hast du an Hardware alles was du brauchst. Versorgen kannst > du das ganze über 2 AA Batterien. > Der Rest ist Software. Seh ich persönlich auch so, aber das ist natürlich Geschmacksache. Ich glaube, ich würde sogar auf den USB-Seriell-Wandler verzichten und V-USB verwenden, dann kann man den Mikrocontroller gleich direkt an die USB-Schnittstelle anschließen.
Markus Weber schrieb: > Die neuesten AVR mit hoher Speicherkapazität haben gar kein PA im Namen. > Das PA ist ein Hinweis auf einen neueren Typ, aber kein sicheres > Kennzeichen. Beispiel: ATmega88A und ATmega328 sind > entwicklungstechnisch gleichzusetzen. Dasselbe gilt für ATmega324A und > ATmega1284 sowie für ATtiny2313A und ATtiny4313. Wieder was gelernt. Markus Weber schrieb: > Seh ich persönlich auch so, aber das ist natürlich Geschmacksache. > Ich glaube, ich würde sogar auf den USB-Seriell-Wandler verzichten und > V-USB verwenden, dann kann man den Mikrocontroller gleich direkt an die > USB-Schnittstelle anschließen. Hab ich noch nie benutzt, ist das schwierig zu benutzen?
Hallo Jörg, Jörg D. schrieb: > Der RPi hat aber weder einen ADC noch einen RTC. > Die muss man erst noch dranstricken. Das stimmt. Dafür hat der RPi vor allem: Speicher und Rechenpower. Da kann man seine Meßwerte direkt in eine Datenbank wie etwa PostgreSQL schreiben und, zum Beispiel mit Python, Django und gnuplot, direkt eine webbasierte Auswertungssoftware dranbauen. Damit kann man dann auch gleich die Heizung ein- oder ausschalten. Ganz Gewitzte stöpseln dann noch eine USB-Kamera an den RPi und bekommen eine schicke MMS, wenn die Temperatur zu hoch oder zu niedrig ist... Ein separater ADC ist allerdings überflüssig, wenn man OneWire-Sensoren verwendet. Für unter 25,- Euro gibt es einen DS9490R und für je unter zwei Euro einen DS18B20- oder DS18S20-Temperatursensor. Außerdem gibt es für OneWire auch noch ADCs wie den DS2450S, digitale Ein- und Ausgänge, ... und das ist so einfach, daß es auch ein Laie, je nach Zeit, technischer Begabung und Vorbildung, in ein bis vier Wochen zusammenbauen kann. Das ist dann zwar kein Einstieg für Mikrocontrollerentwicklung mehr, aber zweifellos ebenfalls sehr lehrreich, beim Aufbau einfacher und im Betrieb zweifellos sehr viel komfortabler als jede uC-Lösung. SCNR, Klaus
@all. Vielen Dank für die ganzen Antworten und Anregungen. Ihr habt mir bereits jetzt viel weiter geholfen. Wenn ich mich für eine Lösung entschieden habe, werd ich mich nochmals melden, von mir aus kann der Thread bis dahin gern geschlossen werden :) Danke an alle :)
Klar ist das Geil wenn man im Mallorca Ulraub sehen kann ob es zuhause dem Getier noch gut geht oder ob es schon gegrillt/erfroren ist. Ich sehe allerdings nicht, dass der Threaderstller solche Anforderungen hat. Und für das was er im Eingangspost schilder ist ein RPi ziemlicher overkill. Und schneller am laufen hat er es wohl auch nicht.
Hi Eumel, Eumel schrieb: > Und für das was er im Eingangspost schilder ist ein RPi ziemlicher > overkill. Kommt darauf an, wie viele Temperaturdaten er speichern will, oder, anders gesagt: auf Intervall, Genauigkeit und Zeitraum der Speicherung. Da ist ein RPi natürlich klar im Vorteil, was die Speichergröße angeht. > Und schneller am laufen hat er es wohl auch nicht. Da bin ich mir nicht so sicher, das hängt primär von den Vorkenntnissen und der Lernfähigkeit des OP ab. ;-) LG, Klaus
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.