Connect with us

absolute position sensor

Discussion in 'Electronic Design' started by Jon R. Pickens, Apr 17, 2007.

Scroll to continue with content
  1. Hi,

    I'm trying to get info on the best way to add a sensor to my truck's
    engine for determining absolute position of the crankshaft while the
    engine is running. The sensor would be used for tuning purposes, as
    well as connecting to a small laptop for data logging. Through the
    PC, I planned on taking a feed from the tachometer signal to determine
    the ignition timing from inside the truck as well. No real practical
    application, just a fun project for me.

    My needs are fairly simple: It should be able to measure 360° or
    better (such as 720° or 1440°) as well as be durable enough to handle
    the heat under the hood and normal amounts of dirt from the road.

    I'm assuming a magnetic / hall effect sensor would be best, but where
    do I get something with the accuracy I need?


  2. Paul Mathews

    Paul Mathews Guest

    2 Hall sensors: 1 to sense flywheel ring gear teeth, the other to
    sense any flywheel feature that is unique for each revolution. The 2nd
    sensor gives you a sync for each full revolution. Of course, you could
    use a camshaft gear or timing chain in an analogous fashion, taking
    the gearing into account.
    Paul Mathews
  3. mpm

    mpm Guest

    What are you going to display this on?
    In real time, even at idle, we're talking 600 RPM's or so.
    LED's will just be a blur.

    Timing lights (for engine tune ups) used to use a little white line
    marked on the camshaft pully.
    You can probably do something similar optically, then average out the
    rest of the circle position based on time between sequential marks.
    Just an idea.

  4. I forgot to mention, that if the engine is stopped, then started
    again, I'd need it to be somewhat re-synced after a couple of
    revolutions (before the engine even starts really).

  5. Where do LEDs enter the picture??? It'd be displayed on a little
    tablet PC...

    The idea is, by knowing the exact position of the crank, I could use
    software to determine ignition timing and duration (of course, I'd
    also be capturing data from the ignition system to monitor that).

    The "interface" would consist of the PC, with real-time engine speed
    in RPM, ignition timing and duration displayed on the screen.

    Something like this at idle:
    Engine speed: 800rpm
    Ignition timing advance: 4° BTDC
    Ignition duration: 20°
    ....and while cruising on the interstate:
    Engine speed: 2130rpm
    Ignition timing advance: 14° BTDC
    Ignition duration: 20°
    If you hit the gas, the numbers should change accordingly, provided
    that the software is doing its job and grabbing several new samples of
    data every second. It'd be connected either via RS232 or the parallel


  6. PeterD

    PeterD Guest

    I don't suppose you even remotely thought it might be a good idea to
    tell us WHAT KIND OF TRUCK you are thinking about, did you?
  7. Rich Grise

    Rich Grise Guest

    Put a magnetic sensor near the flywheel where it will pick up each tooth
    as one pulse?

    You'd have to interpolate, of course, and you'd need another kind of
    pulse to sync it at #1 TDC.

    Have Fun!
  8. Your resolution will be dependant on amount of info collected per
    revolution. The gearing on flywheel is a good collection point with Hall
    or magnetic sensor. This AND the 0 deg position should give you all info
    you need.


  9. Rich Grise

    Rich Grise Guest

    If you mount your sensor right, and since you're going to have to write
    some code anyway, just use the hall sensor (or permanent magnet sensor,
    like a guitar pickup) to sense the flywheel teeth, and interpolate for
    fractions of degrees and stuff. You'd need to know how much skew there
    is at various speeds (i.e., a magnetic sensor will respond differently
    at 600 RPM than at 3000 RPM.) So you'll have to determine just when
    the leading edge happens relative to the physical tooth for any given RPM
    - you're going to have to calibrate this thing anyway, right? :)

    And another thing - can't you just ask the car's computer?

    Have Fun!
  10. Well, this truck doesn't have a computer... it was made in 1986.

    Thanks for the advice,

  11. Actually, no I didn't... I didn't and still don't see it as relevant,
    but... it's a 1986 Chevrolet K5 Blazer, non-computerized and
    carbureted, 350ci engine / automatic tranny with A/C. The only
    computerized part of the truck (as far as I know) was a small system
    that retards the ignition timing based on input from a knock sensor.
    It is currently disabled, and no it's not a hack--it's a GM-approved
    modification that was released in a service bulletin after that
    circuit began to fail with regularity.

  12. Rich Grise

    Rich Grise Guest

    Everything that relates to the question is relevant, otherwise we're
    all just stabbing in the dark. For example, if I'd known this before,
    I'd have left out the part about just asking the car's computer. :)
  13. Gotcha... I guess my intention wasn't clear, which is to add something
    to the truck that doesn't already exist.


  14. Rich Grise

    Rich Grise Guest

    Now that that's out of the way ( ;-) ), did you get any useful answers?

  15. jasen

    jasen Guest

    does it have an OBD socket ?

    IIRC that's about when they started fitting crank position sensors to some

    I had a car that had the sensor connected to a socket but to nothing else.

  16. Some, yes... I already understood the concept of using a sensor near
    the teeth on the flywheel, so that may be the direction I go with this
    project. I just don't know if it'll provide the resolution I want.
    It seems that if I wanted to measure somewhere in-between the teeth of
    the flywheel, I wouldn't be able to do so, rather I'd have to
    calculate position based on engine speed and last known position.

  17. Rich Grise

    Rich Grise Guest

    Sounds like you've got it pretty much summed up. Is it possible to
    view the flywheel while the engine is running? You could use a strobe
    to get it down to a gnat's ass, but you'd need to do a couple of things
    simultaneously in your software - first, you'd scope out the sensor
    output, and make a record of the waveform at various RPMs. It might
    be possible to pick a trigger point that would correspond really
    closely to the same position on each tooth at any RPM. Then, knowing
    the current RPM, each tooth interval will correspond to a certain
    number of degrees.

    How many teeth are on a typical flywheel anyway?

  18. It may be possible to use the teeth together with an optical
    technique. An issue being that you'd want a broad 'spot size' so that
    instead of getting 'on/off', 'off/on' behavior you instead get a
    sinusoidal shape in the signal you receive. You can sample that with
    a fast enough circuit and it will get you a way to figure position in
    between the teeth or at different relative positions over a tooth.

  19. Chris Jones

    Chris Jones Guest

    I think since it is not a very clean area it would be more reliable to use
    hall sensors because dirt could upset an optical system. I expect you can
    get a packaged unit with basically a hall sensor and a magnet behind it,
    and if you put that near the teeth of the ring gear then you can count the
    pulses. Also, provided the angular velocity is reasonably constant from
    one tooth to the next, then you can just assume that the crankshaft angle
    increases linearly with time from one pulse to the next. This would allow
    you to estimate the position of the flywheel at any point in time. I think
    this would be the best option.

    If you don't want to assume that the angular velocity is constant over the
    period from one tooth to the next, then you could make a setup with two
    sensors spaced apart by a 0.25 tooth, (or 1.25 teeth, or 2.25 teeth etc.
    whatever is easiest mechanically). If you use "linear" hall sensors with
    an analogue output voltage proportional to magnetic field in the sensor
    then you would get two waveforms that would look like a distorted sine wave
    and a distorted cosine wave (with some DC offset), from which you could
    figure out the position within a small fraction of a tooth. You could work
    out the position even with the engine stopped (provided your sensor has
    been running since the last time you detected the top-dead-centre and reset
    the counters). If you use four sensors at 0, 0.25, 0.5 and 0.75 tooth
    offsets (plus any integer number of teeth needed for mechanical reasons)
    then you don't need to bother so much about the DC-shift in the output due
    to the permanent magnet behind the hall sensor because you can take
    differential readings between the 0 tooth and 0.5 tooth sensors for one
    channel and differential readings between the 0.25 and 0.75 tooth sensors
    for the other channel. I think using a single sensor is easier though.

Ask a Question
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.
Electronics Point Logo
Continue to site
Quote of the day