Lite vår fin bil.

Måste bli lite vårfin också så monterade kromlist i nederkant av dörrarna.
Och Vector fälgarna från förra bilen.
Det blir merochmer en Vector av denna Arc....


















Har ju även täppt till hålet mellan alla plast delar i främre delen av bakre hjulhusen
och redan ser man hur mycket skit som samlat där och som tur ar
inte gått vidare ner i tröskeln.
http://forum.saabturboclub.com/showthread.php/148204-Svetsa-hundben-p%C3%A5-OG9-5

Komfort blinkers eller 3-blink automatik

Slängde ihop ett litet Arduino program för att få funktionen med 3-blink så fort som man
kort blinkar åt ett håll. Version 2 lär dyka upp med bättre funktionalitet.
2 kablar för att koppla in höger och vänster blinkers (som jag antar styrs med 12-14 volt)

Med spännings delning så detekterar programmet om blinkern går hög och styr ut 12 volt
för att förlänga tiden så att 3 blinkningar sker (man kan ändra tiden så att den passar med andra antal)
Inga andra finesser det får komma i version 2.
Ny version med blinkers larm om man glömmer bort blinkersen och inaktiverar 3 blinkningar
om man blinkar kort åt andra hållet.

//---------------3-blink + blinkerslarm
int hBlink = 6;        //digigital Input Blinkers
int vBlink = 8;
int vBlinkON = 0;      // blinkers signal
int hBlinkON = 0;
int vBlinkHIGH = 0;      // Blinkers status
int hBlinkHIGH = 0;
int vBlinkPinOut = 13;    // utgång Blinkers
int hBlinkPinOut = 12;    // utgång Blinkers
int BlinkLarmPinOut = 11; //blink larmtuta
    long previousSekunder = 0;
    long BlinkTid = 4;  // tid för att ge 3 blink
    long LarmTid = 30;  // tid för att ge larm om man glömmer blinkersen på   
    long blinkTimer = 0;     //blinkers timer
    long LarmTimer = 0;  //larmtimern
int LarmHIGH = 0; // larmstatus  
    unsigned long currentSekund = millis();
  
void setup() {
Serial.begin(9600);
    previousSekunder = currentSekund ;   // 270 timern uppvärmningstid 30sek                
 //----------  Komfort blinkers
pinMode(vBlink, INPUT);    // Signal blinkers
pinMode(vBlinkPinOut, OUTPUT);    // utgång blinkers  
digitalWrite(vBlinkPinOut,LOW);
pinMode(hBlink, INPUT);   // Signal blinkers
pinMode(hBlinkPinOut, OUTPUT);    // utgång blinkers  
digitalWrite(hBlinkPinOut,LOW);  // bländar av helljuset
pinMode(BlinkLarmPinOut, OUTPUT);    // larm utgång   
digitalWrite(BlinkLarmPinOut,LOW);  //

}
void loop() {
 //----------  Komfort blinkers 
 unsigned long currentSekund = millis()/ 1000 ;  //unsigned long värde i sekunder

 //delay(200); // för att hinna läsa av värderna i serielport
 vBlinkON = digitalRead(vBlink);    // läser av Blinkers
 hBlinkON = digitalRead(hBlink); 
   Serial.print(vBlinkHIGH);Serial.print("   ");Serial.print(hBlinkHIGH);Serial.print(" LH ");Serial.println(LarmHIGH);        
   Serial.print(currentSekund);Serial.print(" B-timer ");Serial.println(blinkTimer);  
          // aktiverar högerblinkers
   if (hBlinkON == HIGH && hBlinkHIGH == LOW && vBlinkHIGH == LOW ) {   //
      digitalWrite(hBlinkPinOut,HIGH);  //aktiverar blinkers
      hBlinkHIGH = 1; blinkTimer = currentSekund + BlinkTid;
      }   // aktiverar vänsterblinkers
   if (vBlinkON == HIGH && vBlinkHIGH == LOW && hBlinkHIGH == LOW ) {   //
      digitalWrite(vBlinkPinOut,HIGH);  //aktiverar blinkers
      vBlinkHIGH = 1; blinkTimer = currentSekund + BlinkTid;
      }
      // inaktiverar högerblinkers om man blinkar åt vänster hållet
    if (vBlinkON == HIGH && hBlinkHIGH == HIGH ) {   //
      digitalWrite(hBlinkPinOut,LOW);  //inaktiverar blinkers
    }     // inaktiverar vänsterblinkers om man blinkar åt höger hållet
    if (hBlinkON == HIGH && vBlinkHIGH == HIGH ) {   //
       digitalWrite(vBlinkPinOut,LOW);  //inaktiverar blinkers
    }   
    delay(300); // för att hinna läsa av värderna i serielport
          // inaktiverar blinkers efter BlinkTid sek ca. 3 blink
if (hBlinkHIGH == HIGH && currentSekund >= blinkTimer || vBlinkHIGH == HIGH && currentSekund >= blinkTimer ){ // inaktiverar blinkers efter 3 sek
          digitalWrite(vBlinkPinOut,LOW);  vBlinkHIGH = 0 ;    //inaktiverar blinkersen
          digitalWrite(hBlinkPinOut,LOW);  hBlinkHIGH = 0 ;
          blinkTimer = currentSekund + BlinkTid;
         }
         // aktiverar blinkers larmet
   if (vBlinkON == HIGH && LarmHIGH == LOW || hBlinkON == HIGH && LarmHIGH == LOW ) {   
         LarmTimer = currentSekund; 
         LarmHIGH = 1 ;
       } // inaktiverar blinkers larmet
   if (vBlinkON == LOW && hBlinkON == LOW) {   //   
         LarmTimer = currentSekund ; 
         LarmHIGH = 0 ;
       }  // larmar om man glömmer blinkersen på
   if (vBlinkON == HIGH && currentSekund - LarmTimer >= LarmTid || hBlinkON == HIGH && currentSekund - LarmTimer >= LarmTid){ // larmar efter 10 sek
        if (LarmHIGH == HIGH){
           int var = 0;
           while (vBlinkON == HIGH && var < 3 || hBlinkON == HIGH && var < 3 ){   // antal gånger som den larmar (3)
                digitalWrite(BlinkLarmPinOut,HIGH);      //aktiverar
                  delay (800);
                digitalWrite(BlinkLarmPinOut,LOW);      //inaktiverar
                 delay (100); var++ ; LarmHIGH = 0 ; 
          }
          digitalWrite(vBlinkPinOut,LOW);     //inaktiverar blinkersen
          digitalWrite(hBlinkPinOut,LOW);
      }}
}  

Och här kommer programet:  (inget är provat i bilen, får vänta tills det blir vår.......så inga garantier)
//---------------3-blink
int vBlink = 7;  //digital Input Blinkers
int hBlink = 6;
int vBlinkON = 0;     
int hBlinkON = 0;
int vBlinkPinOut = 12;    // utgång Blinkers
int hBlinkPinOut = 13;    // utgång Blinkers
    int blinkTimer = 3000;  //delay för ca. 3 blink
   
void setup() {
Serial.begin(9600);
 //----------  3-blink
pinMode(vBlink, INPUT);    // vänster blinkers
pinMode(vBlinkPinOut, OUTPUT);    // vänster blinkers utgång  
digitalWrite(vBlinkPinOut,LOW);  // vänster blinkers
pinMode(hBlink, INPUT);    // höger blinkers
pinMode(hBlinkPinOut, OUTPUT);    // höger blinkers utgång  
digitalWrite(hBlinkPinOut,LOW);  // höger blinkers
}

void loop() {
 //----------  3-Blinkers funktion 
  delay(200); // för att hinna läsa av värderna i serielport
 vBlinkON = digitalRead(vBlink);    // läser av Blinkers
 hBlinkON = digitalRead(hBlink); 
   Serial.print(vBlinkON);Serial.print("   ");Serial.println(hBlinkON);        

   if (vBlinkON == HIGH && hBlinkON == LOW) {   // ...
      digitalWrite(vBlinkPinOut,HIGH);  //aktiverar blinkers
      delay (blinkTimer); //låter blinkersen vara aktiv under 1500 ms => ger ca. 3 blink ?
      digitalWrite(vBlinkPinOut,LOW);
      delay (100);
      }
  if (hBlinkON == HIGH && vBlinkON == LOW) {   // ...
      digitalWrite(hBlinkPinOut,HIGH);  //aktiverar blinkers
      delay (blinkTimer); //låter blinkersen vara aktiv under 1500 ms => ger ca. 3 blink ?
      digitalWrite(hBlinkPinOut,LOW); 
      delay (100);
      }
}        

Saab 9-5 ARC -06 Halvljus automatik.

Köpte ett par DRL lampor billigt på Tradera.
Nyttja dom kåporna som satt där dimljusen ska sitta och gjorde hål för DRLerna.
Modifierade kabeln som används för att göra "taxi" koppling den blå/vita (rosa för äldre modeller).
till att gå till ett relä som aktivterat, kopplar ihop kabeln och då tänder xenon halvljusen vid mörker.
Annars går signalen från ljusomkopplaren till stift 7 (BN/GY kabel) på den gröna dimljuskontakten som då
aktiverar dimljus reläet som jag fick montera i reläboxen i motorutrymmet.
(ändra 50k till 5-10k för stabilare relä styrning)
Allt för att slippa kabeldragning genom torpedväggen. Från dimljusreläet så kopplade jag in DRL lamporna.
Och så här ser DRLerna ut aktiva.
Och dom 2 ljussensorerna för styrningen gömde jag där mitthögtalaren satt.
Får se om jag hittar någon ny dold placering på dom...
Fick lite problem med automatiken när jag började använda den efter vinter.
Den började leva sitt eget liv och sedan tröttnad den helt.
Konstaterade att strömmen inte gick igenom ljusomkopplaren så det var bara att börja plocka isär den. Rengjorde kontakt ytorna på släpskorna och banorna och flyttade tillbaks kontakt fettet.
När jag ändå hade den isär så monterade jag en lysdiod för att bättre hålla koll på när halvljuset är aktiverat.

Saab 9-5 ARC -06 Baksätesvärme

Köpte in en sätesvärmare ifrån Biltema istället för att göra en själv som jag gjorde till 9000 Vector.
http://www.biltema.se/sv/Bil---MC/Bil-tillbehor/Styling/Bilkladsel/Varmesits-2000033358/
Delade den i 2 delar (finns en skarv i mitten) och som passade perfekt i sittdynorna.
Kontakt under sätet.













Kompletterad den delade sätesvärmaren med en termistor som extra övervak./kontroll.
Sedan måste något vara orginal så jag kostade på mig en orginal Heatknapp.Det enda orginal i detta bygget.
http://webshop.saabparts.com/900-9-3/esystem-9003/stolsvarme-reglage3
(fast man hittar den inte under 9-5 när man letar...)
Men den skarpögde ser att den inte är monterad på orginalplatsen.
Kopplade in reostat belysning och ström ifrån cigg.uttaget + reläet för baksätesvärmen.
(ändra 50k till 5-10k för stabilare relä styrning)
 











Arduino kortet placerade jag framme vid ACC panelen (de ska kopplas in mer på det kortet)
Och den värmer i 30 min vid aktivering och avbryter när den blivit varm och värmer om den kallnar
under dom 30min. Som det nu är kopplat så slocknar indikerings lampan när den temp.reglerar men
men det kan man stå ut med.....


Arduinomjukvara Baksätesvärme och Halvljus automatik.


// Halvljus automatik tänder halvljuset vid mörker + Baksätesvärme 30 min.+ tempreglering på baksätesvärmen
// (AQS recirk vid dåligluft)
//
//---------- Halvljus automatik
int frontlightPin = A3; // ljussensor analogingång
int reflightPin = A4; // refljus sensor analogingången
int headlightPin = 4; // utgång halvljus på vid mörker
int headlightPinJord = 5; //
const int numReadings = 30; // 240 antal värden för medelvärdesbildningen Fördröjning innan omslag. old 120
int readings[numReadings]; // the readings from the analog input
int index = 0; // the index of the current reading
int total = 0; // the running total
int lightsensorValue = 0; // variable to store ljussensorn värdet
int refValue = 0; // variable to store ref.sensor value
int lightOn = LOW ; // blir HIGH när halvljuset är aktiverat
int dark = 400 ; // 500 mörker värde (800=mörkare)
int sensorFront = 0; // front sensor value start
int sensorRef = 0; // ref sensor value start
//---------------Baksätesvärme
int temp1 = A0; //tempsensor ingångarna
int temp2 = A1;
int t1 = 0; // tempvärdena
int t2 = 0;
int bHeat = 0; // Baksätesvärme på
int bHeatButtonPin = 2; //6 baksätes knapp ingången
int bHeatPinOut = 3; //7 utgång baksätesvärme
int bHeatButton = 0; // om knappen är aktiverad
int bHeatstate = 0; // Status på baksätesvärmaren
long previousSekunder = 0;
long HeatMinutes = 0;
long HeatTimer = 0; // uppdaterings tid för max värdet (5 min = 300000 millisek = 300 sek 300/60= 5 min)
unsigned long currentSekund = millis();

void setup() {
Serial.begin(9600);
// -------Halvljus automatik
pinMode(headlightPin, OUTPUT); // halvljus utgång ON/OFF
digitalWrite(headlightPin,LOW);
pinMode(headlightPinJord, OUTPUT);
digitalWrite(headlightPinJord,LOW);

for (int thisReading = 0; thisReading < numReadings; thisReading++) readings[thisReading] = 0; //---------- Baksätesvärme previousSekunder = currentSekund ; // 270 timern uppvärmningstid 30sek pinMode(bHeatButtonPin, INPUT_PULLUP); // avbländnings ljusrelä pinMode(bHeatPinOut, OUTPUT); // halvljus utgång ON/OFF digitalWrite(bHeatPinOut,LOW); // bländar av helljuset } void loop() { //---------- HALVLJUS AUTOMATIK lightsensorValue = analogRead(frontlightPin); //refValue = analogRead(lightsensorValue); // if (lightsensorValue > dark) { // om sensorn visar mörker så kontrollleras ref.ljus sensorn
delay (100); // fördröjning innan ref.sensorn kontrolleras
for (int index=0; index < numReadings ; index++) { total= total - readings[index]; // subtract the last reading: readings[index] = analogRead(reflightPin); // add the reading to the total: delay(40); //30 delay in between reads for stability total= total + readings[index]; // advance to the next position in the array: } if (index >= numReadings) { // if we're at the end of the array...
index = 0; // ...wrap around to the beginning:
}
refValue = total / numReadings; // calculate the average:
//}// delay(10); // delay in between reads for stability
if (refValue > dark && lightsensorValue > dark) //bekräftar att ref.ljusensor värdet indikerar mörker
{
digitalWrite(headlightPin,HIGH); // tänder halvljuset
delay(50);
lightOn = 1;
}
if (refValue <= (dark-50) && lightsensorValue <= (dark-50)) // släcker halvljuset -100 är hystresvärdet { digitalWrite(headlightPin,LOW); delay(50); lightOn = 0; } Serial.print(refValue);Serial.print(" light ");Serial.println(lightsensorValue); //---------- Baksätesvärme //delay(200); // för att hinna läsa av värderna i serielport t1 = analogRead(temp1); // läser av tempsensorerna t2 = analogRead(temp2); // Serial.print(t1);Serial.print(" heat ");Serial.println(t2); if (t1 < 100 || t2 < 100) { // stänger av om något säte blir för varmt (470 normal 200 värme) digitalWrite(bHeatPinOut,LOW); //inaktiverar värmen } if (t1 > 200 && t2 > 200 && bHeat == HIGH) { // ...om säterna har kallnat så värmer den igen
digitalWrite(bHeatPinOut,HIGH); // aktiverar värmen igen
}
bHeatButton = digitalRead(bHeatButtonPin); //läser av värmeknappen
if (bHeatButton == LOW && bHeat == LOW){ //aktivering av baksätesvärme knappen
digitalWrite(bHeatPinOut,HIGH); //aktiverar värmen
bHeat = HIGH ;
HeatTimer = HeatMinutes ; // nollar timern
delay(1000); // fördröjning så att man hinner släppa knappen
}
bHeatButton = digitalRead(bHeatButtonPin); //läser av värmeknappen
if (bHeatButton == LOW && bHeat == HIGH){ //inaktivering av baksätesvärme knappen
digitalWrite(bHeatPinOut,LOW); //inaktiverar värmen
bHeat = LOW;
delay(1000); // fördröjning så att man hinner släppa knappen
}
unsigned long currentSekund = millis()/ 1000 ; //unsigned long värde i sekunder
HeatMinutes = currentSekund/60 ; // omräkning till minuter
if (HeatMinutes - HeatTimer >= 30 && bHeat == HIGH){ // inaktiverar efter 30 min
digitalWrite(bHeatPinOut,LOW); //inaktiverar baksätesvärme när timern är uppnått 20 min
bHeat = LOW;
}
}

Saab 9-5 ARC -06


Ny bil och nya projekt(eller samma i ny bil).
In med JVC stereon med rattstyrning och in med surfplattan.
Inkoppling av stereon så behövdes dessa kablage.
Antenn adapter.
ISO-kablage för lågnivå.
Plastram för montering av Surfplattan.
Inkoppling av ISO-kablaget fick jag hjälp av via denna sidan.
Double DIN Audio & Backup Cam Install - Saab 9-5 2006+
Tändning PÅ kan man ta ifrån Cigg. uttaget men jag gjorde det lite mer komplicerat och tog ström från en
Stereo säkring som aktiverades när tändningen är påslagen, säkring 21.
På den 14pin kontakten så kopplade jag in AntEnable pin12 och RemoteEnable pin 6 till stereons Remote UT (blå/vit)
För att aktivera förstärkaren och antenn förstärkaren när stereon startas. Kopplar man in "tändning på" får man
bara missljud när stereon inte används.
För rattstyrningen tog jag bort rattkåpan och kopplade in mig på rattstyrnings kabeln.
Här skulle man kopplat in sig på rattstyrningens jord också och för jag fick problem med att när man slagit av tändningen så ville den ändra på språk och enhet. SIDen trodde att man tryckte på "i set" knappen.
Men jag gjorde så att vid Arduino kortet satte jag ett relä som kopplade bort ingången från rattstyrningen
när tändingen slagits av.
Och mjukvaru ändringen som behövdes vara nya nivåer från rattstyrningen.

#define NO_B 922 //4,5v nothing pressed
#define MODE_B 662 //3,3v NXT(mode)
#define NXTD_B 580 //2,9v NEXT DOWN
#define NXTU_B 495 //2,5v NEXT UP
#define MUTE_B 410 //2,1v SRC (mute)
#define VOLU_B 328 //1,7v VOLUME UP+
#define VOLD_B 250 //1,3v VOLUME DOWN-
#define HORN 020 //TUTAN(som inte behövs) 0,0 volt

Har också lagt in och kopplat en summer som indikerar enkel-, dubbel- och långtryck.
Annars trycker man lite i blindo.
if (switchStatus == 0) {   //no button press
} else if (switchStatus == 1) { // single press
  tone(sumPin, ton , 50);  // kort pip vid kort tryck
tone(sumPin, ton , 50); delay(200); tone(sumPin, ton , 50); // pip ljud vid dubbeltryck
och   tone(sumPin, ton , 250);  // långt pip vid långt tryck.
(ton = 2093)

Byte av ratt till en Vector ratt som är snyggare än både Aero och Std. ratten.
För att få loss krockudden så underlättar det med en krökt skruvmejsel annars blir det svårt att
komma åt spärrarna på baksidan.
Sedan blev det ett prov med större Surfplatta (man börjar få dålig syn he, he,)
Men frågan är om jag nöjer mig med den lilla Surfplattan.
(eller så får man leta efter en modernare 8-9"are)





Saab 9-5 Vector -05


Tänkte lägga upp lite uppgraderingar på 9-5an. Den har redan blivit Maptunad med ett Steg 1 BioPower program. Man måste ha lite extra krut (och så kör man miljövänligt...).
Sedan åkte Stereon ut och min gamla Alpine från 9000 monterades in dold med bara rattstyrningen och en framdragen USB uttag som extern koppling. 
Tog en blindknapp vid ratten och kom på att den kanske skulle passa nere vid stolvärmen istället.
Men döm om min förvåning när blindknappen där inte har samma storlek !! Här undrar man hur Saab tänkte, kul att göra flera pressverktyg eller...
Det blev en hembyggd Hög till Lågnivå kabel också. 2st. 680 ohm 1 Watts motstånd och ett 56 ohms 1/2 Watts per kanal.
Sedan lyckades man bland hane och hon kontakterna så det var bara att löda om (man hade ju 50% chans att gissa rätt)

Surfplattan passa som en smeck. Hål för laddkabel och ett smalt band för styra Standby knappen.
Nu börjar man känna sig hemma...
Byggt vidare på rattbelysningen jag gjort till 9000.
http://saab9000vector.blogspot.se/2014/02/rattknappsbelysning.html
Det jag gjorde mer var att Dremla hål i symbolerna +,- och pilarna.
Här får man inte dremla med en borr för den vobblar för mycket.(man lär sig på misstagen)
För den som har laserskärare eller nått liknande så underlättar det en massa.
Fyller "hålrummet" sedan med "matt" smältlim eller som jag stearin och därefter
klar lackade jag ett par gånger.