



Hallo Bstelkwast, ich hau mal hier rein. Letzten Winter hab ich mir auch einen Öler gebaut. Erst hatte ich auch Überlegungen Richtung GPS . Da kann man noch eine "Speedlimit LED Blitz " mit einprogrammieren . Errechnest du die Strecke anhand der Entfernung oder aus Zeit und Geschwindigkeit ?
Mit der Mindestgeschwindigkeit ist ein Ansatz. Ich mache immer einen Tropfen beim einschalten, sonst zählt es bei mehrfach Kurzstrecke die km nicht zusammen und es kommt kein Öl.
Die Webasto Pumpen und deren Nachbauten sind OK war mir aber zu groß . Meine Wahl ging auf eine Mischölpumpe vom 50er Roller die ist deutlich kleiner . https://dellorto-shop.de/zubeh…o-elektrisch-ple-8?c=1605 Dellorto leider auch teurer, aber ich hatte noch eine gebrauchte da.
Realisiert hab ich das dann minimalistich mit einem Atiny 84 für unter 5€ , direkt USB Programmierbar, Reedkontakt, Tastermit LED, FET .
Die Spannungsversorgung hab ich zwar über den originalen freien Sicherungssteckplatz realisiert . Aber wer es einfach mag nimmt die Spannung vom Rücklicht.
Der öler zählt bei mir einfach die Radumdrehungen . Man kann beim Start über die Anzahl der Blinks die Ölmenege einstellen. Einen Regensensor hab ich programmiert aber bisher nicht realisiert. Werde ich auch nicht mehr machen. Ich kann einfach per Tastendruck ölen , oder auch die Leitung entlüften. Das Öl gebe ich auf das Kettenblatt. Dazu habe ich von innen an der Schwinge die Schrauben benutzt und ein Blech angeschraubt das hält den Silikonschlauch und den Redkontakt. Der Reedkontakt ist ein Gewindestift und lässt sich über 2 Muttern im Abstand zum Kettenblatt justieren.
Hier als Arduino:
// Kettenöler www.f-dietsch.de //Arduino Attiny 84 //Stecker 1 12v
int a = 0;
int b = 0;
int c = 0;
int d = 3; // startwert Einstellung
int regen = LOW;
int led = 4;
int pumpe = 1;
int rad = 0; //temoräre kontrollled
int tast = 3;
int Taste = 0;
int TasteState;
int Sensorneu = LOW;
int Sensoralt = LOW;
int Zeitneu;
int Zeitalt;
int Impulszahler = 0;
unsigned long Pumpzeit = 0;
unsigned long Pumpzeitalt = 0;
unsigned long lastDebounceTime = 0;
//******************************************************************************************************************
void setup() {
pinMode(0, INPUT); ///Regen Stecker 2
pinMode(1, OUTPUT);//P1 Pumpe Stecker 6
pinMode(2, INPUT_PULLUP);// P2 Impulseingang Radsensor Stecker 4
pinMode(3, INPUT_PULLUP);// P3 Taster Stecker 5
pinMode(4, OUTPUT);// P4 LED Stecker 3
b = d;
//hierkönnte das eprom gelesen werden d
for (int a = 1; a <= 5; a++) {
Taste = digitalRead(tast);
TasteState = Taste;
if (Taste == LOW) {
if (a > 5) {
a = 1;
}
for (int b = 1; b <= a; b++ ) {
digitalWrite(led, HIGH);
delay(300);
digitalWrite(led, LOW);
delay(300); d = b; //ab hier entspricht d dem ausgewählten Mode
}
delay (1000);
}
}
//Modeanzeige durch anzahl der Blinks
for (int b = 1; b <= d; b++ ) {
digitalWrite(led, HIGH);
delay(300);
digitalWrite(led, LOW);
delay(300);
}
delay(1000); ///pause um LED zu unterscheiden
Pumpen();// kurzstrecke je start kommt ein Tropfen
Pumpzeitalt = millis();
lastDebounceTime = millis();
Sensoralt = digitalRead(2);
}
//****************************************************************************************************************
void loop() {
Sensorneu = digitalRead(2);
if (Sensorneu != Sensoralt && Sensorneu == LOW){
digitalWrite(led, HIGH);
Impulszahler++;
regen = digitalRead(0);
if (regen != HIGH ) {
Impulszahler++;//bei Regen wird doppelt gezählt und so der oelintervall verkuertzt
}
if (Impulszahler >= d * 1000) {
Pumpen();
//d*1000 für 1000 umdrehungen eintragen
//1027 umdrehungen für 2km bei Radumfang 1,95m
// Mode 1 ölen nach 2 km 1000 umdrehungen
// Mode 5 ölen nach 10 km 5000 Umdrehungen
}
}
Sensoralt = Sensorneu;delay(20);
if (Sensorneu == Sensoralt ) {
digitalWrite(led, LOW);
}
//manuell Pumpen*************************************************************************************
Taste = (digitalRead(tast)); if (Taste == LOW) {
Pumpen();
}
//********************************************************//Notlaufzeit einstellen
if ((millis() - Pumpzeitalt) > 300000 ) {
Pumpen();//Püft ob über 5 min signale300000 gekommen sind sonst notoelen
}
}
//******************************************************************************************************************
void Pumpen() {
digitalWrite(led, HIGH);
for (c = 1; c <= 5; c++) {
digitalWrite(pumpe, HIGH);
delay(50);
digitalWrite(pumpe, LOW);
delay(50);
}
digitalWrite(led, LOW);
Impulszahler = 0;
Pumpzeitalt = millis(); //setzt die Notpumpzeit zurück
}
Alles anzeigen