Svara på inlägget  Forumlista  ->  Våra race- och banåkarbilar
VW 1303 Nordstadt replika (a.k.a. Bubster) -14
672 besök idag (627254 totalt) << Föreg. ämne | Nästa ämne >>
<<Föreg  1, 2, 3 ... 31, 32, 33 ... 45, 46, 47  Nästa>>
   
oje
Göteborg



Här sen Apr 2005
Inlägg: 832


Trådstartare
Tipsa Facebook   Inlägg  19 Okt 2013 20:57     Citera

Äntligen fungerande mätare.
Det har tagit oäntligt med timmar, men skam den som ger sig.

Torrkörning hemma...

...och i garaget


Varvtal, hastighet och vattentemperatur kommer på CAN. Oljetryck och varningslampa fullt analogt och tankmätaren går från analog till digital till analog. Insugstemperatur visas på laddtrycksmätaren (20degC = 0.2bar). Oljenivågivaren är lite jobbigt då den kräver höga ström och en lite klurigare mätmetod, så den får vänta. Batterivarningslampan visar förutom låg batterispänning även låg kylvatten, låg bromsvätska och hög kylvattentemperatur. Senare skall den även varna för "check engine" och ABS problem. Inte illa för en gammal folka.

Allt körs via ett Arduino Mega board med CAN interface och enkla slutsteg till de flesta in- och utgångarna.
Jag lägger upp arduino programmet här. Mest för mig själv, men även för andra nerds. Programmet utvecklas hela tiden, men som det är nu fungerar det mesta.



// PC: Mega 2560 on COM3 (Bluetooth COM4 code:1234)

#include "mcp_can.h"
#include <SPI.h>
#include <stdio.h>
//noToneLib//#include <Tone.h>
//#define INT8U unsigned char

// Only necessairy if both revcounter and speedo are run by arduino
// OBS: both Tone.cpp and pins_arduino.h have been modified to get timer 3 and 4 exclusively for speedo and revcounter

// Output pin definitions
#define PIN_OILTEMP 11//11 usually 9, but changed due to timer problems   //oiltempmeter is used to show water temp
#define PIN_FUELLVL 12
#define PIN_VEHSPEED 10
//RevCntRemove//#define PIN_ENGSPEED 7
#define PIN_BOOST 8 //8=dummy, usually 11
#define PIN_OILLVL 13
#define PIN_FUELLVLLIGHT 44
#define PIN_BATTLIGHT 5
// Input pin definitions
#define PIN_SENS_BRKFLUIDLVL 30
#define PIN_SENS_FUELLVL 0 //analog
#define PIN_SENS_FUELLVLACT 43
#define PIN_SENS_OILLVL 7 //analog
#define PIN_SENS_OILLVLACT 41
#define PIN_SENS_AMBITEMPACT 42
// input for ambient temperature to be added
#define PIN_SENS_CLNTLVL 4 //analog; old binary pin 34
#define PIN_SENS_BATTVOLT 6 //analog

// Other definitions
#define FRQ_AT300 332  // calculate as pulses/km on speedo devided by 12. Example 4109/12 = 342.
#define odebug 0
#define startuptest 0
#define garagetest 0
#define kaliboillvl 0
#define fueloffset 0 //200-230 or 0
#define clntoilrpmthrs 4000
#define showbreakfluidlvl 1  // activate brake fluid level warning
#define invertclntlvlinput 0 // 0 for Porsche sender; 1 for VW sender
#define sendserialoutput 1  // suppress messages to serial port
#define STARTPAUSE 100  // only used during initialisation
#define STARTNUMSTEPS 20  // only used during initialisation

//NoInterrupt   unsigned char Flag_Recv = 0;
unsigned char len = 0;
unsigned char buf[8];
char str[20];
unsigned int msgID=0;
unsigned int VehSpeed=0;
int value=0;
int oldfuellvl=290;
//unsigned long fuellvlsum=0;
//int fuellvlcnt=0;
int oillvl_1 = 0;
int oillvl_memory[10] = {255,255,255,255,255,255,255,255,255,255};
int oillvl_index = 0;
int oillvl_sum = 2550;
int valueByte = 0;
int index = 0;
int index2 = 0;
int index_TimeFunc=0;
int time_30sTimeFunc = 0;
boolean alert_batt = false;
boolean alert_clnt = false;
boolean oillvl_active = false;
boolean inhibit_clnt = false;
boolean init_oillvl = true;
boolean show_clnttemp = true;
boolean canDebug = false;
boolean diagDebug = true;
boolean fuelDebug = false;
boolean oilDebug = false;
boolean pauseDebug = false;
unsigned long time_LastTimeFunc = 0;
unsigned long time_StartOfOilLvl = 0;
unsigned long time_LastVehSpd = 0;
unsigned long time_DiffLastVehSpd = 0;
unsigned long time_BattAlertStart = 0;
//unsigned long time_BattAlertEnd = 0;
int incomingByte = 0;

//noToneLib//Tone tone_VehSpeed;
//RevCntRemove//Tone tone_EngSpeed;

// ------------ initialisation ------------
void setup()
{
  //if (sendserialoutput==1){
  Serial.begin(9600);
  //}
 
  pinMode(PIN_FUELLVLLIGHT,OUTPUT);
  pinMode(PIN_BATTLIGHT,OUTPUT);
  pinMode(PIN_SENS_FUELLVLACT,OUTPUT);
  pinMode(PIN_SENS_OILLVLACT,OUTPUT);
 
  // PIN_SENS_FUELLVL  //analog
  // pinMode(PIN_SENS_CLNTLVL,INPUT); analog on pin 4, digital on 34
  pinMode(PIN_SENS_BRKFLUIDLVL,INPUT);

//noToneLib//  tone_VehSpeed.begin(PIN_VEHSPEED);
//RevCntRemove//  tone_EngSpeed.begin(PIN_ENGSPEED);

  if (startuptest)
  {
      digitalWrite(PIN_BATTLIGHT, HIGH);
      digitalWrite(PIN_FUELLVLLIGHT,HIGH);
 
      for (index=1;index<STARTNUMSTEPS;index++){
//noToneLib//        tone_VehSpeed.play(5+ index*312/STARTNUMSTEPS);
//RevCntRemove//        tone_EngSpeed.play(5+ index*270/STARTNUMSTEPS);
        analogWrite(PIN_OILTEMP, index*255/STARTNUMSTEPS);
        analogWrite(PIN_FUELLVL,120+ index*135/STARTNUMSTEPS);
        analogWrite(PIN_BOOST, 255-index*200/STARTNUMSTEPS);
        analogWrite(PIN_OILLVL, 255-index*200/STARTNUMSTEPS);
        delay (STARTPAUSE);
      }
 
      digitalWrite(PIN_BATTLIGHT, LOW);
      //analogWrite(PIN_BATTLIGHT, 1);
      digitalWrite(PIN_FUELLVLLIGHT,LOW);
 
      for (index=STARTNUMSTEPS;index>=1;index--){
//noToneLib//        tone_VehSpeed.play(5+ index*312/STARTNUMSTEPS);
//RevCntRemove//        tone_EngSpeed.play(5+ index*270/STARTNUMSTEPS);
        analogWrite(PIN_OILTEMP, index*255/STARTNUMSTEPS);
        analogWrite(PIN_FUELLVL,120+ index*135/STARTNUMSTEPS);
        analogWrite(PIN_BOOST, 255-index*200/STARTNUMSTEPS);
        analogWrite(PIN_OILLVL, 255-index*200/STARTNUMSTEPS);
        delay (STARTPAUSE);
      }
  }
  // Initialise all outputs
  //analogWrite(8, 100);
  analogWrite(PIN_OILTEMP, 1);
  analogWrite(PIN_FUELLVL, 1);
  analogWrite(PIN_BOOST, 254);
  analogWrite(PIN_OILLVL, 254);
  digitalWrite(PIN_BATTLIGHT, LOW);
  //analogWrite(PIN_BATTLIGHT, 1);
  digitalWrite(PIN_FUELLVLLIGHT,LOW);
  digitalWrite(PIN_SENS_OILLVLACT,LOW);
//noToneLib//  tone_VehSpeed.stop();
  noTone(PIN_VEHSPEED);
//RevCntRemove//  tone_EngSpeed.stop();
 
  // initial reading of fuel level for quick start
  digitalWrite(PIN_SENS_FUELLVLACT,HIGH);
  delay(1);
  oldfuellvl=analogRead(PIN_SENS_FUELLVL)+fueloffset; //0bit or 0V = full; 289bit or 1.41V =tom
  digitalWrite(PIN_SENS_FUELLVLACT,LOW);
  //if (sendserialoutput==1){
    Serial.print("Initial fuel level: ");
    Serial.println(oldfuellvl);
  //}

  // delay for CAN
  delay(500);

  // pre conditioning of oil level sensor
  time_StartOfOilLvl=millis();
  digitalWrite(PIN_SENS_OILLVLACT,HIGH);
  delay(1000+time_StartOfOilLvl-millis());
  digitalWrite(PIN_SENS_OILLVLACT,LOW);


  CAN.begin(CAN_500KBPS);
  //if(CAN.begin(CAN_500KBPS) ==CAN_OK) Serial.print("can init ok!!\r\n");
  //else Serial.print("Can init fail!!\r\n");
  //NoInterrupt   attachInterrupt(0, MCP2515_ISR, FALLING);  // interrupt indicates when message is available
  //CAN.init_Filt

}

//NoInterrupt   void MCP2515_ISR()
//NoInterrupt   {
     //NoInterrupt   Flag_Recv = 1;
//NoInterrupt   }

// ------------ main program ------------
void loop()
{

// Check for input from Serial port

// send data only when you receive data:
if (Serial.available() > 0) {
   // read the incoming byte:
   incomingByte = Serial.read();
   switch(incomingByte){
      case 99:  //c
         if (canDebug){
            Serial.println("Raw CAN dedug is off");
            canDebug = false;
         }else{
            Serial.println("Raw CAN dedug is on");
            canDebug = true;
            diagDebug = false;
            fuelDebug = false;
            oilDebug = false;
            Serial.println();
            Serial.println("MsgID : DataBytes");
         }
         pauseDebug=false;
      break;
      case 100:  //d
         if (diagDebug){
            Serial.println("Diagnostic output is off");
            diagDebug = false;
         }else{
            Serial.println("Diagnostic output is on");
            diagDebug = true;
         }
         pauseDebug=false;
      break;
      case 102:  //f
         if (fuelDebug){
            Serial.println("Raw fuel level debug is off");
            fuelDebug = false;
         }else{
            Serial.println("Raw fuel level debug is on");
            fuelDebug = true;
         }
         pauseDebug=false;
      break;
      case 111:  //o
         if (oilDebug){
            Serial.println("Oil level calibration debug is off");
            oilDebug = false;
         }else{
            Serial.println("Oil level calibration debug is on");
            oilDebug = true;
         }
         pauseDebug=false;
         break;
      default:
        {
         if (pauseDebug){
            pauseDebug=false;
         }else{
            Serial.println("Debug commands:");
            Serial.println();
            Serial.println("c: Toggle raw CAN debug");
            Serial.println("d: Toggle diagnostic output (default on)");
            Serial.println("f: Toggle raw fuel level debug");
            Serial.println("o: Toggle oil level calibration debug");
            Serial.println();
            Serial.println("Debug paused. Press any key to continue");
            pauseDebug = true;
         }
      }
   }
   // read CR and LF if sent. Empty buffer.
   if (Serial.available() > 0) {
      incomingByte = Serial.read();}
   if (Serial.available() > 0) {
      incomingByte = Serial.read();}
}




//NoInterrupt   if(Flag_Recv)    {
// if (CAN.checkReceive())   
   //NoInterrupt   Flag_Recv = 0;
   CAN.readMsgBuf(&len, buf);
   msgID=CAN.getCanId();

   if (canDebug && !pauseDebug)  // Print raw CAN messages if in debug mode
      {
      Serial.print(msgID);
      Serial.print(" : ");

      for (int i = 0; i < 8; i = i + 1)
         {
         Serial.print(buf[i], DEC);
         Serial.print(" ");
         }
      Serial.println();
      }
     


   // CAN functions are always executed   
   switch(msgID){
      case 416:  // ABS ID:1A0 vehSpd
         //Serial.println(buf[3]);
         VehSpeed= (buf[3]*256+buf[2]);
         VehSpeed=VehSpeed/200;
         //Serial.println(VehSpeed);

         valueByte = map(VehSpeed, 0, 300, 0, FRQ_AT300); // Valuebyte in this case is frequency
         time_DiffLastVehSpd=millis()-time_LastVehSpd;
         if (valueByte > 30){
              if (time_DiffLastVehSpd > 120){
                 tone(PIN_VEHSPEED,valueByte);
//noToneLib//            tone_VehSpeed.play(valueByte);  // normal operation
                 time_LastVehSpd=millis();
              }   
         }
         else
         {
           if (valueByte > 10){
              if (time_DiffLastVehSpd > 80){
                  //time100Hz = (valueByte*time_DiffLastVehSpd)/40;
                  tone(PIN_VEHSPEED,40,(valueByte*time_DiffLastVehSpd)/40);
                  time_LastVehSpd=millis();
              }
           }
           else 
           {
               noTone(PIN_VEHSPEED);
               time_LastVehSpd=millis();
           }
         }
//       Serial.print("Vehicle speed [km/h]: ");
//       Serial.println(value);
      break;
      case 640:  // Motor ID280 engspeed
         value=(buf[3]*256+buf[2])/4;
         valueByte=value/20;             // devided by 60 for rps and times 3 for 6cyl engines
         if (valueByte > 32){
//RevCntRemove//            tone_EngSpeed.play(valueByte);  // normal operation
         }
//         else
//         {
//            Serial.print("Engine speed [rpm]: ");
//            Serial.println(value);
//         }
       if (value > clntoilrpmthrs+50 && alert_clnt==false){ //&& show_clnttemp == true ){
         show_clnttemp = false;
       }
       else
       {
         if (value < clntoilrpmthrs-50){ // && show_clnttemp == false ){
            show_clnttemp = true;
         }
       }
      break;
      case 649:  // Motor ID289 coolant
         //value= (buf[1]*2)/3-40;
         value= (buf[1]*3)/4-47;
//       Serial.print("Coolant Temperature [degC]: ");
//       Serial.println(value);
         if (inhibit_clnt == false && show_clnttemp == true){
           valueByte = map(value, 40, 135, 0, 255); //
           valueByte = max(valueByte,0);
           analogWrite(PIN_OILTEMP, valueByte);
         }
         if (time_30sTimeFunc ==30)
            {
              if (diagDebug && !pauseDebug){
                Serial.print("Coolant Temperature [degC]: ");
                Serial.println(value);
              }
              time_30sTimeFunc++;
            }
         if (value >105)
            {alert_clnt=true;
              digitalWrite(PIN_BATTLIGHT, HIGH);
              //analogWrite(PIN_BATTLIGHT, 254);
              if (diagDebug && !pauseDebug){
                Serial.println("High coolant temperature !");
                Serial.print("Coolant Temperature [degC]: ");
                Serial.println(value);
              }
            }
         else
            {alert_clnt=false;}
      break;
      case 664:  // Motor  IAT
         value= (buf[1]*2)/3-40;
//same factor as coolant and oil temperatures?

         if (value > 20)
           {if (value > 40)
             {if (value > 60)
               {if (value >80)
                 {valueByte = map(value, 80, 100, 91, 82);}
                else
                 {valueByte = map(value, 60, 80, 104, 91);}
               }
              else
               {valueByte = map(value, 40, 60, 123, 104);}
             }
            else
             {valueByte = map(value, 20, 40, 156, 123);}
           }     
         else
           {valueByte = map(value, 0, 20, 220, 156);}
         
         analogWrite(PIN_BOOST, valueByte);
         if (time_30sTimeFunc == 10)
            {
              if (diagDebug && !pauseDebug){
                Serial.print("Intake air temperature [degC]: ");
                Serial.println(value);
              }
              time_30sTimeFunc++;
            }
      break;
      case 1248:  // Motor ID oil temperature
         //value= (buf[5]*2)/3-40;
         value= (buf[5]*3)/4-47;
         if (inhibit_clnt == false && show_clnttemp == false){
           valueByte = map(value, 60, 155, 0, 255); // oil temperature scale 20deg offset against coolant
           valueByte = max(valueByte,0);
           analogWrite(PIN_OILTEMP, valueByte);
         }
         if (time_30sTimeFunc == 20)
            {
              if (diagDebug && !pauseDebug){
                Serial.print("Oil Temperature [degC]: ");
                Serial.println(value);
              }
              time_30sTimeFunc++;
            }
      break;
      case 680:  // ABS ID2A8 ABS sensors
      break;
      case 1952:  // Motor unknown
      break;
//      default:
//            {
//            }
   }


if (oillvl_active == true && millis()-time_StartOfOilLvl>=1000)
{
  value=analogRead(PIN_SENS_OILLVL)-oillvl_1; //
  valueByte=map(value, 0, 80, 77, 255);
//  Serial.print("Oil Level Act: ");
//  Serial.println(valueByte);
  if (init_oillvl==true){
     for (index=0;index<=9;index++){
       oillvl_memory[index]=valueByte;
     }
     oillvl_sum=valueByte*10;
     init_oillvl=false;
  }
  oillvl_sum = oillvl_sum - oillvl_memory[oillvl_index] + valueByte;
  oillvl_memory[oillvl_index]=valueByte;
  if (oillvl_index < 9)
    {oillvl_index++;}
  else
    {oillvl_index = 0;}
  //oillvl_sum = oillvl_sum + valueByte;   // oillvl_memory[oillvl_index]; 
  valueByte = oillvl_sum/10;
//  Serial.print("Oil Level Average: ");
//  Serial.println(valueByte);
  analogWrite(PIN_OILLVL, valueByte); // full 77-87bit; empty 194-255bit
  digitalWrite(PIN_SENS_OILLVLACT,LOW);
  oillvl_active = false;
}



   // time based functions are executed every 100ms
   // every time based function is executed about once per second
   if (millis()-time_LastTimeFunc > 100)
      {
      index_TimeFunc++;
         switch(index_TimeFunc){   
            case 1: // fuel level
              digitalWrite(PIN_SENS_FUELLVLACT,HIGH);
           delay(1);
              value=analogRead(PIN_SENS_FUELLVL)+fueloffset; //0bit or 0V = full; 289bit or 1.41V =tom
              digitalWrite(PIN_SENS_FUELLVLACT,LOW);
             
               
                if (value > oldfuellvl && oldfuellvl<255){
                    oldfuellvl=oldfuellvl+1;
                }else{
                    if(value < oldfuellvl && oldfuellvl>0){
                       oldfuellvl=oldfuellvl-1;
                    }
                }
                //valueByte = map(oldfuellvl, 250, 15, 115, 255);
             if (oldfuellvl > 71)
               {if (oldfuellvl > 117)
                {if (oldfuellvl > 153)
                  {if (oldfuellvl >227)
                   {valueByte = map(oldfuellvl, 227, 250, 128, 110);}
                  else
                   {valueByte = map(oldfuellvl, 153, 227, 148, 128);}
                  }
                 else
                  {valueByte = map(oldfuellvl, 117, 153, 166, 148);}
                }
               else
                {valueByte = map(oldfuellvl, 71, 117, 200, 166);}
               }     
             else
               {valueByte = map(oldfuellvl, 15, 71, 255, 200);}
                valueByte = min(valueByte,255);
                analogWrite(PIN_FUELLVL, valueByte);  //revised 4/4 255bit; 3/4 200bit; 2/4 158bit; 1/4 140bit; empty 128bit                   //old 4/4 255bit; 3/4 200bit; 2/4 160bit; empty 131bit
                if (oldfuellvl > 212) {  // Warning below 10liters //(valueByte < 135) {
                      digitalWrite(PIN_FUELLVLLIGHT,HIGH);
                }else{
                      digitalWrite(PIN_FUELLVLLIGHT,LOW);
                }
            if (fuelDebug && !pauseDebug){
                    Serial.print("Fuel level (raw): ");
                    Serial.println(value);
            }
            break;
            case 2: // coolant level
      //        value=analogRead(PIN_SENS_CLNTLVL);
      //        Serial.println(value);
                value=analogRead(PIN_SENS_CLNTLVL);
              if (((value>900)&&(invertclntlvlinput==1)) || ((value<100)&&(invertclntlvlinput==0))) //high = not GND = open circuit
              {      analogWrite(PIN_OILTEMP, 254);     // shows water temperature
                     digitalWrite(PIN_BATTLIGHT, HIGH);  // active during 200ms
                     //analogWrite(PIN_BATTLIGHT, 254);
                     if (diagDebug && !pauseDebug)
                  {Serial.println("Low coolant level!");}
                     inhibit_clnt = true;
              }
            break;
            case 3: // battery voltage
                value=analogRead(PIN_SENS_BATTVOLT); //
            if (time_30sTimeFunc == 1 && diagDebug && !pauseDebug)
            {
               valueByte=73.5*value/4.8128;
               Serial.print("Battery voltage [mv]: ");
               Serial.println(valueByte);
            }
            if (value < 753) //   720 = 11V      740 = 11.3V        753 =11.5V
            // if 11V limit is not good enough time counters for activation and deactivation of lamp could be introduced.
               {
                 if (alert_batt==false){time_BattAlertStart=millis();}
                 if (millis()-time_BattAlertStart > 5000){     // wait until voltage is low for more than 5s
                    digitalWrite(PIN_BATTLIGHT, HIGH);}
                    //analogWrite(PIN_BATTLIGHT, 254);
                 alert_batt=true;
                 if (diagDebug && !pauseDebug){
                   Serial.println("Low battery voltage!");
                   valueByte=73.5*value/4.8128;
                   Serial.print("Battery voltage [mv]: ");
                   Serial.println(valueByte);
                 }
               }
            else
              {alert_batt=false;}
   
            break;
            case 4: // reset coolant alert
              inhibit_clnt = false;
              if (alert_batt ==false && alert_clnt ==false){
                  digitalWrite(PIN_BATTLIGHT, LOW);
                  //analogWrite(PIN_BATTLIGHT, 1);
              }
            break;
            case 5:
            // fuel once more ??
            break;
            case 6: // oil level
              if (time_30sTimeFunc == 5 || time_30sTimeFunc == 15 || time_30sTimeFunc == 25)
              {
                if (!oilDebug){  //delete this row for real SW
                time_StartOfOilLvl=millis();
                digitalWrite(PIN_SENS_OILLVLACT,HIGH);
                delay(2);
                oillvl_1=analogRead(PIN_SENS_OILLVL); //
                oillvl_active=true;
                }    //delete this row for real SW

                if (oilDebug && !pauseDebug)
                  {
                   Serial.println("oil level sensor data");
                    time_StartOfOilLvl=millis();
                   value=analogRead(PIN_SENS_OILLVL); //
//                   Serial.print("Oil Time ");
                   Serial.print(millis()-time_StartOfOilLvl);
                   Serial.print(", ");
//                   Serial.print("  Oil bit ");
                   Serial.println(value);
                   //oillvl_1=value;
//                   valueByte=73.5*value/4.8128;
//                   Serial.print("  Oil Volt ");
//                   Serial.print(valueByte);
//                   Serial.print("  Oil ohm ");
//                   Serial.println(valueByte/258);
//--            for(index2=10;index2>0;index2--) {     
                   digitalWrite(PIN_SENS_OILLVLACT,HIGH);
                   for (index=1;index<5000;index++){
//                      delay(2);
                      value=analogRead(PIN_SENS_OILLVL); //
//                      Serial.print("Oil Time ");
                      Serial.print(millis()-time_StartOfOilLvl);
//                      Serial.print("  Oil bit ");
                      Serial.print(", ");
                      Serial.println(value);
//                      valueByte=73.5*value/4.8128;
//                      Serial.print("  Oil Volt ");
//                      Serial.print(valueByte);
//                      Serial.print("  Oil ohm ");
//                      Serial.println(valueByte/258);
                      }
                   digitalWrite(PIN_SENS_OILLVLACT,LOW);
               delay(index2*1000);
                   delay(20000);
                time_StartOfOilLvl=millis();
                digitalWrite(PIN_SENS_OILLVLACT,HIGH);
                delay(2);
                oillvl_1=analogRead(PIN_SENS_OILLVL); //
//                oillvl_active=true;
                delay(1000);
            value=analogRead(PIN_SENS_OILLVL)-oillvl_1; //
                      Serial.print("Diff after 1000ms : ");
                      Serial.println(value);
            valueByte=map(value, 0, 80, 77, 255);
            analogWrite(PIN_OILLVL, valueByte); // full 77-87bit; empty 194-255bit
            digitalWrite(PIN_SENS_OILLVLACT,LOW);
            //oillvl_active = false;

//--         }
                   } // end of calibration logic
              }
                 
            break;
            case 7: // brake fluid level
              if (digitalRead(PIN_SENS_BRKFLUIDLVL)==LOW) //low = GND
              {     
                if (showbreakfluidlvl == 1){   
                     digitalWrite(PIN_BATTLIGHT, HIGH);  // active during 200ms
                                                   //analogWrite(PIN_BATTLIGHT, 254);
                }
                if (diagDebug && !pauseDebug){Serial.println("Low break fluid level!");}
              }
            break;
            case 8:
            break;
            case 9: // reset brake fluid level
              if (alert_batt ==false && alert_clnt ==false){
                  digitalWrite(PIN_BATTLIGHT, LOW);
                  //analogWrite(PIN_BATTLIGHT, 1);
              }
            break;
            case 10: // count up for 30s timer
              index_TimeFunc=0;
              time_30sTimeFunc++;
              if (time_30sTimeFunc >30){
                  time_30sTimeFunc=0;
              }

            break;
       }
   time_LastTimeFunc=millis();
   }
//   Serial.println(time_30sTimeFunc); //debugjux
}


_________________
Senast ändrad av oje, 07 Aug 2018 09:12, ändrad totalt 5 gånger
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Skicka e-post
marnoldsson




Här sen Okt 2007
Inlägg: 108



Tipsa Facebook   Inlägg  21 Okt 2013 13:03     Citera

så jädra fräckt. grym kärra!


_________________
Magnus Arnoldsson
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande
xl15
Staffanstorp



Här sen Maj 2006
Inlägg: 50



Tipsa Facebook   Inlägg  21 Okt 2013 14:35     Citera

Gött med lite Arduino! Hur löser du CAN-kommunikationen? Shield eller hemmabyggt?


_________________
Rikard Larsson
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande
oje
Göteborg



Här sen Apr 2005
Inlägg: 832


Trådstartare
Tipsa Facebook   Inlägg  21 Okt 2013 15:58     Citera

xl15 skrev:
Gött med lite Arduino! Hur löser du CAN-kommunikationen? Shield eller hemmabyggt?


Riktigt smidigt när man väl kommer igång.
Jag kör med SparkFuns CAN shield. Minns dock inte varifrån mcp-can bibliteket kommer.

Det är fortfarande lite problem med de FM styrda mätarna att de ibland dippar ner till noll, men det borde går att lösa med mjukvara.


_________________
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Skicka e-post
oje
Göteborg



Här sen Apr 2005
Inlägg: 832


Trådstartare
Tipsa Facebook   Inlägg  21 Okt 2013 21:03     Re: Citera

oje skrev:
Volkdent skrev:
Can you show a pic of your expansion tank/Oil fill/Bleed installation? Did you separate them all or did you re-use the stock one? I've got my steering situation worked out, I was able to comfortably get 1.75" toward centerline, I think you achieved a little more?

Jason


I used the expansion tank of a Volkswagen Golf mk4(?) and mounted it in the engine compartment. Oil filler is not solved yet, I just closed the tube that goes towards the back of the car.
Pictures follow when I am back home.


Did I say that ?
Well here is a picture. Better late than never. The system worked better with the hose from the front radiator disconnected (lower one in the T connector).
If I understand the Boxster coolant system right after bleeding both the bleeding hose from the radiators and the engine should be plugged (sounds swenglish?).
The oil dipstick is still in the original (Boxster) position.



_________________
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Skicka e-post
Micke Fredriksson
Umeå



Här sen Nov 2002
Inlägg: 2295



Tipsa Facebook   Inlägg  04 Nov 2013 14:54     Citera


STORARTAT arbete du gjort!! Detta är ju ett av rejsas absolut ballaste byggen!! Är själv sugen på ett nytt bygge i liknande koncept.... Men det får nog snällt vänta tills jag tröttnat på escorten....


_________________
Datsun 240z vq35de
Escort MK1 cosworth turbo -68
Escort MK1 16v turbo+kompressor -74
Mride C42 TURBO sportscar
Mride T42 TURBO trike.
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Skicka e-post Besök användarens hemsida
Sonett7
Landskrona, Skåne



Här sen Feb 2003
Inlägg: 2908



Tipsa Facebook   Inlägg  04 Nov 2013 16:00     Citera

Håller med Micke - det här är tufft på så många olika sätt! thumbs up thumbs up thumbs up thumbs up thumbs up


_________________
M a t s K l i n g l ö f

MGB GT 1967
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Besök användarens hemsida
arvidab
Bjuråker



Här sen Sep 2006
Inlägg: 108



Tipsa Facebook   Inlägg  10 Nov 2013 19:24     Citera

Följde detta i början, men sen glömde jag bort tråden.

Läste igenom allt som jag missat, och måste säga att du gjort ett fantastiskt arbete, Olaf! thumbs up
Synd att man missade årets Bugrun, då kanske jag skulle blivit påmind tidigare...


_________________
Arvid Bäcknert

Kobolt Runabout mk1
Porsche 944 1984 "EVO I"
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Besök användarens hemsida
oje
Göteborg



Här sen Apr 2005
Inlägg: 832


Trådstartare
Tipsa Facebook   Inlägg  13 Nov 2013 22:39     Citera

Micke, det där projektet ser jag fram emot. Följde din Escort-tråd från början till slut och är mäktig imponerad vad du lyckades bygga av en rosthög...

Tack Mats och Arvid. Kul att bilen uppskattas.
Det kommer fler BugRun och bilen blir bara bättre.

Nytt från garaget:

Kumho V70A, 215 fram och 235 bak.


Innertak (Corsa 4x4 style) och burstoppning.


_________________
Senast ändrad av oje, 13 Nov 2013 22:43, ändrad totalt 1 gång
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Skicka e-post
oje
Göteborg



Här sen Apr 2005
Inlägg: 832


Trådstartare
Tipsa Facebook   Inlägg  13 Nov 2013 22:41     5år Citera

Idag är det 5år sedan jag köpte en krockad Porsche Boxster på en sunkig skrot någonstans utanför Birmingham. Det var en konstig känsla när jag gick därifrån.
Nu, två dagar efter godkännd SFRO slutbesiktning känns det mycket bättre.

SFRO byggbesiktning
Ursprungskontroll
SFRO slutbesiktning
Bullerprov
Regbesikning

Två anmärkningar fick jag:
- för många lösa elkablar
- för dålig sikt i sidobakspeglarna

Dessutom fick jag en massa nyttiga tips på olika detaljlösningar.


_________________
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Skicka e-post
johanz
Göteborg



Här sen Dec 2002
Inlägg: 567



Tipsa Facebook   Inlägg  13 Nov 2013 22:46     Re: 5år Citera

oje skrev:
Idag är det 5år sedan jag köpte en krockad Porsche Boxster på en sunkig skrot någonstans utanför Birmingham. Det var en konstig känsla när jag gick därifrån.
Nu, två dagar efter godkännd SFRO slutbesiktning känns det mycket bättre.

SFRO byggbesiktning
Ursprungskontroll
SFRO slutbesiktning
Bullerprov
Regbesikning

Två anmärkningar fick jag:
- för många lösa elkablar
- för dålig sikt i sidobakspeglarna

Dessutom fick jag en massa nyttiga tips på olika detaljlösningar.



Supergrattis thumbs up thumbs up thumbs up

/Z


_________________
Johan Zackrisson

Lotus (Jotuz) Exige V10 GTR
M3 E30 V10 såld
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Skicka e-post
DJ
NL



Här sen Maj 2004
Inlägg: 8574



Tipsa Facebook   Inlägg  14 Nov 2013 11:29     Citera

Kul! thumbs up

Ska du uppgradera oljesumpen nu när du skaffat greppigare däck?


_________________

Porsche Boxster S
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Skicka e-post
Martin G
Stora Höga



Här sen Nov 2002
Inlägg: 1778



Tipsa Facebook   Inlägg  14 Nov 2013 12:11     Re: 5år Citera

oje skrev:
Idag är det 5år sedan jag köpte en krockad Porsche Boxster på en sunkig skrot någonstans utanför Birmingham. Det var en konstig känsla när jag gick därifrån.
Nu, två dagar efter godkännd SFRO slutbesiktning känns det mycket bättre.

SFRO byggbesiktning
Ursprungskontroll
SFRO slutbesiktning
Bullerprov
Regbesikning

Två anmärkningar fick jag:
- för många lösa elkablar
- för dålig sikt i sidobakspeglarna

Dessutom fick jag en massa nyttiga tips på olika detaljlösningar.


Grattis Olaf! thumbs up

Och eftersom du inte fick anmärkning på hjulen utgår jag från att däcken fick plats (?).


_________________
///Martin Gistell

Z3 2.8 Coupé -00 - Roadsport B 2012 / 2013 / 2014
M3E30 -90 - tredje i ordningen!
Passat GTS R-line -18 - personfraktare
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Skicka e-post
D5
Göteborg



Här sen Jul 2004
Inlägg: 212



Tipsa Facebook   Inlägg  14 Nov 2013 14:26     Citera

Bra jobbat! Och snart är det vår...


_________________
Jan-Erling Rydquist
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande
Fyrken
Göteborg



Här sen Nov 2005
Inlägg: 244



Tipsa Facebook   Inlägg  14 Nov 2013 17:51     Citera

Grymt Olafi!
Stort grattis och scheißebra jobbat!


_________________
Erik Fyrk
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Skicka e-post
Sonett7
Landskrona, Skåne



Här sen Feb 2003
Inlägg: 2908



Tipsa Facebook   Inlägg  14 Nov 2013 19:03     Citera

Grattis! Stanna upp ett tag och inse vad du snart är i hamn med. thumbs up


_________________
M a t s K l i n g l ö f

MGB GT 1967
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Besök användarens hemsida
Frallan2
Skåne



Här sen Sep 2006
Inlägg: 799



Tipsa Facebook   Inlägg  14 Nov 2013 21:06     Re: Citera

Sonett7 skrev:
Grattis! Stanna upp ett tag och inse vad du snart är i hamn med. thumbs up


Den kommentaren är guld värd.
Det bör vi alla göra, ofta.
Time out, Reflektera och inse väldigt mycket som vi missar annars.

Tack!


_________________
Fredrik Reichel
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande
And ersJepp sson
Lund



Här sen Feb 2003
Inlägg: 11117



Tipsa Facebook   Inlägg  14 Nov 2013 21:53     Re: Citera

Sonett7 skrev:
Grattis! Stanna upp ett tag och inse vad du snart är i hamn med. thumbs up


Nej, för helvete. Stanna inte upp, kör vidare utan att reflektera. Annars undrar du vad fasiken du håller på med och snart inser du varför din omgivning undviker dig.
Stanna upp och reflektera får man först göra när man är klar med allt.
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Besök användarens hemsida
Niklas Falk
Fixhult



Här sen Apr 2004
Inlägg: 14715



Tipsa Facebook   Inlägg  14 Nov 2013 22:19     Re: Citera

And ersJepp sson skrev:
Stanna upp och reflektera får man först göra när man är klar med allt.
I kistan då mao


_________________
Niklas Falk
www.MX5RacingClub.se www.SPVM.se www.SVKG.se
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande
oje
Göteborg



Här sen Apr 2005
Inlägg: 832


Trådstartare
Tipsa Facebook   Inlägg  15 Nov 2013 01:01     Citera

Oj, nu börjar det blir filosofiskt.

Anders du behöver inte vara orolig - jag har precis varit i garaget i 5h. Och Niklas du har rätt, bilen kommer aldrig blir "klar".
Hur som helst är det nyttigt att titta tillbaka och påminna sig om vad man har åstakommit. Tråden här är guld värd när jag känner att det knappt går framåt. Bara att bläddra några sidor bakåt och plötsligt finns det hopp igen.
Sen finns det alla komentarer som motiverar och ibland inser jag hur stort projektet egentligen var/är.
Oftast tänker jag dock - precis som för 5 år sedan - "Hur svårt kan det vara att byta kaross?".

DJ skrev:
Ska du uppgradera oljesumpen nu när du skaffat greppigare däck?

Något kommer jag göra. Just nu lutar det åt ett X51 tråg. Hittade ett reservdelsnummer på 6speedonline och tråget finns hos Utzon för 2000:-
TT Gasman på 6speedonline.com skrev:
Here are the part numbers for the 3.4 motorsports kit, the kit is also part of the street ROW X51 option.
Pump: 996.107.980.00
Suction Pipe: 996.107.984.02
Oil Pan: 996.107.310.8R {stamped on pan} (This was very hard to find, eventually I found this under the X51 oil pan PN 996 107 243 40), yes it is the same part.
13 hex bolts 900 .378 .035.09
Där pratas det även om en extra pump i toppen, men till den här motorn nöjer jag mig nog med tråget.


Martin G skrev:
Och eftersom du inte fick anmärkning på hjulen utgår jag från att däcken fick plats (?).

Däcken sitter där, men om de tar i eller ej vet jag inte. Jag har inte kört bilen. Verkar dock OK. Besiktningsmannen klagade bara över dåligt grepp fram. Inte så konstigt när det är +5 ute. Hoppas bara att balansen blir bättre igen när däcken blir varma. Jag ser fram emot att testa själv nästa saison.


_________________
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Skicka e-post
arvidab
Bjuråker



Här sen Sep 2006
Inlägg: 108



Tipsa Facebook   Inlägg  15 Nov 2013 23:17     Citera

How hard can it be? Rätt filosofi! ;

Grymt grattis till godkänd slutbesiktning.


_________________
Arvid Bäcknert

Kobolt Runabout mk1
Porsche 944 1984 "EVO I"
Våra race- och banåkarbilar
Upp            Tillbaka
Visa användarens profil Skicka personligt meddelande Besök användarens hemsida
Svara på inlägget  Forumlista  ->  Våra race- och banåkarbilar
VW 1303 Nordstadt replika (a.k.a. Bubster) -14
672 besök idag (627254 totalt) << Föreg. ämne | Nästa ämne >>
<<Föreg  1, 2, 3 ... 31, 32, 33 ... 45, 46, 47  Nästa>>






Från request till första response:
sec (varav server render 0.191 sec)
Webbrowser render:
sec