DESIGN AND FABRICATION OF AUTOMATIC SOIL SIEVE SHAKER English Critic
DESIGN AND FABRICATION OF AUTOMATIC SOIL SIEVE SHAKER English Critic
APPROVAL SHEET
PANEL OF EXAMINERS
Approved by the committee on oral examination with the grade of ____.
Accepted and approved for the partial fulfillment of the requirement for the
degree in Bachelor of Science in Civil Engineering.
i
Republic of the Philippines Tarlac State University College of
Engineering and Technology
DEPARTMENT OF CIVIL ENGINEERING
Tarlac City
Submitted by:
CEBALLOS, Josephine S.
CHALWANGCO, Scott Jordan M.
DUENAS, Christian G.
FERNANDO, Jenwin Unich M.
PUGAT, Gail Andrea E.
VALLENTE, Myra Bernadette G.
Submitted to:
ii
ACKNOWLEDGEMENT
individuals for this project study would not have been possible without the guidance and
the help who in one way or another contributed and extended their valuable assistance in
Engr. Randy G. Policarpio, their project study instructor, for giving them helpful
ideas on this project study, motivating encouragement, and for his continuous support he
had given to their group. Also, for helping them during the research and for giving them
Engr. Yoshio L. Otsuka, their project study adviser, for the guidance and
knowledge and support to their group, for his patience, for his generosity for lending them
numerous soil laboratory equipment and letting them use the soil laboratory, and for his
Engr. Marie Wendy J. Franny, for advising and demonstrating the application of
Engr. Aldrin Joar Taduran, for his knowledge on Arduino and other electrical
related things;
iii
Engr. Fernando Lacsina and Engr. Don Loiue A. Sanvictores, for helping
Engr. Antonio Bautista, for lending them laboratory equipment and allowing
Highways;
manuscript;
Mr. & Mrs. Ferdinand Pugat, Mrs. Prima Ceballos, Mr. & Mrs. Edgardo
Duenas, and Mr. and Mrs. Gener S. Chalwangco, and their family for supervising and
hosting their group during day and night work doing their project study in their houses
To our parents, sisters, brothers, and friends, for their unending support,
extensive kindness and broad understanding regarding our needs in preparing our project
study.
iv
DEDICATION
Lastly, to God, the almighty, for giving us overflowing blessings, strength, good health,
and determination to finish our study, and to explore beyond our limits.
Philippians 4:13
v
ABSTRACT
RESEARCHERS:
CEBALLOS, JOSEPHINE S.
CHALWANGCO, SCOTT JORDAN M.
DUENAS, CHRISTIAN G.
FERNANDO, JENWIN UNICH M.
PUGAT, GAIL ANDREA E.
VALLENTE, MYRA BERNADETTE G.
Since the instrument will be donated to Tarlac State University after the research study,
engineering students will have an additional apparatus to use in laboratory tests and
experiments for their subjects like Soil Mechanics and Construction Materials.
vi
SIGNIFICANCE OF THE STUDY:
1.) To Develop and Fabricate an Automatic Soil Sieve Shaker Apparatus that specifically
aims to:
Determine the Optimum Time required for shaking using different modes of
movement.
o Tilting
o Rotating
This study involves descriptive method of research focuses on the features and
was applied to determine the optimum time required for shaking using different modes of
movement like Tilting, Rotating and combination of Tilting and rotation. These
movements helped the researchers achieve the objectives of the study. The researchers
conducted trials of testing not only with the Fabricated Apparatus but also the Manually
Operated Sieve Shaker and another Automated Sieve Shaker for comparison of result.
vii
SUMMARY OF FINDINGS:
2. Using the paired difference t-test and tested at 0.05 level of significance, the
researchers found out that the mass retained in the fabricated apparatus is greater than
3. In the gradation testing that the researchers conducted using the fabricated automatic
soil sieve shaker by different modes of movement, results showed that there is a
significant linear relationship between the predictor variable(time) and the response
variable (mass retained). Pearson’s r and Linear Regression was used in validating the
results.
4. The total project cost was Php 33,298.00 which is subject to increase if further
CONCLUSIONS:
1. There was a linear relationship between the mass retained (response variable) and time
(predictor variable).
2. The use of fabricated automatic soil sieve shaker resulted to a more convenient and
RECOMMENDATIONS:
Base on the finding of this study and conclusion drawn above, the following
recommendation made:
1. Innovate the existing apparatus and make it more convenient to carry or transport from
2. The researchers also recommend the use of vibrational sieving in laboratory sieve
shaker which creates a rapid circular movement and a vertical throwing motion. This
mechanism causes the particles to be more uniformly distributed across the entire
sieving surface. Moreover, this enables them to be compared to the sieve apertures in
all probable dimensions as being thrown into the air where they ideally change their
orientation.
APPROVAL SHEET.......................................................................................................... i
TITLE PAGE..................................................................................................................... ii
ACKNOWLEDGEMENT........................................................................................... iii-iv
DEDICATION ................................................................................................................... v
ABSTRACT................................................................................................................... vi-ix
Fig. 15 3D Illustration..................................................................................................... 25
Table 3. Table for the average mass retained results obtained from the Fabricated
tilt........................................................................................................................ 32
Table 3.1 Table for the average mass retained results obtained from the Fabricated
is rotation only.................................................................................................. 33
Table 3.2 Table for the average mass retained results obtained from the
Table 4. Table for the average mass retained results obtained from the
Definition of Terms........................................................................................................... 5
CHAPTER 2: REVIEW OF RELATED LITERATURE AND STUDIES.................. 6
Test Procedure.................................................................................................................. 27
............................................................................................................................................ 33
RECOMMENDATION .................................................................................................. 50
Findings ........................................................................................................................... 50
Conclusion ....................................................................................................................... 51
Recommendation.............................................................................................................. 51
BIBLIOGRAPHY.............................................................................................................. 53
APPENDICES ................................................................................................................. 54
Chapter 1
Introduction
The concept of sieve shaking began from ancient Egyptians as they sieve grains as
part of their living. It was then considered as the backbone of particle size technology.
Throughout its history, sieving has been deployed in many fields (mostly used for grading
These pre-requisite set parameters for sieve types. Sieving’s continuing popularity
reference and cost effectiveness. Later instructions for manually sieved grain became more
detailed and the following processes are now being prescribed by ASTM.
Sieve Analysis or Gradation Test is a procedure used to access the particle size
distribution of granular materials (mostly Sand or Gravels) and the fineness modulus of
aggregates. Concrete mix designs can be influenced by the size of aggregates to be used.
Particle size distribution, also known as gradation, is used to classify soils for engineering
and agricultural purposes, since particle size influences how fast or slow water or other
A sieve analysis (or gradation test) is a practice or procedure used (commonly used
allowing the material to pass through a series of sieves of progressively smaller mesh size
1
and weighing the amount of material that is retained by each sieve as a fraction of the
whole mass.
The size distribution is often of critical importance to the way the material
performs in use. A sieve analysis can be performed on any type of non-organic or organic
granular materials including sands, crushed rock, clays, granite, coal, soil, a wide range of
manufactured powders, grain and seeds, down to a minimum size depending on the exact
method. Being such a simple technique of particle sizing, it is probably the most common.
typical sieve analysis involves a nested column of sieves with wire mesh cloth (screen). A
representative weighed sample is poured into the top sieve which has the largest screen
openings. Each lower sieve in the column has smaller openings than the one above. At the
test sieve. The column of sieves is typically placed in a sieve shaker. The shaker shakes
the column, usually for some fixed amount of time. After the shaking is complete, the
material on each sieve is weighed. The mass of the sample of each sieve is then divided by
the total mass to give a percentage retained on each sieve. The size of the average particle
on each sieve is then analyzed to get a cut-off point or specific size range, which is then
captured on a screen.
2
STATEMENT OF THE PROBLEM
In the subjects like Soil Mechanics and Construction Materials of the fourth year
students here in Tarlac State University, students are required to perform various
laboratory tests and experiments. Most of those requires sieve analysis in order to perform
those experiments. However, it takes a lot of time and effort in performing sieve analysis
without an apparatus.
The school currently has 2 apparatuses, one is manually operated and the other is
an automated sieve shaker, yet these apparatuses have lost most of its parts. Therefore, by
fabricating an Automated Soil Sieve Shaker, the school will have an additional apparatus
1. To Develop and Fabricate an Automatic Soil Sieve Shaker Apparatus that specifically
aims to:
Determine the Optimum Time required for shaking using different modes of
movement.
o Tilting
o Rotating
3
SIGNIFICANCE OF THE STUDY
By successfully fabricating the Automatic Soil Sieve Shaker, the school will have
an additional apparatus in its soil laboratory. Students practicing the sieve process and
studying sieve analysis and its significance on other experiments will be much easier as it
offers lesser work. Moreover, the apparatus can do its purpose faster and unattended with
just a click of the buttons. The following specifications and features are implemented
under the supervision of Engr. Yoshio Otsuka, Engr. Aldrin Taduran, Engr. Don
Since the instrument will be donated to Tarlac State University after the research
study, engineering students will have an additional apparatus to use in laboratory tests and
experiments for their subjects like Soil Mechanics and Construction Materials.
The study focused on designing and developing a sieve shaker that improves the
effectiveness of the sieve process. The sieve shaker offers a variety of features like
Selector Switch for the control of Speed and Digital Timer to set how long the sieving
process is. Since it is automated, it is expected that the results are consistent. It can lift up
to 10 sieves depending on what mode of speed will be used. Most of the features of the
apparatus are implemented under the guidance of the Mechanical and Electronic parts of
the instrument.
4
The apparatus has two platforms; the bottom part is to provide a tilting movement
while the upper part is to provide a rotation movement to properly sieve the soil. If
DEFINITION OF TERMS
Sieve Analysis - is the procedure used to access the particle size distribution of granular
Soil Mechanics - is the study about the properties and behaviour of soil.
organization that develops and publishes voluntary consensus technical standards for a
finding maximum amount of aggregates lying in one particular size of sieve of given total
aggregate.
Silt - is the granular material of a size between sand and clay. Silt may occur as a soil
(often mixed with sand or clay) or as sediment mixed in suspension with water.
Sand - is the granular material composed of finely divided rock and mineral particles. It is
defined by size, being finer than gravel and coarser than silt.
5
Chapter 2
This chapter enumerates the different related studies and literature that can be used
The Tarlac State University has an available Manual Operated Sieve Shaker for
students to use. It can fit a maximum of 7 sieves and it is operated by manually spinning
the handle.
6
Existing Manually Operated Sieve Shaker in the DPWH
The Department of Public Works and Highways has a Manual Operated Sieve
Shaker mainly used for testing and comparison. It is identical to the Manual Operated
Sieve Shaker that the Soil Laboratory of Tarlac State University owns. It can also fit a
The Department of Public Works and Highways also has an Automated Sieve
Shaker. It can fit a maximum of 8 sieves and it is operated by setting up the duration of the
7
Laboratory Sieve Shaker
The Laboratory Sieve Shaker will quickly and efficiently size laboratory products,
thus allowing the determination of various important treatment factors. Results of sizing
tests and analyses of sized products will determine such important factors. (L D Michaud)
Automatic Sieve Shaker for determining Soil Aggregate Stability and Dimension
vertical oscillation system. It aim to use the device in determining the soil aggregate
stability and dimensional distribution. According to Dell’Aquilla R., the proposed sieve-
shaker with the introduction of some innovations realizes the submersion and levelling of
the soil samples using a lifter to support the containers with the water. The purpose of this
note is to describe the construction and performance of the prototype currently used in the
The study developed a motor operated-sand sifter. It described the main features of
the equipment in the aspect of preparation, design, materials and cost, procedure of
assembly and operation and parts and functions of the equipment. An experimental
research method was used, a employing the actual assembly and direct observation of the
performance of the equipment. The study was conducted in Bohol Island State University,
where selected mechanical engineering students did the actual testing with the supervision
of the researchers. The results were based on actual observation and data gathered during
the experiment. The kind of sand sifted was 87.30% passing by volume through the sifter.
8
The fine aggregates comprise 87.30% of the total mixture while the bigger sizes comprise
12.70% of the total mixture. The bigger sizes of sand that remained in the sifter are
removed automatically passing through the sifter opening. It was concluded that motor-
operated sand sifter was very efficient in sand sifting as compared to manually operated
The particle size analysis of a soil sample involves determining the percentage by
mass of particles within the different size ranges. The particle size distribution of a coarse
soil can be determined by the method of sieving. The soil sample is being passed through
a series of standard test sieves having successively smaller mesh sizes. The mass of soil
retained in each sieve is determined and the cumulative percentage by mass passing each
sieve is calculated. (R. F. Craig, Craig’s Soil Mechanics 7th Edition, p.6)
9
Let Wi be the weight of soil retained on the ith sieve from the top of the nest of sieves and
W be the total soil weight. (Muni Budhu, Soil Mechanics and Foundations 3rd Edition,
2011, p.5)
Mi
% retained on ith sieve= ×100
M
THE SOFTWARE/PROGRAM
Arduino
electronics. Arduino boards are able to read inputs - light on a sensor, a finger on a button,
or a Twitter message - and turn it into an output - activating a motor, turning on an LED,
The researcher’s apparatus need this kind of technology or an application that will
read inputs by incorporating timer that can work through the use of Arduino
sending a set of instructions to the microcontroller. This would work using its programming
Over the years, Arduino has been the brain of thousands of projects- from
10
everyday objects to complex scientific instruments. A worldwide community of makers -
students, hobbyists, artists, programmers, and professionals - has gathered around this
accessible knowledge that can be of great help to novices and experts alike.
tool for fast prototyping, even for students without a deep background in
11
Fig. 4 Ardruino UNO Microcontroller
(datasheet ). It has 14 digital input/output pins (of which 6 can be used as PWM outputs),
6 analog inputs, a 16 MHz quartz crystal, a USB connection, a power jack, an ICSP
header and a reset button. It contains everything needed to support the microcontroller;
simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter or
Technical Specifications:
Microcontroller: ATmega328
Operating Voltage: 5V
Input Voltage (recommended limits): 7-12V,6-20V
Digital I/O Pins: 14 (of which 6 provide PWM output)
Analog Input Pins: 6
DC Current per I/O Pin: 40 mA
DC Current for 3.3V Pin: 50 mA
Flash Memory: 32 KB of which 0.5 KB used by bootloader
SRAM: 2 KB (ATmega328)
EEPROM: 1 KB
(ATmega328),
Clock Speed
16mhz
12
Fig. 5 Ardruino MEGA Microcontroller)
Arduino Mega Microcontroller – the 2nd brain of our set-up. Arduino Mega is a
pins (of which 15 can be used as PWM outputs), 16 analog inputs, 4 UARTs (hardware
serial ports), a 16 MHz quartz oscillator, a USB connection, a power jack, an ICSP header
and a reset button. It contains everything needed to support the microcontroller; simply
battery to get started. The Mega board is compatible with the most shields designed for the
Technical Specifications:
Microcontroller: ATmega2560
Operating Voltage: 5V
Input Voltage (recommended & limits): 7-12V,6-20V
Digital I/O Pins: 54 (of which 15 provide PWM output)
Analog Input Pins: 16
DC Current per I/O Pin: 40 mA
DC Current for 3.3V Pin: 50 mA
Flash Memory: 256 KB of which 8 KB used by bootloader
SRAM: 8 KB (ATmega2560)
EEPROM: 4 KB (ATmega2560), Clock Speed 16mhz
Research Paradigm
13
INPUT PROCESS OUTPUT
b. performance compared
with the manual apparatus
14
Chapter 3
This chapter presents the outline of the necessary procedures that were followed in
the study. It also describes the research design, methods, and instrument used to carry out
data. Moreover, the statistical treatment is also present to obtain the objective of this
study.
This study involves descriptive method of research which focuses on both features
research has applied to determine the functionality of the fabricated apparatus using
different modes of movement like Tilting, Rotating and combination of Tilting and
rotation, these movement helped the researchers to achieve the objectives of the study.
The researchers conducted trials of testing not only with the Fabricated Apparatus but also
the Manually Operated Sieve Shaker and another Automated Sieve Shaker for comparison
of result.
in the process of sieve shaking. The features and functions of the modified instrument are
based on the specifications indicated in the ASTM D442 which is the Standard Test
Method for Particle-Size Analysis of Soils placed in a sieve shaker. The time being set, the
speed of shaking, and the tilting mode are programmed by using a microcontroller.
15
Parts and Dimensions of the Apparatus
The figure below illustrates the parts and dimensions of the Fabricated Automatic
27.5 in
46 in
4.8 in
7.5 in
18.5 in
Fig. 6 Dimensions
The Fabricated Automatic Soil Sieve Shaker with the total height of 46” which
consist of threaded rod with a diameter of 3/8” and 70 cm in height that connecting the
cover plate of 28x28 cm and acrylic plate of 30x40 cm as shown in fig.
16
Fig. 7 Front View
17
Fig. 8 Back View
18
Parts of the Fabricated Automatic Soil Sieve Shaker
3. Rotating plate – It serves as the base of the sieve. This plate rotates 360o .
5. Tilting Plate – This base plate tilts to help the first base plate to sieve the soil.
7. Base Plate - The base of the machine itself. It provides support for the rotating and
tilting plate
19
Fig. 9 Threaded Rod
The 1st Set of rod can fit 10-8 sieves, 2nd Set of rod can fit 7-5 sieves only, and 3rd Set of
20
The figure below shows the cover on the front of a device that contains the keypad,
display, and all the buttons and switches of the apparatus.
21
Electronic Parts of the Fabricated Automatic Soil Sieve Shaker
A. On / Off Button - switch that connects the power supply and the instrument.
B. Reset Button - clears the memory and reboots the machine forcibly.
D. Low Speed Button – It is used to make a circular movement with 313 rpm.
E. Mid Speed Button - It is used to make a circular movement with 357 rpm.
F. High Speed Button - It is used to make a circular movement with 400 rpm.
H. Numeric Keys – they are used to enter the time needed for the instrument to function.
J. Tilt Mode Button - It is used to activate the tilting movement in the instrument.
22
Fig. 12 Block Diagram
23
Fig. 13 Schematic Circuits Diagram of the Fabricated Automatic Soil Sieve Shaker
24
Fig. 14 Exploded View of the Fabricated Automatic Soil Sieve Shaker
25
Fig. 15 3D Illustration of FABRICATION OF AUTOMATIC SOIL SIEVE SHAKER
26
Instruction Fabrication of Automatic Soil Sieve Shaker
In order to achieve the best results, the user must secure that the apparatus is properly set
up before starting the test procedure. The parts needed for the instrument to function
effectively must be supervised and must also be properly prepared. The wirings and all
other connections must be handled carefully. Before operating the apparatus, the user must
OPERATION
Power Up
After connecting the instrument to its power source, turn it on using the On / Off switch
located in front of the device. The LCD display will light up as an indication that it is
Adjusting Instruction
Select the sieves with mesh sizes that will supply the information needed for the test and
place them beginning with a pan on the bottom then the finest sieve followed by
increasingly coarser sieves with the coarsest sieve on top. Place a sample into the top sieve
and place the cover of the sieve on it. Put the cover plate at the top of the cover of the
sieve to compress the sieve and hold them in place. Install the rod on four sides to secure
the sieve stack, clamp it with wing nuts make sure that everything is in place properly.
27
Test Procedures
1. Gather the Materials that will be used such as a weighing scale, large pan, brush, trowel,
and a pitcher. As for the sieve, use sieve number 4, 10, 20, 40, 60, 100, 200 and a pan as
2. Prepare the Sample that will be sieved. A Mix of 200 grams of Sand, 250 grams of Clay
3. Place the sieve stack with increasing mesh size on the collecting pan.
4. Use mid speed, select okay and input 5 minutes on the timer then select start. The
sieving process will stop automatically after the set process time has elapsed. Wait for 3-5
minutes then set it again for another 5 minutes to complete the 10 minutes needed. Do this
5. Remove the sieves on the shaker and weigh each sieve on the Weighing Scale then
In case something went wrong, press the reset button to clear the saved data in the
program. The procedure will be operated from the start once reset is conducted.
PRECAUTIONS
1. Before conducting the test procedure, make sure that the parts needed for the
components.
2. The user must check if the wirings are all connected and are functioning efficiently.
28
3. The wirings must be properly handled to avoid glitches.
4. Before conducting another test, if the instrument is unused, the user must unplug the
5. After using the device, the user must turn off all the switches to prevent any
malfunction.
10. Be aware of the danger of electrical shocks from direct and indirect contact due to
11. When operating check there no conditions of danger. Immediately stop the machine
12. For the operator’s safety do not touch any part of the apparatus when testing.
TROUBLESHOOTING
Software
1. When the program crashes or the LCD display shows unusual characters, the user must
reset the apparatus by pressing reset button. If this does not resolve the problem, circuit
2. If modifications in the Arduino program are desired, the program stored in the
29
Calculations
In conducting sieve analysis or gradation test, the mass retained of the soil sample in every
number of sieves must be known for each trial. The obtained values will be used to
validate the functionality of the fabricated apparatus using different modes of movement:
After gathering the results, compute the average mass retained of the soil sample in every
∑ xi
average mass retained= i =1
n
n
Where: ∑ x i=∑ of terms
i=1
n=number of terms
1
2
3
4
5
6
7
8
9
10
Table 2
apparatus, the data for the mass retained in the pan using the apparatus for the tilt
only mode was compared to the mass retained using the manually operated sieve
shaker. The data were analyzed using the paired difference t-test and tested at 0.05
Ho: µa= µm (The mass retained in the fabricated apparatus at different time is
the same as the mass retained in the manually operated sieve shaker.
Ha: µa > µm (The mass retained in the fabricated apparatus is greater than the
2) The optimum time required for shaking at different modes was determined
31
by establishing the relationship between the mass retained and the time for shaking.
The correlation among the two variables was determined using the Pearson’s r. The
regression analysis was used to determine the functional relationship between the
two variables. The time used in shaking was the predictor variable and the mass
retained in pan as the response variable. The fitted line was tested at 0.05 level of
Ho: β=0 (There is no linear relationship between time and mass retained.)
Ho: β≠0 (There is linear relationship between time and mass retained.)
The fitted line was used to determine the optimum for sieving the mass
retained in the manually operated sieve shaker. This mass retained was used to
predict the time at different modes using the linear relationship obtained.
The data were processed using the Analysis Tool Pak of Microsoft Excel
2016. The summary output of Excel was presented to provide the statistical tests of
32
Chapter 4
This chapter presents, analyzes and interprets the gathered data as well as the
results obtained from the experiments. The data shown was obtained by conducting
SIEVE
#4 #10 #20 #40 #60 #100 #200 PAN
NO.
TIME MASS RETAINED TOTAL
1 50.73 30.33 264.80 54.40 50.30 35.80 12.93 0.60 499.90
2 50.17 15.97 248.20 72.20 54.33 41.23 16.83 0.97 499.90
3 50.03 11.80 208.20 85.03 77.10 47.00 19.27 1.47 499.90
4 50.00 11.43 163.93 105.97 88.97 52.70 24.23 2.60 499.83
5 50.00 11.20 148.17 113.07 94.10 53.70 26.53 3.07 499.83
6 50.00 11.13 139.70 118.27 95.37 53.93 28.13 3.30 499.83
7 50.00 11.10 131.03 119.60 97.80 55.43 31.17 3.67 499.80
8 50.00 11.10 126.77 119.73 99.57 55.57 33.23 3.77 499.73
9 50.00 11.07 125.10 119.90 100.30 55.67 33.60 4.10 499.73
10 50.00 11.00 123.63 119.93 100.93 56.13 33.90 4.20 499.73
The Researchers conducted sieve analysis or gradation test in Tarlac State University
(College of Engineering and Technology) using the Fabricated Automatic Soil Sieve Shaker and
the Manually Operated Sieve Shaker. The average mass retained results obtained from the
33
E NO.
TOTA
TIME MASS RETAINED L
1 59.33 191.70 222.10 15.53 7.67 2.13 1.17 0.27 499.90
2 54.87 150.23 257.40 23.53 8.70 3.03 1.83 0.27 499.87
3 53.73 116.50 281.93 31.70 9.77 3.40 2.40 0.37 499.80
4 51.70 86.10 305.90 38.47 10.67 3.93 2.60 0.40 499.77
5 51.07 63.53 323.00 42.30 12.27 4.20 2.87 0.50 499.73
6 50.07 52.03 331.00 44.47 13.83 4.47 3.30 0.57 499.73
7 50.00 35.93 342.23 48.67 14.20 4.57 3.50 0.63 499.73
8 50.00 26.47 344.20 54.57 15.27 4.73 3.73 0.73 499.70
9 50.00 16.40 350.17 56.97 16.43 4.93 4.00 0.80 499.70
10 50.00 13.27 350.73 58.13 17.10 5.23 4.33 0.87 499.67
XSIEV
#4 #10 #20 #40 #60 #100 #200 PAN
E NO.
34
TIME MASS RETAINED TOTAL
SIEVE
#4 #10 #20 #40 #60 #100 #200 PAN
NO.
TIME MASS RETAINED TOTAL
Soil Sieve Shaker, the data for the mass retained in the pan using the
35
apparatus for the tilt only mode was compared to the mass retained using the
manually operated sieve shaker. The data were analyzed using the paired
MASS RETAINED
TIME APPARATUS MANUAL DIFFERENCE
1 0.30 0.30 0.00
2 0.70 0.37 0.33
3 1.10 0.53 0.57
4 2.17 0.97 1.20
5 2.73 1.63 1.10
6 3.03 2.07 0.97
7 3.33 2.40 0.93
8 3.63 2.77 0.87
N 9Mean Std. deviation
3.80 Std. deviation
3.07 df 0.73 t
Difference (Fabricated (Manually
10 3.93
Apparatus) 3.40
Operated 0.53
apparatus)
10 0.72 1.342 1.161 9 6.190
Formulation of Hypotheses:
different time is the same as the mass retained in the manually operated
sieve shaker.
36
Level of Significance
α=0.05
Statistical Results
t = 6.190
Conclusion:
37
Statistical Analysis
The optimum time required for shaking at different modes was determining
the relationship between the mass retained and time for shaking. The
correlation among the two variables was determined using the Pearson’s r.
between the two variables. The time used in shaking was the predictor
AVERAGE MASS
TIME (x) RETAINED
1 0.60
2 0.97
3 1.47
4 2.60
5 3.07
6 3.30
7 3.67
8 3.77
9 4.10
10 4.20
Table 4. The Average Mass Retained in the pan for rotation and tilt based on the time of
sieving.
38
Formulation of Hypotheses:
The linear relationship among the variable are established on the ff.:
mass retained.
Ha: β≠0: There is a significant linear relationship between time and mass
retained.
Level of Significance
α=0.05
Statistical Results
Regression Statistics
Multiple R 0.96
R Square 0.93
Adjusted R Square 0.92
Standard Error 0.38
Observations 10
ANOVA
Significance
df SS MS F
F
Regression 1 14.54 14.54 102.98 7.60557E-06
Residual 8 1.13 0.14
Total 9 15.67
Lowe Uppe
Uppe
Coefficient Standar P- Lower r r
t Stat r
s d Error value 95% 95.0 95.0
95%
% %
Intercept 0.4644 0.26 1.81 0.11 -0.13 1.06 -0.13 1.06
7.61E
time (x) 0.04 10.15 0.32 0.52 0.32 0.52
0.4198 -06
39
PREDICTED MASS RETAINED
With the use of “95% Critical Value” table for “r” with df=n-2=10-2=8
40
Decision: Reject the null hypothesis Ho.
Conclusion
(x) and mass retained(y) in the sieve because the correlation coefficient (r)=0.96 is
Because “r” is significant and the scatterplot(line fit graph) shows a linear
trend line , the regression line can be used to predict the mass retained .
41
Fabricated Automatic Soil Sieve Shaker
Average MASS
TIME (x) RETAINED
1 0.27
2 0.27
3 0.37
4 0.40
5 0.50
6 0.57
7 0.63
8 0.73
9 0.80
10 0.87
Table 2. The Average Mass Retained in the pan for rotation only based on the time of
sieving.
Formulation of Hypotheses:
The linear relationship among the variable are established on the ff.:
Ho: β=0: There is no significant linear relationship between time and mass
retained.
Ha: β≠0: There is a significant linear relationship between time and mass
retained.
42
Level of Significance
α=0.05
Statistical Results
Regression Statistics
Multiple R 0.99
R Square 0.99
Adjusted R Square 0.99
Standard Error 0.02
Observations 10
ANOVA
Significance
df SS MS F F
Regression 1 0.42 0.42 726.71 3.86E-09
Residual 8 0.00 0.00
Total 9 0.42
Lowe Uppe
Uppe
Coefficient Standar Lower r r
t Stat P-value r
s d Error 95% 95.0 95.0
95%
% %
Intercept 0.1489 0.02 9.10 1.71E-05 0.11 0.19 0.11 0.19
TIME 0.0711 0.00 26.96 3.86E-09 0.07 0.08 0.07 0.08
RESIDUAL OUTPUT
43
8 0.72 0.02
9 0.79 0.01
10 0.86 0.01
With the use of “95% Critical Value” table for “r” with df=n-2=10-2=8
44
Conclusion
X Average MASS
TIME (x) RETAINED
1 0.30
2 0.70
3 1.10
4 2.17
5 2.73
6 3.03
7 3.33
8 3.63
9 3.80
10 3.93
Table 2. The Average Mass Retained in the pan for tilt only based on the time of sieving.
45
Formulation of Hypotheses:
The linear relationship among the variable are established on the ff.:
Ho: β=0: There is no significant linear relationship between time and mass
retained.
Ha: β≠0: There is a significant linear relationship between time and mass
retained.
Level of Significance
α=0.05
Statistical Results
Regression Statistics
Multiple R 0.97
R Square 0.94
Adjusted R Square 0.93
Standard Error 0.35
Observations 10
ANOVA
Significance
Df SS MS F
F
Regression 1 15.22 15.22 123.25 3.87E-06
Residual 8 0.99 0.12
Total 9 16.21
46
r r
r
s d Error 95% 95.0 95.0
95%
% %
0.65578
Intercept
0.1111 0.24 0.46 1 -0.44 0.66 -0.44 0.66
TIME 0.4295 0.04 11.10 3.87E-06 0.34 0.52 0.34 0.52
PREDICTED MASS
RETAINED
Line Fit
TIME vs. MASS RETAINED Graph
(tilt only) (fig.2)
12.00
The line of best fit is
10.00
y=0.1111 + 0.4295x
MASS RETAINED
8.00
Mass Retained
6.00 Linear(Predicted Mass With the
Retained)
4.00 use of
2.00
0.00 47
0 f(x)
2 =0 4 6 8 10 12
R² = 0
TIME (minutes)
“95% Critical Value” table for “r” with df=n-2=10-2=8
Conclusion
In determining the optimum time for shaking in the fabricated automatic soil
sieve shaker.
48
Average MASS
RETAINED Average MASS
TIME (x) (modified apparatus) RETAINED
(manual)
1 0.30 0.30
2 0.70 0.37
3 1.10 0.53
4 2.17 0.97
5 2.73 1.63
6 3.03 2.07
7 3.33 2.40
8 3.63 2.77
9 3.80 3.07
10 3.93 3.40
Table 2. The Average Mass Retained in the pan for tilt only based on the time of sieving.
The researchers can use the equation line of best fit to predict the optimum time of
The researchers used the previous equation line of best fit in tilt only,
y=0.1111 + 0.4295x
Let Manually Operated (mass retained in pan for 10 minutes) is equal to y..
Given: y=3.4 grams
x = optimum time
3.40=0.0923 + 2.1864(x)
X= 7.66 minutes
Average MASS Average MASS
RETAINED RETAINED
TIME (x) (fabricated apparatus) (manually operated
apparatus)
1 0.30 0.30
2 0.70 0.37
3 1.10 0.53
4 2.17 0.97
5 2.73 1.63
6 3.03 2.07
7 3.33
49
2.40
8 3.63 2.77
9 3.80 3.07
10 3.93 3.40
Conclusion
mins time of manually operated, therefore the optimum time of shaking in the
Chapter 5
This chapter summarizes the result of the study, the conclusions obtained from the
results, and the recommendations to improve and show how effective the apparatus in
50
fulfilling its objectives. It also presents the statistical result for the validation of the
results.
SUMMARY OF FINDINGS:
6. Using the paired difference t-test and tested at 0.05 level of significance, the
researchers found out that the mass retained in the fabricated apparatus is greater than
7. In the gradation testing that the researchers conducted using the fabricated automatic
soil sieve shaker by different modes of movement, results showed that there is a
significant linear relationship between the predictor variable(time) and the response
variable (mass retained). Pearson’s r and Linear Regression was used in validating the
results.
8. The total project cost was Php 33,298.00 which is subject to increase if further
CONCLUSIONS:
3. There was a linear relationship between the mass retained (response variable) and time
(predictor variable).
4. The use of fabricated automatic soil sieve shaker resulted to a more convenient and
51
less-time consuming procedure of sieve analysis/gradation test in comparison with the
Recommendation
Based on the finding of this study and conclusion drawn above, the following
recommendation made:
1. Innovate the existing apparatus and make it more convenient to carry or transport from
one place to another. Easy operation, low noise, light weight, no need to fix, height
2. The researchers also recommend the use of vibrational sieving in laboratory sieve
shaker which creates a rapid circular movement and a vertical throwing motion. This
mechanism causes the particles to be more uniformly distributed across the entire sieving
surface. Moreover, this enables them to be compared to the sieve apertures in all probable
dimensions as being thrown into the air where they ideally change their orientation.
accessories have to fulfill the requirements of national and international standards. This
means that test sieves, sieve shakers and all other measurement instruments (e.g. scales)
which are used for the characterization of particle distributions have to be calibrated and
subjected to test agent monitoring as part of the quality management system. Apart from
that, it is absolutely necessary to carry out the sample preparation with great care. It is
only that time it is possible to achieve sieving results which allow a reliable
characterization of a product.
52
This research recommends for those who will develop this kind of study.
BIBLIOGRAPHY
A. References:
R. F. Craig, Craig’s Soil Mechanics 7th Edition, p.6
Muni Budhu, Soil Mechanics and Foundations 3rd Edition, 2011, p.5
B. Websites:
53
911Metallurgist
(https://www.911metallurgist.com/blog/author/david/page/99)
Motor-Operated Sand Sifter Juanito M. Origines Jr., Anacleta K. Perez, Dario Gawala
(https://www.researchgate.net/publication/272715498_Motor_-_Operated_Sand_Sifter)
Automatic Sieve Shaker for determining Soil Aggregate Stability and Dimension using a
(https://www.agronomy.it/index.php/agro/article/view/ija.2007.401)
Arduino
(https://www.arduino.cc)
54
APPENDICES
55
APPENDIX A:
PHOTOS
CONSULTATION
56
PLANT VISIT AT DPWH
57
TESTING AND GATHERING OF DATA
TRIAL USING MANUAL OPERATED SIEVE SHAKER
58
TRIAL USING AUTOMATIC SIEVE SHAKER (DPWH)
59
TRIAL USING FABRICATED AUTOMATIC SOIL SIEVE SHAKER
60
CANVASSING AND BUYING OF MATERIALS
61
CONSTRUCTION OF THE INSTRUMENT
62
63
APPENDIX B:
PROJECT
LAY-OUT
64
46 in
4.8 in
7.5 in
6 in
15 in
20 in
65
WING NUTS
COVER PLATE
THREADED ROD
SIEVES
RUBBER
SIEVE PLATE
BEARINGS
SHAFTS
SPROCKET & CHAIN
TILTING PLATE
MOTOR B
PILLOW BLOCK
SPRING
MOTOR A
BASE PLATE
ANGLE BAR
GI SHEET
CONTROLLER PANEL
LOWER PLATE
66
APPENDIX C:
DETAILED
PROJECT COST
67
QUANTIT UNIT
ITEM DESCRIPTION TOTAL
Y PRICE
BEARING (0.75
1
DIA.) 11 120 1320
2 ANGLE BAR 1 360 360
THREADED BAR
3
(3/8) 3 140 420
PILLOW BLOCK
4
(1IN DIA.) 3 220 660
5 STEEL PLATE 1 2000 2000
6 ACRYLIC PLATE 1 2700 2700
7 EPOXY(ACRYLIC) 2 84 168
8 EPOXY(STEEL) 1 70 70
9 WING NUT 4 6 24
MAXON DC
10
MOTOR 24V 1 850 850
11 SCREW (3/8) 5 4 20
12 SCREW (5/16) 5 3 15
13 SCREW (1/4) 24 3 72
MOSFET DRIVER
14
MODULE 1 300 300
15 DIODE 3A 2 10 20
DUAL H BRIDGE
16
L298N 1 245 245
17 ARDUINO MEGA 1 750 750
18 ARDUINO UNO 1 450 450
19 LCD ADAPTER 1 119 119
20 LCD MODULE 1 230 230
ALPHA KEYPAD
21
4X4 2 99 198
POWER SUPPLY
22
24V 5A 1 663 663
POWER SUPPLY
23
24V 10A 1 650 650
24 GI SHEET 1 650 650
25 COMPUTER CORD 1 190 190
ADJUSTABLE
26
WRENCH 1 88 88
SPRAY PAINT
27
(BLACK) 2 100 200
SPRAY PAINT
28
(SILVER) 1 90 90
SPRAY PAINT
29
(ACRYLIC) 1 176 176
30 RUBBER 1 250 250
31 SPRING 2 63 126
68
32 SPRING TENSION 1 45 45
SPROCKET (32
33
DIA.) 1 130 130
34 SPROCKET 1 55 55
35 CHAIN 1 220 220
36 WELDING 1 70 70
37 SCREW NUT (3/8) 5 4 20
38 SCREW NUT (5/16) 6 3 18
39 SCREW NUT (1/4) 5 2 10
40 SAND PAPER 1 15 15
41 LUBRICANT OIL 1 45 45
42 USB ADAPTOR 1 70 70
43 JUMPER WIRE 1 138 138
44 WIRE 1 36 36
45 MS 401X20 3 60 180
46 ROCK SW. PRIG. 1 30 30
47 P. BUTTON 1 35 35
TRANSPORTATIO
N 3107
LABOR 15000
69
APPENDIX D:
MATERIALS
70
Angle Bar Pillow Block
GI Sheet Shafts
Spring Rubber
Bearing Epoxy
71
Power Supply Mosfet Drive Module
Maxon A-Max
LCD Module DC Motor
(Tilt)
Computer Cable
Buck Converter
72
APPENDIX E:
FABRICATED
AUTOMATIC SOIL
SIEVE SHAKER
PROGRAM
73
#include <LiquidCrystal.h>
#include <Keypad.h>
/**********************************************************/
LiquidCrystal lcd(40, 41, 47, 46, 45, 44); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
String hours;
String minutes;
String seconds;
//**************************************************************
//Buttons
int lowrpm = 4;
int midrpm = 5;
int highrpm = 6;
int seesaw = 2;
int stepper = 3;
int led1 = 8;
int led2 = 9;
int led3 = 10;
int seesawControl = 7;
char keys[ROWS][COLS] = {
};
byte rowPins[ROWS] = { 22, 23, 24, 25 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these
Arduino pins
byte colPins[COLS] = { 26, 27, 28, 29 };// Connect keypad COL0, COL1 and COL2 to t
74
int t1, t2, t3, t4, t5, t6;
int r1, r2, r3;
char key;
String r[8];
void setFeedingTime()
{
feed = true;
int i = 0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Set feeding Time");
lcd.clear();
lcd.print("HH:MM:SS");
lcd.setCursor(0, 1);
while (1) {
key = kpd.getKey();
char j;
if (key != NO_KEY) {
lcd.setCursor(j, 1);
lcd.print(key);
if (j == 3 || j == 6)
{
lcd.print(":"); j++;
}
delay(200);
}
if (key == 'D')
{
key = 0;
break;
}
}
75
lcd.clear();
}
void setup()
{
lcd.begin(16, 2);
pinMode(lowrpm, INPUT);
pinMode(midrpm, INPUT);
pinMode(highrpm, INPUT);
pinMode(seesaw, INPUT);
pinMode(stepper, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(seesawControl, OUTPUT);
lcd.setCursor(0, 0);
lcd.print("INITIALIZING");
delay(300);
lcd.setCursor(12, 0);
lcd.print(".");
delay(300);
lcd.setCursor(13, 0);
lcd.print(".");
delay(300);
lcd.setCursor(14, 0);
lcd.print(".");
delay(300);
lcd.setCursor(15, 0);
lcd.print(".");
delay(300);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("SIEVE SHAKER");
delay(2000);
Serial.begin(9600);
lcd.clear();
void loop()
{
digitalRead(stepper);
digitalRead(seesaw);
76
if (digitalRead(seesaw) == HIGH && digitalRead (stepper) == HIGH)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SYSTEM_ERROR");
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(500);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
lcd.clear();
delay(500);
}
if (digitalRead(stepper) == HIGH)
{
int readPins = digitalRead(lowrpm);
int readPin1 = digitalRead(midrpm);
int readPin2 = digitalRead(highrpm);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
lcd.setCursor(4, 0);
lcd.print("SELECT");
lcd.setCursor(3, 1);
lcd.print("MOTOR SPEED** ");
readPins = digitalRead(lowrpm);
readPin1 = digitalRead(midrpm);
readPin2 = digitalRead(highrpm);
delay(250);
if (readPins > 0 || readPin1 > 0 || readPin2 > 0)
{
lcd.clear();
}
}
77
while ((readPins > 0 && readPin1 > 0 && readPin2 > 0) || (readPins > 0 && readPin1 > 0) || (readPins
> 0 && readPin2 > 0) || (readPin2 > 0 && readPin1 > 0)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SYSTEM_ERROR");
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(500);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
lcd.clear();
delay(500);
readPins = digitalRead(lowrpm);
readPin1 = digitalRead(midrpm);
readPin2 = digitalRead(highrpm);
if (readPins > 0 || readPin1 > 0 || readPin2 > 0)
{
lcd.clear();
}
}
//*****************************************************
if (readPins > 0) {
lcd.setCursor(3, 0);
digitalWrite(led1, HIGH);
lcd.print("SETUP TIMER");
lcd.setCursor(4, 1);
lcd.print("Press OK ");
key = kpd.getKey();
if (key == 'A') {
lcd.clear();
setFeedingTime();
for (int i = 0; i < 6; i++) // this for loop is used to get the value of the feeding time and print it serially
{
Serial.print(r[i]);
Serial.println();
}
hours = String (r[0]) + String (r[1]) ; //combining two separate int values of r[0] and r[1] into one
string and save it to "hours"
78
minutes = String (r[2]) + String (r[3]) ; //combining two separate int values of r[2] and r[3] into one
string and save it to "minutes"
seconds = String (r[4]) + String (r[5]) ; //combining two separate int values of r[4] and r[5] into one
string and save it to "seconds"
lcd.setCursor(0, 0);
lcd.print("Process Starting");
delay(1000);
lcd.setCursor(0, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(1, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(2, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(3, 1);
lcd.print(".");
delay(1000);
lcd.clear();
Serial.write('L');
for (long int j = set4; j >= 0; j--) // this for loopis used to decrease the total time in seconds
{
Serial.println(j);
lcd.setCursor(0, 0);
lcd.print("HH:MM:SS");
long int HH = j / 3600; // converting the remaining time into remaining hours
lcd.setCursor(0, 1);
Serial.println(HH);
if (HH < 10) {
lcd.print('0');
}
lcd.print(HH);
lcd.print(":");
79
long int MM = (j - (HH * 3600)) / 60 ; //converting the remaining time into remaining minutes
lcd.setCursor(3, 1);
Serial.println(MM);
if (MM < 10) {
lcd.print('0');
}
lcd.print(MM);
lcd.print(":");
long int SS = j - ((HH * 3600) + (MM * 60)); //converting the remaining time into remaining
seconds
lcd.setCursor(6, 1);
Serial.println(SS);
if (SS < 10) {
lcd.print('0');
}
lcd.print(SS);
Serial.write('L');
delay(1000);
if (j == 0)
Serial.write('S');
digitalWrite(seesawControl, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PLEASE WAIT");
delay(500);
lcd.setCursor(11, 0);
lcd.print(".");
delay(500);
lcd.setCursor(12, 0);
lcd.print(".");
delay(500);
lcd.setCursor(13, 0);
lcd.print(".");
delay(500);
lcd.setCursor(14, 0);
lcd.print(".");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Process");
lcd.setCursor(2, 1);
lcd.print("Completed");
delay(2000);
lcd.clear();
80
}
}
}
//*****************************************************
if (readPin1 > 0) {
digitalWrite(led2, HIGH);
lcd.setCursor(3, 0);
lcd.print("SETUP TIMER");
lcd.setCursor(4, 1);
lcd.print("Press OK ");
key = kpd.getKey();
if (key == 'A') {
lcd.clear();
setFeedingTime();
for (int i = 0; i < 6; i++) // this for loop is used to get the value of the feeding time and print it serially
{
Serial.print(r[i]);
Serial.println();
}
hours = String (r[0]) + String (r[1]) ; //combining two separate int values of r[0] and r[1] into one
string and save it to "hours"
minutes = String (r[2]) + String (r[3]) ; //combining two separate int values of r[2] and r[3] into one
string and save it to "minutes"
seconds = String (r[4]) + String (r[5]) ; //combining two separate int values of r[4] and r[5] into one
string and save it to "seconds"
lcd.setCursor(0, 0);
lcd.print("Process Starting");
delay(1000);
lcd.setCursor(0, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(1, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(2, 1);
81
lcd.print(".");
delay(1000);
lcd.setCursor(3, 1);
lcd.print(".");
delay(1000);
lcd.clear();
Serial.write('M');
for (long int j = set4; j >= 0; j--) // this for loopis used to decrease the total time in seconds
{
Serial.println(j);
lcd.setCursor(0, 0);
lcd.print("HH:MM:SS");
long int HH = j / 3600; // converting the remaining time into remaining hours
lcd.setCursor(0, 1);
Serial.println(HH);
if (HH < 10) {
lcd.print('0');
}
lcd.print(HH);
lcd.print(":");
long int MM = (j - (HH * 3600)) / 60 ; //converting the remaining time into remaining minutes
lcd.setCursor(3, 1);
Serial.println(MM);
if (MM < 10) {
lcd.print('0');
}
lcd.print(MM);
lcd.print(":");
long int SS = j - ((HH * 3600) + (MM * 60)); //converting the remaining time into remaining
seconds
lcd.setCursor(6, 1);
Serial.println(SS);
if (SS < 10) {
lcd.print('0');
}
lcd.print(SS);
Serial.write('M');
Serial.write('M');
delay(1000);
82
if (j == 0)
Serial.write('S');
digitalWrite(seesawControl, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PLEASE WAIT");
delay(500);
lcd.setCursor(11, 0);
lcd.print(".");
delay(500);
lcd.setCursor(12, 0);
lcd.print(".");
delay(500);
lcd.setCursor(13, 0);
lcd.print(".");
delay(500);
lcd.setCursor(14, 0);
lcd.print(".");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Process");
lcd.setCursor(2, 1);
lcd.print("Completed");
delay(2000);
lcd.clear();
}
}
}
}
//********************************************************
if (readPin2 > 0) {
digitalWrite(led3, HIGH);
lcd.setCursor(3, 0);
lcd.print("SETUP TIMER");
lcd.setCursor(4, 1);
lcd.print("Press OK ");
key = kpd.getKey();
if (key == 'A') {
lcd.clear();
setFeedingTime();
for (int i = 0; i < 6; i++) // this for loop is used to get the value of the feeding time and print it serially
{
83
Serial.print(r[i]);
Serial.println();
}
hours = String (r[0]) + String (r[1]) ; //combining two separate int values of r[0] and r[1] into one
string and save it to "hours"
minutes = String (r[2]) + String (r[3]) ; //combining two separate int values of r[2] and r[3] into one
string and save it to "minutes"
seconds = String (r[4]) + String (r[5]) ; //combining two separate int values of r[4] and r[5] into one
string and save it to "seconds"
lcd.setCursor(0, 0);
lcd.print("Process Starting");
delay(1000);
lcd.setCursor(0, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(1, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(2, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(3, 1);
lcd.print(".");
delay(1000);
lcd.clear();
Serial.write('H');
for (long int j = set4; j >= 0; j--) // this for loopis used to decrease the total time in seconds
{
Serial.println(j);
lcd.setCursor(0, 0);
lcd.print("HH:MM:SS");
long int HH = j / 3600; // converting the remaining time into remaining hours
lcd.setCursor(0, 1);
Serial.println(HH);
84
if (HH < 10) {
lcd.print('0');
}
lcd.print(HH);
lcd.print(":");
long int MM = (j - (HH * 3600)) / 60 ; //converting the remaining time into remaining minutes
lcd.setCursor(3, 1);
Serial.println(MM);
if (MM < 10) {
lcd.print('0');
}
lcd.print(MM);
lcd.print(":");
long int SS = j - ((HH * 3600) + (MM * 60)); //converting the remaining time into remaining
seconds
lcd.setCursor(6, 1);
Serial.println(SS);
if (SS < 10) {
lcd.print('0');
}
lcd.print(SS);
Serial.write('H');
delay(1000);
if (j == 0)
Serial.write('S');
digitalWrite(seesawControl, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PLEASE WAIT");
delay(500);
lcd.setCursor(11, 0);
lcd.print(".");
delay(500);
lcd.setCursor(12, 0);
lcd.print(".");
delay(500);
lcd.setCursor(13, 0);
lcd.print(".");
delay(500);
lcd.setCursor(14, 0);
lcd.print(".");
delay(500);
85
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Process");
lcd.setCursor(2, 1);
lcd.print("Completed");
delay(2000);
lcd.clear();
}
}
}
}
if (digitalRead(seesaw) == HIGH)
{
int readPins = digitalRead(lowrpm);
int readPin1 = digitalRead(midrpm);
int readPin2 = digitalRead(highrpm);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
lcd.setCursor(4, 0);
lcd.print("SELECT**");
lcd.setCursor(3, 1);
lcd.print("MOTOR SPEED ");
readPins = digitalRead(lowrpm);
readPin1 = digitalRead(midrpm);
readPin2 = digitalRead(highrpm);
delay(250);
while ((readPins > 0 && readPin1 > 0 && readPin2 > 0) || (readPins > 0 && readPin1 > 0) || (readPins
> 0 && readPin2 > 0) || (readPin2 > 0 && readPin1 > 0)) {
86
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SYSTEM_ERROR");
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(500);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
lcd.clear();
delay(500);
readPins = digitalRead(lowrpm);
readPin1 = digitalRead(midrpm);
readPin2 = digitalRead(highrpm);
if (readPins > 0 || readPin1 > 0 || readPin2 > 0)
{
lcd.clear();
}
}
//*****************************************************
if (readPins > 0) {
lcd.setCursor(3, 0);
digitalWrite(led1, HIGH);
lcd.print("SETUP TIMER");
lcd.setCursor(4, 1);
lcd.print("Press OK ");
key = kpd.getKey();
if (key == 'A') {
lcd.clear();
setFeedingTime();
for (int i = 0; i < 6; i++) // this for loop is used to get the value of the feeding time and print it serially
{
Serial.print(r[i]);
Serial.println();
}
hours = String (r[0]) + String (r[1]) ; //combining two separate int values of r[0] and r[1] into one
string and save it to "hours"
minutes = String (r[2]) + String (r[3]) ; //combining two separate int values of r[2] and r[3] into one
string and save it to "minutes"
87
seconds = String (r[4]) + String (r[5]) ; //combining two separate int values of r[4] and r[5] into one
string and save it to "seconds"
lcd.setCursor(0, 0);
lcd.print("Process Starting");
delay(1000);
lcd.setCursor(0, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(1, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(2, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(3, 1);
lcd.print(".");
delay(1000);
lcd.clear();
digitalWrite(seesawControl, 100);
for (long int j = set4; j >= 0; j--) // this for loopis used to decrease the total time in seconds
{
Serial.println(j);
lcd.setCursor(0, 0);
lcd.print("HH:MM:SS");
long int HH = j / 3600; // converting the remaining time into remaining hours
lcd.setCursor(0, 1);
Serial.println(HH);
if (HH < 10) {
lcd.print('0');
}
lcd.print(HH);
lcd.print(":");
long int MM = (j - (HH * 3600)) / 60 ; //converting the remaining time into remaining minutes
lcd.setCursor(3, 1);
88
Serial.println(MM);
if (MM < 10) {
lcd.print('0');
}
lcd.print(MM);
lcd.print(":");
long int SS = j - ((HH * 3600) + (MM * 60)); //converting the remaining time into remaining
seconds
lcd.setCursor(6, 1);
Serial.println(SS);
if (SS < 10) {
lcd.print('0');
}
lcd.print(SS);
delay(1000);
if (j == 0)
Serial.write('S');
digitalWrite(seesawControl, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PLEASE WAIT");
delay(500);
lcd.setCursor(11, 0);
lcd.print(".");
delay(500);
lcd.setCursor(12, 0);
lcd.print(".");
delay(500);
lcd.setCursor(13, 0);
lcd.print(".");
delay(500);
lcd.setCursor(14, 0);
lcd.print(".");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Process");
lcd.setCursor(2, 1);
lcd.print("Completed");
delay(2000);
lcd.clear();
}
}
}
}
89
//*****************************************************
if (readPin1 > 0) {
digitalWrite(led2, HIGH);
lcd.setCursor(3, 0);
lcd.print("SETUP TIMER");
lcd.setCursor(4, 1);
lcd.print("Press OK ");
key = kpd.getKey();
if (key == 'A') {
lcd.clear();
setFeedingTime();
for (int i = 0; i < 6; i++) // this for loop is used to get the value of the feeding time and print it serially
{
Serial.print(r[i]);
Serial.println();
}
hours = String (r[0]) + String (r[1]) ; //combining two separate int values of r[0] and r[1] into one
string and save it to "hours"
minutes = String (r[2]) + String (r[3]) ; //combining two separate int values of r[2] and r[3] into one
string and save it to "minutes"
seconds = String (r[4]) + String (r[5]) ; //combining two separate int values of r[4] and r[5] into one
string and save it to "seconds"
lcd.setCursor(0, 0);
lcd.print("Process Starting");
delay(1000);
lcd.setCursor(0, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(1, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(2, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(3, 1);
90
lcd.print(".");
delay(1000);
lcd.clear();
digitalWrite(seesawControl, 180);
for (long int j = set4; j >= 0; j--) // this for loopis used to decrease the total time in seconds
{
Serial.println(j);
lcd.setCursor(0, 0);
lcd.print("HH:MM:SS");
long int HH = j / 3600; // converting the remaining time into remaining hours
lcd.setCursor(0, 1);
Serial.println(HH);
if (HH < 10) {
lcd.print('0');
}
lcd.print(HH);
lcd.print(":");
long int MM = (j - (HH * 3600)) / 60 ; //converting the remaining time into remaining minutes
lcd.setCursor(3, 1);
Serial.println(MM);
if (MM < 10) {
lcd.print('0');
}
lcd.print(MM);
lcd.print(":");
long int SS = j - ((HH * 3600) + (MM * 60)); //converting the remaining time into remaining
seconds
lcd.setCursor(6, 1);
Serial.println(SS);
if (SS < 10) {
lcd.print('0');
}
lcd.print(SS);
delay(1000);
if (j == 0)
Serial.write('S');
91
digitalWrite(seesawControl, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PLEASE WAIT");
delay(500);
lcd.setCursor(11, 0);
lcd.print(".");
delay(500);
lcd.setCursor(12, 0);
lcd.print(".");
delay(500);
lcd.setCursor(13, 0);
lcd.print(".");
delay(500);
lcd.setCursor(14, 0);
lcd.print(".");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Process");
lcd.setCursor(2, 1);
lcd.print("Completed");
delay(2000);
lcd.clear();
}
}
}
}
//********************************************************
if (readPin2 > 0) {
digitalWrite(led3, HIGH);
lcd.setCursor(3, 0);
lcd.print("SETUP TIMER");
lcd.setCursor(4, 1);
lcd.print("Press OK ");
key = kpd.getKey();
if (key == 'A') {
lcd.clear();
setFeedingTime();
for (int i = 0; i < 6; i++) // this for loop is used to get the value of the feeding time and print it serially
{
Serial.print(r[i]);
Serial.println();
}
92
hours = String (r[0]) + String (r[1]) ; //combining two separate int values of r[0] and r[1] into one
string and save it to "hours"
minutes = String (r[2]) + String (r[3]) ; //combining two separate int values of r[2] and r[3] into one
string and save it to "minutes"
seconds = String (r[4]) + String (r[5]) ; //combining two separate int values of r[4] and r[5] into one
string and save it to "seconds"
lcd.setCursor(0, 0);
lcd.print("Process Starting");
delay(1000);
lcd.setCursor(0, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(1, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(2, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(3, 1);
lcd.print(".");
delay(1000);
lcd.clear();
digitalWrite(seesawControl, 255);
for (long int j = set4; j >= 0; j--) // this for loopis used to decrease the total time in seconds
{
Serial.println(j);
lcd.setCursor(0, 0);
lcd.print("HH:MM:SS");
long int HH = j / 3600; // converting the remaining time into remaining hours
lcd.setCursor(0, 1);
Serial.println(HH);
if (HH < 10) {
lcd.print('0');
}
lcd.print(HH);
93
lcd.print(":");
long int MM = (j - (HH * 3600)) / 60 ; //converting the remaining time into remaining minutes
lcd.setCursor(3, 1);
Serial.println(MM);
if (MM < 10) {
lcd.print('0');
}
lcd.print(MM);
lcd.print(":");
long int SS = j - ((HH * 3600) + (MM * 60)); //converting the remaining time into remaining
seconds
lcd.setCursor(6, 1);
Serial.println(SS);
if (SS < 10) {
lcd.print('0');
}
lcd.print(SS);
delay(1000);
if (j == 0)
Serial.write('S');
digitalWrite(seesawControl, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PLEASE WAIT");
delay(500);
lcd.setCursor(11, 0);
lcd.print(".");
delay(500);
lcd.setCursor(12, 0);
lcd.print(".");
delay(500);
lcd.setCursor(13, 0);
lcd.print(".");
delay(500);
lcd.setCursor(14, 0);
lcd.print(".");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Process");
lcd.setCursor(2, 1);
lcd.print("Completed");
delay(2000);
lcd.clear();
94
}
}
}
}
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
lcd.setCursor(4, 0);
lcd.print("SELECT");
lcd.setCursor(3, 1);
lcd.print("MOTOR SPEED ");
readPins = digitalRead(lowrpm);
readPin1 = digitalRead(midrpm);
readPin2 = digitalRead(highrpm);
delay(250);
while ((readPins > 0 && readPin1 > 0 && readPin2 > 0) || (readPins > 0 && readPin1 > 0) || (readPins
> 0 && readPin2 > 0) || (readPin2 > 0 && readPin1 > 0)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SYSTEM_ERROR");
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
95
digitalWrite(led3, HIGH);
delay(500);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
lcd.clear();
delay(500);
readPins = digitalRead(lowrpm);
readPin1 = digitalRead(midrpm);
readPin2 = digitalRead(highrpm);
if (readPins > 0 || readPin1 > 0 || readPin2 > 0)
{
lcd.clear();
}
}
//*****************************************************
if (readPins > 0) {
lcd.setCursor(3, 0);
digitalWrite(led1, HIGH);
lcd.print("SETUP TIMER");
lcd.setCursor(4, 1);
lcd.print("Press OK ");
key = kpd.getKey();
if (key == 'A') {
lcd.clear();
setFeedingTime();
for (int i = 0; i < 6; i++) // this for loop is used to get the value of the feeding time and print it serially
{
Serial.print(r[i]);
Serial.println();
}
hours = String (r[0]) + String (r[1]) ; //combining two separate int values of r[0] and r[1] into one
string and save it to "hours"
minutes = String (r[2]) + String (r[3]) ; //combining two separate int values of r[2] and r[3] into one
string and save it to "minutes"
seconds = String (r[4]) + String (r[5]) ; //combining two separate int values of r[4] and r[5] into one
string and save it to "seconds"
96
set4 = (hours.toInt() * 3600) + (minutes.toInt() * 60) + seconds.toInt(); //adding set1, set2 and set3
together in set4
Serial.print("set4");
Serial.print(set4);
Serial.println();
lcd.setCursor(0, 0);
lcd.print("Process Starting");
delay(1000);
lcd.setCursor(0, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(1, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(2, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(3, 1);
lcd.print(".");
delay(1000);
lcd.clear();
Serial.write('L');
digitalWrite(seesawControl, 255);
for (long int j = set4; j >= 0; j--) // this for loopis used to decrease the total time in seconds
{
Serial.println(j);
lcd.setCursor(0, 0);
lcd.print("HH:MM:SS");
long int HH = j / 3600; // converting the remaining time into remaining hours
lcd.setCursor(0, 1);
Serial.println(HH);
if (HH < 10) {
lcd.print('0');
}
lcd.print(HH);
lcd.print(":");
long int MM = (j - (HH * 3600)) / 60 ; //converting the remaining time into remaining minutes
lcd.setCursor(3, 1);
Serial.println(MM);
if (MM < 10) {
lcd.print('0');
}
lcd.print(MM);
lcd.print(":");
97
long int SS = j - ((HH * 3600) + (MM * 60)); //converting the remaining time into remaining
seconds
lcd.setCursor(6, 1);
Serial.println(SS);
if (SS < 10) {
lcd.print('0');
}
lcd.print(SS);
Serial.write('L');
delay(1000);
if (j == 0)
Serial.write('S');
digitalWrite(seesawControl, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PLEASE WAIT");
delay(500);
lcd.setCursor(11, 0);
lcd.print(".");
delay(500);
lcd.setCursor(12, 0);
lcd.print(".");
delay(500);
lcd.setCursor(13, 0);
lcd.print(".");
delay(500);
lcd.setCursor(14, 0);
lcd.print(".");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Process");
lcd.setCursor(2, 1);
lcd.print("Completed");
delay(2000);
lcd.clear();
}
}
}
}
//*****************************************************
if (readPin1 > 0) {
digitalWrite(led2, HIGH);
98
lcd.setCursor(3, 0);
lcd.print("SETUP TIMER");
lcd.setCursor(4, 1);
lcd.print("Press OK ");
key = kpd.getKey();
if (key == 'A') {
lcd.clear();
setFeedingTime();
for (int i = 0; i < 6; i++) // this for loop is used to get the value of the feeding time and print it serially
{
Serial.print(r[i]);
Serial.println();
}
hours = String (r[0]) + String (r[1]) ; //combining two separate int values of r[0] and r[1] into one
string and save it to "hours"
minutes = String (r[2]) + String (r[3]) ; //combining two separate int values of r[2] and r[3] into one
string and save it to "minutes"
seconds = String (r[4]) + String (r[5]) ; //combining two separate int values of r[4] and r[5] into one
string and save it to "seconds"
lcd.setCursor(0, 0);
lcd.print("Process Starting");
delay(1000);
lcd.setCursor(0, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(1, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(2, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(3, 1);
lcd.print(".");
delay(1000);
lcd.clear();
Serial.write('M');
99
digitalWrite(seesawControl, 180);
for (long int j = set4; j >= 0; j--) // this for loopis used to decrease the total time in seconds
{
Serial.println(j);
lcd.setCursor(0, 0);
lcd.print("HH:MM:SS");
long int HH = j / 3600; // converting the remaining time into remaining hours
lcd.setCursor(0, 1);
Serial.println(HH);
if (HH < 10) {
lcd.print('0');
}
lcd.print(HH);
lcd.print(":");
long int MM = (j - (HH * 3600)) / 60 ; //converting the remaining time into remaining minutes
lcd.setCursor(3, 1);
Serial.println(MM);
if (MM < 10) {
lcd.print('0');
}
lcd.print(MM);
lcd.print(":");
long int SS = j - ((HH * 3600) + (MM * 60)); //converting the remaining time into remaining
seconds
lcd.setCursor(6, 1);
Serial.println(SS);
if (SS < 10) {
lcd.print('0');
}
lcd.print(SS);
Serial.write('M');
Serial.write('M');
delay(1000);
if (j == 0)
Serial.write('S');
digitalWrite(seesawControl, LOW);
lcd.clear();
100
lcd.setCursor(0, 0);
lcd.print("PLEASE WAIT");
delay(500);
lcd.setCursor(11, 0);
lcd.print(".");
delay(500);
lcd.setCursor(12, 0);
lcd.print(".");
delay(500);
lcd.setCursor(13, 0);
lcd.print(".");
delay(500);
lcd.setCursor(14, 0);
lcd.print(".");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Process");
lcd.setCursor(2, 1);
lcd.print("Completed");
delay(2000);
lcd.clear();
}
}
}
}
//********************************************************
if (readPin2 > 0) {
digitalWrite(led3, HIGH);
lcd.setCursor(3, 0);
lcd.print("SETUP TIMER");
lcd.setCursor(4, 1);
lcd.print("Press OK ");
key = kpd.getKey();
if (key == 'A') {
lcd.clear();
setFeedingTime();
for (int i = 0; i < 6; i++) // this for loop is used to get the value of the feeding time and print it serially
{
Serial.print(r[i]);
Serial.println();
}
hours = String (r[0]) + String (r[1]) ; //combining two separate int values of r[0] and r[1] into one
string and save it to "hours"
101
minutes = String (r[2]) + String (r[3]) ; //combining two separate int values of r[2] and r[3] into one
string and save it to "minutes"
seconds = String (r[4]) + String (r[5]) ; //combining two separate int values of r[4] and r[5] into one
string and save it to "seconds"
lcd.setCursor(0, 0);
lcd.print("Process Starting");
delay(1000);
lcd.setCursor(0, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(1, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(2, 1);
lcd.print(".");
delay(1000);
lcd.setCursor(3, 1);
lcd.print(".");
delay(1000);
lcd.clear();
Serial.write('H');
digitalWrite(seesawControl, 100);
for (long int j = set4; j >= 0; j--) // this for loopis used to decrease the total time in seconds
{
Serial.println(j);
lcd.setCursor(0, 0);
lcd.print("HH:MM:SS");
long int HH = j / 3600; // converting the remaining time into remaining hours
lcd.setCursor(0, 1);
Serial.println(HH);
if (HH < 10) {
lcd.print('0');
}
lcd.print(HH);
lcd.print(":");
102
long int MM = (j - (HH * 3600)) / 60 ; //converting the remaining time into remaining minutes
lcd.setCursor(3, 1);
Serial.println(MM);
if (MM < 10) {
lcd.print('0');
}
lcd.print(MM);
lcd.print(":");
long int SS = j - ((HH * 3600) + (MM * 60)); //converting the remaining time into remaining
seconds
lcd.setCursor(6, 1);
Serial.println(SS);
if (SS < 10) {
lcd.print('0');
}
lcd.print(SS);
Serial.write('H');
delay(1000);
if (j == 0)
Serial.write('S');
digitalWrite(seesawControl, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PLEASE WAIT");
delay(500);
lcd.setCursor(11, 0);
lcd.print(".");
delay(500);
lcd.setCursor(12, 0);
lcd.print(".");
delay(500);
lcd.setCursor(13, 0);
lcd.print(".");
delay(500);
lcd.setCursor(14, 0);
lcd.print(".");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Process");
lcd.setCursor(2, 1);
lcd.print("Completed");
103
delay(2000);
lcd.clear();
}
}
}
}
}
104