This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM2634: Synchronization of crank signal for combustion motor

Part Number: AM2634

Tool/software:

Hello,

I'm working on an internal combustion engine management implementation that requires synchronization with a crankshaft position signal. The crank signal is the only input available, and the reference position must be determined using missing teeth.

Typically, I use crank patterns like 34-2 (34 teeth with 2 missing) or 58-2. I’ve attached a sample crank signal waveform for reference.

I’m attempting to use the eQEP module for this purpose, but it seems to expect three different inputs (A, B, and Index). Since I only have a single crank signal input (no cam or secondary index pulse), I’m unsure how best to configure eQEP—or if it’s suitable at all.

My main questions are:

  1. Can the eQEP module be used effectively with just a crank signal (single input with missing teeth)?

  2. What would be the best method to detect the missing teeth and establish a reference angle?

  3. Once synchronized, how can I track the current crank angle reliably for angle-based control (e.g., ignition/fuel injection timing)?

Any guidance, example projects, or references to relevant documentation would be greatly appreciated.

Thank you!

  • Hi,

    Can the eQEP module be used effectively with just a crank signal (single input with missing teeth)?

    The eQEP module will be able to count the number of pulses, but there is no eQEP hardware mechanism that will be able to detect the missing teeth without CPU intervention.

    What would be the best method to detect the missing teeth and establish a reference angle?

    How often do you want to to update the reference angle? Do you only want to update your reference angle at edges (when you have new information) or will you need to interpolate between these edges? 

    You will be able to measure pulse periods with hardware, but you will need the CPU to calculate an accurate speed/position.

    Once synchronized, how can I track the current crank angle reliably for angle-based control (e.g., ignition/fuel injection timing)?

    I will need to understand how often you will need the accurate speed/angle. Also I will need to understand what else is running on this CPU core, so we can understand how much bandwidth can be allocated for this task.

    My first idea is to have a software PLL that will be updated at least on every rising/falling edge. If this will take too much of your CPU bandwidth, then we can discuss more simple methods. 

    Best Regards,

    Ben Collier

  • You can find the answers for your questions below.

       How often do you want to to update the reference angle? Do you only want to update your reference angle at edges (when you have new information) or         will you need to interpolate between these edges?

    The reference angle is set either to zero or to the current timestamp at a specific, pre-configured tooth position—typically the first or second tooth following the gap. It is crucial that this reference tooth remains consistent and is always used as the reference angle. Unless there is a synchronization loss, this reference point may be updated every two engine cycles (i.e., every 720 degrees of crankshaft rotation). In the event of synchronization loss, the system must detect the loss and re-establish synchronization by correctly identifying and updating the reference point, just as it does during the initial synchronization process.

       I will need to understand how often you will need the accurate speed/angle. Also I will need to understand what else is running on this CPU core, so we can     understand how much bandwidth can be allocated for this task.

    Accurate engine speed can be measured every 10 ms. However, the crankshaft angle must be continuously tracked with high precision, as injection and ignition events are triggered at specific angular positions. Therefore, real-time angle tracking is critical to ensure correct engine operation.

    The system is currently in the software architectural design phase, and core usage has not yet been finalized. One core is planned to run the Application Software (ASW) and Basic Software (BSW) components, while the second core will host AUTOSAR components. If it proves efficient and feasible to isolate these operations on a single core, this option will be considered. Otherwise, our initial approach is to implement angle tracking and speed calculation using ASW and BSW components on the designated core.

    Best Regards,
    Murat Tarkan Aktan

  • Closing this thread to handle offline.