thumbnail 1 thumbnail 1

A Brief Description

The objective of our project is to recognize different BDT coins and sort them. Primarily we have identified 1 taka, 2 taka and 5 taka coins. There are many obsolete coins like 50 paisa which are not used anymore. We tagged these type of coins as unrecognised coins. Again, the 3 types of coins that we have identified have different varieties as different coins of same value have been issued in different years. For example, there are 3 distinct types of coins of 1 taka and they are all of different design, size and weight. But each type of coin has a distinct weight. So we took the range of the weights of different types of coins and put them together with same valued coin to recognize which coin it is.

Our coin sorting machine has an automated module to collect a coin from the coin queue, a load cell to measure coins' weights, a slider to slide through the coin in the right bucket and a coin brush to sweep the coin onto the slider. The machine takes a single coin by the coin collecting module and disposes it on a platform which is connected to a load cell. Then the load cell measures the weight of the coin and decides which coin it is and the slider changes its position to the corresponding bucket. Later on a coin brush sweeps the coin onto the slider and the coin rolls into the bucket it belongs to.

The most attractive and undoubetly the most challenging part of the project was the automated coin grabing module. If you have lots of coins in hand then you dont have to put them in the machine one by one. Just put all of them into the coin queue according to its maximum ability and observe how the automated module grab one coin at a time, recognize it and put it in the right bucket. So the main objective was to reduce all the manual workloads in sorting someone's coins out.



Overall we had a focus on making something that is less costly. There was a plan to use mainly some household recycled materials to build the main body.



The whole system was automated. Once started the user does not need to make any further actions or interrupt.

We have three motors for this project namely: 'Coin Grabber', 'Coin Brush' and 'Coin Slider'.
We have a queue where we can store a good number of coins. Coins can be placed at any time.
Every time, if availavble a coin is taken from that queue using the 'Coin Grabber' servo motor. Then we have taken the initial reading of our weight sensor. After that, the coin is placed on the weight sensor. We have taken the reading again. The difference of these two reading is the weight of that coin.
We have taken such measurement three times and calculated the average weight of that coin. Now if the average weight of that coin is in the range of 1 taka, then we have placed our slider to taka 1’s box using “Coin Slider” servo motor. Same job is done for 2 and 5 taka.
If the average weight of a coin is not in any range, we placed our slider to unrecognized coins. Finally, “Coin Brush” servo motor is used to place the coin on the slider. Same job will be done for each coin.



Block Diagram
Fig1. - Block Diagram.



Le's have an inner look at the circuit components

Block Diagram
Fig2. - Connection Diagram.



1. Start

       2. Set initial position of 3 servo motors i.e. 'Coin Grabber'(150˚) , 'Coin Slider'(90˚), 'Coin Brush'(160˚)

       3. Initialize valriables 'previous', 'current', weight, 'coin_1', 'coin_2', 'coin_5', 'total_taka' to zero(0)

       4. Grab a coin from the queue and move 'Coin Grabber' from initial 150˚ to 110˚

       5. Stop the 'Coin Grabber' and read value from Load Cell Amplifier for 3 times and assign the average value to 'previous' variable

       6. Move 'Coin Grabber' from previous 110˚ to 80˚so that the coin falls on the load cell platform

       7. Read value from Load Cell Amplifier for 3 times and assign the average value to 'current' variable

       8. Take the absoute difference of the 2 varables 'previous' and 'current'

       9. Assign the result from ( ) to 'weight' variable

       10. If 'weight' falls in the range of 1 Taka Coin Then

                 11. Increase the 'coin_1' by 1.

                 12. Increase the 'total_taka' by 1.

                 13. Set the 'Coin Sider' at 55˚ so that it points towards the 1 Taka Coin Bucket

                 14. Start the 'Coin Brush' and make the coin fall on the slider

                 15. The coin will automatically go to the 1 Taka Coin Bucket

       16. Else If 'weight' falls in the range of 2 Taka Coin Then

                 17. Increase the 'coin_2' by 1.

                 18. Increase the 'total_taka' by 2.

                 19. Set the 'Coin Sider' at 75˚ so that it points towards the 2 Taka Coin Bucket

                 20. Start the 'Coin Brush' and make the coin fall on the slider

                 21. The coin will automatically go to the 2 Taka Coin Bucket

       22. Else If 'weight' falls in the range of 5 Taka Coin Then

                 23. Increase the 'coin_5' by 1.

                 24. Increase the 'total_taka' by 5.

                 25. Set the 'Coin Sider' at 95˚ so that it points towards the 5 Taka Coin Bucket

                 26. Start the 'Coin Brush' and make the coin fall on the slider

                 27. The coin will automatically go to the 5 Taka Coin Bucket

       28. Else

                 29. Mark the coin as 'Unrecognized'

                 30. Set the 'Coin Sider' at 115˚ so that it points towards the 'Unrecognized Coin' Bucket

                 31. Start the 'Coin Brush' and make the coin(if there any) fall on the slider

                 32. The coin(if there any) will automatically go to the UnrecognizedCoin Bucket

       33. Set the 'Coin Grabber' and 'Coin Brush' to their initial position

       34. Print the values of 'coin_1', 'coin_2', 'coin_5', 'total_taka'

       35. Go to (4)

36. Stop



Hardware projects are not that much easy to implement. Lots of issues arise and make the task really difficult. Every time we see the outcome of the task, we can never guess the workload behind it.



Initially, we decided that we would sort the coins by capturing images and processing the images so that we could identify the inscripted coin value. We had faced various problems while we were working with digital image processing.

a) At first, we tried 'Template matching'. The idea of 'Template Matching' was to find the template image in a whole image. It always could match if the template image was derived from the image we were going to examine. But if these two are different images it could not match. For example if a template of 5 taka coin was taken from the image of a 5 taka coin then that coin image can be detected with 100% match. But any different image of a different coin with the same 5 taka value would give a match of only 20-30%.

b) We thought if we could make the image noiseless and sharpened it might match with the template image. That's why we used thresholding and various filter for image enhancement. We used laplace transformation and sobel filter to make the edge more visible. but no transformation worked out.

c) 'Template Machine' has no support in scale and rotation issue. IF we had any image with different angle or size than the template then it was not possible to find any kind of match.

d) We also used hough transformation so that we could isolate shapes and than adding it with original image but nothing worked out. All the transformation we performed went in vain as the desired portion and neighbourhood of it are all the same. There was not any distiguishable property to detect the "coin value image". Moreover, illumination of the image had a huge effect on distorting the actual image.

e) Edge detection of coins was not possible at all. All the printed images on the coins has same color. So there was no color differece that could be corporated with edge detection.

f) The illumination of the images and background play a huge role in case of any kind of image analysis. We didnt had any way to ensure the same background color and illumination every time.

For all these reasons, we decided to give up the idea of processing images and move on to Weight Measurement.


One of our course teachers suggested us to use some kind of machine learning for the detection purpose. We started to have a view on SVM i.e. support vector machine library. But the time boundary was not that much big and as a result we could not got enough time to learn all of it apply it. Also for learning purpose we had to use almost thousands of samples of the same valued coin. But that was not practically possible for us.


As we first thought that we had to go through "Digital Image Processing" we needed heavyweight processing tasks. So, we bought 'Raspberry Pi' as our computational unit. But when we moved on to 'Weight Measurement', we realized that there was not any suitable library for interfacing 'Load Cell' with 'Raspberry Pi' but 'Arduino' has. So , We had to switch computational platform from Raspberry Pi to Arduino.


As we had to buy 'Raspberry Pi' at first go, it costed us a good amount of money. However we had to change the platform. Also one of our main component 'Load Cell' started malfunctioning and we had to buy another one. So the these expenditures were in vain and we had to pay the penalty of extra changes.


We used 500 gm load cell but the load cell we got was not up to the level. The wires connected to the load cell were too delicate, one got out of order in the middle of working before half submission date. We had to buy another immediately. Besides, we did not always get the same initial value. Then we detected that it was because of not getting the actual pressure every time. We fixed this by floating the load cell as far as we could.


We had 3 servo motors and also a load cell amplifier. And we had to power up all of them at the same time. Servo motors are typically power sensitive. They start abrupt rotation in case of power crisis. At first we decided to use an external power source to power up all the devices. But the power crisis issue arised and all the motor started to show random movements. After that we used the 5v VCC pin of the arduino. Then after some initial unwanted results they started working correctly. However, the problem still persists. Every time all three servo motors starts showing random movements at the time of bootup. And they become stable after a few times.


We wanted to make the full system automated. We wanted to create a coin queue and a coin taker will take exactly one coin at a time. It was a big challenge. We needed card board as thin as a coin might be. Eventually, we managed to do so perfectly by using trial and error process. Moreover, we had to measure and make pieces of the structure as accurate as we could. When three motors rotate, the coin taker,brush and the sliders - all the three shake the whole system. In order to make it stable, we had to work with balancing isssues.



We are a group of 5 undergraduate students of Level-4/Term-1
of Section-A2/Group-2 of Bangladesh University of Engineering and Technology (BUET).

team img

Raquib Bin Yousuf


team img

Samiul Anwar


team img

Rakibul Hasan Talukdar


team img

Firoz Ahammed


team img

Tariq Adnan




We express our gratitude to our course teacher. Their help and ispiration were a great resource of audacity to do all the hardest tasks of our project.

team img

Mohammad Saifur Rahman

Assistant Professor

team img

Md. Aashikur Rahman Azim


team img

Md. Iftekharul Islam Sakib