Forum: Mikrocontroller und Digitale Elektronik Temperatursteuerung fürs Aquarium


von Stephan M. (avenger)


Lesenswert?

hallo leute, ich möcht mir gern so eine Temperatursteuerung bauen, bin 
aber ein kompletter neuling in der µC-Technik, mein Ziel ist es das die 
regelung den Heizer bei einem maximalwert aus-, bzw einem minimal wert 
einschaltet.

nun zu meinen fragen:
1) wie könnt ich das ganze in hardware realisieren? bzw. welche 
schaltung?

2) ich hab gehört das man das ganze am besten in C programmiert, kenne 
mich leider auch noch nicht aus, ich hoffe dass sich das ändert ;), wie 
würde den so der Code dafür aussehen? wenn mir vielleicht noch mehr 
helfen möchte und zeit hat, kann mir dann auch gleich wer eine 
beschreibung dazu posten wenns nit zuviel umstände macht :)

mit bitte um hilfe,

mfg

von Johannes S. (johanness)


Lesenswert?

Was du bauen willst ist ein Zweipunktregler, der lässt sich auch ohne µC 
aufbauen (Google kennt vielleicht ein paar Schaltungen). Wenn du einen 
µC nehmen willst ist die Programmiersprache dazu nebensächlich - diese 
Aufgabe ist nicht zeitkritisch, deine Fische würden sie höchstens als 
sicherheitskritisch einstufen, und da sollte bei halbwegs vernünftiger 
Programmierung nix schief gehen (wird schließlich ein Minimalprogramm).

Als Hardware hast du eigentlich die freie Wahl. Entweder du nimmst einen 
Temperatursensor, der dir digitale Werte ausgibt (siehe 
http://www.mikrocontroller.net/articles/Temperatursensor) oder du 
verwendest ein Element mit temperaturabhängigen Eigenschaften, z.B. 
einen NTC (Widerstandsmessung) oder eine Diode (Messung der 
Flussspannung) oder so und einen am µC eingebauten ADC (externer ADC 
geht natürlich auch, aber eingebaut ist einfacher).

Wie man das dann in Software macht hängt von der gewählten Beschaltung 
ab...

Auf welcher Controllerfamilie (AVR, PIC, ...) soll das ganze eigentlich 
laufen?

von Sebastian F. (tacx)


Lesenswert?

Hallo Stephan,

Hilfe zur Selbsthilfe: rtfm (read the fine manual)!
Die AVR-Tutorials hier sind wirklich gut. 
http://www.mikrocontroller.net/articles/AVR

Zur Schaltung:
Zerlege das Ganze in Funktionsabschnitte:

- Controller
- Temperaturmessung (Stichwort AD-Wandlung)
- Schalten (Heizung an/aus)
- Display

Und ab in's Tutorial (alle nötigen Funktionen sind eigentlich mit 
Schaltung beschrieben)!

Zur Programmierung:
Ja, man kann das in C machen, Assembler geht auch und alles was an 
anderen Sprachen nicht schnell genug weg gelaufen ist, als jemand einen 
Compiller dafür schreiben wollte auch.
Das GCC-Tutorial kenne ich zwar nicht von innen, wenn es aber nur halb 
so gut ist, wie das Assembler-Tutorial, dann kannst Du damit das 
Programmieren sehr gut lernen.

Viele Grüße
   Sebastian

von Stephan M. (avenger)


Lesenswert?

das ganze sollte auf PIC laufen, weil ich das ganze auch gleich für die 
schule als kleines Projekt machen werde, und da werden die PICs 
verwendet. die steuerung mach ich zwar für mich privat, aber mein lehrer 
meinte ich kann das auch ina schule abgeben und dann gibts halt 
"zusatzpunkte"

von Johannes S. (johanness)


Lesenswert?

Na dann - das meiste kann man übernehmen, nur in Details ist die 
Ansteuerung natürlich anders. sprut.de und speziell auch 
http://www.sprut.de/electronic/pic/grund/adc.htm könnte einen Besuch 
wert sein.

von Stephan Maurer (Gast)


Lesenswert?

#include <18F452.h>
#include <string.h>
#include <math.h>
#fuses XT, NOWDT, NOBROWNOUT, NOLVP, DEBUG

main(){
adc=input(PIN_A2);
int soll=b'0000000000000000';
int min= b'0000000000111100';
if(adc>soll)
output_high(PIN_A3);
else if(adc<min)
output_low(PIN_A3);
}


ich hab vom kollegen mal das bekommen, er hat da einen temperatur und 
feuchtigkeitssensor fürs terrarium verwendet, kann ich das so verwenden 
oder sollte ich da noch was umschreiben?

von Stephan M. (avenger)


Lesenswert?

was würdet ihr für einen Temperatursensor empfehlen? Genauigkeit sollte 
bei einem grad liegen.

von Stephan M. (avenger)


Lesenswert?

ich hab mir gedacht dass ich einen lm335 verwende, aber da gibts das 
problem dass er bei meinem minimal wert 2,96V ausgibt, und bei meinem 
maximalwert 2,98V. nun glaub ich aber dass bei so einem gerringen 
unterschied sich nichts ändert, bzw ich kann mit dem unterschied nicht 
wircklich was anfangen, kann man das beheben?

von Sepp (Gast)


Lesenswert?

Operationsverstärker dahinter und gut ist.

von Jack B. (jackbraun)


Lesenswert?

>ich hab mir gedacht dass ich einen lm335 verwende, aber da gibts das
>problem dass er bei meinem minimal wert 2,96V ausgibt, und bei meinem
>maximalwert 2,98V.

Das entspricht einer T-Differenz von 2K (10mV pro K), also ganz normal.

Im Datenblatt ist dazu eine einfache Schaltung angegeben:

Simple Temperature Controller

von Christian (Guest) (Gast)


Lesenswert?

Nur Hinweis:
ZMD hat sehr gute Temp.-sensoren
0,1 Grad
http://www.zmd.de/pdf/ZMD%20TSic506%20Data%20Sheet%20V3.6.PDF


Der lm soll aber +/- 0.5 haben
und +/- 0,2 wenn kalibriert - reicht damit vermutl. ;-)


Ich habe mal einen Bausatz von C. dazu verwendet - ging.
(Temp.-sen zwecks relaissteuerung)

Das Problem war Wasser.

Wie bekommst Du den Sensor dauerhaft "dicht".
Wo soll der hin?
Das kostet übrigens ein bißchen "Regelzeit", (Totzeitsystem).
(kritisch war das alles nicht, ein bißchen mit den
Schwellen spielen: bei der originalschaltung "ratterte" das Relais,
wegen: lange Zuleitung, schwaches Netzteil)

Das Relais schaltete die Heizung: on/off.
  das war eine "fertige"

Stromversorg. war Netzteil: "Dauerbetriebskosten"

Viel erfolg!
c.

p.s.: ein anderes Problem kann das Kühlen im Sommer sein
(je nach Fisch & Standort)

von Stephan M. (avenger)


Lesenswert?

Jack Braun wrote:
>>ich hab mir gedacht dass ich einen lm335 verwende, aber da gibts das
>>problem dass er bei meinem minimal wert 2,96V ausgibt, und bei meinem
>>maximalwert 2,98V.
>
> Das entspricht einer T-Differenz von 2K (10mV pro K), also ganz normal.
>
> Im Datenblatt ist dazu eine einfache Schaltung angegeben:
>
> Simple Temperature Controller

ja mag sein das das normal ist, aber bei einem unterschied von 20mV wird 
sich da denk ich nicht viel ändern

würd das mit operationsverstärker gehen? der lm335 wäre halt fein weil 
der gleich die spannung ausgibt, anstatt frequenz

von Jack B. (jackbraun)


Lesenswert?

>würd das mit operationsverstärker gehen?

Schau Dir doch die Schaltung im Datenblatt an.
Ein OPV arbeitet als Komparator und vergleicht die Spannung vom 335
mit einem festen Wert (den Du vorgibst).

von Stephan M. (avenger)


Lesenswert?

ja und wenn der wert nicht übereinstimmt soll er ein bzw ausschalten, 
heißt das jetzt ich häng einfach nen opv hinter den lm334 und dann 
funktioniert das?

hab da im datenblatt ne schaltung gefunden, kann die so funktionieren? 
http://www.ortodoxism.ro/datasheets/stmicroelectronics/2158.pdf und 
unten dann simple temperature controller

von Jack B. (jackbraun)


Lesenswert?

>ja und wenn der wert nicht übereinstimmt soll er ein bzw ausschalten,

Genau, ist eben ein Zweipunktregler.

>heißt das jetzt ich häng einfach nen opv hinter den lm334 und dann
>funktioniert das?

Wenn Du die Schaltung so wie angegeben aufbaust, ja.

von Peter D. (peda)


Lesenswert?

Du kannst ja nen DS18B20 nehmen, dann hast Du 0,0625° Auflösung und bist 
den ganzen Analog-Ärger los.


Wichtig ist aber, daß er wasserdicht montiert wird.


Peter

von etsmart (Gast)


Lesenswert?

Wichtig ist aber auch, das Wasser umzuwälzen. D.h. das warme Wasser gut 
zu verteilen um damit eine gleichmäßige Temperatur zu erhalten. Sonst 
hat man diese Temperatur nur in der Ecke, in der die Heizung ist. Bei 
großen Aquarien gegenüber ist es dann auch schon wieder kälter.

von Tropi der Ungewollte (Gast)


Lesenswert?

Ja wann gibts denn jetzt endlich gekochten Fisch?

von Hannes L. (hannes)


Lesenswert?

Im Temperaturbereich 10..50°C habe ich mit Heißleitern gute Erfahrungen 
gemacht. Es war ein Restposten von 100 Stück Kapillarheißleiter 24kOhm. 
Den habe ich einfach über 110k von 5V "bestromt" und den Spannungsabfall 
mittels ADC (interne Referenz) vom Mega48 gemessen, per Tabelle im Flash 
skaliert und per LCD angezeigt. Per 4 Taster und Menü lassen sich (neben 
ein paar anderen Dingen) Schaltpunkt und Hysterese (für meinen ollen 
Boiler, dessen Thermostat kaputt ging) einstellen.

Sicher hat ein digitaler Temperatursensor auch seinen Reiz...

...

von Stephan M. (avenger)


Lesenswert?

Stephan Maurer wrote:
>
> hab da im datenblatt ne schaltung gefunden, kann die so funktionieren?
> http://www.ortodoxism.ro/datasheets/stmicroelectronics/2158.pdf und
> unten dann simple temperature controller


kann ich auch diese schaltung verwenden? ich meine doch dass die 
einfacher wäre, bzw da krieg ich gleich ne spannung raus, und bei der 
einen soll er einschalten bei der anderen ausschalten

achja, welchen opv soll ich nach dem lm334 schalten?

von Jack B. (jackbraun)


Lesenswert?

>kann ich auch diese schaltung verwenden? ich meine doch dass die
>einfacher wäre

Einfacher als was? Das ist doch die Schaltung aus dem Datenblatt des 
335.

>achja, welchen opv soll ich nach dem lm334 schalten?

Steht doch groß und deutlich da: LM311.


von Ulli V. (vex)


Lesenswert?

Hallo Stephan
Was du auf jedenfall machen solltest: Denk erstmal an die Tiere & 
Pflanzen und nimm bitte zum Testen (und überhaupt als Sicherheit)
einen geregelten Heizstab, an dem du die maximale Temperatur einstellst.

Gruss Ulli


von Stephan M. (avenger)


Lesenswert?

es wird sowieso zuerst alles getestet

@jackbraun, ja ist die schaltung aus dem datenblatt, die kann ich doch 
aufbauen, die funktioniert doch wenn ich sie so aufbaue oder?

und mein kollege hat mal ein programm für ein terrarium feuchtigkeit und 
temperatur gemacht, kann ich das programm verwenden oder lieber neu 
schreiben?

#include <18F452.h>
#include <string.h>
#include <math.h>
#fuses XT, NOWDT, NOBROWNOUT, NOLVP, DEBUG

main(){
adc=input(PIN_A2);
int soll=b'0000000000000000';
int min= b'0000000000111100';
if(adc>soll)
output_high(PIN_A3);
else if(adc<min)
output_low(PIN_A3);
}

von Jack B. (jackbraun)


Lesenswert?

>@jackbraun, ja ist die schaltung aus dem datenblatt, die kann ich doch
>aufbauen, die funktioniert doch wenn ich sie so aufbaue oder?

Das hab ich Dir schon drei Mal gesagt ;-)

Also Schaltung aufbauen und testen.
Wie der Name schon sagt (Simple T. Contr.), ist das bereits eine
Regelschaltung, also brauchst Du vorerst keinen µ.

von Stephan M. (avenger)


Lesenswert?

>Das hab ich Dir schon drei Mal gesagt ;-)

o sry, habs wohl irgendwie überlesen

also brauch ich da nicht mal nen µC? das ja praktisch^^

wenn ich das ganze aber mit einem µC machen müsste, ich soll ja nur das 
Programm in C machen die Schaltung mach ich ohne µC, wie sollte das 
Programm aussehen? so?:


#include <18F452.h>
#include <string.h>
#include <math.h>
#fuses XT, NOWDT, NOBROWNOUT, NOLVP, DEBUG

main(){
adc=input(PIN_A2);
int soll=b'0000000000000000';
int min= b'0000000000111100';
if(adc>soll)
output_high(PIN_A3);
else if(adc<min)
output_low(PIN_A3);
}

von Karl H. (kbuchegg)


Lesenswert?

Stephan Maurer wrote:
>>Das hab ich Dir schon drei Mal gesagt ;-)
>
> o sry, habs wohl irgendwie überlesen
>
> also brauch ich da nicht mal nen µC? das ja praktisch^^
>
> wenn ich das ganze aber mit einem µC machen müsste, ich soll ja nur das
> Programm in C machen die Schaltung mach ich ohne µC, wie sollte das
> Programm aussehen? so?:
>

vergiss doch dieses ominöse Programm.

Entscheide dich ob mit oder ohne µC.

Wenn mit: Ganz ehrlich. Wenn dir dieser 5 Zeiler
Rätsel aufgibt, dann solltest du das ganze ohne µC machen.

von Tobias P. (hubertus)


Lesenswert?

Es gibt auch noch den AD22100 von Analog Devices.
TO92, 5VDC Betriebsspannung, Ausgang 0.25 bis 4.75 Volt.
Du rechnest deine gewünschten Schwellwerte (also deine Temperaturen) in 
jeweils eine Spannung um, speist dann einen OP, welcher als Komparator 
geschaltet ist (oder noch besser, einen fertigen Komparator wie den 
LM393), und dimensionierst die Hysterese so, dass deine Heizung ein- und 
ausschaltet bei der gewünschten Temp.
Klingt jetzt kompliziert, is aber sehr einfach, wenn du dir die 
Beschaltung des Komparators mal ansiehst (vielleicht kennst du dich ja 
damit schon aus).

Den Ausgang des Komparators brauchst du dann nur noch mit einem 
Transistor (FET, Bipolar, was auch immer) zu verbinden, der dann ein 
Relais (oder meinetwegen einen Triac) schaltet, wodurch wiederum die 
Heizung aktiviert wird.
Klar soweit?

Es grüsst
 Tobias

von Stephan M. (avenger)


Lesenswert?

so mir is grad aufgefallen, wenn ich die schaltung vom datenblatt 
aufbaue, wie regel ich dann die untere bzw die obere grenze der 
temperatur?

http://www.ortodoxism.ro/datasheets/stmicroelectronics/2158.pdf

von TroPi der Ungewollte (Gast)


Lesenswert?

Frag deinen Goldfisch!

Grüße aus dem Off

Tropi der Ungewollte

von Stephan M. (avenger)


Lesenswert?

so hab nun das ganze aufgebaut und habs auch mal meinem lehrer gegeben, 
zum überprüfen, er meinte aber ich solle das ganze mal mit einem PIC 
machen

kann mir da wer bei da schaltung helfen? PIC is ein 18F452, könnt ihr 
mir nun auch mit der schaltung mit PIC weiterhelfen?

von TroPi der Ungewollte (Gast)


Lesenswert?

Das sagte Christian Morgenstern zum Thema:

        Der Hecht

Ein Hecht, vom heiligen Antón
bekehrt, beschloß, samt Frau und Sohn,
am vegetarischen Gedanken
moralisch sich emporzuranken.

Er aß seit jenem nur noch dies:
Seegras, Seerose und Seegrieß.
Doch Grieß, Gras, Rose floß, o Graus,
entsetzlich wieder hinten aus.

Der ganze Teich ward angesteckt.
Fünfhundert Fische sind verreckt.
Doch Sankt Antón, gerufen eilig,
sprach nichts als: "Heilig! heilig! heilig!"


Grüße aus dem Off

Tropi der Ungewollte

von Hannes L. (hannes)


Lesenswert?

Stephan Maurer wrote:
> so hab nun das ganze aufgebaut und habs auch mal meinem lehrer gegeben,
> zum überprüfen, er meinte aber ich solle das ganze mal mit einem PIC
> machen

Hat Dir Dein Lehrer auch gesagt, dass Du die Arbeit (Recherche, 
Datenblatt lesen, Schaltung entwickeln, und und und) keinesfalls selbst 
machen darfst, sondern dass Du sie (die Arbeit) von einem Forum machen 
lassen sollst???

Wenn Dir Dein Lehrer diese Aufgabe stellt, dann hast Du vermutlich auch 
die dazu erforderlichen Grundlagen gelehrt bekommen.

>
> kann mir da wer bei da schaltung helfen? PIC is ein 18F452, könnt ihr
> mir nun auch mit der schaltung mit PIC weiterhelfen?

Trittst Du die "Anerkennung" (der Schule bzw. Deines Lehrers) dann auch 
an die Helfer ab?

Sorry dass ich so deutlich werde, aber ich mag es nicht, wenn sich 
jemand vor seiner Arbeit drückt und dann nur den Ruhm einsteckt.

...

von Stephan M. (avenger)


Lesenswert?

laut lehrer ist es auch erlaubt in foren und allgemein im Internet zu 
suchen, die anerkennung, fällt also sowieso nicht mir alleine zu

egal

mein vorschlag, wenn ich die spannung von nem microchip pic board 
abnehme auf den eingang vom lm335, und danach halt nen lm311, geht das 
dann auch mit dem PIC-Board so wie ichs mir denke?

von Sebastian F. (tacx)


Lesenswert?

Hallo Stephan,

wobei hast Du denn Deine Schmerzen?
Keine Ahnung von C? Sagen Dir die 5 Zeilen Code, die Du gepostet hast 
gar nichts?
=> Dann fehlt wahrscheinlich auch jegliche andere Programmiersprache. 
Dann lerne C! Melde Dich wieder, wenn das "Hallo Welt" Programm 
funktioniert.
Keine Ahnung von Elektornik?
=> Dann such Dir ein gutes Buch und lies!
Keine Ahnung, was ein uC kann?
=> Dann lies Dich durch die Tutorials!

Dann verschwende mal 3 Gedanken darüber, wie das, was Du über Controller 
gelernt hast wohl im C-Code aussehen wird.

Dann entscheide Dich für eine Messtechnik und bau das auf. Wenn Du den 
einfachen Spannungsteiler mit Temperatur abhängigem Widerstand wählst, 
kannst Du zum ausprobieren einfach den "Sensor"Widerstand durch ein Poti 
ersetzen und damit das Wasserbad simulieren.

Eh Du Code-Schnipsel postest, solltest Du Dir mal die Mühe machen und 
einen Ablaufplan für Dein Programm schreiben.

Hilfe bekommst Du hier immer, aber keine gebratenen Tauben. Wo die 
Tauben sind, ist Dir ja nun geschrieben worden. Einsammeln, rupfen, 
ausnehmen und braten musst Du sie selbst.

von Stephan M. (avenger)


Lesenswert?

mittlerweile weiß ich was der code bedeutet, für den rest, gut versuch 
ichs mal mit tutorials

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.