ECU- styrning till en VW pumpdysediesel.

Berätta om dina pågående projekt.
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Klas-Kenny »

Min nolla är blå för att jag slår på syntax highlight i forumet, dropdownmenyn "Syntaxmarkera kod" och väljer C. :D
Janson1
Inlägg: 1338
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Janson1 »

Jag tror problemet ligger någonstans mellan dom två looparna. interruptloopen missar aldrig en puls (tand). Den räknar alltid upp en tand resp nollar. Den flaggar alltid av som oläst till main-loopen men mainloopen tappar kontakten lite sporadiskt?
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 14818
Blev medlem: 16 april 2006, 17:04:10

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av mrfrenzy »

Det är lugnt Janson, är redan på ingång.
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Klas-Kenny »

Provkörde koden lite.

Fick fram följande:

Kod: Markera allt

const unsigned int hogstavarv = 200;                                       // div konstanta värden
const unsigned int lagstavarv = 1000;


int inpin = 2;
int utpin = 10;
volatile unsigned long VEVTAND_langd;
volatile unsigned long VEVTAND_start;
unsigned long delvalue = 0;
volatile byte tand = 0;
unsigned long prev_langd;
float mduration;
volatile int caseRead;
int gas;
float bduration;
int battvolt;
int sprstartkorr;
float error;
float starttid;
void setup() 
{
 pinMode(inpin, INPUT);                                                 // satt inpin som ingång
 attachInterrupt(digitalPinToInterrupt(inpin), VEV_pulse, RISING);      // här blir inpin interruptstyrd
 pinMode(utpin, OUTPUT);                                                // satt utpin som utgång
 Serial.begin(250000);                                                  // initsierar serialprintfunktionen på 250000 b/sek
}

void loop() 
{
  if(caseRead == 1) {
    caseRead = 0;
     switch (tand)                                                          // här startar switch och case, tandräknaren stegar fram ett steg (case)
      {
       case 1:                                                              // Case 1: 

        delvalue = VEVTAND_langd;                                           // tandluckan läggs in som första delvärde
      //  gas = analogRead(A0)>>2;                                            // gaspot läses av här, skiftas två gånger (0-255)
       // bduration = map(gas, 0, 255, lagstavarv, hogstavarv);               // motorns börduration bestäms här (1000-100 uS)
        Serial.println(delvalue);                                                                  
       break;
       
       case 2:
        delvalue = VEVTAND_langd + delvalue;
        //battvolt = analogRead(A7);
        //sprstartkorr = map(battvolt, 150, 700, 200, 800);
        //sprstartkorr = constrain(sprstartkorr,150,400);
      //Serial.println(delvalue);
       break;
    
       case 3:
        delvalue = VEVTAND_langd + delvalue;
       
       break;
    
       case 4:

        delvalue = VEVTAND_langd + delvalue;
       
    
       break;
    
       case 5:

        delvalue = VEVTAND_langd + delvalue;
       
       break;
    
       case 6:

        delvalue = VEVTAND_langd + delvalue;
      
       break;
    
       case 7:

        delvalue = VEVTAND_langd + delvalue;
        //Serial.println(delvalue);
       
       break;
    
      case 8:

        mduration = VEVTAND_langd + delvalue;
        mduration = mduration/12;
       // Serial.println(mduration);
       
      break;
      
      case 16:
           error = (mduration / bduration)-1; 
        if (error <=0.)                       // om error under noll
         {
          error = 0.;                         // förblir error 0 för att ej få minusvärden
         }
         if(error >=6.)
         {
          error = 6.;
         }
         
         starttid = map(mduration, 2000, 200, 21., 17.);
         //starttid =constrain(starttid, 17,21);
         //Serial.println(mduration);
       
      break;
    
      
      }
  }
   

 //Serial.print(mduration);
 //Serial.print("  ");
 //Serial.println(starttid);
 
 }

 void VEV_pulse()                          // Den interruptstyrda delaen börjar här
 {
  long thisLength = micros();
  caseRead = 1;
  prev_langd = VEVTAND_langd;              // nuvarande vevtands längd läggs in som föregående vevtandslängd (döper om)
  
  VEVTAND_langd = thisLength-VEVTAND_start;  // Längden på nuvarande lucka hamnar i variabeln VEVTAND_langd
  VEVTAND_start = thisLength;                // Börja mätning av lucka
   tand++;                                 // tandräknaren räknar upp en tand
  // caseRead = 0;                           // en "flagga" sätts till 0 = oläst case
   //Serial.println(tand);
   if(VEVTAND_langd > prev_langd +150)     // OM nyaste vevtands längd är längre än föregåendes + 150
    {                                     // då är luckan hittad
    digitalWrite(utpin, HIGH);             // Då går utpin hög 
    tand = 1;                              // och tandräknaren resetas till 1 (början på tandräkningen)
    }
  if(VEVTAND_langd < prev_langd -150)      // OM nyaste vevtands längd är kortare än föregående -150
   {                                      // då är luckan slut
   digitalWrite(utpin, LOW);               // och utpin blir låg igen.
   }
  
 }
Vilket printar ett mycket stabilt värde på tand 1 med tandluckor från ~200us upp till väldigt långt.
Janson1
Inlägg: 1338
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Janson1 »

jadå, tand ett är inga problem, den kan bara bli ett tal då det är första läsningen, men andra tanden blir mer känslig för hur många gånger delvalue blir plussat... I mitt fall räknar den en gång (rätt) för det mesta men helt random kan den räkna 2 gånger sen en gång flera varv och så två gånger igen osv. Så prova gärna vidare...
edit: det ser ut som koden är lite omgjord? ser jag nu. Jag hoppas detta är medicinen! Nu har jag tyvärr ingen simulator jämte mig men jag tar en test i morgon. Men som sagt prova gärna case 2 med Serialen.
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Klas-Kenny »

Samma kod men där jag skriver ut delvalue i case 1,2,3,4, ger följande utskrift:

Kod: Markera allt

4848
2284
3136
3992
4844
2284
3136
3992
4844
2284
3136
3992
4844
2284
3136
3992
4848
2284
3136
3992
4848
2284
3136
3996
4848
2280
3132
3992
4844
2280
3132
3992
4844
2284
3136
3992
4844
2284
3136
3992
4844
2284
3136
3992
4848
2284
3136
3992
4848
2284
3136
3996
4848
2284
3136
3996
4848
2280
3136
3992
4844
2280
3132
3992
4844
2284
3136
3992
4844
2284
3136
3992
4844
2284
3136
3992
4848
2284
3136
3992
4848
2284
3136
3996
4848
2280
3132
3992
4844
2280
3132
3992
4844
2280
3132
3992
4844
2284
3136
3992
4844
2284
3136
3992
4844
2284
3136
3992
4848
2284
3136
3992
4848
2284
3136
3996
4848

Det får väl ses som ganska stabilt? :)

Edit: Kör inte med din simulator för att generera signal, utan tar från en funktionsgenerator... Så vet inte om siffrorna blir något du inte känner igen pga det. Vågformen jag testar med ser ut så här (lite skräpig i mätningen, den är fyrkantig egentligen):
Gul är signal till Arduinon, och blå är utsignal ifrån densamma.
DS1Z_QuickPrint6.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Janson1
Inlägg: 1338
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Janson1 »

Klas_Kenny: ja för tusan, fick tänka lite men du har en frekvensgenerator med en liten tandlucka? Och jag antar du lagt Serial.printen utanför case men i mainloop. Men det ser verkligen rätt ut! Tack!!
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Klas-Kenny »

Har arbiträr funktionsgenerator, så satte samman en enkel (valfri) vågform. Orkade dock inte lägga in riktigt alla tänderna. :P Men bör ju vara tillräckligt för att se att mätningen fungerar stabilt.
Janson1
Inlägg: 1338
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Janson1 »

Klas-Kenny: Nu är det testat och det fungerar alldeles utmärkt! Så tack än en gång, denna lösning hade jag nog inte kommit på i första hand... Nu så kan jag gå vidare i min interruptprogrammering!
Janson1
Inlägg: 1338
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Janson1 »

Jag har nu labbat med traktorn och den gamla vanliga ECU- filen och fått till insprutningstillfällena ganska bra nu. Vid startvarv upp till tomgångvarv ca 750 RPM börjar insprutningen på tand 19,5 vilket ger ca 15 grader BTDC (hmm konstigt, jag fick det till 9 grader förut men motorn går betydligt bättre med lite högre förtändning) Sen backar insprutningsbörjan allteftersom varvtalet ökar till 20 grader BTDC vid 4000 RPM men här tror jag ytterligare förtändning skulle göra gott. Mitt nuvarande program måste modifieras lite om det skall gå att backa tändläget ytterligare då jag har en variabel som justerar strömsättningen av spridarna med hänsyn till drivspänningen och den spökar lite vid tidiga tändlägen... Men nu går traktorn riktigt bra, jag har nu ställt maxvarvet till ca 3800 Rpm och detta ger en fart av ca 40 km/h. Traktorn går i princip lika fort uppför som nerför (den har samma maxvarv obelastad som belastad men går med lite övervarv nerför) och startar bra varm som kall. Jag har ett klingande ljud i förmodligen det svetsade dubbelmassahjulet? Det har inte ökat något på den timmen motorn har gott hittills. Just nu skall traktorn få Ljus och blinkers och även elfläkten skall kopplas in. Jag beställde en ny huv som jag väntar på och även två nya framlampor. Jag skaffade en 1,3 tums OLED-display med seriellt snitt som jag tänker operera in i Biltemas oljetrycksmätare, ja oljetrycksinredning får flytta ut och OLED:en flyttar in. Om jag lyckas med detta så behöver jag inte göra hål för någon display eller så utan kan använda original 52 mm hål i panelen, jag vill göra så lite åverkan som möjligt i traktorn.
Förra gången jag grejade med en seriell display var det ett helsike innan jag fick till det, jag hade för mig jag fick hämta en H-fil någonstan? Hur har ni andra löst detta? Jag har för mig att jag hittade en fil som man lätt kunde mjuvarustyra runt SDA-SCL från Ax +Ax till vilka lediga pinnar som helst. Känns detta igen?
En liten snutt från förra veckan vid provkörning...
Janson1
Inlägg: 1338
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Janson1 »

Den nya huven kom idag som byggsats, fick ihop den efter en del meck. Den passar sådär, men lite färg på så blir det nog bra...
20181205_193653.jpg
Nu har den bakljus och blinkers men framlamporna lyser med sin frånvaro, dom bör väl dyka upp snart nu?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Magnus_K »

:wave:

Vad bra det blir Janson1! Vilken resa. Och vilken traktor! :tumupp:
Verklig inspiration!
Janson1
Inlägg: 1338
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Janson1 »

Tackar! den längsta resan har varit motorstyrningen!! Alla kategorier... Att få till traktorn är väl mest "a walk in the park" Nej, inte riktigt men det mesta där beror bara på tid, fri-tid, det blir färdigt bara man håller på.
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1339
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av baron3d »

Det blir riktigt bra!
Janson1
Inlägg: 1338
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Janson1 »

Tackar baron3d!
Mrfrenzy: Hur går det med den andra arduinon och motorsim? Har du hunnit få nåt liv i prylarna?
Skriv svar