Modular portable conveyor speed controlled by Arduino

administrador's picture
Modular portable conveyor belt built with industrial components


The idea of this project is to build a miniature replica of an industrial process, in this particular case a conveyor belt, to be used in educational environments for industrial automation training using PLC, Arduino, Raspberry Pi or any other software programmable platform.

* Este articulo tambien esta disponible en Español haciendo clic aqui

Generally speaking, there are 2 well defined groups of this kind of devices: Ready to use (usually very robust , "good looking") and the "DIY" ones made of household stuff. Ready to use ones are pricey and out of the budget for some schools and institutions, also spare parts only can be obtained from the official manufacturer.

On the other side, the great majority of home made conveyor belts are built with wood and plastics (very often using low cost or recycled material). Those kind of designs are valid as a proof of concept or final course project, but are no strong enough to withstand the daily use in a classroom

The design shown here tries to get the better of the two worlds:

* Industrial appeal
* Can be assembled and disassembled several times without damage
* Can be stored in small places, easing transportation when not in use.
* Spare (generic brand) parts can be obtained relatively easily and cheap.

Pieces needed for the construction of the modular conveyor belt


To build the basic structure is, suggested to follow the procedure shown in "Build frame for mini pilot plant" published in an earlier article. In this project the additional 16 (12 for bearings, 2 for motor bracket and 2 for the control box) T slot nuts must be placed inside the slots before building the frame.

The following parts list, is presented as a reference, because is up to you to decide the final geometric dimensions (directly related to the lengths of the chosen profiles) also the amount of axles wanted along the conveyor.

* 2020 extruded aluminum T slotted profile "long"
* 2020 extruded aluminum T slotted profile "short"
* Inner T Slot Connector 90 Degree Angle
* 8mm Ball bearing with housing
* M5x8 hex Allen screw
* T-slot nut
* 8mm linear shaft
* GT2 timing belt
* NEMA 17 stepper motor
* NEMA 17 stepper motor bracket
* M3x6 hex Allen screw
* GT2 5 mm 16 teeth pulley
* GT2 8 mm 20 teeth pulley
* 1.5, 2 and 4mm hex Allen keys

Detail of the T-slot nuts inside the aluminum profile


The design was conceived to have the least amount of complex mechanical elements as possible, however, two special non trivial steps are required: cut and joint the timing belt that transfers rotation from the motor to the axle, and make the conveyor belt

Custom length time belt

If there is not a time belt of the desired length in sight, a custom one can be built using a larger one, cutting it and splicing it again to the desired length. The simplest way to accomplish it without specialized products is to sand or remove some teeth for one of the ends of the band, glue overlapped with a rubber glue (don't use super glue or the joint will be too rigid), allow the glue to dry at least 1 hour, then sew it using thread and needle to reinforce the joint. If it's possible, use a timing belt clamp to align properly both ends before gluing

To adjust the tension, move the motor/bracket set along the profile and then secure the screws

Custom made conveyor belt

To avoid the use of additional tensioners, a highly elastic material must be used for the conveyor belt, an old rubber tire tube could be used. If possible from a car, ( The bigger , the better) this provides a more regular and flat surface than smaller ones (i.e. from bikes) . Another alternative, more "good looking" but less robust, could be a rubber resistance band used in yoga and fitness.

The length of the conveyor belt must be estimated to be a little bit shorter than the distance between the farthest axles, so it will auto-tension. Cut the ends of the band in an approximate angle of 45 degrees, so it will have less resistance and smoother travel when the joint approaches to an axle. To join the ends of the band, use a rubber glue (again, don't use super glue or the joint will be too rigid).

Custom made timing belt and conveyor belt


The speed controller is able to power a stepper motor up to 2 Amps using an A4988 module. An Arduino Nano was used for automating some task, here are:

* 3-digit 7-Segment multiplexed display showing the band's speed in RMP and other messages.
* Emergency stop, once pushed, the only way to release that state is mechanically unlatching the switch and turning control speed to 0.
* Speed control from 0 to 300 RPM approx
* Direction of rotation selector

The circuit was built on a universal PCB and inside a plastic box that can be attached to one of the sides of the conveyor using screws and T slot nuts previously introduced into the slots.

To power the system, a voltage between 14 and 26 V must be applied, and is protected again polarity inversion. A socket for an RS-485 chip was added and wired to RX and TX pins for a future expansion for remote control.

Electronic box with stepper motor speed control made of an Arduino Nano and A4988 module


- Plastic bottle caps were used as test subjects on to the band. If you need to move heavier or taller objects, more axles must be added to bring more stability.

- To improve traction, add some "sticky" material to the axle that is moved by the motor. Heat shrink tube is a good candidate

- On very low RPMs considerable vibrations were observed. This phenomena happens to stepper motors when the pulse train frequency is near their natural resonance frequency. Some sort of shock absorbing material must be used between motor and bracket.

- The maximum current of the used motor is 1.2 Amps, so the current limit in the A4988 module was set u to 1 A, because this is the maximum recommended value without using an additional cooling system.

- For a more effective emergency stop, the normally close (N.C) terminal of the switch could be wired in series with the power source of the motors, so if the Arduino fails to stop the motor for some reason, the motion will stop due to lack of electricity.

- To send pulses to the A4988 module the Arduino tone() function was used, so the lowest frequency possible is around 30 Hz.


(See bottom part - Attached files)

* Complete article in PDF
* Speed controller schematic
* Source code of the program for the Arduino Nano


The following video shows the building process and working tests