Photodetector to measure rotation and torque

Good Morning.

I need an Active Photodetector for the following task.
Detect the change between blue, red and green bands that will be attached to the shaft of a moving engine.

Basically I will have an axis with several tracks in a blue/red/green sequence that is repeated throughout the circumference of the axis, these tracks have a very short length (less than an arc of 5 degrees of circumference on an axis of radius 2 cm = ~ 1.7mm) and are rotating at high angular speed. The sensor must be able to return the intensity of the band perpendicular to it at every instant and when it is in a position where there is a transition between bands of different colors it needs to be able to quickly return the interpolated values of these colors, that is when it is in a transition from a red to a green band the sensor needs to return a real-time signal that starts with a red spike and smoothly changes to a green spike.

In this way, it would be possible to identify the relative position of the sensor in relation to the axis tracks, which is the objective I intend to achieve.

Looking at catalog I came across the TCS34725 that is working for low speeds but with a precision a little far from what I need when detecting lane changes, this is also being caused by the low response speed of it that is in 2.4 ms.

So I'm looking for a sensor with enough features and reading speed to do this job.
In this case, my biggest problem is the accuracy of the reading, many times the TCS34725 returns me values ​​of colors that are not close to it.

The speed I want to perform my next tests is something around 44 rpm.
I calculated that for an axis with 60 tracks each track will occupy an arc of 6 degrees, for each track the sensor will have to be able to perform 90 readings, so that it will be possible to draw a moving average with an offset set to 10, that is 90 readings we will have 9 valid values (which will be later processed in the program).

So I need a sensor that has a read speed of 0.25ms or 34KHz.
Or anything close to 1ms would be useful.

By precision I mean correct reading data, for example many times my current sensor is between green and red colors it ends up returning me a non-null value of blue.

In this video it is also possible to see a problem that I am also facing, which is these sudden drops in some values.

Correct result (Expected)

Wrong result (It is currently happening)

You could consider using a standard rotary encoder rather than this arrangement? They are available with considerably higher resolution than the scheme you propose. Or is there a special significance to the colours?

That rate will be extremely difficult to reach with any wavelength-sensitive optical sensor, because you need to integrate the light intensity over time. Selecting out the wavelengths to be detected, either by filters or diffraction gratings, dramatically reduces the light available to each sensor and increases the required integration time.

Think high speed color photography: big, expensive lenses, big expensive detectors. If it is even possible, this approach will be costly, so consider others.

I need to use the light so I don't have equipment that interferes with the rotating axle.

Could I use some light sensor to do this?
Something that reads black and white.
What I really need is to identify the time difference between the sensors. The colors are for me to know where the axle is turning, anti-clockwise or clockwise.

Yep , have look at how crank position sensors work - toothed wheel ( with a missing tooth ) and inductive pickup.
Established method used on all modern cars .
Using colours seems much harder !

I think @jhaine is suggesting a regular optical encoder. This would require black/while bands instead of colour bands and would be capable of reading at a faster speed.

Maybe, with a photodiode and big lens to collect light. You still have to integrate and measure the light intensity.

With a missing band in one position it’s is possible to measure absolute position ( as in toothed wheel )

1 Like

This could be done with 2x sensors and black/white bands (like a mechanical rotary encoder can do, but optical)

Got it, I think I'll try to implement the black and white bands.
Well, as I said above, the only thing that can come into contact with the axle are the tracks, otherwise everything needs to be light.

How could I do this? Reflection sensors and white LEDs to emit light that will be reflected or absorbed ?

How could I measure the transitions between tracks? (This is the most important point of the project)
In this case, this measurement will serve to increase my reading resolution so that I can measure very small torsion angles.

Does anyone know anything about this sensor here?

LED illuminating it, phototransistor picking up reflected light, you can get devices with both in one package with a logic output. Easy peasy.

That Osram device looks like serious overkill.

I have no idea how you can use any of these ideas to measure torque...

2 Likes

Oh ... Maybe you apply some known braking force and measure how much the rotation slows.

It sounds like you're trying to measure shaft twist in order to derive torque, is that correct?

I actually started designing something like this a couple months ago, but had to drop it. IIRC, you only need two sets of alternating light/dark bands and two sets of optical sensors. Essentially, it will look like you have two quadrature encoders some distance apart. Quadrature is only needed if you need to detect direction: otherwise it can be done with one set of each.

Basically, the microcontroller should trigger on each edge changing state to detect the direction of motion, and the timing skew between each "set" of detectors. That timing skew will be a measure of shaft twist, which should be proportional to torque.

If you build this, please post back here. Like I said, my project never got off the ground and it will probably be months before I have time to get back to it, so I'm interested :slight_smile:

2 Likes

You can mount the engine so it rotates around its axis held back by a spring - the pull on the spring is the torque

What about a laser mouse type sensor?  Non-contact speed and direction.

Basically it is as follows, when we impose a torque on an axis it suffers a torsion (An angle of offset between the ends of the axis).

By measuring this angle we can convert the degrees value to torque.

The black-and-white sensor can measure the number of times a white band passes through it, so we can use 2 sensors and compare these values ​​to know the angle between them (only based on the delay of the reading of one of the sensors, caused by the angle of twist)

In my project I want to use a color sensor, that way I can get more reading accuracy.
Because I can do this standard track analysis, for example:
If one of the sensors is in a blue band and the other in a red band (knowing that each band is 6 degrees apart), I conclude that the twist angle is 6 degrees.
But since it is colored I can do the following: if one of the sensors marks only a peak of blue and zero values ​​in the other colors I know that it is exactly in the middle of the blue band, if the other sensor marks a peak of red and a little blue, my twist angle is not 6 degrees, but a value less than 6.
Same for if it was a spike of red and a little bit of green, the angle would not be 6, but greater than 6.
And this value a little higher or lower than 6 I can calculate based on the difference between the values ​​of the colors (which I was able to implement).

The problem is precisely the reading speed of these color sensors, and the accuracy of their reading.

I was thinking about it, do you think I could make something like a DVD player? The disk inside them rotates at high speeds and they are read by laser.