ECU- styrning till en VW pumpdysediesel.

Berätta om dina pågående projekt.
Användarvisningsbild
KLset
Inlägg: 207
Blev medlem: 31 augusti 2014, 17:36:19
Ort: Uppsala

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av KLset »

Ja, nu ser jag att till och med att de "stora" case:n 15 och 45 är ju identiska till koden, men däremot diffar några kommentarer.

Om du skulle byta till if-statements istället för ett switch skulle du kunna ta bort många dubbletter:

Kod: Markera allt

   ...
} else if (tand == 15 || tand == 45) {
    ...
} else if (tand == 31) {
    ...
}
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Bosen »

Janson1 skrev:Vevaxelgivaren triggas in av kamaxelgivaren sen behövs inte den mera... Jag har försökt ta bort "dubblett" case men då blir det fel senare. Det finns säkert nåt bättre/smartare sätt att programmera på... Om man måste ta bort interupet under insprutningstiden, då försvinner väl hela interruptgrejen? Det är väl där man skulle ha det istället för död räkning.
Ja, jag sa eventuellt. Men behöver man hålla koll på kuggarna under insprutningstiden så kan man hålla igång ISR:en även då.
Normalt sett så behöver du ha en loop som bara kollar givardata och sen har du en insprutningsloop som körs igång vid rätt kugg. När insprutningstiden är klar så går man tillbaka till koll av olika givare.

Som du har programmerat nu så baserar du allt på vissa kuggar. Det vill säga att du läser av vissa givare på vissa kuggar (om jag förstår det rätt) men det känns inte som det är nödvändigt utan det bör man göra hela tiden när inte håller på med en insprutningssekvens.
Joe
Inlägg: 1646
Blev medlem: 3 mars 2006, 17:00:50
Ort: Södermanland

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Joe »

Interrupt för insprutningsstarten och sedan Timer interrupt för insprutningstiden. (Hur mycket kan motorvarvtalet ändras under insprutningsfasen)
Då är programmet ledigt att hålla räkningen och kolla givare även under insprutningen.
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Bosen »

En annan fråga jag ställer mig är om man måste hålla koll på alla kuggar. Räcker det inte med att hålla koll på 28 kuggar i taget. Första halvan av varvet är väl lik den andra halvan av varvet förutom vilken spridare som skall påverkas, men det ska väl egentligen kamgivaren ta hand om. Man borde ju ha interrupt på kamlägesgivaren också och bara hålla koll på vilken spridare som skall vara påverkad genom den. Det borde vara enklare än att ha koll på detta genom vevaxelgivaren.
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 »

Ang. kamaxelgivaren: som det är nu så behövs inte den givaren efter ca 125 motorvarv. Vitsen med det är om givaren går sönder/ger felvärden/hänger sig eller vad som så kan den inte fördärva motorgången. Från början hade jag bara 28 kuggar att hålla reda på men sen har först en analogread kommit till sen en till osv, nu har jag 8 st och då räcker inte tiden till bakom insprutnings"modulen" så därför delade jag upp i två halvor, samtidigt passade jag på att läsa av många mer tänder att räkna och dividera mot för att få ett exaktare medelvärde. Det skiljer sig lite mellan halvorna vilka tänder som läses av om man kollar noga... Nu senare så har jag tänkt att göra om även analogread i case så man läser ett par stycken per halvvarv och sen bara har ett halvvarv för alla uträkningar. En annan ide jag haft är att låta cykeln vara 720 grader, dvs två vevaxelvarv och fördela ut jobben på, kanske overkill för denna ganska långsamtgående diesel? Ni ska veta, det har varit mycket huvudbry innan jag fick till detta. Just i denna sketch så finns det två variabler (variabel1 och variabel2) som bara är till för att kunna testa ut rätt förtändning både på låga och höga varv via två potar och analogread. Så fort det är utrönt så blir det två konstanter längst upp i sketchen. och två andra variabler blir föremål för utvärdering/ändring. Från början körde jag med if-satser istället för case men nu ser jag bara fördelar med case, det blir dessutom mindre kod...
Användarvisningsbild
hawkan
Inlägg: 2585
Blev medlem: 14 augusti 2011, 10:27:40

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av hawkan »

Ta en titt på "ADC free running". Det är en teknik där processorn hela hela tiden ligger och gör ad-konvertering utan att ditt program belastas av det. Har du problem med att analogRead tar mycket tid kan detta helt klart vara något att titta på.
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 »

Ja, detta skall jag kolla in. Det kan ju förenkla mitt programmerande. Nu är det så här att jag har aldrig i mitt liv programmerat förut, det började den 27 oktober 2016 med att jag gav mig själv en present i form av ett Arduinokit för dumhuvuden. Och mitt mål var just en ECU-styrning till min numera från halvdöda dieselmotor till en fungerande diesel med utvecklingspotential. Jag har bara lärt mig grunden och knappt det så det tar lite extra tid om det tillkommer nåt nytt, man måste lära sig dels programmera nya och dels hitta/komma på nyttan och få till det bra dessutom. Det är några timmar på kammaren varje gång nåt nytt dyker upp... ADC free running blir nog nästa grej att kolla närmare på.
Tack för tipset!
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Bosen »

Just det du säger att sprida ut dina analogread på fler kuggar är ju något du egentligen ska slippa. Det är ju något du ska läsa av när inte processorn är upptagen.
Jag förstår hur du har tänkt med ditt program, och jag tänkte på samma sätt i början, men du låser in dig ganska mycket när du gör en steg-för-stegprogrammering som du har gjort, i min mening.
Men jag vill inte ifrågasätta hela ditt projekt. Jag tycker det är skitbra gjort det du har lyckats med och jag är inte heller speciellt erfaren när det gäller programmering.
janno
Inlägg: 403
Blev medlem: 11 oktober 2009, 07:34:45
Ort: Västerås

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av janno »

Om du har case satser som gör samma sak så rada bara upp dom efter varandra.

Kod: Markera allt

case 1:
case 2:
    ....
    ....
    break;
case 3:
case 45:
    ....
    ....
    break;
klamrarna behövs inte i case satsen om det inte är så att du vill ha eller behöver lokala variabler där.
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 »

Eftersom du är ute efter hög driftsäkerhet nämner jag detta:
Många motorer går att starta med trasig kanaxelgivare.

Hur det går till vet jag inte men om jag får gissa så kanske man provar sig fram att spruta in bränsle i cylinder 1 vid "tdc1" och se om det rör sig åt rätt håll annars prova med cylinder 2 istället efter ett varv.
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av Bosen »

Janson1 skrev:Ang. kamaxelgivaren: som det är nu så behövs inte den givaren efter ca 125 motorvarv. Vitsen med det är om givaren går sönder/ger felvärden/hänger sig eller vad som så kan den inte fördärva motorgången.
Jag bara tänker lite på hur det fungerar på min bensinmotor som sitter i min opel. Där läser den båda givarna hela tiden och jämför de mot varandra. Om kamlägesgivaren ger upp så beräknas allt på vevaxelgivaren och om vevaxelgivaren ger upp så beräknas faktiskt allt efter kamlägesgivaren, men då är den väldigt ”svårstartad” eftersom motorn måste gå flera varv innan den har beräknat rätt. Jag antar att den vill ha flera medelvärden innan den är säker på att det är rätt ställe.
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 »

janno: Jag har testat lite olika alternativ men inte lyckats, jag testar ditt förslag!
mrfrenzy: Jag har detta system i dag, teoretiskt var fjärde gång. Men praktiskt sett var femte-sjunde gång.
Bosen: jag har valt att ha två ECU:er med varsin vevaxelgivare istället.
Bosen igen: jag vet inte om detta är behövligt, än. Men blir jag tvungen att göra om analogread så den gör det "för sig själv" så kommer jag läsa på och försöka få till det.
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 »

Joe: från början var det tänkt att ECU:n skulle följa kuggarna slaviskt och via uträkning komma fram till att tex. insprutningsbörjan skall vara tand 16 och en halv. Där görs en markering i Micros och sedan så vid tex. 392 micros senare stänga av vilket tex skall motsvara tand 18,2 . Är det nu inte tand 18,2 beroende på olika fart på motorn vid komp, tändning mm så skulle det göras en korrigering och stänga på just 18,2 ändå. Detta kunde jag aldrig få till och nu i efterhand så tror jag inte det är nån bra lösning? Tanken var just att fortsätta hålla reda på tänderna vilket jag inte gör i dag efter tand (case) 15/45. Nu har det visat sig inte behövas så jag tror inte jag bygger nån ny grundsketch innan/om det visar sig att denna sketchlösning inte går att få till mera utav.
Användarvisningsbild
carpelux
Inlägg: 1865
Blev medlem: 13 oktober 2007, 12:33:33
Ort: Varnhem

Re: ECU- styrning till en VW pumpdysediesel.

Inlägg av carpelux »

Janson1 skrev:Jag är inne lite på att skaffa en ZERO eller en DUE, den har en annan processor, 32 bitar istället för 8 vad det nu innebär...
Den går i alla fall att programmera i Arduinomiljön som jag blivit van vid. Rent teoretiskt så borde jag kunna flytta över min ECU sketch till den och få lite respit på tiderna, jag är nu ganska nära max.
Efter en veckas sängliggande i influensa där bland annat denna tråd hart lättat upp är jag nu på bättringsvägen. För att minska tristessen lite testade jag att kompilera koden för en ESP32. Det är för övrigt en fantastiskt välkommenterad kod!

Det gick i stort sett utan några problem, det enda jag ändrade var att exkludera PureAtmega328.h samt ändra tillbaka pinAsInputPullUp, pinAsInput samt pinAsOutput till de vanliga varianterna med pinMode(). Läsningen av Variabel1 och Variabel2 har jag också kommenterat bort då pin A1 och A2 inte var definierade och jag inte orkade leta upp vad det skulle stå istället.

Det är säkert massor annat som måste tas hänsyn till, b.la. 3.3V vs 5V men det kan kanske vara kul att veta att det inte medför en massiv förändring av koden att gå från 8 till 32 bit och upp till 240MHz samt dual cores.

Så här ser resultatet av kompileringen ut:
Sketch uses 165585 bytes (12%) of program storage space. Maximum is 1310720 bytes.
Global variables use 11192 bytes (3%) of dynamic memory, leaving 283720 bytes for local variables. Maximum is 294912 bytes.
Kortet jag laddade upp det på är ett Wemos lolin32 ( https://wiki.wemos.cc/products:lolin32:lolin32 ). Otroligt prisvärt skulle jag vilja säga. Strax över 50:- på kinamarknaden. Det är så billigt att de extra 75:- + lite moms vi snart kommer att få betala knappt spelar någon roll :-)
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 för testet! ja detta låter ju väldigt bra... Jag har beställt nåt liknande för någon vecka sedan så det skall bli intressant att testa mot min syntetmotor och få till det mot min riktiga motor också. Nu tror jag i och för sig att jag kommer att klara mig med Atmegas kretsar både till ECU och kontrollern. Men det är alltid roligt att förnya/förbättra sig...
Skriv svar