I am new to all this so forgive the dumb rating.

I need to monitor the speed of a few conveyor belts, the belts are around 10ft to 50ft long and 3ft wide and has anything from heavy boxes to thin light boxes placed onto it all day long so whatever I do it needs to be able to take a bit of a shake when the heavy boxes land, if its mounted to the machine somewhere.

Note the boxes are variable in height, width, weight and distance apart on the belts. So I need to work with the belt rather than what's on the belt.

I am thinking of using Arduino (someone has suggested as the best way to interface with a computer). I know C# and PHP and some basic electronics from the 90s (collage), so if you have any other recommendations on interfacing with a computer I would welcome the input.

Ok to my question:

How or what is the best way to monitor the belts speed without anything actually touching it? Speed range 0 to 15kph.

I was thinking:

  1. Light detection? Draw or stick something to the belt which is of a light colour and when it passes a sensor of some kind it registers as on and then off when its not under the sensor. Then I can make the necessary calculations? But I can see the tape peeling off or marker wearing off quickly.

  2. A mouse like laser sensor?

?? Any ideas ??

My primary factors are:

  1. It must be robust and run all day long, 5 days a week
  2. It must update speed fairly frequently
  3. Cheaper the better
  4. Can be boxed and mounted or something

Here is what I am thinking of, but I don't know anything about what sensors does what and where to buy these sensors from (RS Electronics website seems to be down).

enter image description here

Any advice you can give me is much appreciated.


  • \$\begingroup\$ Can you mount a ferrous or magnetic target on the belt or on one of the rollers? In that case, see here: sensing.honeywell.com/products/speed_sensors \$\endgroup\$ – The Photon Aug 30 '12 at 16:35
  • \$\begingroup\$ On the rollers might be preferable; depending on whether the boxes might contain matter that could affect measurements. \$\endgroup\$ – boardbite Aug 30 '12 at 16:36
  • \$\begingroup\$ @Photon: That sounds about right, the belt is fairly tight to the track but the motors and wheel are enclosed with no access. Could you elaborate more on this process. Is there something I could glue on to the conveyor like magnetic tape? \$\endgroup\$ – Darcey Aug 30 '12 at 16:44
  • 1
    \$\begingroup\$ OpenOffice - It's free - It's the application called Draw once you have Open Office installed. The grid is adjustable and snappable. But I used photoshop for cable drawing. But you could probably do it all in OpenOffice Draw. \$\endgroup\$ – Darcey Aug 30 '12 at 22:01
  • 1
    \$\begingroup\$ You really want to do this with a shaft encoder attached directly to one of the rollers, ideally one like the drive roller that turns without slipping. Converting pulse rate proportional to roller rotation into linear velocity is simple arithmetic. The Arduino is still a pretty decent approach to interfacing, where you would use it to do the pulse rate measurement and report out speed. \$\endgroup\$ – RBerteig Aug 30 '12 at 22:02

15 km/h is 4.2 m/s, then a distance of 40 cm will take minimum 100 ms.

Place two LED/phototransistor combinations 40 cm apart, with the boxes passing between them. You can place both LEDs and phototransistors in a tube to make sure the phototransistors aren't disturbed by other light sources. You can use a modulated source signal for better noise immunity.

When the microcontroller detects an interruption of the signal (box passing) it just has to look for the same interruption from the second detector minimum 100 ms later. Convert time difference to speed.

Note that photo-interrupters like this are used everywhere in logistics and manufacturing, and an industrial strength device may give you a higher reliability, though that comes at a price.

enter image description here

This one has transmitter and receiver in the same device, and uses the reflector to bounce back the signal.

Alternatively, maybe you van work with the voltage controlling the belts motor. Like when it's a variable speed synchronous motor.

  • \$\begingroup\$ The boxes are variable in size, weight and distance apart. I'm afraid this part is not controllable. I really need it to work with the belt itself. \$\endgroup\$ – Darcey Aug 30 '12 at 16:13
  • \$\begingroup\$ @Darcey - So? Weight is irrelevant, and the idea is that whatever the spacing between 2 boxes, the second sensor will see the same pulse width. \$\endgroup\$ – stevenvh Aug 30 '12 at 16:18
  • \$\begingroup\$ @Darcey: For this suggested answer, the distance apart shouldn't matter, nor should the weight. The size -- only the height -- might be a relevant issue; and that too, you can overcome by placing the transmitter-receiver pair as low as possible. \$\endgroup\$ – boardbite Aug 30 '12 at 16:18
  • \$\begingroup\$ Sorry guys but I really need to work on the belt and not what is on it. Do sensors exist that can do this? The math behind the programming is fine I just have no idea on the electronics. \$\endgroup\$ – Darcey Aug 30 '12 at 16:22
  • \$\begingroup\$ @Stevenvh: Nice one, I will use that elsewhere but I can't apply it to this project. \$\endgroup\$ – Darcey Aug 30 '12 at 16:23

If the belt is rigidly connected to the motors/wheels that drive it, then you could measure the rotation speed of those and calculate the belt speed from that. Implementation of this could be done any way that any other rotating object is tracked, including visible or magnetic encoders, interruptors, rotary electrical encoders, etc.

  • 1
    \$\begingroup\$ This has the advantage over monitoring the belt directly that it is usually a lot easier to arrange for a shaft encoder or other measure of rotation that is hugely more robust and reliable than anything attached to the belt itself. \$\endgroup\$ – RBerteig Aug 30 '12 at 21:59
  • \$\begingroup\$ Unfortunately, he already said he doesn't have access to the motor or drive wheels. Also, this method, while easier, has the disadvantage that it can be inaccurate due to slip between belt and drive wheel. \$\endgroup\$ – lyndon Aug 31 '12 at 15:55

Steven's idea is easier, but you can also do it with a cheap webcam and OpenCV if you want to learn something new. OpenCV object tracking example

Now, I am not an expert in OpenCV, but you can put two colorful objects/stickers on the belt that an overhead fixed webcam can see (assuming they are not covered up by your boxes). As long as you know the distance between the two objects/stickers, all you need is the time passed between two detections. distance/time elapsed should give you the speed.

  • \$\begingroup\$ There was a similar question elsewhere in the forum: electronics.stackexchange.com/questions/22320/… \$\endgroup\$ – Ender Wiggins Aug 30 '12 at 16:53
  • \$\begingroup\$ This is the approach I am thinking of which is best. But I am looking for what would be the best sensor and type to do this. Webcam is a bit much, framerates, programming etc. I am googling and googling, there are hall effect sensors which seem to be magnetic based which can detect something magnetic... Is this a full on magnet or just something that is lightly magnetic? So in which case I could glue little metalic paper like strips to the conveyor at fixed points, and work it all out from there. I will also need to solder this device together for pcb to pc input. \$\endgroup\$ – Darcey Aug 30 '12 at 16:54

I find it a bit odd that you can glue various items to the belt, but you aren't allowed to let anything touch it. The simplest reliable method would be a wheel in contact with the belt and measure the speed of the wheel, but whatever...

You can go with a variant of stevenh's idea. Use a reflective opto sensor, but instead of facing across, measuring spacing between boxes, aim it up at the underside of the belt. Attach reflective tape to the belt at a fixed spacing and use the sensor to read the time between reflections and convert that to speed.

This will work, but you'll have to deal with the tape possibly peeling off over time as the belt flexes over the rollers from the impact of having boxes dropped on it.

As far as interfacing to the computer is concerned, you can use an Arduino, but you'll have to program it to read the inputs and return data to your PC. You will also have to deal with providing a clean power input, wiring connectors to your sensor and packaging the entire thing. It may be simpler to just find an industrial interface card that's ready to go out the box so you only have to deal with the sensor issues.


I know this a really old thread at this point since it came up in my search for something else, I figured it's still relevant.

My facilities run similar size belting and product in the 100,000 pieces per day range. We use a rotary position encoder on the driven rollers (e.g. Hohner Encoders), or a dual wheel setup in contact with the belt on the return side. The former is relative cheap and pretty quick depending on the code; use just have to run the math to figure out the relationship between each encoder pulse and the linear belt distance (i.e. radius of the roller x Pi / encoder pulse per revolution (also known as encoder resolution)).

The second method tends to be more accurate due to potential slippage of the drive system but it can be a pain to mount, and the math is a little more complex because you have to compensate for the size of the contact wheels which will decrease from wear over time.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.