Vägledning angående insprutskonvertering på budget

GVR4
3 juni 2014 · 94 Inlägg

Nä har man ingen/liten erfarenhet av programmering osv så blir det svårare att få luft under vingarna.
När man bygger ett eget EMS, säg bara för att köra i bänk, då gör man ensam samma sak som flera hundra personer gör på en OEM biltillverkare.
Givetvis kommer man bli expert på båda datorer, microprocessorer, och motorer. Man har inget val.

Till och med erfarna "chippare" skakar på huvudet inför såna här utmaningar. Svårt att överblicka allt som ingår.

Men om man gör rätt från början så får man mycket gratis och får en flygande start.
Det är trots allt absolut ingen skillnad på ett sprut för 15 hk och ett för 1500 hk. Sprutet har ingen aning om eller bryr sig om motorns storlek. Det är lite det som är charmen med att göra eget.

Är man villig att lägga tid och ork i sånt här kan man mappa alla bilar efter tag. Garanterat.
Ingen mer gissningslek på byta spridare, och större LMM, m.m.

Senast redigerat av GVR4 (3 juni 2014)

-Westerlund- Tokig maskinmekaniker
3 juni 2014 · 469 Inlägg

L_R skrev:
Gör allt vevvinkelbasserat. Och då menar jag allt. Då har du ett maffigt sprut.

Nu blev jag lite efter - Finns det nått annat sätt att göra det på än med vevvinkel? Man måste ju veta var kolven är i relation till TDC för att man ska kunna ställa in bränsle och gnista så att det ska bli till något. Och vad menar du med "Allt"? Är det mer som styrs av vevvinkeln än bränsle och gnista?

Men jo, så är planen. Vevvinkeln löses väl enklast genom att bulta ett triggerhjul på vevens remskiva och montera en sensor där det passar. Är det någon större skillnad på vilken sorts hjul man väljer? T.ex 36 vs 60 kugg? Antar att 60 kugg är 4 grader nogrannare, men är det något mer man bör veta?

L_R
3 juni 2014 · 184 Inlägg

Många beräkningar ligger man och kör på tidsbasis. T.ex folk skriver att de uppdaterar bränsle ett visst antal gånger per sekund. Lite grovt är det inte intressant så länge man inte ändrat lasten eller varvtalet.

men så klart måste man tajma tändnnig och insprut mot vevvinkel.

Men jag menar att jag man gör hela layouten vevvinkelbasserad.

Oavsett hur många tänder du kör så måste du räkna ut positionen. Du kan inte bara uppdatera vinkeln basserat på när tanden kommer. Då får du bara upplösning på 6grader på.

Så någon form av kurvpassning in i framtiden.

Senast redigerat av L_R (3 juni 2014)

GVR4
3 juni 2014 · 94 Inlägg

Det blir lätt att man tappar bort sig när man börjar förväxla tidsbas, med vinklar.
Om vi ser det krasst så är 360*/60 tänder = 4* precision.
Eftersom vi har 60 som tidbas, samt 60 tänder, då har vi ett förhållande på 1:1. Det är ganska optimalt.
Varvtalet kommer följa precisionen hand i hand. Ökar den ena, ökar den andra.
Varken lasten eller varvtalet ändrar sig på dessa korta tidsrymder så börja göra saker vinkelbaserat är helt overkill.
Dessutom skulle det käka upp all processorkraft.
Om vi hade nåt annat att ta hänsyn till som inte var relaterat till bränsle eller tändning så skulle vi ha sett vinkelbaserade system tidigare.

L_R, utveckla gärna ditt resonemang. Ett helt klart intressant område. smile

Senast redigerat av GVR4 (3 juni 2014)

L_R
3 juni 2014 · 184 Inlägg

Vore bara fruktansvärt vackert med vevvinkelstyrt.

Långsamma förlopp behöver man inte köra varje varv. Ökar man varvtalet kör man dem mer sällan sett i vevaxelgrader.

Snabbkollade lite i ATmegabladet, är lite ont i timers bara.

-Westerlund- Tokig maskinmekaniker
3 juni 2014 · 469 Inlägg

L_R skrev:
Många beräkningar ligger man och kör på tidsbasis. T.ex folk skriver att de uppdaterar bränsle ett visst antal gånger per sekund. Lite grovt är det inte intressant så länge man inte ändrat lasten eller varvtalet.

men så klart måste man tajma tändnnig och insprut mot vevvinkel.

Men jag menar att jag man gör hela layouten vevvinkelbasserad.

Oavsett hur många tänder du kör så måste du räkna ut positionen. Du kan inte bara uppdatera vinkeln basserat på när tanden kommer. Då får du bara upplösning på 6grader på.

Så någon form av kurvpassning in i framtiden.

Hänger fortfarande inte riktigt med, men jag tror du menar att utöver triggerhjulet så måste jag ha något som beräknar var mellan två kuggar veven befinner sig, och att den positionen ska beräknas baserat på tiden mellan två kuggar? Amirite? tongue

L_R
3 juni 2014 · 184 Inlägg

I sin enklaste form. Ja!

-Westerlund- Tokig maskinmekaniker
4 juni 2014 · 469 Inlägg

L_R skrev:
I sin enklaste form. Ja!

Kod:
volatile int toothCurrentCount = 0; //The current number of teeth (Onec sync has been achieved, this can never actually be 0
volatile unsigned long toothLastToothTime = 0; //The time (micros()) that the last tooth was registered
volatile unsigned long toothLastMinusOneToothTime = 0; //The time (micros()) that the tooth before the last tooth was registered
volatile unsigned long toothOneTime = 0; //The time (micros()) that tooth 1 last triggered
volatile unsigned long toothOneMinusOneTime = 0; //The 2nd to last time (micros()) that tooth 1 last triggered

Har grävt lite mer i firmwaren jag tänkte prova. Påstår inte att jag vet vad som pågår men utgående från den här koden jag hittade så ser det ju ut som att det finns åtmistone en plan för att beräkna var mellan två kuggar man befinner sig.

L_R
4 juni 2014 · 184 Inlägg

Det där är bara variabeldeklaration.

GVR4
4 juni 2014 · 94 Inlägg

Dom flesta ECU sedan 198x som har med insprutning att göra har redan vad som kallas för "prediction", dvs koden gissar på vart nästa kugg kommer.
Det ser man i alla OEM firmwares, samt i tex MegaSquirt.
Ingen idé att uppfinna hjulet igen.
Denna prediction triggas så fort man sett en puls på input pinnen och skapat ett interrupt. Detta värde jämförs sedan via nåt som kallas "output compare interrupt" som kollar hur mycket "tiden" skiljde och om ett insprut eller tändningsevent är "lagligt".

Så när man säger tex att ett 60-2 hjul har 6* precision så menar man rent fysiskt. I ECU koden mångdubblas detta såklart.

Ett litet exempel på en gammal Mitsubishi ECU (som kan jämföras med alla ECU oavsett tillverkare fram till 1997 ungefär):
CPU: 2 MHz. Denna skall hinna med allt förutom att köra koden, tex sköta in/utgångar, solenoider, Etc.
I koden:
Main loop vid variabel exekveringshastighet beroende på last, Dvs RPM, och andra externa interrupt. Ligger på ca min 20 Hz upp till 200 Hz, dvs långt under CPU speed.
Interrupt körs vid 800 Hz, dvs långt under CPU speed. Men ändå flera gånger snabbare än main loopen då vi inte vill bli fast i ett interrupt.
Sedan finns en watch dog som triggar en reset om main looper lastas så tungt att exekveringshastigheten understiger 20 Hz, Dvs en pinne på ECU tappar/ökar spänning så att hela ECU'n gör en reset. Detta går otroligt fort och oftast hinner man inte märka det.

Så slutsats; Det finns redan ett system i alla ECU som interpolerar mellan 2 tänder/pulser, oftast med en faktor av 100x av den fysika upplösningen på triggerhjulet.

Edit: Ursäkta alla stavfel, jag är så van vid att skriva om sånt här på Engelska endast.

Senast redigerat av GVR4 (4 juni 2014)

L_R
4 juni 2014 · 184 Inlägg

Ja självklart har alla system denna funktion, mer eller mindre avancerad.

Lättast är att kopiera något man tror fungera. Men Atmega128 har bara en 16bitars timer med cap/com. Men klart att det går att lösa. Blir nog rätt grötig isr dock. wink

Idag är det så billigt med processorkapacitet så för ett sådan här projekt kan man gott fläska på.

GVR4
4 juni 2014 · 94 Inlägg

Ja Atmega128 skall man väl ändå inte använda. Den används inte ens i dom svagaste Arduinos så den bör man undvika.

En singel 2560 för att köra allt, eller fler mindre i fall man vill separera tändning/bränsle/logger.
Med en 2560 behöver man inte det då det finns bra timers, samt 4 UARTs.

L_R
4 juni 2014 · 184 Inlägg

Det stod något om Arduino pro mini i något inlägg. Googlade och det stod Atmega128.

Med avssende på timers så räcker 2560 en bit. Man det är väl lika bra kliva på ARDUINO DUE. Nog mkt vunnet.

GVR4
5 juni 2014 · 94 Inlägg

Japp kör man som sagt på dom mindre så får man köra fler.

DUE'n är ett dåligt val på flera sätt, men det största är just att den kör på 3.3 volt i stället 5 volt på in/utgångar. Dom flesta givare som används för bilar är på 5 volt och då passar alla modeller utom dom nyaste perfekt.

När vi ändå tar steget uppåt i skalan så finns det möjlighet att "sampla" ännu kraftfullare enheter. Texas Instruments har ARM 32 bitar kort som är prisdumpade bara för att man skall kunna komma igång med rapid development. Deras lineup heter Tiva C-Series LaunchPad och är helt fenomenala. Dock är dom också på 3.3 volt och kräver level shifters på alla in/utgångar.

Jag har bla ett ARM32 kit som heter EK-TM4C123GXL liggande i org kartong i min låda. Inte mycket använd än. Har inte funnits behov för det. yikes
Det kostar 13 USD (Ca 91 SEK)direkt från TI. Det är sjukt billigt för en processor som rasar på i 80 MHz samt med USB host, dvs kunna koppla in USB minne att logga till, tangentbord, och mycket mer!


Så om man har lust att konvertera alla signaler från 5 volt till 3.3 volt är TI's prylar helt klart det lättaste valet. Och det billigaste.

L_R
5 juni 2014 · 184 Inlägg

Hehe, ja det är inte mkt pengar i sammanhanget.

-Westerlund- Tokig maskinmekaniker
5 juni 2014 · 469 Inlägg

Börjar bli lite spretigt det här så jag kör en liten sammanfatting på hur läget ser ut atm så att alla hänger med tongue

Jag har kontaktat killen bakom Speeduino (Firmwaren jag tänkt använda istället för att skriva egen kod), så just nu leker jag vänteleken. Har jag tur så får han meddelandet (Youtube har nämligen världens sämsta PM-system) och kan reda ut lite frågar jag har angåenden programvaran.

Så som jag har förstått det så ska Speeduino-koden fungera som en sorts tolk mellan Arduino och ett mappningsprogram vid namn Tuner Studio. På så sätt kan jag alltså använda Arduino för att ansluta sensorer, spridare, tändning m.m. och sen kan jag sköta alla mappar, inställningar osv i Tuner Studio. Jag skippar alltså det här med att skriva egen kod. Visst skulle det vara fränt att skryta med att ha skrivit egen kod men jag är ju trots allt bara mekaniker med lite programmeringserfarenhet och inte tvärt om så frågar är ju om det programmet skulle vara nått att skryta över smile

Har börjat pilla lite på nån sorts plan över hur jag ska göra, åtmistone tills jag vet mer, Speeduino får nya funktioner osv:

Jag skaffar mig ett Arduino Mega 2650 (Speeduino stöder endast Mega) och ett s.k "Shield-kort". Shielden fästs ovanpå Mega och sen ansluter man RPM, TPS, MAP, IAT, CLT, Lambdasensor, Spridare och tändning till shielden. Sen kopplar man upp sig till datorn och kör in Speeduino-koden på Mega, så är den elektriska biten klar. Sen återstår ju att smida ihop ett insug med spridarfästen och spjäll, lösa det här med triggerhjul, koppla bränslesystem m.m och sen borde det "bara" vara att smälla fast allting på motorn, veva igång och se om man får nånting mappat.

Största problemet just nu är väl att jag inte har nån shield, men jag håller tummarna på att skaparen antingen kan skaffa fram en eller att el-linjen på skolan kan tillverka en. Sen kanske ni också har märkt att shielden bara har två utgångar var för spridare och gnista, så jag blir tvungen att köra wasted spark på tändningen och batch- eller semisekventiell insprutning, men det borde nog duga ändå.

Så vad tror ni, ni som kan?

Bevis på att det faktiskt funkar:
https://www.youtube.com/watch?v=cLTlyO0wmvk

Presentation där killen bakom Speeduino berättar lite om konceptet:
https://www.youtube.com/watch?v=lcwrLTaYJ_o

Samlingssida med all kod och lite how-to för Speeduino:
https://github.com/noisymime/speeduino/wiki

GVR4
5 juni 2014 · 94 Inlägg

Skriv hellre till han direkt via epost adressen längst ner på GitHub sidan, än att skicka via YouTube.
Då vet du att han kommer se det snabbt.

Det är väldigt ambitöst att han har gjort det kopplat till TunerStudio. Det är ett väldigt bra tuning program för MegaSquirt.
MS och VEMS är förresten också baserat på samma sorts processor.


Du kommer lyckas kanonbra med ditt projekt. Och förhoppningsvis få blodad tand och kan blåsa liv i den Svenska ECU-byggar vågen. Den dog totalt när VEMS tog över MS marknaden.
Vilket är synd för VEMS är underlägset MS så det visslar om det.

Senast redigerat av GVR4 (5 juni 2014)

-Westerlund- Tokig maskinmekaniker
5 juni 2014 · 469 Inlägg

Ah! Kommer inte riktigt överens med GH, men nu hittade jag en kommentarsektion!

Jag blev också positivt överraskad av TS. Har alltid tyckt att MS varit lite "Meh" p.g.a. att MegaTune ser så deprimerande ut men TS var helt klart trevligare, så det är ju helt klart att föredra!

Jo men nä, kan nog redan nu säga att det här är inte mitt sista möte med sprut, planerar redan nästa projekt. Det är nämligen så att jag älskar hojar men hatar förgasare. Så nästa projekt blir förmodligen något på två hjul.

Big Al Dr. Turbo
5 juni 2014 · 459 Inlägg

GVR4 skrev:
Vilket är synd för VEMS är underlägset MS så det visslar om det.

Utveckla mera lät ovanligt intressant smile

Har nämligen sysslat lite med båda styrsystemen och själv ser jag inga fördelar alls på MS motför VEMS.

Ford Escort Cosworth "Sotsläckarn" (1992)
BMW 330 XI "Hexa C0115" (2000)
L_R
6 juni 2014 · 184 Inlägg

Själv ser jag inga fördelar med varken vems eller MS wink

Senast i forumet
Diskussionsforum
Projekt
Evenemang