Forum: Mikrocontroller und Digitale Elektronik Ölverbrauch Heizung anzeigen


von Bernd S. (kurtel)


Lesenswert?

Hallo,

ich möchte gern den Ölverbrauch meiner Heizung anzeigen.
Funktionieren soll es so.
Die Laufzeit des Brenner soll gemessen werden und dann mit einen Faktor 
multipliziert werden. Der Faktor ist der Ölverbrauch pro Stunde. Bei mir 
wären das z.B. 1,76 Liter.
Die Werte sollen auf einen LCD-Display angezeigt werden.
Der Einschaltimpuls käme über ein Relais, das parallel zum Brenner 
geschaltet ist.
Meine Frage ,wie kann ich das mit einen Atmega 8 realisieren?
Bei mir reicht es jetzt grade mal um "Hallo World" auf`s Display zu 
bringen

kurtel

von moep (Gast)


Lesenswert?

Naja... du bringst irgendwie einen entsprechenden Impuls an den ATmega, 
wie man den dazu beschalten muss kommt ganz darauf an welche Spannungen 
am Relais anliegen.

Was die Software angeht musst du eben auf den Impuls reagieren und so 
lange die Zeit mitzählen bis der Brenner wieder ausgeht.
Dann multiplizieren und ausgeben.

Wo genau liegt denn das Problem?

von Nicht böse sein (Gast)


Lesenswert?

Kauf Dir lieber sowas:

http://www.tecson.de/lx-2_details.html

Ist in Deinem Fall einfacher.

von Pete K. (pete77)


Lesenswert?

Die Laufzeit des Brenners reicht nicht, da es auf den genauen 
Durchmesser der Düse ankommt. Der Durchmesser ändert sich aber teilweise 
während des Betriebs (Abnutzung).

Einfacher ist es, einen Heizölzähler (Rollenzählwerk) einzubauen.

Ist es eine Ein- oder Zwei-Strangsystem (mit Rücklauf). Falls noch kein 
Zweistrangsystem, muss noch ein anderer Ölfilter eingebaut werden, hier 
ist mit geringer Geruchsbelästigung zu rechnen.

Mit einem ATMega musst Du nur den Relais-Ausgang auf einen Eingang des 
Atmega bringen (Pegel beachten, 5V) und dann einen Timer alle 2ms 
nachschauen lassen, ob der Brenner läuft.
Dieses Ergebnis dann auf dem LCD anzeigen.

Anfangen kannst Du mit dem AVR-Tutorial hier auf der Seite (oben links 
im Menü).

von Bernd S. (kurtel)


Lesenswert?

Erstmal Danke für Eure Antworten.
Ich hab zwar Zweistrangsystem, aber Rollenzähler ist ziemlich teuer 
273,00€.
Es soll ja nun auch nicht supergenau sein. Bei einen Verbrauch von 
ca.2500 Litern im Jahr kommt es auf ein paar Liter nicht drauf an.
Mein Problem ist, das ich nicht viel Erfahrung mit Softwareerstellung 
habe.
Aber ich werde mal versuchen einen Timer zum Laufen zu bringen und die 
Ausgabe auf LCD.Über das Relais kann ich ja 5 Volt auf den Eingang 
geben.
Solange das Relais angezogen ist, müsste der Timer dann zählen.
Mal sehen.

kurtel

von ;-) (Gast)


Lesenswert?

Pete K. schrieb:
> ... dann einen Timer alle 2ms nachschauen lassen, ob der Brenner läuft

Kann man bei dem Zeitintervall nicht leicht mal eine Brennphase 
verpassen?

von PeterL (Gast)


Lesenswert?


von Rainer (Gast)


Lesenswert?

Vielleicht findest du hier Anregungen:

http://www.amhamberg.de/oelverbrauch.aspx

Rainer

von citb (Gast)


Lesenswert?

Das sollte nicht allzuschwer sein.
Wenn der Brenner laeuft, zaehlst Du alle 20,45 Sekunden eine Variable 
hoch und gibst deren Inhalt dann (durch 100 geteilt) mit 2 Stellen nach 
dem Komma aus.

Der Inhalt der Variable sollte dann pro Stunde um 176 groesser werden 
und als 1,76 angezeigt werden.

citb

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Nur als kleine Zusatzinformation, die vielleicht etwas Sucherei erspart: 
Falls es ein "normaler" Ölbrenner mit einer Stufe und einem Stecker nach 
DIN 4791 (wenn richtig erinnert) ist, kann man den Zustand "Betrieb" für 
die Zeit zur Volumenberechnung am Kontakt B4 abgreifen (ist im Stecker 
beschriftet), der 230V führt, wenn das Magnetventil geöffnet ist und 
somit Öl durch die Düse strömt.

von Nachdenker (Gast)


Lesenswert?

Gebraucht wird ein Timer mit z.B. 100 ms und ein Paar Variablen.
Wenn Brennersignal kommt wir Timer freigegeben und eine Variable 
Laufzeit im 100 mS Takt hochgezählt. Diese Laufzeit wird in Sekunden, 
oder Minuten umgerechnet und zur bisherrigen Laufzeit aufsummiert.

Entsprechend umgesetzt in Stunden oder Minuten mal entsprechenden Faktor 
ergibt den bisherigen Ölverbrauch.
Wichtig für den Anfang sind Timerbedienung, Variablen deklarieren und 
dabei beachten welche Werte diese annehmen können, wenn die Zeit in 
kleinen Teileinheiten gezählt wird.

Wäre nur eine Einstrangversorgung vorhanden könntest du mit einem 
kleinen Mengenmesser -gibts um die 30 Euro- und entsprechendem Program 
auf Atmega den tatsächlichen Verbrauch messen und anzeigen.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Es gibt Sensoren die zwischen Ölpumpe und Düse in die Druckleitung 
montiert werden können. Dann spielt Ein- oder Zweistrang keine Rolle, 
z.B. SOG960 von Satronic (BTW Umstellung auf Einstrang ist 
empfehlenswert und nicht sehr teuer).

Da keine hohen Genauigkeit gefordert wird, ist die vom OP beabsichtigte 
Integration des ausgeliterten Nettovolumenstroms durch die Düse über die 
Zeit schon o.k., Fehlerquellen von Peter K. bereits angedeutet. Man muss 
etwas aufpassen, dass der "Verbrauch pro Stunde" auch tatsächlich aus 
Messungen bei geöffnetem Magnetventil ermittelt wird.

Ansonsten gibt es auch noch ein halbweg brauchbares Näherungsverfahren, 
bei dem der Volumenstrom durch die Düse aus den Düsenkennwerten, dem 
Öldruck und evtl. vorhandenem Ölvorwärmer brechnet werden kann 
(Inspirationsquelle zur Parametrierung und zum Nachbau wäre z.B. GOK 
Z-BOX 1).

von Bernd S. (kurtel)


Angehängte Dateien:

Lesenswert?

So, jetzt meld ich mal wieder.
Danke für die vielen Tipps
Hab nun dieses Programm erstellt. Der Timer läuft automatisch und zählt 
im Sekundentakt(stell ich noch genau ein)die Anzeige immer um 1 hoch.
Er soll aber erst beim Anlegen von 5 Volt ( PortD4)laufen und ohne 5 
Volt anhalten.
Momentan habe ich nur 3 Stellen auf der Anzeige zum Laufen gebracht.
Wenn ich .B. noch eine Tausenderstelle reinbastel, kommt beim 
compilieren
der Fehler "Der angegebene Wert ist außerhalb des 8-bit Zahlenbereiches. 
1000".
Auch suche ich die Funktion, wie ich die auszugegebene Zahl mit Faktor x
multipliziere, bevor sie ausgegeben wird.
Könnt ihr mir da nochmal paar Tipps geben?

Danke

PS. Hab ausversehen den Code zweimal hochgeladen

von Michael M. (lernender)


Lesenswert?

Bernd S. schrieb:
> Wenn ich .B. noch eine Tausenderstelle reinbastel, kommt beim
> compilieren
> der Fehler "Der angegebene Wert ist außerhalb des 8-bit Zahlenbereiches.
> 1000".

Hallo Bernd,

eine unsigned 8-bit variable hat als max Wert 255. Um eine 1000 zu 
handeln, muss der Datentyp 16 bit lang sein.

Grüße Michael

von Karl H. (kbuchegg)


Lesenswert?

Bernd S. schrieb:

> Hab nun dieses Programm erstellt. Der Timer läuft automatisch und zählt
> im Sekundentakt(stell ich noch genau ein)die Anzeige immer um 1 hoch.
> Er soll aber erst beim Anlegen von 5 Volt ( PortD4)laufen und ohne 5
> Volt anhalten.

Das ist keine so gute Idee.
Denn wenn dein Relais nicht duchgeschaltet hat, heisst das noch lange 
nicht, dass deswegen am Port-Eingang eine 0 zu messen ist.

Einfacher ist es, wenn du es umgekehrt machst.
Dauerzustand am Port-Eingang ist 1. Das kannst du nämlich ganz leicht 
mit dem internen Pullup Widerstand ewrreichen, den dein Programm nur 
einschalten muss.

Und wenn das Relais schaltet, dann schaltet es den Portpin nach Masse 
durch und zieht so den Portpin auf 0.

In völliger Analogie wie man einen Taster an einen Portpin anschaltet. 
Nur dass bei dir der Taster eben ein Relis ist.

> Momentan habe ich nur 3 Stellen auf der Anzeige zum Laufen gebracht.
> Wenn ich .B. noch eine Tausenderstelle reinbastel, kommt beim
> compilieren
> der Fehler "Der angegebene Wert ist außerhalb des 8-bit Zahlenbereiches.
> 1000".
> Auch suche ich die Funktion, wie ich die auszugegebene Zahl mit Faktor x
> multipliziere, bevor sie ausgegeben wird.
> Könnt ihr mir da nochmal paar Tipps geben?

Einfach multiplizieren. Da deine Anwendung nicht zeitkritisch ist, würde 
ich gar nicht lange fackeln und bedenkenlos mit Floating Point 
multiplizieren.

> PS. Hab ausversehen den Code zweimal hochgeladen
Ist egal. Schauen sich sowieso die wenigsten an, solange du ein 
Word-File hochlädst. Was hindert dich daran, ganz einfach dein C File, 
so wie es ist, als Attachment anzuhängen? Das ist für dich am 
einfachsten und für uns auch.

von Bernd S. (kurtel)


Angehängte Dateien:

Lesenswert?

Momentan hab ich auch den Taster mit internen Pullup Widerstand im 
Programm drin-PORTD,4. Wenn ich den drücke, kommen aber außer den 3 
Zahlen daneben noch irgendwelche Hyroklyven.
Sollte vielleicht erstmal dazu sagen, das ich mit "my AVR Workpad 
"arbeite.
Das war zum myAVR Board MK2 dazu. Deshalb weiß ich auch nicht was für 
eine Datei ich hochladen soll, wahrscheinlich aber die s-Datei. werd es 
mal ausprobieren.
Zwecks Multiplikation, was ist "Floating Point".
Ich hab mal was von einen "mul" Befehl gelesen, wie das funktioniert????

von Karl H. (kbuchegg)


Lesenswert?

Bernd S. schrieb:

> Zwecks Multiplikation, was ist "Floating Point".

Ui.
vergiss was ich wegen des Rechnens gesagt habe.
Du arbeitest in Assembler. Da musst du das alles selber machen.

> Ich hab mal was von einen "mul" Befehl gelesen, wie das funktioniert????

Im Prinzip ja. Nur hast du mit einem einzelnen mul erst 8Bit mal 8Bit. 
Daraus musst du dir jetzt eine, ich würde mal schätzen mindestens 24 Bit 
Arithmetik zusammenbauen.

von Werner (Gast)


Lesenswert?

Bernd S. schrieb:
> Zwecks Multiplikation, was ist "Floating Point".

"Floating Point" ist, wenn man trotz begrenzter Auflösung und 
Dynamikbereich seiner Daten einen Teil der Bits einer Zahl für den 
Exponenten verschwendet ;-)

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.