William Sandqvist ECU, Engine Control Unit Idag styrs bilmotorerna av en ECU. Så här skulle en PIC-processor kunna användas som en ”mini-ecu”!
William Sandqvist Behovet av tändförställning När bränsle/luftblandningen antänds i kompressions- kammaren, börjar förbränningen vid tändstiftet och sprids därifrån vidare i bränsle/luftblandningen. Det tar en given tid för hela blandningen att brinna, expandera och därmed tvinga kolven ner i loppet. Därför måste man börja tändningsprocessen ( Z ) innan kolven når övre dödläge (ÖD). Det är detta som kallas för tändförställning.
William Sandqvist Behovet av tändförställning Om motorns varvtal ökar så får blandningen kortare tid på sig att brinna. Man behöver därför öka tändförställ- ningen med ökat varvtal. Bränsle/luftblandningens förbränningshastighet varierar med hur full cylindern är vid kompressionen. Vid litet gaspådrag och höga varvtal fylls cylindern mindre än vid stort "gaspådrag" och låga varvtal. Det behövs således också olika tändförställningar vid samma varvtal beroende på "gaspådrag/motormoment“. Z = f ( varvtal, motorbelastning )
William Sandqvist Den mekaniska lösningen Varvtal, centrifugalregulator. Brytarspetsar. Motorbelastning, vacuumregulator. Reglerområdet med mekaniska komponenter. Tändstift.
William Sandqvist Distributor recurve kit Förr kunde man ”pigga upp” motorn med nya vikter och nya fjädrar och en förändrad vacuumdosa …
William Sandqvist Den Mekatroniska lösningen Reglerområdet i dataminnet! Man kan till exempel välja mellan prestanda eller miljökrav …
William Sandqvist Givare för varvtal och vinkel Fordonsindustrin har hittat ett mycket billigt sätt att mäta motoraxelns varvtal och vinkelläge. En induktiv givare avger pulser när motorns startkuggkrans roterar, och en annan induktiv givare avger en puls per varv då ett "indexstift" passerar.
William Sandqvist Vinkelläge Antag att startkransen har 130 kuggar. För att grovt hålla reda på vinkelläget "räknar" man i princip de kuggar som passerar med en modulo-130-räknare. Timer0 är en åttabitarsräknare, dvs en räknare som "slår runt" vid talet 255 och då börjar om med talet 0. Timer0 kan räkna pulser på pinne T0CKI. Kugg-givaren ansluts till denna pinne. Man kan få ett avbrott (interrupt) i programkörningen var gång Timer0 "slår runt". Om man vid avbrotten passar på att direkt "ladda" Timer0 med talet 126 ( =126) blir räknecykeln förkortad till 130 steg, dvs vi får en modulo-130-räknare. Aktuell kugge kan man få reda på genom att läsa av Timer0 och dra ifrån talet 126.
William Sandqvist Referensläge vid start Antag att indexstiftet är placerat vid kugge nr "0". PIC-kretsarna har en yttre avbrottsingång INT. Indexpinnens givare ansluts till denna. Vid start av motorn "laddar" man Timer0 med talet 126 när index-pinnen passerar sin givare och genererar avbrott. Från denna stund håller Timer0 "reda på" kuggarna.
William Sandqvist Varvtalsmätningen Varvtalsmätningen går i princip till så att man mäter den tid det tar för kuggarna att passera Kugg-givaren. Rotationen sker inte med konstant varvtal utan "ryckigt", eftersom förbränningsmotorer är explosions- motorer så mätvärdet varierar från kugge till kugge. PIC-processorerna är utrustade med en eller flera så kallade CCP- enheter (CaptureComparePWM). Till varvtalsmätningen använder man Capture -mode. Kugg-givare.
William Sandqvist Varvtalsmätningen CCP-enheten är inställd på Capture, och använder Timer1. Timer1 är en 16-bitsräknare (2 8 bitar), den programmeras att räkna i takt med processorns klocka. CCP-enhetens ingångspinne ansluts till Kugg-givaren och programmeras att reagera på positiva pulsflanker. Vid varje kugge kommer då automatiskt Timer1 att "läsas av" ( = capture) och resultatet hamnar i CCP-enhetens register CCPRH och CCPRL. De två CCPR-registren kan hanteras som ett 16-bitarstal. Vid "Capture" anropas avbrottsrutinen ( interrupt ) och i denna kan tids- värdet i CCPR-registren lagras undan. I princip beräknas tiden mellan två kuggpassager som skillnaden mellan två tidsvärden, och varvtalet som det inverterade värdet av denna tid. ( Likheterna med frekvensmätningslaborationen är slående … )
William Sandqvist Givare för motorbelastningen Motorbelastningen mäts oftast med analoga givare. PIC-processorerna har AD-omvandlare som kan avläsa givarna. Gaspedalens läge kan mätas med en potentiometergivare. En tryckgivare kan mäta ”vacuumet” i insugningsröret. En varmtrådsanemo- meter kan mäta luft- mängden till motorn.
William Sandqvist Tändförställningstabellen Sambandet mellan tändpunktens förställning och varvtalet tillsammans med belastningen, är komplicerat och beskrivs bäst som en "karta" ( sk. mappad tändning ). Rent experimentellt kan man placera fordonet på en så kallad "rullande landsväg" och systematiskt ändra varvtal och belastning och för varje kombination "pröva fram" den bästa tändförställningen. Mätvärdena kan man samla i en Tändförställningstabell.
William Sandqvist Visualisera tabellen Observera att tabellens värden är "fejkade" och är endast avsedda som principexempel. 3-D plot med Matlab. (Klipp ut texten och prova den i Matlabs kommandofönster). Observera att tabellens värden är "fejkade“ och är endast avsedda som principexempel. ignadv = [ ]; surf(ignadv);
William Sandqvist Tabellen i PIC-processorn Så här kan tabellen programmeras som en funktion i PIC-processorn. När funktionen anropas med tex. ignitionmap(0,0) (rad 0 kolumn 0) returnerar den talet 30. /* speed 3 bits ; torque 3 bits */ char ignitionmap(char speed, char torque) { char index; index = speed*8 + torque; /* index for 64 table entries */ skip(index) return 30; return 40;... /* the next 60 table entries */... return 50; return 40; }
William Sandqvist Tändningen Med hjälp av Timer0 vet man motorns vinkel. När man närmar sig tänd- punkten mäter man tiden mellan passagen av två kuggar med den första CCP-enhetens Capture-funktion, och motorns belastning med hjälp av AD-omvandlaren. Genom att anropa tabell- funktionen så får man veta vilken tändförställning som är den rätta. För att utföra tänd- ningen vid rätt tidpunkt låter man PIC-processorns andra CCP- enhet vara inställd på Compare. När motorn nått den kugge som innehåller intervallet för tändningen, laddar man CCP-registren med ett tal, en tidsfördröjning. En programmerbar "händelse" utförs med CCP-pinnen då Timer1 når detta tal ( compare ). Tändspolens drivkrets har anslutits till CCP-pinnen på ett sådant sätt så att den programmerade "händelsen" utlöser gnistan.
William Sandqvist Förgasare eller bränsleinsprutning Förgasare. Hur många delar innehåller den? Räkna! Har Du hört talas om ”skit i förgasaren”? Bränsleinsprutare.
William Sandqvist Bränsleinsprutning Den sista förgasarbilen lämnade produktionsbandet Datorstyrd bränsleinsprutning har därefter tagit över i förbrännings- motorerna.
William Sandqvist Det behövs fler CCP-enheter … Detta har varit avsett som ett exempel på hur CCP-enheterna skulle kunna användas. Det är inte Microchips Midrange PIC-processorer som styr våra bilmotorer …
William Sandqvist