Beste Forumleden, ik heb al heel veel gelezen en geleerd hier op het Forum maar nu heb ik toch echt een probleempje waar ik de mening van een aantal experts voor nodig ben. (ik beschouw me niet als zodanig)
Korte introductie van het systeem:
Digitaal ontstekingssysteem voor een verbrandingsmotor waarbij de positie en toerental van de krukas middels een hall-sensor wordt ingelezen. Normaliter wordt de firmware getriggerd op 80 graden voor bdp (input capture). Hierop volgt uiteindelijk een berekening die het moment van inschakelen primaire stroom bobine (compare1a) en moment van ontsteken (compare1b) bepaalt.
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)
Nu het probleem:
Bij accelereren van de verbrandingsmotor wordt de looptijd van timer1 verkort. De hoeksnelheid neemt immers toe. Ik loop klem met de berekening van compare1a. Als ik na het 5 graden v.b.d.p. markeringspunt moet ontsteken (tijdens starten/stationair toerental) dan moet de primaire stroom voor het input capture moment worden ingeschakeld. Als dit te dicht bij het input capture moment ligt en er volgt een plotselinge krukasversnelling kan de looptijd binnen 1 krukasomwenteling zodanig verkorten dat de waarde van compare1a niet wordt behaald. Dit zou betekenen dat de bobine niet geladen wordt. Dit heb ik voor nu opgelost door op het input capture moment de TIFR1 register af te vragen of de compare1a flag is gezet. Zoniet dan forceer ik compare1a, echter in sommige gevallen is de laadtijd dan net te kort.
Ik heb met een Kalman filter gewerkt die de versnelling van de krukas berekend en daaruit een correctie meegeeft aan de compare1a waarde maar daar heb ik 3 a 4 krukasomwentelingen voor nodig en tot die tijd gaat het net niet goed. (resolutie is te laag om sneller te kunnen berekenen)
Het werkt verder omdat ik zowel een capacitief (laadtijd is niet afhankelijk van primaire stroom bobine) als inductief ontstekingssysteem gebruik maar ik ben toch nieuwsgierig of er andere digitale oplossingen zijn voor dit probleem.
Schakeling is opgebouwd rondom een ATmega32u4