Einfache Kompressor-Überwachung        

von Hubert Freisinger , OE3FHA                  
Elektronik-Labor  Bastelecke  Projekte  Notizen




Mein alter Kompressor läuft noch gut, ist aber schon 25 Jahre alt. Durch brauchbare Wartung ist der Verdichter in gutem Zustand doch der Druckkessel hält nicht ewig, Rost ist da das größte Problem.



Ich erstand um wenig Geld einen neuen Kompressor doch musste ich feststellen dass die Konstruktion wirklich Spitze auf Knopf ist, da wurde gespart auf Teufel komm raus, kaum Kühlrippen am Kopf und Zylinder und der Luftstrom vom Motor behindert sich konstruktiv selbst. Ich konnte keinen warmen Luftstrom im Betrieb feststellen obwohl der Kopf sehr heiß war, einfach grausam das kann nicht lange gut gehen.

Meine Lösung war ein Computer-Lüfter 80x80mm an der Oberseite der Abdeckung, das grobe Gitter im Plastik der Abdeckung wurde ausgeschnitten, und der Lüfter mit Metallgitter montiert. So weit so gut, er läuft und saugt kalte Luft über den Zylinder und Kopf an und bläst diese warm oben raus. Wenn der Kompressor abschaltet so steht auch der Lüfter, doch die große Hitze ist noch da. Der Lüfter muss also noch nachlaufen und bei Wiederanlauf weiter kühlen.



Da kam mir wieder die Idee das einfach durch einen Attiny13 zu managen, aber nur eine Nachlaufzeit zu programmieren wäre zu simpel, warum sollen nur Autos mit Elektronik vollgestopft sein? Also implementierte ich die Anzahl der Einschaltvorgänge, die Betriebsstunden bis zum Ölwechsel (bei mir 10 Stunden, sind ja nur 0,2 Liter Öl) und die Gesamtbetriebsstunden mit hinein. Diese Daten mussten in das EEPROM geschrieben werden um diese wieder zur Verfügung zu haben. Die Anzahl der Einschaltvorgänge und die Gesamtstunden können bei Bedarf mit dem Programmiertool ausgelesen werden.



Das Ganze habe ich auf eine hochwertige Lochrasterplatine aufbaut und in ein Gehäuse mit Klarsichtabdeckung. Dadurch kann man die Leuchtdioden, ohne Löcher zu bohren, überwachen. Um das Ganze ohne RESET-Taste für den Ölwechselintervall zu realisieren habe ich dafür einen Hallsensor  verwendet der mittels Magnet durch die Gehäusewand aktiviert werden kann.

Wenn es Spaß macht kann ja das Ganze in einen Mega8 mit Display implementiert werden, für mich reicht diese Variante.

Download: Kompressorueberwachung.zip

'-------------------------------------------------------------------------------
' 11/2020 ,OE3FHA Hubert
'-------------------------------------------------------------------------------
' Auschaltverzögerung für Ventilator mit Betriebsstunden-Erfassung und
' Einschaltzähler für Kompressor
'-------------------------------------------------------------------------------
'
' FuseBits: Teiler 8:1 deaktivieren, BODLEVEL = 4,3V
'
'Portbelegung:
' PORTB.0 = Relais
' PORTB.1 = LED rot
' PORTB.2 = LED grün
' PORTB.3 = Service Reset (Hall Sensor mit externem Dauermagnet)
' PORTB.4 = Sensoreingang (EIN vom Motor)
'
' Byte 1-2 im ERAM = Anzahl der Einschaltvorgänge (Kann mit Tool ausgelesen werden)
' Byte 3-6 im ERAM = Betriebszeit in Sekunden (Zeit für Ölwechsel, muss zurückgesetz werden)
' Byte 7-10 im ERAM = Gesamtzeit (Kann mit Tool ausgelesen werden)
' Byte 11-16 im ERAM = OE3FHA (Der Entwickler)
'===============================================================================


$regfile = "attiny13.dat" 'verwendeter Prozessor
$crystal = 9600000 'Definition des Takt 9,6 MHz

'Eram mit Daten füllen =========================================================


$eeprom
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 79 , 69 , 51 , 70 , 72 , 65
$data

'Variable erstellen ============================================================


Stop Adc 'Stop Power of ADC
Stop Ac 'Switch off the power to the Analog Comparator
Reset Acsr. Acbg 'Disable Analog Comparator Bandgap Select
Config Debounce = 100 'Entprellen 100ms
Dim A As Dword 'Zähler (4 Byte)
Dim Schaltzahl As Word 'Einschaltvorgänge (2 Byte)
Dim Schaltzahl_eram As Eram Word 'Eeprom (2 Byte)
Dim Deltazeit As Dword 'Deltazeit (4 Byte)
Dim Deltazeit_eram As Eram Dword 'Eeprom (4 Byte)
Dim Gesamtzeit as Dword 'Zähler (4 Byte)
Dim Gesamtzeit_eram As Eram Dword 'Eeprom (4 Byte)


'Konfiguration Ports ===========================================================


Ddrb = &B0000_0111 'konf Port's B auf > 0=Eingabe 1=Ausgabe
Portb = &B0000_0100 'setze Port's B auf 0/1
Pinb = &B0001_1000 'Pullup-Widerstand setzen


'Prolog ========================================================================


Schaltzahl = Schaltzahl_eram 'Lese Wert aus Eeprom
Deltazeit = Deltazeit_eram 'Lese Wert aus Eeprom
Gesamtzeit = Gesamtzeit_eram 'Lese Wert aus Eeprom

If Deltazeit > 36000 Then '36000 entspricht 10 Stunden
Portb.2 = 0 'LED grün ist aus
Portb.1 = 1 'LED rot ist ein
End If


'Hauptprogramm Betriebzeiterfassung / Einschaltvorgänge ========================


Begin:


A = 0 'Zähler auf 0
Portb.0 = 1 'Relais on
Schaltzahl = Schaltzahl + 1 'Anzahl Einschaltvorgänge


Do 'Warten auf ausschalten

A = A + 1 'Sammle Betriebszeit
Wait 1

Loop Until Pinb.4 = 1 'gehe weiter wenn PIN.B4=1


Schaltzahl_eram = Schaltzahl 'Einschaltvorgänge speichern
Deltazeit = Deltazeit + A 'Anzahl Betriebsstunden
Deltazeit_eram = Deltazeit 'Betriebsstunden speichern
Gesamtzeit = Gesamtzeit + A 'Gesamtzahl Betriebsstunden
Gesamtzeit_eram = Gesamtzeit 'Gesamtzahl speichern

If Deltazeit > 36000 Then '36000 entspricht 10 Stunden
Portb.2 = 0 'LED grün ist aus
Portb.1 = 1 'LED rot ist ein
End If


'Unterroutine Lüfter Nachlauf / Servicereset in dieser Zeit möglich ============


Nachlauf:


For A = 1 To 900 '~15 Minuten Nachlauf

Wait 1
If Pinb.4 = 0 Then Goto Begin 'Wenn im Nachlauf eingeschaltet wird
Debounce Pinb.3 , 0 , Service , Sub 'Reset nach Service

Next A

Portb.0 = 0 'Relais off

Do
Loop Until Pinb.4 = 0 'gehe weiter wenn PIN.B4=0

Goto Begin


'Unterroutine Servicereset =====================================================


Service:


Deltazeit = 0
Deltazeit_eram = Deltazeit 'Schreibe Wert 0 in Eeprom
Portb.1 = 0 'LED rot aus

For A = 1 To 20 'Led grün blinken
Waitms 500
Toggle Portb.2
Next A

Portb.2 = 1 'LED grün ein


Return


Elektronik-Labor  Bastelecke  Projekte  Notizen