Einfache Kompressor-Überwachung
von Hubert Freisinger , OE3FHA
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