Detecting Missing Teeth on a 60-1 Encoder Wheel with an Arduino

Click For Summary

Discussion Overview

The discussion revolves around detecting missing teeth on a 60-1 or 60-2 encoder wheel using an Arduino and a variable reluctance (VR) sensor. Participants explore the logic and methods for accurately determining position based on the gaps created by the missing teeth, considering varying wheel speeds and the implications for ignition and fuel injector control.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested
  • Mathematical reasoning

Main Points Raised

  • One participant expresses uncertainty about how to detect missing teeth and trigger events based on this detection.
  • Another suggests that if the wheel spins at a constant rate, the time between detected teeth can be recorded, and larger gaps may indicate missing teeth, but notes that varying speeds complicate the logic.
  • A participant emphasizes the need for a second detection channel to reliably find the home position, arguing that a single channel would lead to cumulative errors in counting and position detection.
  • Some propose using a wheel with all 60 teeth and two quadrature detectors to improve resolution, suggesting that home position detection should match the main count resolution.
  • One participant mentions that higher resolution can be achieved by analyzing the detector signal waveform, although they acknowledge potential challenges with processing power.
  • Another participant discusses the possibility of generating a pulse train with a single detector and a wheel with missing teeth, indicating that the gap could serve as a home position marker.
  • A later reply suggests that the tooth following the missing teeth could be the home position, noting the processing capabilities of the Arduino for handling pulse detection at high RPMs.

Areas of Agreement / Disagreement

Participants do not reach a consensus on the best method for detecting missing teeth, with multiple competing views and approaches presented throughout the discussion.

Contextual Notes

Participants mention the need for testing to determine the relevance of harmonic components and the limitations of processing power when analyzing signal waveforms.

Who May Find This Useful

Individuals interested in engine control systems, sensor integration, or those working with Arduino in applications involving position detection and signal processing may find this discussion relevant.

Rx7man
Messages
425
Reaction score
189
I am at a bit of a loss at how to deal with the logic of a 60-1 or 60-2 (60 tooth wheel missing 1 or 2 teeth as an indicator of position) read by a VR sensor.
I'm currently employing an Arduino, though later I may change platform..

I can have the sensor on an interrupt, but how do I detect the missing teeth? How would I trigger an event based on this?
 
Technology news on Phys.org
If the wheel spins at a constant rate, then you can use this information to your advantage (im assuming VR sensor means variable reluctance sensor, which i just looked up on wikipedia). If there is no steady state (wheel can spin at vastly different rates at any moment), then I'm not sure how to help you (somebody better at math probably would be of more use). You can record the time between teeth being detected between the interrupts (current time - time recorded by last interrupt stored in some shared variable). Most of the time you'll get the same time (+ or - any error in the recording of the times), but when the gap comes, the time between interrupts will be greater than usual (2 or 3 time depending on the number of teeth missing, + or - any error). Once you detect a big gap in time, then you can act on it. When you say trigger an even based on this, what do you mean? This requires more context, ie. programming language, goal, etc.
 
The goal is to be able to control an output for ignition coils and fuel injectors.. programming would be in C, though at the stage I'm at, language isn't what I'm concerned with but rather the logic of it.

Yes, the wheel will travel at different speeds as engine speed changes, and there could even be significant harmonic components to it, though the only way to know if they're relevant would be through testing...

For ignition control, a 60 tooth wheel provides 6* per tooth, but the timing should be done to better than 1*... Injector control is usually time based... A lot of the details would have to be worked out by poring over the processor datasheet.. little steps at a time though
 
You need another detection channel to reliably find the home position of the count wheel .

One channel will just see your gap with the missing teeth as one ordinary count and in one complete rev the total count would be 58 . There would be errors in angular location , no detection of the home position and a cumulative error in the number of complete revs recorded .

Leave the count wheel intact with the 60 teeth .

Use a second wheel with one slot or a single hole in the main wheel and another detector to give the home position .
 
Last edited:
You could use a wheel with the 60 teeth intact and two quadrature detectors for the actual count . This would improve resolution by a factor of four - ie from 60 to 240 counts/rev .

Optionally use a count wheel with a lesser or more appropriate number of teeth .

Home position detection needs to have the same resolution as the main count resolution .
 
Just for interest - higher resolution can be obtained from simple teeth counting systems by analysing the detector signal waveform . This method is used in some types of DRO system with linear scales .
 
@Nidium, I use 60-1 or 60-2 wheels because that's what the particular engine comes with and I don't have much say in that matter, and somehow the OEM's make it work just fine. I didn't really mention that before
Good idea about analyzing the waveform.. though it may be challenging to get it done with limited processing power.. If the pickup is a hall effect it would be impossible
Thanks for the ideas, definitely something for me to mull over through the day
 
Ok. They could be doing something rather cruder than I envisaged .

With one detector and a wheel with a section of missing teeth a pulse train can be generated . At any particular engine speed this pulse train is uniform except that it has a gap in it in one place . The pulses give you the average speed and the gap gives you the home position .

Several different ways of doing the computations but basically :

Calculate the time for one complete rev of pulses to get the speed . Count 59 or 58 pulses starting anywhere .

Calculate the time for each successive pulse and test whether the current pulse is significantly longer than the previous one . A longer pulse gives you the home position .
 
Yeah, that's the way I figure it, the tooth after the missing teeth is probably the home position, and I would guess it's well before any events need to occur

a 60 tooth wheel at 6000 RPM is 6000 pulses per second.. I've taken apart some old ECM's and looked up the processor capabilities, they can do it on 8mhz and 8 bits, so an arduino (16mhz) should have no problem as long as attention is paid to performance. I am thinking of using an Arduino Due (84mhz 32bit) just because I'm not an expert optimizer.
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
3K
Replies
7
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K
  • Sticky
  • · Replies 13 ·
Replies
13
Views
8K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K
Replies
9
Views
2K
Replies
1
Views
4K
  • · Replies 6 ·
Replies
6
Views
4K
  • · Replies 16 ·
Replies
16
Views
6K