Compare1A ligt buiten timer waarde


Lambiek

Special Member

Op 25 november 2019 18:16:56 schreef bol00052:
Normaal gesproken gebruik ik een 36-1 triggerwheel waarmee de versnelling/vertraging tussentijds ook te berekenen valt, maar dat is nu dus niet mogelijk.

Kun je de tanden van je starterkrans niet gebruiken, of de tanden van je nokkenastandwiel. Dan heb je een veel betere indicatie voor je versnelling en positie van je krukas.

Je controller moet het aantal pulsen wel kunnen verwerken natuurlijk.

En waarom wil je pas beginnen met het laden van je bobine een X aantal graden voor je ontsteking, ligt dat aan het type bobine of anders...?

Als je haar maar goed zit, GROETEN LAMBIEK.

@Lambiek:
Ja dat zou een veel betere methode zijn. Nokkenastandwiel zou theoretisch kunnen echter die wordt aangedreven door een ketting zonder spanner, daarbij komt dat de gehele motor uitgebouwd dient te worden om er bij te kunnen. Om nog maar even te vergeten dat dit een een afgesloten iets is waarbij ik dus een aanpassing zou moeten maken in de distributiedeksel.
Het meten van motortoerental en positie is het vliegwiel het meest geschikt, zelfs beter met twee markeringen t.o.v. een distributie met speling. Zeker op lage toerentallen is dat niet stabiel genoeg.

Het vervelende is dat de eigenaar de motor in een zo origineel mogelijke toestand wil houden. Op dit moment lukt dat en het werkt wel zo, maar ik baal er van dat ik de contacttijd van de bobine vooral met starten en langzaam stationair draaien niet genoeg onder controle heb.

En waarom wil je pas beginnen met het laden van je bobine een X aantal graden voor je ontsteking, ligt dat aan het type bobine of anders...?

Ieder inductief ontstekingssysteem heeft een bobine met een optimale laadcurve, vaak tussen de 1,5 en 6 ms afhankelijk van type bobine.
Je rekent dus terug vanaf het ontstekingstijdstip. Afhankelijk van toerental zijn dat dus een x aantal krukasgraden. Boven een bepaald toerental zou het voor kunnen komen dat de laadtijd langer is dan de beschikbare tijd. Dan stel je de vonkduur primair en de rest van de tijd is dan laadtijd voor je bobine.

Het gaat inderdaad om een absolute tijd, en niet een aantal graden. De energie moet immers van de spanningsbron in de bobine worden opgeslagen. Ik vermoed dat het in het geval van stationair draaien meer uitmaakt wat de exacte ontsteekhoek is, waardoor het onhandig is dat juist in dit kritische bereik de metingen kloppen of in elk geval op tijd zijn.

Gegeven een relatief beperkte maximale acceleratie per omwenteling, zou het een drama zijn de bobine iets te oversturen (langer te laden) bij lage toeren? Als de ontsteking dan onverwachts dan toch eerder moet plaatsvinden is je bobine tenminste geladen als het gebeurt. Het zou dus betekenen dat je bij elke omwenteling de snelheid berekent en onder een bepaalde grens de laadtijd dynamisch langer maakt. In het ideale geval stel je de voedingsspanning bij of plaats je een weerstand in serie of zo, maar dan wordt het snel te complex. Het vereist echter geen aanpassingen aan de motor zelf. Ik zou zeggen dat een bobine relatief toleranter zou zijn op wat extra stroom als het aantal impulsen per seconder klein is.

Op 25 november 2019 18:16:56 schreef bol00052:
Ik heb wel inlaatdrukinformatie maar dat is geen maat voor de krukasversnelling.

Zelf ben ik niet zo een motorexpert (wat nu wel blijkt), maar kan ik de conclusie trekken dat je geen informatie kan afleiden over eventuele acceleratie? Zo niet, dan ben je nu eigenlijk een ouderwetse onderbreker aan het nabootsen. In principe zou je in dat geval voor de lage toerentallen misschien gewoon kunnen voldoen met een iets inefficiëntere "veilige" ontsteking op BDP en gewoon accepteren dat hij dan meer brandstof gebruikt en de ontstekingsvervroeging pas bij hogere toeren waar het relatief minder uitmaakt implementeert.

Corrigeer me graag als ik in het bovenstaande een redeneringsfout maak, voor mij is dit een gedachtenexperiment, ik heb weinig praktische ervaring met brandstofmotoren aansturen.

Uiteindelijk bootsen we natuurlijk allemaal de ouderwetse onderbreker na. ;) De winst in dit specifieke voorbeeld zit hem in nauwkeuriger het ontsteekmoment bepalen omdat het vliegwiel enigszins eenparig ronddraait, in vergelijking met de originele contactpunt verdeler. Die door een een nokkenas wordt aangedreven en vervolgens weer door een distributieketting zonder spaninrichting. Daarnaast is een transistor ontsteking natuurlijk in staat een krachtigere bobine te sturen.

De bobine is voor een korte tijd wel in staat een iets grotere stroom te absorberen. Jouw voorstel Kruimel is denk ik ook de beste oplossing. Ik denk dat ik de maximale vrije acceleratie wel kan achterhalen met een aantal metingen. Dit geeft dan een getal waarmee ik de contacttijd zo groot kan maken dat het probleem zich net niet voordoet.

Krukasacceleratie is lastig te berekenen als je niet genoeg markeringspunten op je vliegwiel hebt. Natuurlijk zijn er methodes, zijn zelfs wel drukopnemers waarmee het drukverloop in de cilinder te meten valt, waaruit i.c.m. andere parameters wel een acceleratie te destilleren valt echter dat valt ver buiten het kostenplaatje van dit projectje. :)

Op 25 november 2019 20:19:21 schreef bol00052:
Uiteindelijk bootsen we natuurlijk allemaal de ouderwetse onderbreker na. ;)

Haha, daar heb je wel gelijk in inderdaad... :D Helaas denk ik dat we in deze kwestie geen spectaculaire oplossingen gaan kunnen bedenken. Stiekem vind ik het altijd wel jammer dat ik nooit echt de gelegenheid heb gehad me met voertuigelektronica aan de slag te gaan, want ik vind het wel interessant om er over na te denken eigenlijk. Ik schrik altijd alleen altijd van het praktische deel ervan: je hebt meteen best een hoop spul nodig.

Op 25 november 2019 16:11:17 schreef bol00052:
Bij toepassing op een ander type motor kan ik de firmware enkel en alleen triggeren op 5 graden voor bdp. (Mechanische beperkingen en kosten maken het vrijwel niet mogelijk om plaatsing sensor en markeringen te veranderen)

5 graden voor bdp is hetzelfde als 365 graden voor bdp. 365 Graden voor bdp is veel meer dan 80 graden voor bdp.
"compare1a" en "compare1b" voer je dubbel uit, dus je voegt "compare2a" en "compare2b" toe. Per twee omwentelingen laat je eerst "compare1a" en "compare1b" het werk doen en dan "compare2a" en "compare2b". Je bent met de actuele gegevens wel één omwenteling te laat.

Bezoek mijn neefjes' site: www.tinuselectronics.nl

Dat klopt, maar enige nauwkeurigheid is wel gewenst. Maar daar zit het probleem niet. Het probleem zit hem in het feit dat bij zeer lage rotatiefrequenties het ontstekingsmoment net na het markeringspunt valt en de primaire stroom daar net voor ingeschakeld moet worden. Ik zie zo niet wat het voordeel is van het toevoegen van compare2a en 2b als ik niet de versnelling binnen 1 krukasrotatie kan bepalen...

Dat snap ik niet. Bij zeer lage toerentallen heb je toch tijd zat om electrische energie in de bobine te stoppen. Bij hoge toerentallen kan ik me voorstellen dat dat niet lukt.

Bezoek mijn neefjes' site: www.tinuselectronics.nl

Daar heb je helemaal gelijk in. Maar mijn oorspronkelijke vraag lag ook iets anders namelijk dat ik het wat beter onder contole wil hebben. De laadtijd van de gebruikte bobine is 3ms. Dan loopt er ongeveer 7A stroom. Na 6ms contacttijd loopt er al bijna 20A. Daar zijn deze bobines niet voor gemaakt en de gebruikte IGBT heeft ook zo zijn thermische beperkingen. Bij lage toerentallen heb je al gauw die contacttijd te pakken als je een aantal graden eerder de primaire stroom inschakeld.

Hoe loste je het vroeger op met de motor waarbij de sensor 80 graden voor bdp zat? Toen startte je de timer "compare1a" toch ook op het moment dat de sensor een signaaltje gaf?

Bezoek mijn neefjes' site: www.tinuselectronics.nl

Ik wilde precies hetzelfde voorstellen als Kruimel; die bobine iets eerder gaan laden, zodat je je kunt veroorloven om de vonk iets eerder te maken dan je aanvankelijk had gepland.

Je zou ook de aansturing van de bobine kunnen aanpassen; stel nou dat je die een vrijloopdiode geeft met een MOSFET of IGBT in serie; je zou de bobine dan kunnen laden (voor 3ms), en die extra MOSFET of IGBT inschakelen, voordat je de IGBT waarmee je de bobine oplaadt weer laat sperren. Op die manier kun je de stroom nog even laten recirculeren in de bobine voordat je de vonk maakt.

Uiteraard kost dat wat extra complexiteit, en raak je tijdens het recirculeren wat energie kwijt. Echter, de spanning over de bobine is op dat moment veel kleiner dan 12V (zeker als je een MOSFET gebruikt in plaats van een IGBT), waardoor het afbouwen van de stroom langzamer gaat dan het opbouwen vanaf de 12V.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Op 25 november 2019 23:00:27 schreef SparkyGSX:
Je zou ook de aansturing van de bobine kunnen aanpassen; stel nou dat je die een vrijloopdiode geeft met een MOSFET of IGBT in serie; je zou de bobine dan kunnen laden (voor 3ms), en die extra MOSFET of IGBT inschakelen, voordat je de IGBT waarmee je de bobine oplaadt weer laat sperren. Op die manier kun je de stroom nog even laten recirculeren in de bobine voordat je de vonk maakt.

Dat is een slimme oplossing die volgens mij gewoon werkt.

Bezoek mijn neefjes' site: www.tinuselectronics.nl

Op 25 november 2019 22:44:18 schreef ohm pi:
Hoe loste je het vroeger op met de motor waarbij de sensor 80 graden voor bdp zat? Toen startte je de timer "compare1a" toch ook op het moment dat de sensor een signaaltje gaf?

Iets anders, timer wordt iedere 180 krukasgraden (2 markeringen per krukasomwenteling op 160 krukasgraden voor bdp gereset. Het is een 4 cil. 4 takt Dus twee vonken per krukasomwenteling) uit het aantal ticks van de timer tussen de markeringen in wordt de rotatiefrequentie en de versnelling t.o.v. de vorige waarde betekend. I.c.m. belasting van de motor en nog wat andere parameters wordt uiteindelijk compare1a en 1b berekend. Deze worden normaliter in de volgende 180 krukasgraden afgewerkt. Het probleem wat ik hierboven beschrijf bestaat dan niet.

@sparky. Dat is een mooie hardware matige oplossing echter het is al een kant en klaar apparaat. Het is nu voor het eerst dat ik het zo moet opbouwen. Om nu het ontwerp deels aan te passen gaat eigenlijk niet. Ik heb zelf ergens deze gedachte ook gehad maar zocht de oplossing gezien bovenstaand feit eerst in de digitale kant. Maar hij staat wel op het onthouden lijstje. :)

Lambiek

Special Member

Doe je trouwens alleen de ontsteking regelen, of komt de injectie er ook nog bij. Of het moet een oud blok zijn waar nog carburateurs op zitten.

Als je haar maar goed zit, GROETEN LAMBIEK.

In dit specifieke geval is het alleen ontsteking. Heb wel eens een combi gemaakt met een "eenvoudige" opbrengstregeling voor het LPG systeem.
Het systeem in dit topic is op een 6 Volt auto geplaatst. Bij 6 volt auto's (1930-1950) is het moeilijk om onder alle bedrijfsomstandigheden genoeg energie in een bobine op te slaan. Als het mengsel dan wat rijker of juist wat armer staat heb je direct een probleem. Vooral het starten is killing, accu spanning kan dan wel zakken tot een volt of 4.

Het beschreven systeem bestaat dan ook uit een capacitief en inductief deel. Om genoeg energie in de bobine te krijgen tijdens o.a. starten laad ik eerst een condensator op tot +/- 430 Volt. Tevens laad ik de bobine op conventionele wijze op, d.m.v. een primaire stroom. Op het moment van ontsteken laat ik eerst het capacitieve deel los op de bobine, dat zorgt altijd voor genoeg ionisatiespanning aan de secundaire kant en vervolgens laat ik in de bobine opgeslagen energie los. Tot 3,5 Volt voedingsspanning haal ik nog steeds een minimale vonkduur van 1,5 ms. In tegenstelling tot het conventioneelsysteem dat dan al lang weigert te werken.

Complexere systemen koop ik gewoon in. Er zijn natuurlijk genoeg vrij programmeerbare motormanagementsystemen te koop. Alleen niet specifiek voor dit soort toepassingen.

Als je bij een andere motor geen issue had met het vervroegen en de CMP1A die voorbij het timer-ding komt, dan is in die situatie OOK de ontsteking-oplaad-periode korter geweest dan gewenst. Of eigenlijk: de hele ontsteking is dan te laat. Mijn indruk is dat je nu de compleet ontbrekende ontstekingen WEL merkt maar de "verminderde energie" of "te late" ontstekingen NIET.

In dat geval moet je gewoon Sparky's hint gebruiken. Gewoon de timer z'n 16bit rondjes laten lopen (ARR=0 geloof ik) en steeds een "ontsteking in de toekomst" plannen. Die komt dan wat aan de late kant als je motor aan het versnellen is. Dat is nu eenmaal zo en daar kan je weinig aan doen.

Wel is het zo dat als je trigger dicht bij de ontsteking zit, je een grotere nauwkeurigheid hebt: je hebt recent nog de omwentelingssnelheid gemeten, dus de hoek-naar-tijd vertaling is nauwkeuriger dan wanneer je die berekening op een "vorige omwenteling" moet doen.

Als ik het goed begrijp is het nu zo dat je de volgende ontsteking "ongeveer" moet plannen rond de tijd dat je ook de volgende trigger ontvangt. Dus bij niet eens zo veel versnelling krijg je dat de trigger inderdaad eerder komt dan de volgende ontsteking. Tja, dan draai je dus inderdaad op bijna 2 omwenteling oude "snelheidsinformatie" en is de onnauwkeurigheid dus groter. Eigenlijk KAN het niet beter dan wat ik/sparky voorstellen.

Een kleine verbetering kan wel. Normaliter start je de ontsteking cyclus net voor de volgende trigger. Als je volgende trigger dan onverwacht komt op een moment dat je nog niet de ontsteking gestart hebt, dan zou je in de trigger-interrupt de ontstekingscyclus kunnen starten, zonder het oude start-moment af te wachten. Nog niet ideaal maar wel subtiel beter. Als je ontsteking ALTIJD om het trigger moment valt, dan kan je botweg gewoon altijd de bobine-oplaad-output hoog maken.

Maar ik verwacht dat je dan het omgekeerde probleem gaat krijgen: Bij vertraging van je motor is je hele ontsteking al gebeurd, en dan krijgt je bobine dus een hele omwenteling de tijd om op te laden ipv de periode die er normaliter voor staat. Of ie daar tegen kan weet ik niet. Ik heb geen verstand van autos.

P.S. Ik doe alsof er 1 omwenteling is waarop eea moet gebeuren. Dat is een nuttige "versimpeling" van het geheel. Eerst zo over het probleem denken, en pas bij de implementatie uiteindelijk naar de details kijken voor hoe het met 3 of 4 cylinders moet.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

@bol00052,
Een optie die nog niet genoemd is, is bij lage toerentallen een extra weerstand in serie met de bobine opnemen. Bij hoge toerentallen overbrug je 'm. Maar die truc ken je vast wel. (Is eigenlijk een versie van SparkyGSX-oplossing (vrijloopdiode), maar iets minder complex). Bij starten uiteraard ook de weerstand overbruggen.

Bezoek mijn neefjes' site: www.tinuselectronics.nl

Nou dat zeg je:

Op 25 november 2019 19:28:25 schreef Kruimel:
In het ideale geval stel je de voedingsspanning bij of plaats je een weerstand in serie of zo, maar dan wordt het snel te complex.

Op 25 november 2019 23:13:04 schreef bol00052:
[...]

Iets anders, timer wordt iedere 180 krukasgraden (2 markeringen per krukasomwenteling op 160 krukasgraden voor bdp gereset. Het is een 4 cil. 4 takt Dus twee vonken per krukasomwenteling) uit het aantal ticks van de timer tussen de markeringen in wordt de rotatiefrequentie en de versnelling t.o.v. de vorige waarde betekend. I.c.m. belasting van de motor en nog wat andere parameters wordt uiteindelijk compare1a en 1b berekend. Deze worden normaliter in de volgende 180 krukasgraden afgewerkt. Het probleem wat ik hierboven beschrijf bestaat dan niet.

Ik snap het probleem niet. Ook bij 5 graden voor bdp weet je precies het aantal ticks van de timer en uiteraard het aantal ticks van de voorgaande timers(metingen). Aan de hand van deze metingen weet je toch precies wanneer je de bobine moet inschakelen en wanneer je de bobine moet uitschakelen? Als deze tijd te groot wordt en daardoor de onzekerheid te groot wordt (bobine te laat ingeschakeld ivm grote versnelling of bobine te vroeg ingeschakeld ivm te grote vertraging), dan ontkom je niet aan een hardwarewijziging.

Bezoek mijn neefjes' site: www.tinuselectronics.nl

Op 26 november 2019 15:00:18 schreef ohm pi:
@bol00052,
Een optie die nog niet genoemd is

@Kruimel,
Sorry, eroverheen gelezen.

Bezoek mijn neefjes' site: www.tinuselectronics.nl

Op 26 november 2019 13:23:10 schreef rew:

Als ik het goed begrijp is het nu zo dat je de volgende ontsteking "ongeveer" moet plannen rond de tijd dat je ook de volgende trigger ontvangt. Dus bij niet eens zo veel versnelling krijg je dat de trigger inderdaad eerder komt dan de volgende ontsteking. Tja, dan draai je dus inderdaad op bijna 2 omwenteling oude "snelheidsinformatie" en is de onnauwkeurigheid dus groter. Eigenlijk KAN het niet beter dan wat ik/sparky voorstellen.

Daar ben ik nu ook van overtuigd.

Een kleine verbetering kan wel. Normaliter start je de ontsteking cyclus net voor de volgende trigger. Als je volgende trigger dan onverwacht komt op een moment dat je nog niet de ontsteking gestart hebt, dan zou je in de trigger-interrupt de ontstekingscyclus kunnen starten, zonder het oude start-moment af te wachten. Nog niet ideaal maar wel subtiel beter. Als je ontsteking ALTIJD om het trigger moment valt, dan kan je botweg gewoon altijd de bobine-oplaad-output hoog maken.

Dit doe ik al en werkt redelijk. Het ontstekingsmoment is variabel dus die laatste zin kan niet, de bobine zal dit uiteindelijk ook niet trekken aangezien de contacttijd bij lage toerentallen dan +/- 30 ms zal zijn.

Op 26 november 2019 15:25:25 schreef ohm pi:
[...]Ik snap het probleem niet. Ook bij 5 graden voor bdp weet je precies het aantal ticks van de timer en uiteraard het aantal ticks van de voorgaande timers(metingen). Aan de hand van deze metingen weet je toch precies wanneer je de bobine moet inschakelen en wanneer je de bobine moet uitschakelen? Als deze tijd te groot wordt en daardoor de onzekerheid te groot wordt (bobine te laat ingeschakeld ivm grote versnelling of bobine te vroeg ingeschakeld ivm te grote vertraging), dan ontkom je niet aan een hardwarewijziging.

Dit laatste is dus inderdaad in dit specifieke geval de beste oplossing echter dat ga ik niet doen i.v.m. wellicht de eenmaligheid van dit project.

Ik denk dat voor mij de meest zinvolle oplossing is, bobine laadtijd verlengen, zoals al eerder werd voorgesteld, als cmp1a en cmp1b te dicht bij het triggerpunt liggen. Daarbij een ander type bobine monteren die minder gevoelig is voor een langere aansturing.

Als ik het me goed herinner kun je in die timers twee triggermomenten definieren. Je krukasversnelling is niet al te groot binnen een omwenteling dus moet je de laatste meetwaarde gebruiken (je hebt immers geen info zoals starterkrans pulsen om dat 'real-time' te kunnen meten, dus moet je het doen met wat je wel weet). OK, in de laatste omwenteling heb je gemeten hoe ver die timer telt bij een omwenteling. Daarmee weet je het aantal ticks voor een omwenteling, want dat is je capture waarde. Op 80% van dat aantal moet je ontsteken, dus daar zet je een timer compare interupt. Het inschakelen van de primaire bobine-stroom bepaal je door het andere compare interrupt een aantal ticks eerder te zetten. Dat aantal kun je eenvoudig bepalen door de gewenste tijd te delen door de clockfrequentie van de timer. Immers elke tick is een bekend aantal micro/miliseconden.
Als je sensor niet op b.d.p. zit moet je die beeide compare waarden corrigeren door er een vaste waarde bij op te tellen (of van af te trekken). Die waarde is: (sensorhoek t.o.v. bdp)/360 * (ticks per omwenteling) / timerclockfrequentie (even uit het blote hoofd).
Het kan zijn dat dit al door andere leden is voorgesteld. Ik heb niet alle reakties in detail bekeken.

Niet alles wat op internet staat is waar... Dat geldt ook voor CO.