Smart 450 CityCoupe mit Startknopf ausrüsten
Ja, ich habe es wieder getan. In meinem Smart steckt wieder ein Startknopf.
Doch diesmal habe ich mich gegen eine „analoge“ Variante entschieden und das Ganze mit einem Mikrocontroller verbunden. Hier seht Ihr den Prototyp:
In dem Taster ist auch ein LED-Ring (5V) – dieser zeigt die unterschiedlichen Funktionszustände an. Eine grobe Übersicht über meinen Aufbau habe ich hier mit Fritzing dargestellt:
Der Schaltplan sieht wie folgt aus:
Zu beachten ist hierbei, dass Taster und LED getrennt (also Symbolisch) vorhanden sind. Die Relais steuern die beiden Pole an, die ich hier beschreibe.
Den Quellcode für den Mikrocontroller gibt es auch noch:
const int zuendung_relay = 4; //Zündungs-Relay-PIN const int starten_relay = 5; //Start-Relay-PIN const int led_pwm = 6; //Taster-LED per PWM int count = 0; int scount = 0; const int taster = 7; boolean zuendung = false; //TRUE=EIN / FALSE=AUS boolean starten = false; //TRUE=Startet gerade / FALSE=wurde gestartet oder ist aus boolean gestartet = false; //TRUE=Motor läuft / FALSE=MOTOR AUS boolean ladespannung = false; //TRRUE=größergleich 13,5V / FALSE=unter 13,5V boolean halten = false; // boolean countreset = false; boolean startprozess = false; #include elapsedMillis tasterdruck = 0; elapsedMillis startwait = 0; elapsedMillis serialsend = 0; elapsedMillis blinker_standby = 0; elapsedMillis fader_starten = 0; elapsedMillis warten_befehl = 0; void setup() { pinMode(zuendung_relay, OUTPUT); pinMode(starten_relay, OUTPUT); pinMode(taster, INPUT_PULLUP); //WICHTIG Serial.begin(9600); } void loop() { //Taster-halten-Zeit messen if (digitalRead(taster)==LOW && halten==false) { tasterdruck=0; halten = true; } //Taster-halten zurücksetzen if (digitalRead(taster)==HIGH && halten==true && tasterdruck > 10) { //&& tasterdruck < 500 halten = false; tasterdruck=0; count = count + 1; } //Zähler Zurücksetzen & Schieben if (tasterdruck > 2000) { //zeit seit letzten tasterdruck > 2s if (count!=0) { //wenn da ist eine zahl... scount = count; //schieben & nullen } count = 0; //sonst 0 bleiben } //Zündung if ((scount==1 && zuendung==false)/* || (do_befehl1==true && zuendung==false)*/ ) { zuendung = true; Serial.println("Zuendung AN"); scount=0; do_befehl1=false; checksummeok=false; } //Zündung und Start if (scount==2 && zuendung == false) { zuendung = true; startwait = 0; startprozess = true; scount=0; Serial.println("Zuendung AN"); } if (scount==2 && zuendung == true) { startwait = 0; startprozess = true; scount=0; Serial.println("Zuendung AN"); } if (startwait > 1000 && startprozess < 2000 && startprozess == true) { starten = true; Serial.println("Starten AN"); } if (startwait > 2000 && startprozess == true) { startprozess = false; starten = false; Serial.println("Starten AUS"); } //Ausschalten if ((scount==3 && zuendung == true) /*|| (do_befehl3==true && zuendung == true)*/) { zuendung = false; Serial.println("Zuendung AUS"); scount=0; analogWrite(led_pwm, 0); do_befehl3=false; checksummeok=false; send_off=true; } /* RELAY-BEREICH */ //Zündungs-Relay-Einschalten if (zuendung==true) { digitalWrite(zuendung_relay, LOW); } //Zündungs-Relay-Ausschalten if (zuendung==false) { digitalWrite(zuendung_relay, HIGH); } //Start-Relay-Einschalten if (starten==true) { digitalWrite(starten_relay, LOW); } //Start-Relay-Ausschaten if (starten==false) { digitalWrite(starten_relay, HIGH); } /* DIAGNOSE-BEREICH */ if (serialsend > 1000) { Serial.print(count);Serial.print(" ");Serial.println(scount); serialsend = 0; } /* LED-BEREICH */ if (blinker_standby > 9800 && blinker_standby < 10000 && zuendung == false) { analogWrite(led_pwm, 10); } if (blinker_standby > 10000 && zuendung == false) { analogWrite(led_pwm, 0); blinker_standby = 0; } if (zuendung == true && starten == false) { analogWrite(led_pwm, 255); } if (starten == true) { for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) { analogWrite(led_pwm, fadeValue); delay(10); } for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=10) { analogWrite(led_pwm, fadeValue); delay(10); } } }
Und nun noch den Prototyp als Video:
Nun noch einen rechtlichen Hinweis:
Das hier vorgestellte hat, wenn es von euch gebaut wird, keine E-Nummer und ist nicht in der STVO zugelassen. Durch eine Einzelabnahme des TÜV könnt ihr dies ändern. Eventuelle Schänden oder getötete Kätzchen habt ihr zu verantworten, ich übernehme weder Garantie oder Haftung.