Revision as of 19:17, 20 December 2013

This machine sorts candy by color. It separates different colored Skittles and M&Ms pieces and puts them into individual cups. The machine is fully autonomous and will sort an entire 1.5kg/56oz bag in approx. 5 minutes. It is made of an AVR microcontroller (Arduino Uno), color sensor, distance sensor, servo actuators, plastic frame tubes and a few custom 3D printed parts. The system processing is based around pseudo-realtime programming which helps keep all the parts of the system up to date and keep the system running smoothly. Each process is designed around the notion of event driven finite-state machine (FSM) execution.

How it works

Central in the system is an Atmel ATmega328 AVR microcontroller - integrated nicely on an Arduino Uno platform. All the sensors and servo actuators connect to this board. An external 9V power supply keeps the system running. 5V and 3V3 power for the servos and board is supplied by the 5V power supply. The programming mimics a real time system where each of the four processes are state driven, which means only a short instruction performed before the system jumps to the next process.

Loading pieces

The machine uses two GWS servos for loading and sorting the pieces. A continuous rotation servo with a variable rotation speed loads pieces into predefined slots in the feed wheel. Each slot is just wide and deep enough to hold a single piece and if there is a piece stuck between the loading tube and the slot, the system will detect this (the delay in the detection of the expected slot) and reverse the rotation of the feed wheel to free the piece. In addition, to prevent pieces from clogging the top funnel and loading tube, a steel rod connected to the feed wheel will stir the pieces. There is a total of 4 slots.

Analyzing color

After the pieces have been put into individual slots, a white LED illuminates the piece and an ADJD-S311-CR999 CMOS IC with integrated RGB filters captures 3 color profiles at different angles. For the piece to be successfully identified and pass control, at least 2 of profiles have be within 3 standard deviation (three-sigma rule) of the pre-calibrated data set for Skittles or M&Ms. A RGB LED next to the feed wheel will illuminate to give a visual indication of the detected color. The feed wheel rotation is governed by a QRE1113 IR distance sensor which detects the slot depth change. This transition is used to change process state and start the color analysis at the right moment.

Sorting

When the color has been identified, the piece is dropped from the feed wheel and onto a 360-degree servo with a feeding tube attachment which guides the piece into the right cup. The piece is release from the feeding wheel just before the feeding tube is within range of the cup. This means that the piece is on its way down the tube and just as it exists the end, the servo has has had time in the meantime to get into position. This leads to increased performance as the system does not need to hang around and can move to the next cup straight away. This is purely done by timing the expected rotational velocity and no feedback is provided by the servo. The servos are the bottlenecks of the system and predominately dictates performance.

After all the pieces have been sorted and the sensor does not register any consistent data, the machine is shut down and waits for the next round.

Parts and cost

Building the machine required the following parts - the BOM (Bill-Of-Materials). There is a few parts which were 3D printed but most should be easily available.

No.

Part number

Description

Quantity

Cost

1

ARD-UNOR3

Arduino Uno R3

1

29.95USD

2

RE210-S1

Prototyping 2.54mm Pitch Board

1

2.95 USD

3

ADA-276

Switching 5VDC 1A power adapter

1

5.00 USD

4

ROB-09453

Analog Line Sensor (QRE1113) Breakout Board

1

2.95 USD

5

SEN-10701

Color Light Sensor (ADJD-S311-CR999) Evaluation Board

1

14.95 USD

6

S35-STD

GWS Robotic Continuous Rotation Servo

1

13.49 USD

7

S125-1T-2BB

GWS Sail Winch 360-degree Rotation Servo

1

19.95 USD

8

PRT-10373

Jumper Wire 3-pin 12-inch

1

1.95 USD

9

PRT-10375

Jumper Wire 5-pin 12-inch

1

1.95 USD

10

ROD-1MM

Steel Rod 15x1mm

1

0.50 USD

11

PRT-FEEDER

3D Printed Hopper/feed wheel

1

8.00 USD

12

PRT-SEEDER

3D Printed Carousel/item seeder

1

8.00 USD

13

FUNNEL

Funnel 140mm

1

3.00 USD

14

IC-TUBE

IC/compoment plastic tube 23x20x500mm

10

free/0.50 USD

15

DIN85M3x5

M3 x 5mm Slot Pan Head Screw DIN 85

20

0.08 USD

16

DIN85M3x50

M3 x 50mm Slot Pan Head Screw DIN 85

20

0.16 USD

17

DIN85M3x30

M3 x 30mm Slot Pan Head Screw DIN 85

40

0.14 USD

18

DIN125M3

M3 Washer Form A DIN 125

100

0.014 USD

19

DIN439M3

M3 Thin Nut DIN 439

100

0.048 USD

Total

127.04 USD

Download

Code

The C code for the project is available below. It is Arduino IDE compatible and opens all the required libraries right avail from the same directory, no need to install any libraries.

The archive includes both the main code and a calibration routine code used to learn a new set of colors. Open the "sorting_machine_*.ino" file to let the Arduino application load the rest of the required files.