Werking van een ECU

Let op: deze pagina is nog in bewerking.

Onderwerpen:

  • Inleiding
  • Interfaceschakelingen
  • Processor (CPU)
  • RAM-geheugen
  • ROM-geheugen

Inleiding:
Op deze pagina wordt uitgelegd waar de componenten in een ECU voor dienen. Het grootste gedeelte van de tekst en afbeeldingen zijn samengesteld door dhr. W. Tulp voor zijn eigen lessen en is met zijn toestemming hier gepubliceerd.

Een ECU ontvangt cq. meetgegevens van sensoren, verwerkt de informatie en voert berekeningen uit om de actuatoren aan te sturen. De onderstaande afbeelding weergeeft een blokschema van een regelsysteem.

Sensoren zijn opnemers die reageren op een natuurkundige grootheid. De elektronica in de sensor maken hiervan een elektrisch signaal. De ECU ontvangt dit elektrische signaal als “input” en vergelijkt dit signaal met de voorgeprogrammeerde waarde. Afhankelijk waar het signaal voor dient, vindt er een regeling plaats door de actuatoraansturing hierop aan te passen.

De volgende afbeelding toont een ECU met drie stekkeraansluitingen. Van links naar rechts: voeding en netwerk, sensoren, actuatoren.

Bij een benzine-motormanagementsysteem vinden we o.a. de volgende sensoren:

  • krukaspositiesensor om het krukastoerental te meten;
  • koelvloeistoftemperatuursensor om de opwarming van de koelvloeistof te meten;
  • gaskleppositiesensoren om de stand van de gasklep en daarmee de motorbelasting te meten;
  • MAP- of luchtmassameter om de onderdruk of luchtstroming te meten;
  • lambdasonde om het zuurstofgehalte in de uitlaatgassen te meten;
  • de barometische sensor en inlaatluchttemperatuursensoren;
  • pingelsensor om de ontsteking zo ver mogelijk te laten vervroegen.

De bovenstaande sensoren dienen als input om de injectoren en bobine(s) aan te sturen. Hiervoor worden alle sensorwaarden in een voorgeprogrammeerd kenveld opgezocht.

Als voorbeeld nemen we de injectoraansturing. Bij een stationair motortoerental spuiten de injectoren een x-aantal graden na het BDP in.

  • Bij een lage koelvloeistoftemperatuur wordt de injectieduur verlengd (verrijken);
  • Bij rustig accelereren wordt eveneens de injectieduur verlengd. Er vindt ook een meting plaats die bijhoudt hoe snel het gaspedaal wordt ingeduwd: bij abrubt vol gas geven vindt er nog eens extra verrijking plaats;
  • De onderdruk in het inlaatspruitstuk heeft invloed op het injectietijdstip- en duur;
  • De lambdasonde (als voorbeeld de sprongsensor) meet of het mengsel te rijk of te arm is. Als het mengsel een aantal krukasrotaties te arm is, wordt met behulp van de fuel trims de injectieduur verlengd, tot dat het mengsel weer stoichiometrisch is;
  • De barometische sensor en inlaatluchttemperatuursensor meten de luchtdruk- en temperatuur om de zuurstofgraad in de aangezogen lucht te bepalen.

De injectieduur hangt dus af van de waarden van wel vijf sensoren. Bij moderne motoren spelen nog meer sensoren hierin een rol.

Tijdens en na het aansturen van een actuator, koppelen de sensoren informatie terug naar de ECU. De gemeten waarde wordt in de software vergeleken met de gewenste waarde. Hiermee kan worden bepaald of een actuatoraansturing constant kan blijven, moet worden verkort, of juist verlengd.  De ECU treedt dus op als regelaar, zodat er een regelkring ontstaat.

De volgende afbeelding toont een kenveld, waarin de basis-inspuittijd wordt bepaald uit het krukastoerental t.o.v. de onderdruk in het inlaatspruitstuk, dat maat is voor de motorbelasting. De temperaturen en lambdasonde vormen een correctiefactor en hebben elk hun eigen kenveld.

Regeltechniek:
De ECU meet, stuurt en regelt de processen. De ECU krijgt informatie van sensoren. Een sensor zet een verandering van een natuurkundige grootheid om in een elektrisch signaal. Deze sensorinformatie komt via de input de ECU binnen. Mogelijke inputsignalen zijn afkomstig van:

  • toerentalsensor;
  • temperatuursensor;
  • belasting (onderdruk)sensor;
  • zuurstofsensor.

De informatie die binnenkomt hoeft niet direct te leiden tot een actie. Pas wanneer een gemeten waarde afwijkt van de gewenste waarde, kan de aansturing van de actuator worden aangepast. De ECU heeft dan een “regelende” functie. 

Meten: de opnemer, in dit geval een sensor, meet een natuurkundige grootheid en zet deze om in een elektrisch signaal. Deze meetwaarde (X) wordt naar de regelaar verstuurd. De gemeten waarde hoeft niet direct te leiden tot een actie; denk aan een gelijkblijvende temperatuur.

Sturen: de regelaar (ECU) stuurt een actuator aan.  Er is geen terugkoppeling van een sensor, dus de ECU volgt het procesverloop niet. Een storing op het proces wordt dus niet altijd herkend. Een voorbeeld van de sturing is het handmatig bedienen van de claxon (W); de ECU stuurt de claxon (Y) aan bij het bedienen van de schakelaar. Op de claxon zit geen controlefunctie, waardoor storingen (Z) niet worden herkend.

Regelen: de regelaar kan een handmatig commando (W) of een gemeten sensorwaarde (X) verwerken tot een actuatoraansturing. De actuator zorgt voor een verandering in het proces; denk bijvoorbeeld aan de injectieduur. Meer inspuiten betekent een rijker mengsel. Het zuurstofgehalte wordt door de lambdasensor gemeten en zendt deze meetwaarde (X) door naar de regelaar. Wanneer er een onvoorziene storing aanwezig is (bijv. een verstopping in een injector), geeft dit een verandering (Z) op het proces. Ook deze afwijking wordt door de sensor gemeten, zodat de regelaar het proces door middel van de actuatoraansturing kan aanpassen.

Systeembus:
De systeembus maakt verbindingen tussen de componenten in de ECU (zie de onderstaande afbeelding). Bovenin de ECU vinden we de klok. Deze zogenaamde oscillator geeft een blokspanning af met een frequentie van meestal 16 mHz. De klokfrequentie bepaalt de snelheid van de regeleenheid. De componenten in een regelkring worden door deze timer op elkaar afgestemd.

De CPU, het geheugen en de I/O-interface zijn onderling verbonden met een systeembus, bestaande uit meerdere verbindingen op de printplaat. Deze kunnen we onderverdelen in:

  • adresbus: deze bus zorgt voor de dataoverdracht van de microprocessor naar bepaalde geheugenlocaties;
  • databus: gegevens tussen het geheugen, de cpu en de interfaces wordt via de databus getransporteerd;
  • controlbus: dient als besturing door lees- en schrijfselecties, aanvragen en resets uit te voeren aan de hand van de timing van de systeemklok.

Interfaceschakelingen:
De van de sensoren afkomstige elektrische signalen moeten in de meeste gevallen worden aangepast voordat ze aan de processor worden aangeboden. Aan de andere kant van de computer vindt de aansturing van de actuatoren plaats. Dit zijn vaak inductieve circuits die veelal grote stroomsterktes schakelen. De hardware om de sensorsignalen en actuatorstromen aan te passen, noemen we interfaceschakelingen. Een interfaceschakeling zorgt voor de vertaling van een analoge naar een digitale spanning. 

  • Sensoren versturen een spanning met een lage stroomsterkte. De interfaceschakeling zet de spanning om in een digitale waarde (0 of 1). De stroomsterkte is bij een sensorsignaal laag;
  • Actuatoren vereisen een hogere stroomsterkte. Om dit te realiseren, bevinden zich in de ECU losse eindtrappen in de vorm van transistoren of FET’s.

De processor werkt met spanningen van 5 volt. In- en uitgangsspanningen zijn daarmee beperkt tot een bereik van 0 tot 5 volt (TTL-niveau, afgekort van Transistor Transistor Logic). Bij signalen die van dit spanningsniveau afwijken, vindt een aanpassing plaats in een interfaceschakeling.

Ingangssignalen: Digitale ingangssignalen worden direct door de processor verwerkt. Analoge signalen worden in de A/D-omzetter omgezet in een digitaal signaal. Als voorbeeld nemen we het analoge spanningsverloop van een turbodruksensor:

  • stationair bedraagt de spanning ongeveer 1,8 volt;
  • bij het accelereren stijgt de spanning naar bijna 3 volt.

De spanningsverandering kan niet regelrecht in de processor worden verwerkt. Eerst moet de gemeten spanning worden omgezet naar een decimale waarde (0 tot 255).

Bij een bereik van 0 tot 5 volt en een decimale waarde van 0 tot 255 (dus 256 mogelijkheden). Een simpele rekensom leert dat wanneer we 5 volt over 256 mogelijkheden verdelen, er stapjes van 19,5 mV (0,0195 volt) kunnen worden gemaakt.

De volgende tabel weergeeft de decimale, binaire en hexadecimale waarde aan die bij verschillende spanningen horen.

Bij het uitlezen van live data kan het voorkomen dat de decimale, binaire of hexadecimale waarde van het sensorsignaal wordt getoond.

  • Een spanningssignaal van <0,5 volt (025d) wordt gezien als kortsluiting met massa;
  • Stijgt het signaal boven de 4,5 volt (220d) vertaalt de computer dit als kortsluiting met plus.

Uitgangssignalen: de outputsignalen bestaan uit digitale aan- /uitpulsen met een spanningsbereik tussen de 0 en 5 volt (TTL-niveau) met een zeer lage stroomsterkte. Actuatoren vereisen echter een aansturing met hogere spanningsniveaus en stroomsterktes. De aan- / uitsignalen kunnen pulsbreedte-gemoduleerd zijn (PWM), waarbij de pulsbreedte kan variëren bij een gelijkblijvende frequentie.

De volgende afbeelding toont een blokspanning op TTL-niveau als functie van de tijd. De duty cycle van dit PWM-signaal bedraagt 50%.

Om actuatoren aan te sturen zijn drivers nodig. Met het digitale outputsignaal kan met een driver de benodigde stroomsterkte worden bereikt. In de volgende paragraaf behandelen we de drivers.

Drivers:
In iedere ECU en in sommige actuatoren zoals DIS-bobine’s vinden we drivers. De driver maakt het mogelijk om uitgangssignalen vanuit de ECU om te zetten in hogere spanningen en stromen.

Processor (CPU):
De processor (Central Processing Unit) vormt het hart van de computer. Bij de fabricage van de processor zijn een aantal instructies ingebakken. Deze instructies voeren handelingen uit en zet deze in de juiste volgorde. Voorbeeld:

  1. de letters van het alfabet zijn in de processor digitaal opgeslagen. in werkelijkheid zal het niet gaan om letters, maar om digitale instructies die eenvoudige handelingen voorstellen;
  2. door de letters in de juiste volgorde te zetten, kunnen we woorden maken;
  3. door de woorden in de juiste volgorde te zetten, kunnen we zinnen maken;
  4. de zinnen maken het verhaal: in werkelijkheid het computerprogramma.

Het programma om – de door de processor bekende – instructies in de juiste volgorde te zetten is door de programmeur in de software ingebakken. Dit programma is in het flashgeheugen van de ECU geladen.

Wanneer de ECU wordt opgestart, worden op maat van de klok de instructies één voor één door de processor uit het flashgeheugen gehaald en uitgevoerd. Nadat het programma is uitgevoerd en ten einde is, begint de cyclus opnieuw.

De data die nodig is om gegevens als de ontstekingstijdstippen te laden, worden uit het ROM-geheugen geladen. De processor start op vanaf het ROM-geheugen en kopieert data van ROM naar RAM. Na het opstarten haalt de CPU alle data en opdrachten uit het snelle RAM-geheugen. Een relatief klein RAN-geheugen is noodzakelijk voor het tiijdelijk opslaan van gegevens en berekende tussenwaarden.

De CPU is middels een adresbus en databus met het geheugen verbonden.

  • Set: er worden bits opgeslagen in het RAM
  • Enable: er worden bits opgehaald uit het RAM

Bits en bytes aan data in het RAM-geheugen kunnen bestaan uit:

  • numbers: data van sensoren / data naar actuatoren / berekeningen
  • adressen van sensoren (input) en actuatoren (output)

De data in het RAM-geheugen kan zijn:

  • letters: ASCII-codes, cijfers, letters, symbolen
  • instructions: instructieset van de processor (opdrachten voor processor)

De processor werkt volgens een zogenaamd ISA (Instruction Set Architecture) oftewel een instructieset. De ISA is een lijst met instructies welke door de fabrikant is ingeprogrammeerd en door de processor wordt gebruikt. De ISA is per processor verschillend en is sterk afhankelijk van de toepassing waarvoor de processor wordt ingezet. Hieronder volgen een aantal voorbeelden:

  • LOAD de processor haalt een waarde op uit het RAM geheugen
  • STORE de processor slaat een waarde op in het RAM geheugen
  • ADD de processor telt twee getallen bij elkaar op
  • CLR de processor wist een waarde in het RAM geheugen
  • COMPARE de processor vergelijkt twee getallen met elkaar
  • JUMP IF de processor springt naar een bepaald geheugenadres in RAM (voorwaarde uit compare)
  • OUT de processor stuurt informatie naar een output
  • IN de processor vraag om informatie van een input

Om een processor op volle kloksnelheid te kunnen laten werken, wordt er gewerkt met inwendig RAM-geheugen. Dit worden “registers” genoemd. Registers zijn bijzonder belangrijke functieblokken in veel digitale systemen. Ze bestaan uit een verzameling flip-flopschakelingen die tijdelijk een binair getal kunnen vasthouden (daarmee onthouden). De verschillende soorten registers zijn:

  • A-register: register voor A-input naar ALU
  • B-register: register voor B-input naar ALU
  • Werkregister: algemeen doel, voor het bewaren van (tussen)resultaten
  • Instructieregister: de huidige uit te voeren instructie voor de processor wordt hierin bewaard
  • Adresregister (program counter): bevat het adres van de eerstvolgende uit te voeren instructie
  • Vlagregister: getal (na een berekening) is: nul, negatief, positief, te groot, even of oneven
  • Floating Point Register: getal met cijfers achter de komma
  • Schuifregister: geheugen waarbij de data tijdens elke klokpuls één bit opschuift
  • Geheugen Data Register: buffer tussen CPU en RAM voor geheugendata
  • Geheugen Adres Register: buffer tussen CPU en RAM voor geheugenadres

De ALU (Arithmetic Logic Unit) voert alle rekenkundige bewerkingen en logische bewerkingen (AND, OR, NOT, etc.) uit.

  • 2 inputs naar ALU: A en B
  • 1 input: welke bewerking moet de ALU uitvoeren
  • 1 output: R (Result) gaat naar een register
  • 1 output: vlagregister
De onderstaande afbeelding toont de vereenvoudigde ALU (links) en de ALU met schematische weergave van de logische poorten (rechts).

1. De ALU wil 01010101 zenden

2. Eerst moet de Control Unit set “1” maken

3. Het register wordt ingevuld

4. Hierna wordt Enable “1” gemaakt.

5. De data van de ALU wordt op een bus gezet

De CPU wil data ophalen uit het RAM-geheugen:

1. CPU stuurt een adres naar het RAM (01001001)

2. CPU wil informatie ontvangen; “enable” = 1

3. RAM stuurt data van adres 01001001 naar de CPU

4. CPU verwerkt de informatie

De CPU wil data opslaan in het RAM-geheugen:

1. CPU stuurt een adres naar het RAM (01001011)

2. CPU wil informatie opslaan; “set” = 1

3. CPU stuurt data (00111100) naar adres 01001011 in het RAM.
De data in de RAM wordt nu overschreven van: 11111001 naar: 00111100

RAM-geheugen:
RAM (onder te verdelen in SRAM en DRAM)

SRAM is Statische RAM:

  • on-chip (cache) geheugen (in processor zelf)
  • lage geheugenopslag (tot MB’s)
  • snelle toegangstijd
  • dure uitvoering
  • 1 bit = 6 transistoren.
De werking van het SRAM-geheugen wordt in de volgende acht stappen toegelicht:

1. Data opslaan in geheugen: data = 0 en data = 1.

2. De adreslijn wordt “0” gemaakt door de processor

3. T5 en T6 schakelen in

4. “-” en “+” wordt doorgestuurd

5. T3 (maakt de “0”) en T2 (maakt de “1”) gaan in geleiding

6. De adreslijn wordt weer “1” (T5 en T6 schakelen weer uit). De data wordt uit het geheugen gelezen.

7. De adreslijn wordt “0” gemaakt door de processor.

8. T3 en T2 geven nu hun waardes door naar de datalijnen.

Het DRAM-geheugen werkt volgens een ander principe dan het SRAM-geheugen. 

DRAM is Dynamische RAM

  • werkgeheugen (tot GB’s)
  • hoge toegangstijd (nsec)
  • goedkoop
  • 1 bit = 1 transistor + 1 condensator
  • moet worden ververst om bit te blijven onthouden, omdat de condensator als gevolg van zelfontlading langzaam leegloopt

Voorbeeld berekening RAM refresh rate (verversingstijd):

  • geheugenbus: 8192 rijen (vastgelegd in 2012 PC)
  • bussnelheid: 133 Mhz
  • er zijn vier klokpulsen nodig voor de complete refresh
  • de benodigde tijd voor één refresh kunnen we berekenen:

ROM-geheugen:
ROM is een afkorting van: Read Only Memory. In dit geheugen is door de fabrikant geprogrammeerd. Het geheugencircuit is opgesteld met vaste verbindingen. De ECU start vanuit het ROM-geheugen het softwareprogramma (booting). Het ROM-geheugen is een traag geheugen. Tijdens het opstarten wordt de data vanuit het ROM naar het RAM gekopieerd.

Hieronder volgen vier voorbeelden van het uitlezen van de ROM.

Procesregeling aan de hand van bedrijfsomstandigheden:
Het motormanagementsysteem van een verbrandingsmotor dient onder alle bedrijfsomstandigheden het mengsel optimaal te verbranden. Daarin zijn het bepalen van de mengselsamenstelling en het ontstekingstijdstip cruciaal voor het waarborgen van de uitlaatgassamenstelling (emissie), zuinigheid en het behalen van het gewenste vermogen.

Elke bedrijfsomstandigheid heeft zijn eigen regeltechniek:

  • Koude start: het mengsel is rijk en de ontsteking laat;
  • Warme start: het mengsel is minder rijk dan bij de koude start;
  • Koud stationair draaien: mengsel is rijk en het stationaire toerental is verhoogd;
  • Warm stationair draaien: mengsel is minder rijk bij een lager stationair toerental;
  • Deellast: mengsel stoichiometrisch, toerengebied tussen de 1500 en 4000 omw./min, ontstekingstijdstip is voorgedefinieerd, lambdaregeling is actief;
  • Vollast: mengsel is verrijkt, belasting en toerental zijn hoog;
  • Acceleratie: mengsel rijk, ontsteking laat;
  • Deceleratie: mengsel arm, ontsteking vroeg.
Flowchart van de procesregeling