2ndsemesterreport
TRANSCRIPT
Spent Shell Casing Separation
Machine Phase II
462 Design Project 2 Report
Sponsored by:
Members: Cole Cameron Thomas Crandall
Steven Duval Nolan Michaelson
Mentors: Dr. Majura Selekwa Rob Sailer
Table of Contents
1. Introduction
1.1. Project Description ………………………………………………………...…....4
1. 2.Objective…………..……………………………………………………….….......5
1
2. Design Procedure
2.1. Problem Analysis.………………………………………………..….……….......5
2.2. Decision Matrix .………………………………………………...………………..5
2.2.1. Casing Orientation….……...............…………………………...….…6
2.2.2. Casing Identification……………………………………...…………...6
2.2.3. Casing Delivery………………………………………...……………….7
2.2.4. Claw Grasps & Base Diameter………………………………...…….8
2.2.5. Height & Neck Dimensions …………………………………………..9
2.2.6. Controller ……………………………………………………………..10
2.3. Project Constraints ………………………………………………………..… 10
2.3.1. Engineering Constraints …………....……………………..……….10
2.3.2. Safety Constraints ……………………………………………..…… 12
3. Design
3.1. Alternative Designs ….………………………………………………………...13
3.1.1. Hopper Assembly…………………………………………………….13
3.1.2. Bin Assortment Assembly……………………………………….…14
3.1.3. Delivery System Assembly…………………………………………15
3.1.4. Caliber Identification Assembly …………………………………..15
3.2. Alternative Chosen ……………………..……………………………………...17
3.3 Semester 2 Design Alterations…………………..…………………………....18
3.3.1. Electronic to Pneumatic……………………………………..……....18
3.3.2. XY-Table
Alterations…………………………………………….…....19
3.3.3. Framework……………………………………………………………..20
3.3.4. Efficient Delivery to Claw Grasp…………………………………...21
3.3.5. Elimination of Neck Dimension…………………………………….22
2
4. Detailed Final Design
4.1. Components……………………………………………………………………..24
4.1.1. Electrical Components……………………………………………....24
4.1.2. Printed Components………………………………………………....26
4.1.3. Mechanical Components…………………………………………….27
4.2. Machine Operation……………………………………………………………...27
5. Project Planning
5.1. Task List ………………………………………………………………………....29
5.1.1. Semester Plan …...…………………………………………………...29
5.1.2. Gantt Chart …………………………………………………………….39
5.2. Variation From Project Plan ………………………………………………….39
5.2.1. Second Semester Additions………………………………………..39
5.2.2. Straying From project Plan………………………………………….40
6. Project Budget
6.1. Budget Justifications ………………………………………………………….41
6.2. Hardware/Dimensioning ……………………………………………………....42
6.3. Frame Materials ………………………………………………………………...44
6.4. Transport Design ……………………………………………………………….45
6.5. Revisions and Actual Spent Funds……………………………………….....47
7. Fabrication and Troubleshooting
7.1. Electronics Assembly and Integration……………………………………...49
7.1.1. Bench Testing………………………………………………………....49
7.1.2. Writing Code…………………………………………........................50
7.2. Fabrication………………………...……………………………………………..51
7.2.1. Modeling………………………………………………………………..51
7.2.2. Fabrication and obstacles……………………………………..…....51
3
7.2.3. Troubleshooting……………………………….……………………...54
7.2.4. Code Adjustments………………………………………....………....55
7.3. Project Testing…………………………………………………………………..55
8. Future Recommendations
8.1. Near Future…………………….………………………………………………...57
8.2. Phase III…………………………………………………………….……………..57
7. Appendices
7.1. Appendix A ……………....……..……………………………………………….60
7.2. Appendix B ……………………………………………………………………...86
7.3. Appendix C ………………...……………………………………………………88
7.4. Appendix D …………………………………………………………………..….94
1. Problem to be solved
1.1. Introduction
The Red River Regional Marksmanship Center (RRRMC) is a shooting range located in
West Fargo. They deal with a plethora of different spent shell casings each year. It is
estimated that 1.5 million rounds are shot there every year. Most of the spent cases are
sold in bulk as unseparated scrap for roughly $15 per 1000 rounds. Whereas sorted
casings will sell for five times that amount, averaging $75 dollars per 1000 rounds.
Currently, the spent shell casings are sorted manually by physically looking at the
caliber print which is a slow and painstaking ordeal or by using a slightly quick sieving
technique. These sorted shell casings are much more valuable to RRRMC and
consumers because it saves time, money, and inappropriate loading. Therefore, an
accurate and quick shell casing sorter that is automated would be ideal for RRRMC and
many consumers who reload their own ammunition. Currently the available shell casing
4
sorters are limited to the number of different calibers that they can sort. There are other
homemade shell sorters that can sort a variety of spent shell casings however, with
limited speed and accuracy. Currently on the market are shell sorting sieve that are
affordable to the average consumer, but they will only sort 3-5 different calibers based
on the casing diameter. Larger faster machines are also available for purchase. These
machine are capable of sorting enormous amounts of casings in a somewhat accurate
manner, as it sorts by spinning the shells out and then sorting them strictly by the shell’s
height. They devices can cost as much as $10,000.
The shell sorter project was introduced to the department last year. The task was
similar to one faced now with fewer constraints. The previous group was only required
to sort handgun calibers which is much more simple than the proposed project this year,
which consists of both sorting rifle and handgun casings. With this being the second
attempt at creating a shell sorter through RRRMC, some ideas and designs from the
previous group could be used and improved upon. The two main components to
improve upon is the method of identification to correctly determine the casing caliber
and a more reliable delivery system. As stated previously, the aim of the project is to
improve speed and accuracy of the shell sorting process while increasing the number of
shell casings that are able to be sorted. Currently the RRRMC has volunteers that
collect the spent rounds and sort them manually using multiple sieves differentiating
them by the body diameter. A few problems that exist are that some calibers with
different lengths share the same body diameters or very close to the same, differing by
just a few thousandths of an inch. Nesting often occurs as well where smaller cases will
nestle inside of a larger caliber.
1.2. Project Objectives
The objective of this project is to design and build a machine that will automatically
separate a large variety of handgun and rifle calibers. The calibers will be grouped into
individual bins so the more expensive casings can be sold to be reloaded. This will be
accomplished while meeting the constraint criteria in section 2.2. below.
2. Procedure
2.1. Problem Analysis
The first step in any design procedure was to identify the problem, and then clearly
understand that problem. A general knowledge of firearms was held by the group
members initially helping comprehend the situation yet a great deal of research was
5
done in the attempt to grasp the presented problem. It was found that there are various
reasons for reloading, as well as how large of an industry it actually is. Rob Sailer is not
only an advisor to the design group, he is also involved with the RRRMC and has an
extensive knowledge of reloading, as well as firearm. He was asset in helping
understand the issue and also very helpful beyond that.
The last years attempt at the project to sort solely handgun calibers, where the project is
now are faced with the task to sort handgun and rifle calibers, greatly increasing the
complexity of the project. Next a decision had to be made as to if there were any ideas
or parts that could be recycled from the previous project. Eventually it was decided to
take the case-feeder that was incorporated into the previous sorter to deliver the shells
to the identification step and orient them properly. The other main component that
might be able to transfer over to the new design is the previous controller board.
2.2. Decision Matrix
A decision matrix was created to help guide the selection process, weighing the pros
and cons and grading the potension selection from 1 to 5 in accuracy, repeatability,
durability, complexity, and price. All of which had their own weight assigned as well. for
each potential decision.
2.2.1. Casing Orientation
The first issue encountered was how to orientate the casings. To get an accurate
identification for the shells it was needed that they all be positions in a uniformed
fashion. The manner in which it was orientated wasn’t too important, it be on the casing
side or on erected. It just had to face the same direction. The Dillon Precision case
feeder which was used during phase 1 was considered as well as a stepper system.
The case feeder was used in the previous group with a high degree of success and it
could run until told to stop by using a trip switch. one possible downside if the feeders
plate are meant to be used by only a certain group of spent casings and this could lead
to more plate being needed and to be swapped. the step feeder design could potentially
orient more shells per cycle of the system. It would orient all shells in a horizontal
manner and this is something else that would have to be built in to lay shells in another
manner.
Variable (importance)
Accuracy
(5) Repeatability
(4) Durability
(3) Less
Complexity
Price
(1) Total
(Higher Better)
6
(2)
-Case Feeder (Dillon Precision) 5 5 5 5 2 72
-Stepper System 4 4 5 1 2 55
2.2.2. Casing Identification
After a method of orientation was decided upon, the next step was to determine a way
to identify the caliber of the casings. This stage of the process essentially would either
make or break the design, this decision was crucial. Two types of identification were
research. One method would look at the engraving on the bottom of the shell casing
that says the caliber, this would provide an accurate identification. On the other hand, a
physical method of dimension was later looked at as well. The stamps of shells provide
a definitive marking that is as simple as reading the date on a penny. That penny
however can be shiny and new or dull and corroded. This could make it difficult to make
out those 4 numbers. now try reading 6 what if they included both letters and numbers.
any imperfections could create quite a hassle for anyone who is trying to read it. These
same difficulties were faced when it came to trying to use image recognition to read a
code on the back of spent shells. Both the Pen and the webcam struggled with the shiny
material that would hinder accuracy of the software. Also with the image recognition
both options would work best with a computer of some sort which would create another
communication barrier. For the physical dimension aspect weight and physical
dimension, heights and diameters, were contemplated. Weight wasn’t an option
because the difference between shells was too small. Physical Dimensions had two
other paths related to finding heights and diameters one was looking at an image similar
to what phase 1 did except incorporating reading a neck diameter to be capable of
sorting rifle casings. This proved to be costly as the previous group found out. For a
preassembled camera with dimensioning capabilities built in it would cost more than
$1500, and limited software was commercially available that could handle a width and
length let alone a 3rd reading. Then infrared sensors (IR) and linear potentiometers
were looked into. It was quickly found the IRs were not capable to be precise enough for
our project. It was however found that potentiometers were not only accurate they gave
consistent reading that suited the project goals nicely.
Variable (importance)
Accuracy
(5) Repeatability
(4) Durability
(3) Less
Complexity (2)
Price
(1) Total
(Higher Better)
-Image recognition
7
1. Scanning Pen 5 5 4 1 3 62
2. OCR 5 5 4 1 1 60
-Physical Dimensions
1. Potentiometers 5 5 4 5 5 72
2. I.R. Sensor 1 5 4 5 3 50
3. Image Dimension 5 5 4 2 1 62
2.2.3. Casing Delivery
An accurate identification of the spent casing is meaningless without means of
transporting it to a specific container. It is crucial in order to “sort” the casings. A
conveyor belt system was initially consider for the general simplicity in the concept as
well as a more sophisticated method referred to as an XY-table. It is the same concept
used in a claw machine, or 3D printer. A conveyor was found to create a large and bulky
design that would more than likely tip shells over and could cause them to go into
incorrect bins. Some sort of system would need to be in place to push shell into their
bins. Such a design however could create an easy retrieval of full bins. Bettering Phase
1s delivery system was considered however it would limit the number of bins we could
distribute to as well as their success rate was hindered mostly by their delivery system
and never exceeded 85%. An x-y table design could give us access to a much more
linear tube delivery design as well as fitting 3x as many bins on a footprint only slightly
larger than 2x the phase 1 design. A linear design would give a much easier coordinate
system to work with. Full bins can be accessed much easier if they are all on the front of
the machine then if some are in the back. A circular table design would yield a smaller
footprint but would require a more complex software to deliver in radial coordinates.
Variable (importance)
Accuracy
(5)
Repeatability (4) Durability (3) Less
Complexity (2)
Price (1) Total
(Higher Better)
-Belt/conveyor 4 3 4 2 3 51
-Phase 1 concept 2 2 4 4 5 43
- x-y table
1 Linear 5 5 4 3 3 66
2 Circular 5 5 3 3 4 64
8
2.2.4. Claw Grasps & Base Diameter
The casing must remain very still throughout the time is is being identified, whether is is
having the imprint recognized or if the dimensions are being taken. A securing grasp is
intended to be implemented to secure the shell throughout the process as well as in the
delivery. It seems simple in theory but there are many options to weigh in the deciding
processes for this component. Multiple claw designs came about and initially it was
thought an OCR program we only considered holding a shell but after the base diameter
was thrown into the mix we considered the levels of precision we needed to hit. We
created designs that increased the travel distance of a measuring device to give more
wiggle room to a big determining factor. It wasn’t until we figured out definitively that
potentiometers specifically would give us a reading accuracy of .0002” with 2.39mV
change and a linearity of 0.05% that we then decided a claw with linear motion wouldn’t
decrease accuracy to an undesirable level. Parallel plate design became more complex
than necessary to complete our task so we no longer considered it. A solenoid being
just a simple on or off device was chosen not only because of an easier complexity but
it was chosen or the other because they are reliable and consistent. The design concept
of having one fixed plate and one moving was proposed for the same reason as the
scissor claw to increase the distance traveled for potentiometer resolution. That point
became null after a baseline was established and the high degree of machining required
to create that design was deemed too great to proceed with such a design.
Variable (importance)
Accuracy (5) Repeatability
(4) Durability (3) Less Complexity
(2) Price
(1) Total
(Higher Better)
- Parallel plates scissor 5 3 3 2 4 54
- linear movement claw
1. solenoid (to
move the claw )
5 5 5 5 4 74
2. Actuator (to
move the claw
5 4 4 3 4 63
- one f ixed plate one rotating
4 5 4 4 5 65
2.2.5. Height Dimensions
After it was found to be possible that a base diameter could be easily obtained through
the use of the grasp that secure the shells throughout the sorting process, it was now
9
necessary to discover a method that could acquire the shells height if needed. There
were an extensive number of methods brainstormed for this step. Angled plates that
held a conductive property to read a distance dependant on a voltage, controlled plates,
solenoids, basic, and pneumatic actuators were all potential components to achieve this
dimension. Along with many others that didn’t seem qualified or capable enough to be
considered in the decision matrix. Multiple ways were considered to get the height. To
get the height consisted of a design that utilized angles to drop a plate on to the edge of
the shell and to decrease the stroke length needed while increasing the potentiometer
travel. This was not used because the potentiometer travel doesn’t need to be
increased to that level which decrease the amount of force we can touch of on the neck
diameter. Another design consisted of a plate at a fixed angle that we would run our
claw and shell into using the x-y table to find the height and the neck would consist of a
touch off as well but the same inconsistency arose with this design with not enough
force holding the shell in place while finding the neck. A linear drop down plate was was
thrown into the mix to increase the force holding the shell in place while the neck
diameter is found. both actuator and solenoid were considered for this design but
solenoid unless modified to get our length of travel was used it wouldn’t be feasible. A
Linear actuator was assessed to fulfill this need because it has both the range of travel
desired as well as the feature of having a potentiometer built into it with a high degree of
precision available. While only requiring a limit switch to stop the motor from burning
itself out when holding the shell in place.
Variable (importance)
Accuracy (5) Repeatability (4)
Durability (3)
Less Complexity (2)
Price (1)
Total (Higher Better)
-angled plate and x-y table 5 3 4 1 4 55
-drop and hold plate (angled)
5 4 4 3 4 63
-drop and hold plate (linear)
1. Actuator 5 5 5 4 4 72
2. Solenoid 4 5 5 5 5 70
3. Pneumatic Actuator 4 5 4 3 3 61
2.2.6. Controller The final decision made was on how the outputs of the working components would be
collected and translated to an actual dimension. A dimension accurate to a few
10
thousandths of an inch, so it could be capable enough to differentiate even the slightest
differences between similar casings. It was found that by using the equation 𝑉
2
2# 𝑜𝑓 𝑏𝑖𝑡𝑠
V being the input voltage to the daq it was found that when discounting noise a 10V in
with a 16 bit daq could differentiate down to a change of 1.5 mV.
2.3. Project Constraints
2.3.1. Engineering Constraints
The final design was said to have to meet these criteria: The RRRMC would like for the
sorting process to not only be nearly as accurate as sorting the casings by hand but it
must be completed in a fraction of the time. A shell needs to be sorted every two
seconds as it take the volunteers roughly ten seconds a shell by hand. A 98%
accuracy in identification and proper delivery was desired, which is proving difficult as
some shell casings only differ in a few thousandths of an inch in their size and 2-3% in
total weight, without regarding tolerances. The previous year’s senior design group was
only tasked with handgun calibers and therefore able to only use height and diameter to
identify the casing. Rifle calibers are now asked to be sorted so a third diameter would
most likely be needed. A list of common handgun and rifle calibers are listed in
Appendix A, Item A1. Figure 1 shows the overlap that would occur among the most
common rifle and handgun calibers if tolerances are taken into account.
11
Figure 1: Casings Dimension Overlapping
Above the figure shows how similar some casing can be. It was first thought that it not
be sufficient to identify the casing caliber with 99% certainty by just looking at the base
diameter and the height. As it is showed, between the most common calibers to be
used at a gun range, there are four areas of overlap that occur amongst different
casings when the tolerances are taken into account. Using the Sporting Arm and
Ammunition Manufacturing Institutes (SAAMI) dimensions the above figure was created
where the diameter is plotted along the X-axis and height along the Y-axis. The
tolerance for both dimensions are shown by the circles and connecting arms on the
points. There would be no issue if only one dimension was shared between calibers but
if both height and diameter overlap, then identification conflicts would occur. Among the
overlapping, some of the calibers are much more common than the other similarly sized
casings. A .270 Winchester and .30-60 are two very common rounds, whereas the .25-
06 will only be shot about 5% as much as the others. The .22-250 and .308 Winchester
are said to be a thousand times more popular among shooters than the similar .338
Federal and .300 Savage calibers. Not shown are the various 9mm calibers, yet only
one is very common. Lastly the .40 Smith & Wesson is tenfold more common than the
similarly sized .357 Sig Sauer.
12
The figures below emphasize how close the rifle and handgun casings truly explain why
a scale isn’t a simple possibility as well as why there can be conflictions while correctly
identifying the casing caliber. Figure 2, taken from ammoland.com shows the similarity
between the .308 Winchester and.338 Federal rounds (Grey, 2012). Figure 3 shows a
.30-06, .25-06, and .270 Winchester in comparison. Lastly in Figure 4 from
gunsamerica.com one can see the only variance that can be seen by the naked eye is
the presence of the neck on the .357 Sig Sauer when compared against the .40 Smith
and Wesson (McHale, 2014).
Figure 2 Figure 3 Figure 4
The RRRMC estimates that 1.5 million rounds are shot there every year so the design
must be durable enough to separate 1.5 million casings with a reasonable reliability. It
is important that the design rarely malfunctions or breakdowns and doesn’t require
frequent maintenance. If necessary, the design may have a yearly maintenance and
calibration.
2.3.2. Safety Constraints
The operator on the sorter must be able to use the machine safely with little or no
training. The staff at the RRRMC are volunteers who will not be officially trained in.
The other intent is for the club’s members to be able to bring in shells of their own and
have them sorted.
13
A noise no louder than 85 dB was required. According to the Occupational Safety and
Health Administration (OSHA), eight hours of exposure at 85 dB is when permanent
damage to one’s hearing can occur. This volume will also allow the staff to
communicate with the members operating firearms. A glass or plexi shield separating
the operators and nearby personnel from the working parts is also needed as the design
will be placed in the lobby of the RRMCC lobby for member use.
3. Project Design
3.1. Alternative Designs
3.1.1. Hopper Designs
The other important aspect of the shell sorter is the delivery system. Delivery from bulk
to the area where the shell would be identified, and delivery to the correct bin from
there. From reading the previous group’s report there were two different hopper designs
to feed the casings to the platform in which they could be classified, as well as orient the
spent shells in an organized manner. The first hopper concept is a machine that is used
and found in industry today to orientated bulk items from a large bin. It's referred to as a
step feeder and utilizes a conveyor belt. The feeder has a ledge that passes through
the container grabbing multiple casing every pass, setting them on the conveyor. The
belt would be sized so that only if the casing was oriented upright it would be accepted,
the rest would be swept back into the container to try again. The downfall in this design
is that it can not accommodate a large variety of sizes so the calibers that can be sorted
would be very limited. Figure 4 below displays the step feeder.
Figure 4: Step Feeder (youtube.com) Figure 5: Case Feeder (youtube.com)
The alternative to the stepper was a hopper sold by Dillon-Precision called a case
feeder. The case feeder shown above in Figure 5 is a moderately sized container with
an angled disk located within it. The disk has slots located around the edges sized to fit
certain calibers depending on the particular disk. As it rotates it will collect the spent
14
casings, as the casing is brought higher, those casings oriented with the primer up will
fall out due to them being too top heavy. The casings oriented primer down will be
brought to the top and dropped through a slot and delivered to the platform where it can
then be identified.
3.1.2. Bin Assembly Designs
An array of tubes connected to an assortment of bins was always the initial design
chosen. At first a circular sketched in Figure 6 below was considered because this
made the distance traveled during transportation shorter due to a centralized home
position. In response the shorter travel distance, there would be a cut down on the time
to transport casings. Although the idea behind a quicker transportation system is
appealing issues were encountered with the footprint. With a circular orientation it would
be required that the casing sorter be accessible in 360 degrees, which was an issue
because the RRRMC would like to be able to put the casing sorter up against a wall in
the facility.
Figure 6: Circular Bin Array Figure 7: Linear Bin Array
After putting into consideration of the sorter needing to be against a wall, a linear design
was created, making the bins stack in a 6X6 orientation for a total of 36 bins. A drawing
is pictured above in Figure 7. Each bin is spaced out one inch further from the one
below it allowing for the delivery tubes to have clearance which will be covered in the
following section. This linear orientation addressed the issue of having it against a wall.
The only potential issue with this design is the loss of time due to not having the home
position of the x-y table centralized. The timing of the processes will only be able to be
determined once the design is built and tested.
15
3.1.3. Delivery System Designs
Early on during the brainstorming phase of the project, a delivery system was priority
after deciding initially to go with the OCR software route. Last years group had struggled
with this aspect of the project. They had a simpler design that relied on a stepper motor
to swivel an arm that would separate casings into the correct tube that would then lead
to the bins. The stepper motor the previous group had used did not have an encoder
which caused issues with position, because the stepper continuously over-stepped
during operation. The other flaw in the last groups design was the use of flexible vinyl
tubing to direct casings to their bins. The issue with this tubing is it tends to be sticky,
and they had it in a curved orientation which caused casings to get stuck in tube during
the transportation process.
The final design for the delivery system was based off of the last groups deficiencies.
The group wanted to eliminate the possibility of a casing getting stuck in transport. To
eliminate this factor we designed a more direct route for the casing to follow. An x-y
table was designed to transport the casing using a V-Block claw design. This V-Block
clamps onto the casing with a 1.12 pound clamping force and carries the casing to a
position defined by (x,y) coordinates. Once the casings is brought to position by the
clamp it is released. At this point in the process the casing then travels down a ¾” PVC
tube, dropping into its desired bin. Preliminary sketches to better help understand the
XY-table and clamp are included below.
Figure 8: XY-table Concept Figure 9: Grasp Concept
16
3.1.4. Caliber Identification Designs
There were many different possibilities that were considered when designing the shell
sorter. The first option was to use an image recognition software or optical character
recognition (OCR) program, and incorporate a laptop. The idea was to capture an
image of the imprinted caliber on the bottom of the casing. A web camera, digital
camera, scanners, and scanning pens were all thought of yet none of them would work.
A software program capable of reading the curved text of the various sized shells,
especially a poor quality image due to the reflecting brass and lack of contrast within the
engraving, was unable to be found. The scanning pen was unable to accomplish
identifying the engraved text as well. The text was again too reflective and orientation
of the pen to properly capture the text would be rather difficult. Physical dimensioning
was the only path to go then. A 3D scanner connected to the rendering program,
SolidWorks to dimension the scanned shell was thought of. Ultimately that idea was
much too expensive. There again was to option to follow in the footsteps of the
previous group’s idea to capture the height and width diameters through an image taken
by a smart camera. Another promising design was introduced by our mentors. The
design used an angled plate that was placed near the shell. A v-notched clamp will
center, and grasp the shell and bring it into contact with the plate. When contact is
made the height of the shell as well as the neck diameter can be calculated from the
known angle, distance to center of the shell. It is then moved to yet another location to
make contact with an on/off switch to determine the base diameter from the final
position. Figure 5 below shows it with more clarity. Another idea to get the physical
dimension of the casing was to incorporate an infrared sensor to determine the distance
from the mounting point and find the diameter and height from that distance. The final
concept also incorporated a physical dimensioning system
17
Figure 10: Angled Plate Design Figure 11: Drop Arm Design
3.2. Alternative Chosen:
The basis of the chosen design was to recycle the case sorter to deliver the spent shells
with the desired orientation of the primer on the bottom. Three plates would be used,
large rifle calibers, small rifle calibers, and handgun calibers. So three runs would be
needed if the spent shells placed into the casefeeder were completely random. The
difficulty that was encountered time and time again was the difficulty of identifying the
shell. The method of delivery was always thought to work, and therefore the
identification part was to be incorporated into the grasp designed to grip and carry the
shell to the correct tube to be sorted. To achieve this, a physical dimensioning method
chosen was to use linear potentiometers. Using the formulas below it was calculated
that the desired potentiometer would have an accuracy of .002 inches with the desired
voltage, which met the needed criteria.
18
A linear potentiometer works with a slider that travels along the resistor varying the
resistance between it and two other connections. The resistance element is excited by
either DC or AC voltage. The output voltage corresponds to a distance. With the
chosen potentiometers it was possible to achieve the .002 inch tolerance that was
desired. With this possibility it was decided that only two dimensions would be needed
to differentiate all but two calibers, the .30-06 and .25-06 because the dimensions are
identical and the only variance is in the neck dimension. This decision was only made
after sample were taken from the RRRMC and research on the calibers popularity
amongst reloaders was conducted and found that the .25-06 calibers was a fairly
uncommon round to come across. An expert on the issue had told the group that on
average the .30-06 caliber would be encountered twenty times for every one time the
.25-06 was. This gave enough justification to say the .25-06 was not a desired caliber
and the rare occurrence of one could be handpicked out of the .30-06 bin. This allowed
the elimination of a neck diameter dimension as in added a good deal of complexity to
the overall design.
Figure 11: Linear Potentiometer Schematic (instrumentationtoday.com)
Also the XY-table design was kept, but a rectangular profile was chosen with the case
feeder placed in the side of the frame, no longer would it be placed in the center. This
helped to reduce the programing complexity be providing each delivery with a common
direction. Initially it was planned to run the length of the frame with two linear rails and
carriages supporting another rail and carriage spanning the frame. The question arose
of how parallel the rail could be mounted and would it cause chatter if it could not be
mounted perfectly. To fix the issue it as suggested by the group’s mentor to only use
one supporting rail and carriage replication a cantilever beam if a carriage rigid enough
could be found and afforded which it was. Firstly a v-notched clamp will center, and
grasp the shell by engaging a pneumatic cylinder that has been modified to run a linear
potentiometer that will determine the casings base diameter. The secured casing will
then be slightly moved where another pneumatic cylinder fabricated to run a linear
19
potentiometer that is positioned vertically will come in contact with the top of the casing
to determine the shell height. A more informative image of a decision map showing the
selection process is listed in Appendix B, Figure B3. A written program will then identify
the shell, and the xy-table, with the attached v-notched clamp will deliver it to a certain
tube leading to the correct bin. This should identify the vast majority of rifle and
handgun calibers without overlap. Theoretically the only overlap will be the confusion
between the .30-06 and .25-06.
3.3. Semester 2 Design Alterations
3.3.1 Electronic to Pneumatic
When the plan was solidified at the end of the first semester, the plan design was gonna
use linear actuators with an internal resistance and voltage output together the casing
dimensions. Electrictronic actuators are better known for their high levels of precision.
Though this is not to say pneumatic actuators cannot deliver very precise motion. But
the daunting task to differentiate every possible casing was upon the group and the
highest level of precision was sought after.The cost for this precision can also be quite
large in comparison to the alternative that was presented. Pneumatic component are
much cheaper and were found capable of the precision we needed if the paired
potentiometer was also. Pneumatic actuators provide high force and speed at low unit
cost in a small footprint. Force and speed on pneumatic actuators are also easily
adjustable and are independent of each other. The only con for a pneumatic system in
comparison to the electronics is the noise of the compressor and operating cost. But for
this small of an application maintenance and operation costs are relatively negligible.
The noise would have to be accepted or the compressor running the cylinders could
also just have a long air line supplying the machine.
3.3.2. XY-Table Alterations
To transport the casings the construction of a typical linear motion or XY-table was in
place. Little was initially known about linear motion, so a basic table was thought to be
the route. A typical construction seemed to be the best plan of action. With three rails,
two rails that would span the long distance. Atop those rails would be a shorter rail and
carriage being supported by the first two and mounted to the carriages. But Variations
among XY tables include the ways and the drive mechanism. The ways determine load
capacity, straight-line accuracy, and stiffness, or durability, while the drive mechanisms
determine smoothness and speed. With three rails and other two motors running a
single belt for each direction of travel chatter would most likely occur often with high
level of torsion and also with low levels or torque as well if the table’s rail and carriage
20
connections were not rigid enough. If any variance in the parallel aspect of the rails
might occur the travel would also not be as effortless and smooth as it needed to be.
To eliminate chatter a cantilevered design was proposed and eventually decided upon
once it was proven that the deflection in the beam would not pose an issue. The
deflection in the beam was calculated and can be seen below. The actual beam
deflection was found to be negligible. The idea would save a good deal of money
eliminating one length of rail and a carriage. It would also function much better provided
that rail could support the levels of moment the cantilever would pose on it and also
travel effortlessly with the full load imposed on it.
21
22
3.3.3. Framework
The supporting framework of the design was initially a bit overkill, and incorporated 14
gauge 2” square tubing. Constructing the framework from this material would have
been relatively expensive and unneeded. Later the material was reduced to 1” square
tubing. This original design which can be seen below in Figure 12 also incorporated a
large quantity of weld and precises cuts in an attempt to increase the appearance and
functionality of the framework. With welding many errors could potentially occur without
a professional, and the concept called for tremendous precision in the angles and
dimensions to function well, so the design was simplified. The finalized framework can
is also shown below in Figure 13 and eliminates the vast majority of cuts and weld
essentially simplifying the frame greatly while maintaining all of the previous
functionality.
Figure 12: Original Framework Drawing Figure 13: Final Framework Drawing
3.3.4. Efficient Delivery to Claw Grasp
The complexity as well as the importance of the component that would provide the
medium between the case feeder and claw was greatly underestimated at the start of
the semester and was essentially neglected in the first semester. It was overlooked
because all members thought it would be an easy task to deliver the shell from the case
feere to the claw without tipping. To achieve the desired accuracy the shell must also
be delivered to the same vertical height every time. The original thought was to simply
allow for a free fall and cushion the landing or provide a flexible curtain made from
rubber that would remain rigid enough to prevent tipping but flexible enough to pull the
shell through without moving it. At the beginning of the second semester that idea was
concluded to not be repeatable enough, so a new idea was come up with. It was coined
the “drop down tube”. The delivery system would be constructed from two nested
tubes, with diameters created to allow for all of the expected casings to fit and also
23
allow them to slide into each other. The resting position would be in the fully extended
position, extending almost entirely from the case feeder to the claw grasp so the falling
shell would be constrained on all side creating a repeatable accurate delivery. The claw
would then trigger and the smaller tube would retract up into the larger tube via a
pneumatic cylinder allowing for the claw and attached shell to travelfreely. To help
understand the concept, a cross sectional is shown below in Figure 14.
Figure 14: Servo Motor with Tube Assembly Cross-Section
3.3.5. Elimination of Neck Dimension
The incorporation of a neck dimensioning mechanism was begun to be questioned.
Adding such a device added a high degree of complexity to the design physically and
electrically. The neck dimension would needed to be independently triggered by a
pneumatic cylinder just as the other dimensioning mechanism were. The addition would
mean a relay must be created on a breadboard within the electrical box to support this
action because all the ports are the Arduino relay shield were occupied. It isn’t
impossible, it’s actually relatively simple to construct a relay on a breadboard but the
24
machine vibrate a lot and would shake pins and other connections loose if they were not
secured with a set screw. The assembly is shown below in Figure 15. To maintain the
user friendly component that was sought after it was avoided. This wasn't the only
reason though. More consideration was but into the nominal dimensions of the most
commonly fired calibers and most popular calibers among reloaders. Specifically
amongst the rifle calibers and a conclusion was made that all but two calibers could be
sorted without a neck dimension, the .30-06 and .25-06 because the only variance in
the shells are the dimension of the neck. The .308 Winchester and 7.62 NATO also
have identical dimensions in the base, height, and neck. So the addition of a neck
dimension still couldn’t differentiate between them because they are interchangeable. A
comparison of the considered calibers can be seen below in Figure 16. This of course
would only be valid if the precision of the components was as high as expected. To test
this a .45 Long Colt and .45 Auto were tested with the components on a temporary
stage. Based on the base dimension alone, they would consistently be differentiated
between. To do this a precision of 4/1000" was needed. This gave enough justification
to eliminate the neck dimension. The range was contacted to help further justify this
action and two things supported this. They said the .25-06 is a relatively rare caliber
and isn't of much importance. They also said that rifle caliber only compose roughly
20% of the rounds shot there making pistol accuracy the main priority.
25
Figure 15: Second Stage Assembly
26
Figure 16: Justifying dimensions to eliminate neck measurement
4. Detailed Final Design
4.1. Components
4.1.1. Electrical Components
As the project progressed further the conditions changed and the previous decision
matrix was then modified to now account for the new priorities given the conditions.
Pneumatics were again looked at, and instead of using an actuator driven with
pneumatic, potentiometers would be used in cooperation with the pneumatic cylinder.
The option was found to be much cheaper and with the incorporation of all the other
components already that were needed it was also found to be the least complex option
Accuracy (5) Repeatability
(4) Price
(3) Durability
(2) Less Complexity
(1) Total (Higher
Better)
1. Actuator 5 5 2 5 2 63
2. Electromagnetic Solenoid
4 5 4 5 3 65
3. Pneumatic Solenoid 4 5 5 4 5 68
Numerous electrical components are used to make the machine function. Three double
acting pneumatic cylinders were chosen and are now used. The first has a 3” stroke
and is used in the delivery of the shell to the claw grasp. The second has a 1 ½” stroke
and is position on the claw to both grasp the shell and obtain the base dimension. The
last has a 2” stroke and is attached to the second stage assembly to gather a height
dimension for the casing if it is needed. To active the cylinders, three 4-way pneumatic
solenoids were used and controlled by the Arduino Uno. A pulse would trigger the
cylinder to extend the rod by filling one end with air, another pulse would fill the other
side with air to retract it. To optimize the pressure for each cylinder, a regulator was
used. Because of the three different purposes, three different pressures were thought
to be needed. Attached to each valve were air flow control valves to vary the speed the
cylinder rod would be retracted or propelled. A 24V 1A AC to DC power supply powers
the solenoids. A linear motor XY-table is responsible for the travel while delivering the
shell. To propell the carriages a NEMA 23 stepper motor is used for each direction of
travel. Powering the motors are two stepper drivers powered by a 48V 7.3A AC to DC
power supply.
An Arduino Uno was used as a controller. Arduino is an open-source platform used for
building electronics projects. Arduino consists of both a physical programmable circuit
27
board and a piece of software that runs on your computer, used to write and upload
computer code to the physical board. The Arduino platform has become quite popular
with people just starting out with electronics, and for good reason. Unlike most previous
programmable circuit boards, the Arduino does not need a separate piece of hardware
to load a code. It can use a USB and it is free. That is why is was chosen. The
Arduino Uno has the capability to output 5V of power through one pin and 3.3V through
another. From these pins, five smaller components are power: a linear push
potentiometer, a linear slide potentiometer, an IR break beam sensor, and two limit
switches. The potentiometers that will be utilized to gather both the height and base
diameter dimensions will share the 5V output pin as that is what they’re rated for.
Connecting them in parallel with a din rail power block allowing them to both be supplied
with the full 5V providing the most accurate resolution. The two limit switches and IR
sensor do not need and accurate voltage drop. They just need a clear and definitive
drop in the Arduino reading to trigger. This allows all of them to be powered by the 3.3V
pin. The IR sensor will communicate if a shell is in the delivery tube or not, the reading
will control the rate of the Dillon case feeder. The limit switches are used to ensure the
accuracy of the claw grasp. One will be place in the X direction of travel, and the other
in the Y direction of travel. By triggering both of the switches it will relay to the Arduino
that the carriage has returned to the home position and there will be no interference with
the presentation of the shell and the cycle can begin again.
4.1.2. Printed Components
A variety of 3D printed components were made to satisfy the operation of the machine.
The most simple of the printed parts was a box to house the AC to DC
converter/transformer for the arduino. This allowed the disassembly of the arduino
power cord and made it possible to run it to the power switch located on the power pox
supplied with 115V from the wall outlet. Doing this allowed for an easier operation of
the entire system because it now only needed one wall socket to power the machine
and the entire machine could be operated by one switch. Next there were two printed
tubes to serve different functions. The first was made to attach to the casefeeder and
provide a guided path to the next tube. The first not only provides a path of travel, it has
a channel to house a break beam sensor. When the beam is broke it relays to the case
feeder to stop, eliminating a jam and allowing a more controlled rate for shell delivery.
The next tube is positioned directly below the first and has a elbow attached to the
bottom for a proper mount to the arm of the servo motor. A cylinder is screwed on to
28
the opening in the bottom and a platform to support the shell is attached to the cylinder
rod. As test took place it was realized that a home position for the claw was needed to
center it above the servo motor. To satisfy the Y direction of travel it was necessary to
attach the switch to the carriage guide. A simple clamp was made to hold the switch
stationary with threaded holes and set screws would hold it securely to the rail. Various
parts were needed to optimize the performance and aesthetics of the XY-table. The
carriage traveling the longer distance needed to support the shorter rail, one of the
stepper motors, and also need to secure to belt allowing the longer direction of travel. A
cap for the carriage was created to allow for the NEMA 23 stepper mount and carriage
to be secured. A toothed clamp was also added to allow for the belt to be mounted and
tensioned easily. The final and most important part that was printed was the claw. The
claw was made to to be attached to the dry carriage and travel the span of the table. It
also supported the 1 ½” stroke potentiometer and cylinder. The notch in it allowed for
the shells to all be grasped and transported easily while the angle allow for the
optimization of measurements by exaggerating nominal dimensions do to the allowed
travel of the shells before being confined by the V-notch. The V-notch angle is
emphasized in a modeled isometric view below.
Figure 17: Grasp Isometric
4.1.3. Mechanical Components
The design also had a few mechanical components. Two linear carriage and guide were
used. The longer X-direction of travel used a ball bearing carriage and stainless steel
guide. A ball bearing carriage was needed to support the large amount of torque of the
29
cantilever beam that provided motion for the shorter Y-direction of travel that was
composed of another carriage and guide system. This pairing was composed of a less
expensive PTFE carriage and aluminum guide which could run dry. The last
mechanical component was the case feeder itself. The shell would be put in an large
quantities and an angled plate would orient them primer down and deliver the casing
individually at a relatively prefered rate based on the duration of the sorting process.
4.2. Machine Operation
The overall design of the machine combines a variety of both mechanical and electrical
technologies. Figure D2 in Appendix D shows a step by step process that occurs to
deliver each and every shell. A Dillon Precision Case Feeder is used to separate the
shells as well as orientate the shells only allowing one shell to be sorted at a time.
Nesting occurs often when a lot of casing from different sized calibers are thrown
together. The tumbling that takes place in the case feed does a good job of eliminating
a portion if this problem. From the case feeder, the shells will be dropped into a tube
that was designed a printed to be able to hold and deliver both the largest and smallest
shells that are planned to be sorted. The tube has a variety of components attached to
it, including, and break beam diode sensor, a rage servo motor, and also a pneumatic
cylinder.
The shell passes through the break beam sensor as it falls into the tube. Once in the
tube, the servo motor rotates 110 degrees to center the tube directly below the xy-table
home position. The pneumatic solenoid is threaded to the bottom of the tube and a
printed plungers is threaded to the cylinder rod to support the shell. The cylinder is then
engaged delivering the shell to a to a corresponding height of our identification stage
through the opening in the claw. The second cylinder is attached on the the grasping
claw and is also responsible for the movement of the first linear potentiometer by
limiting how far it can extend by contacting the shell and stalling. This operation
accurately obtains the base diameter of the casing. Below you can see a cross-
sectional view of the grasp to help identify how the component are attached and
dependent upon each other in Figure 18. The next operation is dependent on if the
casing can be correctly identified by the first dimension alone, if it can't the claw will be
centered under the second stage of the machine by means of the XY-table. The
second stage incorporates another linear potentiometer that is firmly attached to a drop
down plate that touches the casings top plate through the use of the final cylinder, again
the displacement of the cylinder is read by the potentiometer to obtain an accurate
height dimension.
30
Figure 18: Grasp Cross-Sectional View
After the second stage is retracted, the vast majority of all shell will be able to be
identified. The two voltages will correspond to a library written in the code that will relay
to both stepper motor how many pulses to move or coordinates. When positioned there
it will be directly above one of 36 PVC tubes and the second cylinder will disengage and
release the casing into the tube to be dropped into the corresponding bin. It by some
chance the shell was not identified it will be delivered to a “junk” bin where all the shells
with inaccurate reading or were not in the library will go.
5. Project Planning
5.1. Task List
In order to maintain our course and stay in motion with our project, a project plan was
created. Tasks were brainstormed and estimated time and resources were allocated to
each. A plan for both semesters was created although the second semester plan will
need to be updated later on to accommodate any changes. Below is the first semester
project plan that corresponds to the Gantt Chart.
5.1.1. Semester Plan
Task 1: Define Project
Objective: Analyze and understand fully the problem at hand.
Duration: 9/2 - 9/23 (4wks)
Task Leader: Nolan Michaelson
31
Additional Personal: 25% All team members
Resources: Dr. Selekwa, Dr. Sailer, & Library Database
Deliverables: Discussion of understanding to make sure everyone is on the same
page.
Task 2: Brainstorming
Objective: Obtain several designs that satisfy our objectives and constraints.
Duration: 9/9 - 9/23 (3wks)
Task Leader: Tom Crandall
Additional Personal: 25% All team members
Resources: Previous Design Documents & Library Databases
Deliverables: Two design sketches/ideas for each member that satisfy objectives and
constraints.
Task 3: Basic Design Selection
Objective: Select one general design to move forward with.
Duration: 9/16 - 9/23 (2wks)
Task Leader: Cole Cameron
Additional Personal: 25% All team members
Resources: Previous Design Documents
Deliverables: One concept Design Sketch
Task 4: Project Planning
Objective: Create project scope that covers all aspects of the project.
Duration: 9/23 - 9/30 (1wks)
Task Leader: Nolan Michaelson
Additional Personal: 25% All team Members
Resources: Project Planning Guides
Deliverables: A detailed outline of our project, timeline (Gantt Chart), and deliverables.
Task 5: Research: Transport Hardware
Objective: Research different hardware mechanisms and analyze their capabilities.
Duration: 9/9 - 9/30 (3wks)
Task Leader: Thomas Crandall
Additional Personal:
Resources: Library Database
32
Deliverables: Provide options for Transport Hardware relating to concept design.
Task 6: Research: Camera Options
Objective: Research several different options for cameras, while taking into account
their price and functionality.
Duration: 9/9 - 9/30 (3wks)
Task Leader: Cole Cameron
Additional Personal:
Resources: Library Database
Deliverables: Have three potential cameras and there details (pros & cons)
Task 7: Research: OCR Programs
Objectives: Research several OCR programs that are able to fit the needs and
constraints of the project.
Duration: 9/9 - 10/7 (4wks)
Task Leader: Steve Duval
Additional Personal:
Resources: Library Database, Maxx Kureczko
Deliverables: Have three potential programs (pros & cons)
Task 8: Budget Development
Objectives: Create a budget estimate incorporating all expected costs of the products
and other various expenses we might face. The department will then review our budget
and declare the funds our project will be delegated.
Duration: 9/30 - 10/21 (3wks)
Task Leader: Cole Cameron
Additional Personal:
Resources: NDSU Mechanical Engineering department, online catalogs, Creo
Parametric, Excel.
Deliverables: An outlined budget including any possible costs related to the project.
Task 9: Research: Control Modules
33
Objectives: Investigate the capabilities of control modules and choose one that best fits
our needs. The module chosen will be dependent on the requirements from the other
machine components.
Duration: 9/16- 10/14 (4wks)
Task Leader: Nolan Michaelson
Additional Personal:
Resources: Online Catalogs
Deliverables: Bring info on three potential Control Modules.
Task 10: Design Physical Framework
Objective: Create a frame that will incorporate our components, allowing them to
function together efficiently.
Duration: 10/28-11/18 (3wks)
Task Leader: Cole Cameron
Additional Personal:
Resources: Previous Design Documents
Task 11: Project Re-vamp
Objectives: Renovate the existing project to allow for the use of physical measuring
devices to identify the casings instead of an OCR software.
Duration: 11/11-11/25 (2wks)
Task Leader: Nolan Michaelson
Additional Personal: Steve Duval,Cole Cameron, Tom Crandall
Resources: CAD Programs (Solidworks/ PTC Creo), internet
Deliverables: Updated Design
Task 12: Create 1st Semester Report & Presentation
Objectives: Assemble a report comprises of our findings, failures, and progress from
the first semester of design. Then present the report to our peers and advisors.
Duration: 11/25-12/11 (2.5wks)
Task Leader: Cole Cameron
Additional Personal: 25% All Team Members
Resources: Gatherings from Task 1 - Task 11
Deliverables: Final Draft Report & Presentation
Task 14: Determine Part Numbers
Objectives: Solidify all model numbers for the needed design
Duration: 1/18 - 1/22 (1wks)
34
Task Leader: Steve Duval
Additional Personal: 25% All Members
Resources: Internet and product catalogues
Deliverables: Finalized Parts list
Task 15: Model and Print V-block design
Objectives: Order the need parts from the supplier/manufacturer incorporating
sufficient lead time.
Duration: 1/18 - 1/22 (1wks)
Task Leader: Nolan Michaelson
Additional Personal:
Resources: Solidworks and NDSU 3D printer
Deliverables: V-block part
Task 16: Project Planning Revision
Objective: Create project scope that covers all aspects of the project.
Duration: 1/25 - 2/5 (2wks)
Task Leader: Cole Cameron
Additional Personal: Steve Duval
Resources: Project Planning Guides
Task 17: Budget Revision
Objectives: Create a revised budget to adjust for the project re-vamp incorporating all
expected costs of the products and other various expenses we might face. The
department will then review our budget and declare the funds our project will be
delegated.
Duration: 1/25 - 2/5 (2wks)
Task Leader: Cole Cameron
Additional Personal: All
Resources: NDSU Mechanical Engineering department, online catalogs, Creo
Parametric, Excel.
Deliverables: An outlined budget including all costs related to the project.
Task 18: Determine Control Module Shield
35
Objectives: Analysis of the needed resolution will output the needed Bit size of the
shield needed to make the previous arduino controller capable for the application.
Duration: 2/1 - 2-5 (1wk)
Task Leader: Tom Crandall
Task 19: Order Control Module Shield
Objectives: Order the shield needed to make the previous arduino controller capable
for the application.
Duration: 2/1 - 2-5 (1wk)
Task Leader: Cole Cameron
Deliverables: Arduino Shield
Task 20: Arduino Program Research
Objectives: Develop a basic knowledge that will be needed to program the arduino to
program the measurement components
Duration: 2/1 - 2/19 (3wks)
Task Leader: Tom Crandall
Additional Personal: Steve Duval
Task 21: Project Revision
Objectives: Renovate the existing project to allow for the use of pneumatic measuring
devices to identify the casings instead of an electrical system.
Duration: 2/2 - 2-9 (1wk)
Task Leader: Nolan Michaelson
Additional Personal: Steve Duval, Tom Crandall
Resources: internet
Deliverables: Updated Design
Task 22: CADD Drawings, BOM
Objectives: Create a 3D model and drawings of our chosen mechanical design to aid in
creating the BOM, FEA, and in physically creating the machine.
Duration: 1/25 - 2-12 (3wks)
Task Leader: Nolan Michaelson
36
Resources: CAD Programs (Solidworks/ PTC Creo)
Deliverables: Drawings of all components of design w/ BOM.
Task 23: Determine Pneumatic Part Numbers
Objectives: Solidify all model numbers for the needed pneumatic design
Duration: 2/8 - 2/12 (1wks)
Task Leader: Nolan Michaelson
Resources: Internet and product catalogues
Deliverables: Finalized Parts list
Task 24: Prototype Fabrication and Assembly For Identification Platform
Objectives: Assemble the structure of the identification platform. Get all
components assembled, mounted, and communicating properly.
Duration: 2/1-3/4 (4wks)
Task Leader: Tom Crandall
Additional Personal: Steve Duval
Resources: MELabs
Deliverables: Have a design that can properly identify specific casings
Task 25: Arduino Program Research (steppers)
Objectives: Develop a basic knowledge that will be needed to program the arduino to
program the stepper motors
Duration: 2/8 - 3/4 (4wks)
Task Leader: Cole Cameron
Additional Personal: Tom Crandall
Task 26: Order Pneumatics
Objectives: Order the pneumatic components that will drive the measuring components
Duration: 2/8 - 2-12 (1wk)
Task Leader: Nolan Michaelson
Additional Personal: Cole Cameron
Deliverables: Pneumatic Cylinders
37
Task 27: Order Power Supply
Objectives: Order the power supply capable of supporting all the needed components.
Duration: 2/15 - 2/19 (1wk)
Task Leader: Tom Crandall
Deliverables: Power Supply
Task 28: Design & Develop Software Application
Objectives: Create an application that can run an iteration executing the identification
casing sorting process. It has to identify various calibers with a 98% accuracy.
Duration: 2/15 - 3/4 (3wks)
Task Leader: Thomas Crandall
Additional Personal: Steve Duval
Resources: Library Database & Computer Science Department
Task 29: Order: Physical Framework Tubing
Objectives: Order the need parts from the supplier/manufacturer incorporating
sufficient lead time.
Duration: 2/15 - 2/19 (1wk)
Task Leader: Nolan Michaelson
Resources: Manufacturers, online catalogues, ME department
Deliverables: Parts in hand.
Task 30: Fabricate Physical Framework and Casefeeder
Objectives: Order the need parts from the supplier/manufacturer incorporating
sufficient lead time.
Duration: 2/22 - 3/4 (2wks)
Task Leader: Nolan Michaelson
Additional Personal: Cole Cameron
Deliverables: Project framework and shell orientation process
Task 31: Order Extra Casefeeder Plates
Objectives: Order the needed parts that will allow for the orientation and delivery for
both small and large rifle casings.
Duration: 2/22 - 2/26 (1wk)
Task Leader: Cole Cameron
Deliverables: Shell orientation for small and large rifle calibers
38
Task 32: Order Air Lines and Air Compressor
Objectives: Order the need parts to run the pneumatic cylinders from the
supplier/manufacturer incorporating sufficient lead time.
Duration: 2/27 - 3/4 (1wk)
Task Leader: Steve Duval
Resources: Manufacturers, online catalogues, ME department
Deliverables: Parts in hand.
Task 33: Pick Up Hardware, Bins, and Plexiglass
Objectives: Pick up the needed parts that can be purchased at a hardware store such
as a plexi shield, hanging organizational bins, and nuts/bolts.
Duration: 2/27 - 3/4 (1wk)
Task Leader: Tom Crandall
Resources: Lowes
Deliverables: Parts in hand
Task 34: Debug Identification Program
Objectives: Run the previously developed program and fix any errors or delays to
increase accuracy and speed of shell identification.
Duration: 3/7 - 3/25 (3wks)
Task Leader: Tom Crandall
Additional Personal: Steve Duval
Resources: Library Database, Computer Science Department & Eric Kubischta
Deliverables: A program that runs as desired with 98% accuracy.
Task 35: Order Transport Mechanisms
Objectives: Order the need parts to create a linear xy-table from the
supplier/manufacturer incorporating sufficient lead time.
Duration: 3/7 - 3/11 (1wk)
Task Leader: Cole Cameron
Resources: Manufacturers, online catalogues, ME department
Deliverables: Parts in hand.
39
Task 36: Fabrication and Assembly of the XY-Table
Objectives: Assemble the delivery system design to specification.
Duration: 3/21-4/1 (2wks)
Task Leader: Nolan Michaelson
Additional Personal: Cole Cameron
Resources: MELabs
Deliverables: Have a working XY-table capable of the needed speed and accuracy
Task 37: Program Transport Hardware
Objectives: Develop a program that transports the casing depending on the given
measurements.
Duration: 3/21 - 4/1 (2wks)
Task Leader: Cole Cameron
Additional Personal: Tom Crandall
Resources: Library Database, Computer Science Department & Eric Kubischta
Deliverables: A program that controls transfer of shell casing.
Task 38: Wiring
Objectives: Properly connect all working components including the moving
platform to the power supply.
Duration: 3/21-3/25 (1wks)
Task Leader: Tom Crandall
Additional Personal: Nolan Michaelson
Resources: MELabs
Deliverables: Completed Prototype
Task 39: Debug Transport Hardware
Objectives: Run the previously developed program and fix any errors or delays to
increase accuracy and speed of shell delivery.
Duration: 4/4 - 4/15 (2wks)
Task Leader: Cole Cameron
Additional Personal: Tom Crandall
Resources: Library Database, Computer Science Department & Eric Kubischta
Deliverables: A program that runs as desired with optimal speed and accuracy.
40
Task 40: Prototype Testing
Objectives: Data will be assembled from trials of the prototype regarding the machines
accuracy and its ability to Function within our design goals.
Duration: 4/11 - 4/29 (3wks)
Task Leader: Steve Duval
Additional Personal: 25% All team Members
Resources: ME Labs
Deliverables:.Finalized, working design
Task 41: Create 2nd Semester Report
Objectives: Assemble a report compiled of our findings, failures, and final
design/prototype from the last two semesters. Then present the report to our peers and
advisors.
Duration: 4/18 - 4/29 (2wks)
Task Leader: Cole Cameron
Additional Personal: 25% All team Members
Resources: Gathered from tasks 1-40
Deliverables: A well developed delivery of the entire project from start to finish in a
report
Task 42: Create, practice, and deliver 2nd Semester Presentation
Objectives: Assemble a powerpoint compiled of our findings, failures, and final
design/prototype from the last two semesters. Then present the powerpoint in front of
our peers and advisors.
Duration: 4/18-5/5 (3wks)
Task Leader: Cole Cameron
Additional Personal: 25% All team Members
Resources: Gathered from tasks 1-40
Deliverables: A well developed delivery of the entire project from start to finish in
presentation form
5.1.2. Gantt Chart
A gantt chart was created to visually keep track of the progress of our project. The
gantt chart is displayed in Appendix D, Figure D1.
41
5.2. Variation From Project Plan
5.2.1. Second Semester Additions
In week 9 a decision had to be made because the group did not think it would be
possible to identify the casing by reading the bottom of the casing. This form of
identification would most likely be the only 100% accurate way to determine the calibers
but it just presented too many issues that were out of reach for the students and the
time allotted. A large variety of different softwares were researched, and the more
capable ones were contacted. The result was that the more reputable softwares within
the budget still could not complete the needed task.
The brainstorming task was then revisited and a physical dimensioning of each
individual shell was concluded to be the best option. This was a huge setback, yet it
seemed that the majority of our previous design would remain relevant and work with
the new mean of shell identification. A new design has been selected, a design that
used the means of linear potentiometers to obtain the physical dimensions. It would
identify the shell as it is in the delivery grasp, where it would also be identified in the
previous design.
A few minor issues were encountered during fabrication as well forcing more parts to be
ordered and left the group waiting for lead times and later tasks such as the final report
and wiring were moved up to reduce any free time that was encountered. A large issue
was the upgrade to the ball bearing carriage and rail. It was late in the project and the
largest expense of the project and left the grout with sparse funding. Fortunately the
previous rail was able to be returned and the remainder of the parts were able to be
ordered but not until the final weeks of the project which was far beyond the time that
was expected because the return took some time to process.
5.2.2. Straying from the Project Plan
Near the start of the second semester it was realized how expensive the components
were going to be in order to achieve the needed accuracy. It seemed as though the
initial budget wasn’t enough. Pneumatics would replace many of the electronic
components. The claw grasp capable of determining the base diameter along with the
actuator that obtains the height dimension are pictured in Appendix C, Figures C3-C5
respectively. The initial start of the second semester presented a large delay. The
previous semester ended with the group creating an entirely new design with a new
budget. Specific parts were selected for the design to achieve the accuracy that was
needed. The next roadblock encountered in the second semester was that another
42
much smaller revision was made and the linear actuators were replaced by a pneumatic
system to allow for the arduino to accommodate the variety of components that were
going to be used. After part numbers were finalized it was found that the project was
well over the initial budget and a second budget was send in for approval delaying vital
parts from being ordered setting back the project fabrication greatly. The budget
approvals took a bit longer than would be expected and fabrication was necessary and
parts needed to be ordered as soon as possible, they was no room for delays anymore.
The vital parts that were need to accomplish the core task at hand which was to
distinguish and separate a variety of spent handgun and rifle calibers. Parts that didn’t
directly help accomplish that were put off and would be order after the project vitals if
the larger second semester report were approved. This issue shuffled up the tasks and
the order they were expected to take place in. A few minor issues were encountered
during fabrication as well forcing more parts to be ordered and left the group waiting for
lead times and later tasks such as the final report and wiring were moved up to reduce
any free time that was encountered. A large issue was the upgrade to the ball bearing
carriage and rail. It was late in the project and the largest expense of the project and
left the grout with sparse funding. Fortunately the previous rail was able to be returned
and the remainder of the parts were able to be ordered but not until the final weeks of
the project which was far beyond the time that was expected because the return took
some time to process. Without question the most underestimated task was the program
and it’s debugging which revealed to be very difficult, even more so to debug without a
fully fabricated design.
6. Project Budget
6.1. Detailed Budget and Justifications:
Last year, the Shell Sorter Phase 1 group created a budget totaling $2,786.36 and was
allocated by the university $3000 dollars for the project. The budget of the OCR design
followed the same trend as the budget of the Phase 1 design, with the shell casing
identification being the majority of the budget. The incorporation of an xy-table delivery
system was introduced and is a considerable extra expense. The first amount of money
allotted to Shell Sorter Phase 2 was a total of $2200.00. The project re-scope and
change of identification methods from the OCR software to physical measurements
freed up a substantial amount of money from the first Shell Sorter Phase 2 budget by
eliminating items such as the laptop, web camera, and of course the OCR program. As
it was previously mentioned the new method of identification is to physically dimension
the spent casings. This concept incorporates the use of a couple different components
43
such as potentiometers and pneumatics. Since the level of precise is become more
emphasized these components must be very precise. The working parts of the xy-table
are now going to be of a higher quality and possess more accuracy and speed than the
previously budgeted items. The price of the frame remained nearly the same in both
budgets of the Shell Sorter Phase 2. The project budget has increases this semester
due to the new direction it is heading. It is somewhat attributed to the fact that very
general components that were thought to work in the previous design as well as the
initial estimated budget of the re-scope presented at the end of the first semester were
selected off the internet. It is highly stressed that precision as well as speed are needed
to complete the project as well as meet the constraints placed upon the group by the
RRRMC. For example in there are a variety of shell casings that use either the exact
dimension or very similar dimension relative to other calibers. After various research it
was found that three separate dimension would have to occur to correctly identify the
spent casing, with differences between some being so minute that the precise of our
components would have to be +/- 0.001” for not just one, but three needed components
now. Figure 2 below illustrates exactly how similar different calibers can be.
Speed was always known to be an issue and the original budget took this into account
to some extent but not fully. The RRRMC cycles through nearly 1.5 million casing each
and every year. Half of which are capable of being sold for reloading purposes. This
means a casing must be accurately sorted on average in just under 10 seconds
provided the range is open 52 weeks a year, 8 hours a day, without incorporating
recalibrations, time to switch reloading plates, and other stoppage times.
Budget Item Estimated Cost
Hardware/Dimensioning $831.44
Frame cost $226.72
x-y Table cost $1476.35
Total $2534.51
6.2. Hardware/Dimensioning
6.2.1. Potentiometers
After a complete re-scope of the initial project, the shell identification process was
changed. Originally the casing we to be deciphered by the optical character recognition
44
program. As stated above the new direction is to use a physical dimensioning method.
A linear potentiometer was chosen as the most precise and cost efficient instrument to
obtain the base diameter and neck diameter dimensions. The concept is to touch the
casing side wall and a resistance will be relayed to the controller and converted to a
dimension. Precision is heavily emphasized for the potentiometer. The stroke length is
considered secondary as there will not be much motion to obtain the dimensions. With
this in consideration one potentiometer with a ½’’ stroke length (SKU:987-1025-ND) and
a 1 ½’’ stroke length (SKU:682-9615R5.1KL2.0) will be used for the base and neck
diameter, whereas a 2” stroke length potentiometer will be used to get the height
dimension (SKU:PTB6043-2010BPB103). The price will total to $343.76 after shipping
charges are incorporated. The price is steep for the potentiometers but the quality is felt
necessary as to meet all of the needed requirements.
6.2.2. Pneumatic Cylinders/Components
After a budget revision pneumatics were a much cheaper alternative than the previous
solenoids and actuators. Pneumatic cylinders also have adjustable speed and force
which is much more desirable for this design. Two 5/16’’ bore cylinders with a ½’’ stroke
length and one 5/16’’ bore cylinder with a 2’’ stroke length were quoted at Air
Engineering and Supply. These cylinders came to a total of $55.97. The components
needed will be listed in 3.1.3 Pneumatic Components.
6.2.3. Pneumatic Components
The first component needed to run pneumatics is a 5 port 4-Way Single Solenoid
Valves (x3), which was the most expensive portion of pneumatics totalling a cost of
$32.24/Valve. Some other components are ⅛’’ regulators (x3) and ⅛’’ Breather Vents
(x6) to adjust the air-flow. Tubing and connectors are also included in the budget. All of
which was also quoted from Air Engineering and Supply with a total cost of $276.57.
6.2.4. Arduino Shield
A large amount of consideration was placed into what control module would be
compatible. After the project re-scope it quickly became evident that the control module
will have to run several components with a high degree of accuracy. Last year’s project
used an Arduino controller to run its three components with a moderate level of
accuracy. This project will reuse that same controller, but an arduino shield that is
capable of 24-Bits will need to be add to it to meed the accuracy and other criteria
needed. Iascaled.com sells a shield capable of meeting the criteria (Model Number
LTC2499) for $70.00 with $11.90 delivery charges.
45
6.2.5. Wiring
After the redirection of the project, many more components were needed to differentiate
the casing calibers. Even more wiring will be used to connect the working electrical
components to the power supply. The solenoid will also need to have current provided
to them throughout the entire casing delivery step across the entire xy-table adding a bit
more intricate wiring system. An estimated $50.00 even is to account for any and all
wire or wiring associated costs.
6.2.6. Claw & Actuator Housing
Three parts of the project are to be machined from aluminum.The linear actuator will be
mounted and encloses in a housing to shield moving parts while allowing for an easy
mount because the identification stage has so many working/moving parts. The raw
materials and machining of the part from grainger will amount to $78.00. The other two
parts will be to support each of the solenoids on the grasping structure. Being smaller
and more simple the material for these two claw platforms can be purchased from
Grainger as well for $10.53.
6.2.7. Power Supply
A Power supply will be needed, one with enough power to run everything off of one
device is ideal because it will be easier to position on the machine. Supplying enough
power for both steppers to run simultaneously while operating at maximum power
requires 48V 10A a Mean Well Switching Power Supply is perfect for this
operation(mouser part # 709-SP-480-48) that will cost $165.40.
Hardware/Dimensioning quantity Price
-Potentiometers 3 $113.07
-Pneumatic Cylinders 3 $55.97
-Pneumatic Components $276.57
-Arduino Shield 1 $81.90
-Wiring NA $50
-Claw 1 $10.53
-Actuator Housing 1 $78
-Power Supply 1 $165.40
Hardware Cost $831.44
46
6.3. Frame Materials
6.3.1. Steel Tubing
The primary framework that will support the bins and electrical components will be
fabricated from hollow steel tubing to ensure stability. A local metal shop in Fargo is able to cut the tubing to the specific needed lengths. The frame will be constructed from 2” 14 gauge tubing, and for the amount needed cut to the needed specifications, it
would cost $132.72
6.3.2. Bins
Initially starting by sorting 35 separate casings and send the remaining calibers all to a
separate “junk” bin. So 36 bins in total will be needed. The bins previously used can be reused, therefore only 24 bins will need to be purchased. At $2.80/bin over a purchase
of 6+ bins, the cost will reach $71.01 with S&H from McMaster-Carr.
6.3.3. Mounting Brackets
To hold the tubes in place on the machine while it operates so shells don’t go
everywhere. the mounting material will be 2” by ⅛” 304 stainless steel. It comes in lengths of 6f from grainger(item #4YTY3)t. The total length needed is 27ft. That bring
the cost to $22.99.
Frame Materials quantity Price
-Steel Tubing NA $132.72
-Bins 27 $71.01
-Mounting brackets 27’ $22.99
Frame cost $226.72
6.4. Transport design etc. 6.4.1. Shell reservoir/orientation Last years design utilized an auto-orientating shell delivery product. It provided a ½ gallon reservoir for the spent rounds and was store bought. Reusing won't cost
anything. Phase 1 of the project only purchased the pistol casefeed plate therefore the other plates will need to be purchased, a large rifle plate and small rifle plate each are
$38.95 giving a total of $91.39 for the 2 plates including S&H.
47
6.4.2. 3D printing allocation A variety of components that don't need the strength of a machined part, but are created
for a specific purpose in the design will need to be 3D printed. Such as the v-notched blocks that will held the casings securely, and a platform to support several
components. A single roll of filament will be sufficient for the needed parts, costing $60.00.
6.4.3. X-direction travel The design calls for two ⅜” stainless steel guide rods to be used to guide the casing in the y-direction (front to back). ⅜” was chosen for added strength and two rod with
individual bearings will eliminate and torque or twisting motions during the casing delivery. A short distance of 12 inches is all that’s needed for y-direction travel. A two foot ⅜” stainless steel guide rod will be purchased from McMaster-Carr for $25.43. Two
bearings with platforms from VBX (Product Code: TWA6_NB) will be placed on the guide at the cost of $39.95 each.
6.4.4. Linear Bearings
As for the x-direction of travel which is 32 inches in length. Since the travel is a considerable amount larger it is stressed that the movement is smooth, fast, accurate,
and of course repeatable. To achieve those parameters, two profile linear track and bearings were selected. The redi-rail guide and carriage system by PCB linear seemed
to fit the part. The track is the RR14036.000. Each carriage is $80.73 and the track amounts to $203.44, making the total with S&H $386.36.
6.4.5. Tubes The machine design requires roughly 70’ of tubing, and 1” PVC was chosen due to the
low price. 80’ of PVC will make sure that all the sizes can be achieved and the cost is $25.12 this will be purchased at Lowes so no shipping required.
6.4.6. Stepper motor & encoder Two stepper motors, one for the x dimension, and another for the y dimension will be utilized for transporting the casings to the desired tube. A product offered by applied-
motion.com (STM23R-2NE), easily exceeds the needed criteria asked of the component. The motor itself is $192.00. After both motors and S&H are accounted for the total amount is brought to $448.17.
6.4.7. Stock Parts $50 This will simply cover the rough costs of screws, bolts, washers, and other
miscellaneous stock parts.
48
6.4.8. Belts & Pulleys An array of belts and pulleys will be essential for the stepper motors to transport the
grasp structure that will hold the casings. Two timing belts (model: LL025MXL) will need to be purchased for the structure to move in both the X and the Y directions. This
can be done for $24.68. To work properly the system must also use multiple pulleys (model: 1254N24) that will amount to $31.46, along with a ¼” rod (model: 6061K21) for $6.05 and multiple bearing mounts (model: 6800N3) for $67.63. All of the components
can be purchased within the same order from McMaster-Carr.
6.4.9. Plexiglass At was a given constraint from the RRRMC that the machine is to be placed in the from lobby and available for the members to use. With that established, a barrier was needed to distance the members in the lobby from any working/moving members of the
project. A plexi shield is going to be mounted. A piece of plexi glass capable of providing a single barrier to all the moving parts will be purchased from Lowes for
$73.50.
x-y Table Transport design quantity Price
-Shell reservoir/orientation 2 case feeder plates $91.39
-3D printing allocation N/A $60.00
-X-direction of travel 2', 2 $211.99
-Tubes 80' $25.12
-Stepper motor+encoder 2 $448.17
-Stock Parts N/A $50.00
-Belts & Pulleys N/A $129.82
-Plexi Glass 1 $73.50
-Linear Bearings 4 $386.36
x-y Table cost $1476.35
6.5. Revisions and Actual Spent Funds
In the second semester the previous budget was revised and finalized and can be seen
in Appendix A section 9.1.2. The estimated costs were roughly $300 more than the
previous semester even with elimination a laptop and expensive OCR software. The
route that was planned was to identify the shell through physically dimensioning them.
To do this properly a very precise tolerance was needed, nominally the machine had to
consistently differentiate down to 4/1000”. The created budget was extensive and the
project followed the overall layout well but a few changes were made altering the
funding. Initially the changes were made just because parts were able to found for a
49
better price. But the finalized budget was rejected and the project was only allotted the
initial $2200 granted in the first semester so the cheaper components then became a
necessity.
The main variations from the proposed budget were the actuators, steppers, and linear
carriages/guides. Initially the accuracy of the stepper motors was underestimated and
for that reason, expensive stepper motors with encoder built in were budgeted for. It
was thought to be an area of importance since the previous design group used a
stepper motor that would often times lose its orientation by overstepping or stalling and
resulted in a series of improper casing deliveries if left unattended.
After enough research was done it was concluded that the torque of the stepper motor
that was budgeted would not allow any slip or stall for the required load using the
calculations below. Iw was initially calculated with a stepper possessing 58% of the
torque of the chosen one and still held a factor of safety roughly 2.7. With this known
the stepper motors with encoders were no longer required. Linear actuator with highly
accurate potentiometers merged into the construction were initially budgeted for were
also very expensive do to the combination of components meshed together. By
replacing the actuators with much cheaper potentiometers that were capable of
performing the task. A pneumatic conversion to drive the potentiometers also boded
cheaper than the electronically driven actuators. Although considered much cheap than
the linear actuators, the entire pneumatics system was relatively expensive and and
little money was saved.
50
The PTFE carriages and rails were purchased to save money because the ball bearing
rails were very expensive and in the end had to be purchased for the long direction of
travel anyways.
Amazon also served as a great supplier for the project. Many suppliers that products
were planned on being purchased were found on amazon for a cheaper price with faster
shipping. Electronic components especially were found for much more reasonable
prices on Amazon. The framework when reevaluated also was much cheaper when
51
purchased from a local company. Outside of what was mention, the components were
close to or exactly what was budgeted. Some of the cushion left in the budget was
spent on part that were not initially accounted for though and were purchased to clean
up the overall appearance of the design or overcome an obstacle that was encountered
during late stages of design, fabrication, and even testing. The actual parts purchased
and funding spent was recorded and can be seen in Figure A1 of Appendix A.
7. Fabrication and Troubleshooting
7.1. Electronics Assembly and Integration
7.1.1. Bench Testing
Once the design was finalized and the electronics were ordered or temporarily
borrowed. They were all bench tested individually to ensure the group could operate
each component individually before it was incorporated as a part of the entire system.
All of the components are either programmed or triggered by the Arduino or Arduino
relay in some manner making the task not as simple as one would think. Each
component needed a code to function, luckily Arduino has an extensive library of codes
that could be used as a templates. To function the way needed though, those library
codes had to all be edited to fit the desired application.
Some of the components have a variety of uses and application, like the IR sensor.
These sensors can be used to detect motion, measure distances, and in certain
applications can measure speeds if two or more are used. This design just simply
require the detection of motion. The sensors were installed into a circuit with resistors
in an attempt to maximize the dropping in the Arduino code which would in theory stop
the case feeder instantly and more importantly stop it consistently. The circuit was built
on a breadboard for testing purposes with the sensor facing each other like the would
be on the machine. A pre-written program was uploaded to the Arduino for testing so
the resistors could be manipulated to achieve the best reading but the ideal reading was
hard to achieve and many circuits were constructed all with similar outputs. Eventually
a circuit was chosen with a subtle drop in the code reading but when incorporated with
the case feeder was found to trigger it easily without any issues. To bench test the
case feeder, it was dependent upon the IR sensor working. The sudden change in the
Arduino readings would trigger the corresponding relay on the shield to turn the case
feeder on or off and therefore preventing shells being fed too quickly.
52
The stepper motors when tested apart from the system were easy enough. The drivers
and steppers purchased were very compatible with the Arduino Uno and didn't need a
constructed circuit. The only complexity was wiring the right connections was confusing
and presented a hurdle in the fabrication stage. But the code for linear motion was
simple and could be taken directly from the Arduino library. The IR sensor was tested
in this manor as we, a code was taken from the arduino library. The only action needed
was to record a large variance in the reading when the circuit was altered.
Initial testing for the pneumatics was straightforward once a little research was done.
The solenoids were first wired and the air lines, regulators, connection, and airspeed
valves were are installed easily. The three solenoid all required independent operation
of each other and would occupy three of the four relays on the Arduino shield. A code
written to trigger just one of the relays was used at first to confirm the connection of
each of the solenoid was good and was in the polarity that was needed to extend and
retract in the right order and was in sync with the other two solenoids. The next action
was to build the code to engage all the relay ports independently with flawless timing
relative to other actions in the system.
7.1.2. Writing Code
The Arduino code is a text based code that closely resembles C++, but is simplified to
an extent. The code was initially started once the components that were to be
purchased were know. Libraries and online databases were used to build a code to run
general applications or intended function for the chosen components. Those initial code
were used to do the bench testing. The movement of the machine was then defined to
help further the coding progress as early as possible because it was know that it would
take a substantial amount of time to both write and debug. The motion and process of
the design is defined in a flow chart that was mentioned earlier. This allowed for the
individual codes to be combined together and mimic the intended motion of the
machine. This was done without actual values that would later be determined. The
values of the delays, distances, and dimensions all had to be entered after the final
design was securely fabricated and the dimensions were final. The distances for the
steppers had to be done in pulses, an arbitrary amount of pulses were done various
times and the distances were recorded and the distance per inch was calculated to help
with this action. A grid for the tubing array was made, uniformly spacing the rows and
columns to make the code much more simple. Speeds and delays for all components
then were adjusted. The last values were the dimensions. The potentiometers output a
reading in volts not lengths, so a database was made with all the intended calibers
53
voltage readings from multiple measurements for many shells. With the readings a
range was made to classify each caliber so the machine could sort them by the
corresponding voltage. The final code can be seen in Figure D4 of Appendix D.
7.2. Fabrication
7.2.1. Modeling
Once The orientation of the bins was chosen with a linear orientation and gravity fed
tubing system various models were modeled. Roughly four different frames were
created and the one with a many independent parts was chosen but later was replaced
with the current design. The initial plan was to use the bins the last design group used.
This gave the overall dimensions needed once the number of bins was decided upon.
The next step was to create the separate assemblies. The assemblies were classi fied
into the second stage dimension, electrical housing, case feeder and xy-table grasp.
The importance of modeling the assemblies was to primarily ensure they could meet the
tolerance that was needed of them but secondarily to assist in brainstorming way to
secure them to the main frame. The claw was essentially the heart and soul of the
project, without it the objective would not be met. The model was created early on and
critique and changed time and time again to create the best possible design and
optimize the angle of the notch. The model also gave insight to the length of cylinders
that would eventually be needed and other critical parts like hardware and such. While
modeling the second stage, this is when it was realized how complicated a neck
dimension would be to not only incorporate, but maintain accuracy over a prolonged
time. All the components being housed in the electrical enclosure was know already so
the purpose of modeling it was to determine a size need to house it all with sufficient
room to wire it once the orientation was known to to optimize the space. The case
feeder assembly was modeled for the purposes of knowing how to efficiently mount it.
One everything was created separately it was brought together as one part.
7.2.2. Fabrication and Obstacles
Fabrication began with the assembly of the structural framework. All this was done by
welding. With the frame in tact the linear motion table could then be assembled. For
the table to work properly with the desired construction, a few pieces had to be 3D
printed specifically for this application to fit the carriages and rail as well as the belt and
pulley placement that was planned for. The pieces included were a cover for the long
54
direction of travel carriage to mount the shorter rail. Two other pieces were needed to
capture the timing belts and maintain the tension. All the printed parts were explained
in detail earlier in section 4.1.2. Immediate trouble were encountered when the XY-
table was built. The clearance of the carriage allowed for slop to occur and to
compensate for that the carriage needed to be tightened to the rail very snuggly
constricting the overall movement to the extent that the motors would time out the
power supply due to the power surge to set the carriage into movement. To eliminate
that issue a little slop was left in the carriage but the cantilevered rail would then sag
leading to a whole order of other issues in terms of accuracies. With slop in the
carriage holding a cantilevered load it would also stall often and chatter very loudly
because of the camming effect occurring within it. After trying to make it work for some
time it was decided that the rail and carriage just were not capable of performing the
task and higher quality materials were needed. A ball bearing carriage was chosen and
it was dimensionally identical to the previous rail so all tolerances and integrated parts
would still maintain their viability. Immediately after installing the new rail all the
previous issue were solved. All chatter was eliminated and the carriage would move
freely even when the cantilevered rail was extremely rigid with no movement.
Many variations of the v-notch grasp were printed and tested earlier in the design
process to ensure the final design could identify even the smallest variances in the
casing diameters. The final claw was printed and would support the pneumatic cylinder
and potentiometer on the same side to reduce the sporadicness of the traveling wires
and air lines because it could potentially be hazardous to the operation of the machine if
any hanging components were to become entangled in any moving parts to rub on any
sharp edges. Eventually a wire router was printed and added to the printed claw and
moving carriage to elevate the once hanging wires for further safety measure.
During this process the second stage dimensioning system, its platform, and the
mounting piece for the casefeeder were all fabricated as well. Initially the intent was to
have the majority of the components welded on and set in place as securely as we
could to meet the required tolerances. Welding was not the best option though, often
time welding could physical dimensions of the pre-existing framework or such. When
exposing materials to such a high degree of heat it can physical change them slightly.
The three components were then left to be attached by bolts and were modified to allow
for adjustment after being secured. These adjustments could eliminate the possibility of
any assembly errors.
55
The construction of the electrical enclosure along with of the wiring followed. A good
deal of research was put into gaining a knowledge on how each of the components
would act, and how they could be wired to function as one working member. A wiring
schematic shown in Figure D3 of Appendix D shows the initial planning to integrate all
the components. By following the wiring schematic the first attempt was all that was
needed. It worked flawlessly. Later on down the road in the initial stages of testing
some conflict occurred. Problems such as incorporating a home position with the
addition of limiting switches, a flaw in the drop down tube arose, and the wiring
connection weren't as secure as they needed to be. The first issue was the drop down
tube. In theory it was good but in the attempt the to execute it it wasn’t possible.
Initially the tube was 3D printed and ABS filament was used, which wasn’t ideal due to
the rough nature of the printed surfaces. The tube didn’t not move freely in the
slightest. In an attempt to create a smoother surface with much less friction both of the
contacting surfaces were sanded down very thoroughly. Still the movement was
terrible. It was no longer the surface causing the issue though, it was a wedging effect
caused by the pneumatic solenoid. The solenoid was to extend and retract the smaller
tube, but the mounting location could not be centered. When the pressure of the
cylinder was applied the smaller tube would not eject or retract parallel to the larger tube
and would jam up. For the design to actually work 80 psi was required, which is absurd
for such a small application. Since this was the issue no efforts to machine the part
where put in place, a new design had to be created. The new design would not deliver
the shell to the claw from above, but from below. Another tube was printed to deliver
the shell from a tube to the claw with the pneumatic cylinder and attached plunger. The
part was further explained above in section 4.2. The next issue was the loose wire
fittings. Originally it was planned to use the 5V power pin and 3.3V from the Arduino to
run multiple devices. All three of the cylinder would also use the same power supply
which in turn only had room for one output. To compensate for this a breadboard was
going to be used to branch the supplies and grounds so multiple devices could be easily
connected and occupy a single pin. The breadboard immediately showed that the
connection would come loose without any external force. So a din-rail terminal block
concept was brought up and decided upon. This would allow for a ground and a live
wire to be branch to many different devices with the use of a jumper. The reason these
were chosen is because all connection can be secured permanently with a set screw
preventing any connection loses. This same issue arose with the pins on the Arduino
even though the connections were thought to be much more secure than the
breadboard but the natural vibration emitted from operating the machine was enough to
shake the wires from the pins. To solve this a similar solution was used. A specialized
56
Arduino relay was used, allowing each pin to also be secured with a screw. The final
altercation that was encountered was the home position of the claw. Again this issue
was just simply overlooked and immediately recognized at the initial stages of running
the machine. The stepper motors would overstep and stall out on the bearings because
the system was not aware of the positioning in the slightest. To solve this, two limit
switches were utilized to prevent it from overstepping the lengths of the linear rails and
also aid in returning to the exact some location after each shell has been delivered
which is vital. One limit switch was placed to constrain the X-direction of travel, and
another was used to constrain the movement in the Y-direction.
7.2.3. Troubleshooting
After the obvious obstacles were overcome and the machine was fabrication was
completed, more minor issues presented themselves. Issues with components such as
the XY-table, IR sensor, and various other electrical components. The most prevalent
of them all was the linear motion stage. A horrendous noise was produced often when
it was in motion still. The replaced ball bearing rail and carriage were noticed to not be
the issue quickly, it was the PTFE carriage and aluminum rail causing the problem. The
rail would rattle and vibrate at low speeds and these speed were incorporated into the
code initially to increase the overall accuracy and speed of the system. First in the
homing aspect, to gain an orientation by contacting the limit switches the carriage would
have to approach at a low speed. This was never eliminated but wasn't a large issue
because the code was revised to only home the table every 25-30 deliveries and the
rattle was manageable. The most obnoxious was when the entire distance of the table
would be covered. The code was built in a fashion to travel in a straight line forcing the
shorter carriage to move at a slow rate to arrive at the proper destination simultaneously
with the longer carriage. By separating the X movement from the Y movement the
shorter rail speed could be increased and greatly reduce the noise and eliminate any
presence of rattling. The written code also incorporated acceleration and deceleration
which would produce vibrations during those processes. Fortunately the stepper motors
produced enough torque to allow no slipping if the carriage was brought up to max
speed and back to a halt instantly. The tensioning of the timing belts also played a
critical role, a happy medium was needed. If too tight or too loose, the motor would not
move the carriages optimally and could also cause slipping and other problems
resulting in vibrations and improper coordinate. To solve this, two parts to allow for
easy belt adjustments were printed
57
The next complication was on behalf of the IR sensor and it’s placement. When the
casing would fall from the case feeder, the passing movement was to break the beam of
light in the tube relaying to the case feeder to stall until the claw has delivered that shell.
The IR sensor would not consistently register that a shell had fallen. It was suspected
that the smaller shells when properly oriented could travel the length of the tube and
could hug the tubing wall and never come into contact with the IR beam. To account
for this a second sensor was positioned so the beams would be positioned
perpendicular to one another. This now design eliminates the possibility for a shell to
pass without triggering at least none of the two signals. It was modified so one signal is
all that it would take to stall the casefeeder as well.
7.2.4. Code Adjustments
The project was fabricated and addition were incorporated during the fabrication
process to account for overlooked things as stated earlier. But issues occured when
trying to integrate some of these components together. To get the servo motor and IR
sensor to communicate adjustments were made. Also parts of the framework were re
adjusted during the stages of testing the code, these types of adjustments were
undesired because it also meant that all the coordinates for the bins as well as some of
the delay in timing the delivery also had to be tampered with. The other technical part
dealing with code adjustments was creating a voltage window that would identify the
calibers with a impeccable accuracy and also eliminating the possibility for overlap.
Finally the most time consuming coding issue was incorporating the limit switches, for
hours every test would result in crashing the arduino run code when the switch would
trigger. In the end the solution was to wire the switches differently.
7.3. Project Testing
The initial stages of test occurred with a dummy setup using the very first few claw
designs held to a wooden board with e slot to guide the potentiometer and pressure was
done manually. This was the first significant sign of assurance that the use of a
relatively inexpensive potentiometer could output the level of accuracy and precision
needed to identify some of the calibers that initial thought would cause concern and
issues. The individual components had all been bench tested before the final assembly
was created and the sub assemblies were also checked to ensure there were in working
order. A large sample of shell was given to the group to allow for testing purposes.
After the working product was nearing completion. Earlier in the stages of design
another large sample of casings was collected and sorted through to gain an
understanding of the frequency the caliber might occur. This would help gain a general
58
idea of how many calibers were necessary to create a relevant machine. Amongst both
the rifle and pistol caliber it seemed that only two or three different calibers composed
the vast majority of both collected samples. In the end a database was created for the
11 most frequent pistol cartridges and 11 most common rifle calibers as well. To create
this database a variety of shells from each of the 22 selected calibers were kept and ran
through the measurement sensors. The voltage reading from each of the shells were
recorded in an excel file. Using the voltages a tolerance was created for each and if the
reading during operation of the machine would fall within those created tolerances the
casing would be identified as such.
Initially basic testing was for the most part successful. The majority of the shells were
able to be identified by the base diameter alone and if not were successfully categorized
with the addition of the height dimension. Not only were they identified correctly, the
casings were tell delivered with amazing accuracy and a sufficient amount of speed to
meet the constraint of one shell sorted every 10 seconds or less. Unfortunately issues
arose with the power supply that was designated to run the stepper motors. It began to
timeout and eventually become useless. The problem was discussed and looked into
thoroughly and it was concluded that the power supply was faulty or damaged
physically and this did not stem from a design error. With that known a replacement
supply was ordered but the lead time took away from the testing greatly. To make up
for this the identification process was still extensively tested by just gathering the shells
dimensions. A large sample of both pistol and rifle casing were tested. Remarkable
results were recorded while identifying the pistol casing, the machine was able to
perform with 100% accuracy. The rifle shells were not tested to the extent of the pistol.
Creating a database for all 22 calibers was time consuming and so was the pistol
testing and project debugging. The amount of debugging that had to be done took
away from the allotted time for test and the addition of both of the power supplies failing
did not help either. A small sample of rifle casings were able to be tested though and
the results were promising but a concussion should not be made this early in testing.
More strenuous testing is still planned for in the near future for the rifle calibers. It can
not be said for sure if the identification paired with the delivery would maintain the
accuracy gathered in the initial testing or not, but the in previous weeks the linear travel
table was operating with a good deal of accuracy and repeatability as it was intended.
With said it can be assumed that the level of accuracy would not diminish with the
addition of the casing travel.
8. Future Recommendations
59
8.1. Near Future
The intent of the project was to actually have the design placed in the lobby at the
RRRMC and working well, meeting the provided constraints. The main obstacle, which
was properly identifying the individual calibers was done with a good deal of success.
While the delivery system was operating it too was successful and accurate. Further
test is intended to occur in the near future to further progress the confidence had in the
machine's abilities to perform and meet the constraints. The group is very confident that
the machine will be working well enough for the RRRMC to use it on their own. A few
other improvement that would be made for this is a reality is to eradicate any safety
hazards like sharp edges and house the working components from the operators. This
would serve to protect the user and also keep the RRRMC’s customers from tampering
with the setting that can be changed from outside the electrical housing like the cylinder
speeds. On top of having a universal switch to supply the entire machine with power
and start the code, another switch to differentiate the pistol from rifle code is in the
process of being incorporated as well. The group would also like the machine to last for
a long time, so any surfaces that might rust are intended to be painted and any
adjustable components will have to be set and secured well.
8.2. Phase III
The separation machine was designed to meet as much of the requirements as
thoroughly as it could be done. Unfortunately the constraints outlined on page 9,
section 2.3. could not all be met. With physical dimensioning it will never be truly 100%
accurate, due to some of the overlap in shell casing dimensions. Some accuracy can
be gained from the addition of a neck diameter dimension. The one known caliber that
can not be identified by the two main dimensions is the .25-06 from the .30-06. There
are close overlaps between various other shells but not to the extent the current system
can't handle if operated correctly. The addition of a third dimension would certainly
allow for a higher degree of confidence as well in the casing identification process.
Although casings such as the 7.62 NATO and .308 would still cause confusion and the
only definite mode of identification is the previously discussed OCR method. But as of
no is beyond the realm of possibility. The group contacted a software development
company and to meet the requirements a software would have to be created and to do
so the price was well out of reach.
The main improvement that was not able to get accomplished was included in the
constraints was a presorting machine. The machine would be aimed at the elimination
60
of rimfire cartridges. Rimfire cartridges first of all can not be reloaded, they also have
tendency to cause issues in the Dillon Casefeeder. With the presence of rimfire shell
the hopper does not run consistently, shell with a narrow enough width can wedge
themselves under the case feeder plates and stall the motor. Incorporated in this
presort machine could also be a method to eliminate steel and aluminum cartridges
because which was one of the secondary constraints as they too are unable to be
reloaded. No design were discussed because all resources were invested in the
accuracy of efficiently identify the calibers.
The next improvement that would improve the function of the design would be to
eliminate all of the printed parts. The parts work well now but the concern of wear is an
issue. After a while the possibility of the ABS platic wearing down and altering the
dimensions is high. Idealy, all the printed part could be machined from aluminum of
another material with better wear characteristics but time was an issue and so was the
experience the members had in the machine shop and the complexity of some of the
parts exceeded what could be fabricated by the design group. An acid bath was also an
option. It essentially creates a more heat and wear resistant surface on the printed
components. A different filament would have to be used in the 3D printer to do so
though. ABS filament can not withstand this treatment and was the only filament on
hand. To build on the last idea, the design could be tweak in various way to help with
maintaining the accuracy and calibration for an extended period of time. One set in
place the components could be more permanently secured, and the number of parts
could be reduced. The idea of one row of tubes that would travel with the carriage was
brought up. This would remove 30 tubes and allow them to be relative to the carriage
and claw movement. Of course more support would be needed for the overhanging
carriage. But it would eliminate the need to maintain accuracy for the 36 bin grid over
time.
The price and the ease of operation were emphasized greatly and there is not much
room to improve on. The components were all eventually purchased for a very
reasonable price for the level of accuracy that is capable. The machine as a whole was
constructed for well for a much lower cost than what was intended. As for the user
interface, the operation of the machine was simplified from the previous attempt and is
operated with just one on/off switch. The improvement comes from the power supply,
only one outlet is now needed.
61
9. Appendices
9.1. Appendix A
9.1.1. Final Submitted Budget with Mentor Approval
Shell Sorter Phase 2
Final Project Budget
ME 462
Group F15-5 Shell Sorter Phase II
Sponsored By:
February 12, 2016
Members:
Cole Cameron
Thomas Crandall
Steven Duval
Nolan Michaelson
Faculty Mentors:
Dr. Majura Selekwa
62
Rob Sailer
1. Introduction:
North Dakota State University has received a project presented to them by the Red
River Regional Marksmanship Center to create a machine capable of sorting through
spent (used) rifle and pistol rounds. The intended purpose for this design is to make the
ammunition reloading process faster and more efficient. Many gun owners choose to
reload their own rounds, whether they make trips to the range as a hobby, shoot
competitively, or if they are hunters. They chose to reload because of the many
benefits it has to offer. The list includes:
● Financial reasons: A good portion of the cost of ammunition are the brass
casings The brass usually comprises roughly ⅓ of the price of the entire round.
● Customizing loads: Reloading gives you the opportunity to select the
components that work with your gun. Reloading allows the user to create small
batch bullets that shoot more accurately.
● Ammunition shortages: Certain rounds are hard to find due to a low supply.
These are the reasons that the RRRMC has come to NDSU to create a fast, high
volume shell sorting machine. For an organization that sees so many empty rounds
each day, reloading and the resale of brass cartridges can bring in a bit of added
revenue. The ability to be accurate and fast when sorting is crucial due to the volume
and nature of the intended purposes.
63
2. Project Model and Budget Overview:
In the first phase of creating a shell sorting machine there were a few areas that had to
be improved. First, the previous delivery system that was in use was unsuccessful at
delivering the shells to the correct bins. In order to reach the desired speed and
accuracy an xy-table was chosen for the new delivery system. Secondly, the previous
shell casing identification method was a SMART camera that was borrowed and far too
expensive. Therefore an Optical Character Recognition (OCR) software was the first
idea for identification through reading the stamp on the bottom of the casing. After a
project re-scope, due to difficulties using the OCR software, identification through
physical measurements was to be used using the xy-table and several linear
potentiometers. A rendering of the proposed project can be below in Figure 1.To
expand upon it, the casings will be loaded into the casefeeder shown in the top left
region of the model. From there they will be fed down through a tube to the
identification platform, where it will be secured so the base and neck diameters of the
casing can be obtained with potentiometers. An pneumatic cylinder will also be
implemented to gather the casing height soon after. From the data the casing will be
able to correctly identify it and then be transferred to the correct bin with use of the xy-
table and grasp that previously secured the casing in the identification stage.
Figure 1
64
Budget Item Estimated Cost
Hardware/Dimensioning $831.44
Frame cost $226.72
x-y Table cost $1476.35
Total $2534.51
3. Detailed Budget and Justifications:
Last year, the Shell Sorter Phase 1 group created a budget totaling $2,786.36 and was
allocated by the university $3000 dollars for the project. The budget of the OCR design
followed the same trend as the budget of the Phase 1 design, with the shell casing
identification being the majority of the budget. The incorporation of an xy-table delivery
system was introduced and is a considerable extra expense. The first amount of money
allotted to Shell Sorter Phase 2 was a total of $2200.00. The project re-scope and
change of identification methods from the OCR software to physical measurements
freed up a substantial amount of money from the first Shell Sorter Phase 2 budget by
eliminating items such as the laptop, web camera, and of course the OCR program. As
it was previously mentioned the new method of identification is to physically dimension
the spent casings. This concept incorporates the use of a couple different components
such as potentiometers and pneumatics. Since the level of precise is become more
emphasized these components must be very precise. The working parts of the xy-table
are now going to be of a higher quality and possess more accuracy and speed than the
previously budgeted items. The price of the frame remained nearly the same in both
budgets of the Shell Sorter Phase 2. The project budget has increases this semester
due to the new direction it is heading. It is somewhat attributed to the fact that very
general components that were thought to work in the previous design as well as the
initial estimated budget of the re-scope presented at the end of the first semester were
selected off the internet. It is highly stressed that precision as well as speed are needed
to complete the project as well as meet the constraints placed upon the group by the
RRRMC. For example in there are a variety of shell casings that use either the exact
dimension or very similar dimension relative to other calibers. After various research it
was found that three separate dimension would have to occur to correctly identify the
spent casing, with differences between some being so minute that the precise of our
components would have to be +/- 0.001” for not just one, but three needed components
now. Fig-ure 2 below illustrates exactly how similar different calibers can be.
65
Figure 2
Speed was always known to be an issue and the original budget took this into account
to some extent but not fully. The RRRMC cycles through nearly 1.5 million casing each
and every year. Half of which are capable of being sold for reloading purposes. This
means a casing must be accurately sorted on average in just under 10 seconds
provided the range is open 52 weeks a year, 8 hours a day, without incorporating
recalibrations, time to switch reloading plates, and other stoppage times.
66
3.1 Hardware/Dimensioning
Hardware/Dimensioning quantity Price
-Potentiometers 3 $113.07
-Pneumatic Cylinders 3 $55.97
-Pneumatic Components $276.57
-Arduino Shield 1 $81.90
-Wiring NA $50
-Claw 1 $10.53
-Actuator Housing 1 $78
-Power Supply 1 $165.40
Hardware Cost $831.44
3.1.1 Potentiometers: After a complete re-scope of the initial project, the shell
identification process was changed. Originally the casing we to be deciphered by the
optical character recognition program. As stated above the new direction is to use a
physical dimensioning method. A linear potentiometer was chosen as the most precise
and cost efficient instrument to obtain the base diameter and neck diameter dimensions.
The concept is to touch the casing side wall and a resistance will be relayed to the
controller and converted to a dimension. Precision is heavily emphasized for the
potentiometer. The stroke length is considered secondary as there will not be much
motion to obtain the dimensions. With this in consideration one potentiometer with a ½’’
stroke length (SKU:987-1025-ND) and a 1 ½’’ stroke length (SKU:682-9615R5.1KL2.0)
will be used for the base and neck diameter, whereas a 2” stroke length potentiometer
will be used to get the height dimension (SKU:PTB6043-2010BPB103). The price will
total to $343.76 after shipping charges are incorporated. The price is steep for the
potentiometers but the quality is felt necessary as to meet all of the needed
requirements.
3.1.2 Pneumatic Cylinders/Components: After a budget revision pneumatics were a
much cheaper alternative than the previous solenoids and actuators. Pneumatic
cylinders also have adjustable speed and force which is much more desirable for this
design. Two 5/16’’ bore cylinders with a ½’’ stroke length and one 5/16’’ bore cylinder
with a 2’’ stroke length were quoted at Air Engineering and Supply. These cylinders
67
came to a total of $55.97. The components needed will be listed in 3.1.3 Pneumatic
Components.
3.1.3 Pneumatic Components: The first component needed to run pneumatics is a 5
port 4-Way Single Solenoid Valves (x3), which was the most expensive portion of
pneumatics totalling a cost of $32.24/Valve. Some other components are ⅛’’ regulators
(x3) and ⅛’’ Breather Vents (x6) to adjust the air-flow. Tubing and connectors are also
included in the budget. All of which was also quoted from Air Engineering and Supply
with a total cost of $276.57.
3.1.4 Arduino Shield: A large amount of consideration was placed into what control
module would be compatible. After the project re-scope it quickly became evident that
the control module will have to run several components with a high degree of accuracy.
Last year’s project used an Arduino controller to run its three components with a
moderate level of accuracy. This project will reuse that same controller, but an arduino
shield that is capable of 24-Bits will need to be add to it to meed the accuracy and other
criteria needed. Iascaled.com sells a shield capable of meeting the criteria (Model
Number LTC2499) for $70.00 with $11.90 delivery charges.
3.1.5 Wiring: After the redirection of the project, many more components were needed
to differentiate the casing calibers. Even more wiring will be used to connect the working
electrical components to the power supply. The solenoid will also need to have current
provided to them throughout the entire casing delivery step across the entire xy-table
adding a bit more intricate wiring system. An estimated $50.00 even is to account for
any and all wire or wiring associated costs.
3.1.6 Claw & Actuator Housing: Three parts of the project are to be machined from
aluminum.The linear actuator will be mounted and encloses in a housing to shield
moving parts while allowing for an easy mount because the identification stage has so
many working/moving parts. The raw materials and machining of the part from grainger
will amount to $78.00. The other two parts will be to support each of the solenoids on
the grasping structure. Being smaller and more simple the material for these two claw
platforms can be purchased from Grainger as well for $10.53.
3.1.7 Power Supply: A Power supply will be needed, one with enough power to run
everything off of one device is ideal because it will be easier to position on the machine.
Supplying enough power for both steppers to run simultaneously while operating at
68
maximum power requires 48V 10A a Mean Well Switching Power Supply is perfect for
this operation(mouser part # 709-SP-480-48) that will cost $165.40.
3.2 Frame Materials
Frame Materials quantity Price
-Steel Tubing NA $132.72
-Bins 27 $71.01
-Mounting brackets 27’ $22.99
Frame cost $226.72
3.2.1 Steel Tubing: The primary framework that will support the bins and electrical
components will be fabricated from hollow steel tubing to ensure stability. A local metal shop in Fargo is able to cut the tubing to the specific needed lengths. The frame will be constructed from 2” 14 gauge tubing, and for the amount needed cut to the needed
specifications, it would cost $132.72
3.2.2 Bins: Initially starting by sorting 35 separate casings and send the remaining
calibers all to a separate “junk” bin. So 36 bins in total wi ll be needed. The bins
previously used can be reused, therefore only 24 bins will need to be purchased. At $2.80/bin over a purchase of 6+ bins, the cost will reach $71.01 with S&H from
McMaster-Carr.
3.2.3 Mounting Brackets: To hold the tubes in place on the machine while it operates
so shells don’t go everywhere. the mounting material will be 2” by ⅛” 304 stainless
steel. It comes in lengths of 6f from grainger(item #4YTY3)t. The total length needed is 27ft. That bring the cost to $22.99.
3.3 Transport design etc.
x-y Table Transport design quantity Price
69
-Shell reservoir/orientation 2 case feeder plates $91.39
-3D printing allocation N/A $60.00
-X-direction of travel 2', 2 $211.99
-Tubes 80' $25.12
-Stepper motor+encoder 2 $448.17
-Stock Parts N/A $50.00
-Belts & Pulleys N/A $129.82
-Plexi Glass 1 $73.50
-Linear Bearings 4 $386.36
x-y Table cost $1476.35
3.3.1 Shell reservoir/orientation: Last years design utilized an auto-orientating shell
delivery product. It provided a ½ gallon reservoir for the spent rounds and was store bought. Reusing won't cost anything. Phase 1 of the project only purchased the pistol
casefeed plate therefore the other plates will need to be purchased, a large rifle plate and small rifle plate each are $38.95 giving a total of $91.39 for the 2 plates including S&H.
3.3.2 3D printing allocation: A variety of components that don't need the strength of a
machined part, but are created for a specific purpose in the design will need to be 3D printed. Such as the v-notched blocks that will held the casings securely, and a
platform to support several components. A single roll of filament will be sufficient for the needed parts, costing $60.00. 3.3.3 X-direction travel: The design calls for two ⅜” stainless steel guide rods to be
used to guide the casing in the y-direction (front to back). ⅜” was chosen for added strength and two rod with individual bearings will eliminate and torque or twisting
motions during the casing delivery. A short distance of 12 inches is all that’s needed for y-direction travel. A two foot ⅜” stainless steel guide rod will be purchased from McMaster-Carr for $25.43. Two bearings with platforms from VBX (Product Code:
TWA6_NB) will be placed on the guide at the cost of $39.95 each.
3.3.4 Linear Bearings: As for the x-direction of travel which is 32 inches in length.
Since the travel is a considerable amount larger it is stressed that the movement is smooth, fast, accurate, and of course repeatable. To achieve those parameters, two profile linear track and bearings were selected. The redi-rail guide and carriage system
by PCB linear seemed to fit the part. The track is the RR14036.000. Each carriage is $80.73 and the track amounts to $203.44, making the total with S&H $386.36.
70
3.3.5 Tubes: The machine design requires roughly 70’ of tubing, and 1” PVC was
chosen due to the low price. 80’ of PVC will make sure that all the sizes can be
achieved and the cost is $25.12 this will be purchased at Lowes so no shipping required. 3.3.6 Stepper motor+encoder: Two stepper motors, one for the x dimension, and
another for the y dimension will be utilized for transporting the casings to the desired tube. A product offered by applied-motion.com (STM23R-2NE), easily exceeds the
needed criteria asked of the component. The motor itself is $192.00. After both motors and S&H are accounted for the total amount is brought to $448.17.
3.3.7 Stock Parts: $50 This will simply cover the rough costs of screws, bolts, washers,
and other miscellaneous stock parts.
3.3.8 Belts & Pulleys: An array of belts and pulleys will be essential for the stepper
motors to transport the grasp structure that will hold the casings. Two timing belts
(model: LL025MXL) will need to be purchased for the structure to move in both the X and the Y directions. This can be done for $24.68. To work properly the system must
also use multiple pulleys (model: 1254N24) that will amount to $31.46, along with a ¼” rod (model: 6061K21) for $6.05 and multiple bearing mounts (model: 6800N3) for $67.63. All of the components can be purchased within the same order from McMaster-
Carr.
3.3.9 Plexi Glass: At was a given constraint from the RRRMC that the machine is to be
placed in the from lobby and available for the members to use. With that established, a
barrier was needed to distance the members in the lobby from any working/moving members of the project. A plexi shield is going to be mounted. A piece of plexi glass
capable of providing a single barrier to all the moving parts will be purchased from Lowes for $73.50.
9.1.2. First Semester Submitted Project Plan
71
Semester Two Project Plan
(Revised)
Group F15-5 Shell Sorter Phase II
Sponsored By:
Members:
Cole Cameron
Thomas Crandall
Steven Duval
Nolan Michaelson
Mentors:
Dr. Majura Selekwa
Robert Sailer
Project Plan
1.0 Background
The Red River Regional Marksmanship Center (RRRMC), a shooting range located in
West Fargo, deals with a plethora of different spent shell casings each year. Currently,
72
the spent shell casings are sorted by hand by physically looking at the caliber print
which is a slow and painstaking ordeal. These sorted shell casings are much more
valuable to RRRMC and consumers because it saves time, money, and inappropriate
loading. Therefore, an accurate and quick shell casing sorter that is automated would
be ideal for RRRMC and many consumers who reload their own ammunition. Currently
the available shell casing sorters are limited to the number of different calipers that they
can sort. There are other homemade shell sorters that can sort a variety of spent shell
casings, however with limited speed and accuracy. With this being the second attempt
at creating a shell sorter through RRRMC, some ideas and designs from the previous
group could be used and improved upon. The two main components to improve upon is
the use of a different camera and a more reliable delivery system. As stated previously,
the aim of the project is to improve speed and accuracy of the shell sorting process
while increasing the number of shell casings that are able to be sorted.
2.0 Justifications
The intended purpose for this is design is to make the ammunition reloading process
faster and more efficient. Many gun owners choose to reload their own rounds, whether
they make trips to the range as a hobby, shoot competitively, or if they are hunters.
They chose to reload because of the many benefits it has to offer. The list includes:
● 2.1 Financial reasons: A good portion of the cost of ammunition is the brass
casings that are used to hold all of the components together. The brass usually
comprises roughly ⅓ of the price of the entire round. The caliber can also
influence the price. Certain rounds are outrageously priced so reloading is more
popular among various calibers.
● 2.2 Customizing loads: Reloading gives you the opportunity to select the
components that work with your gun. Different primers ignite differently. The
bullet itself can be bought with different weights and profiles within the caliber.
The type of gunpowder as well as the volume can affect accuracy greatly.
Another factor to include is the overall length of the round.
● 2.3 Ammunition shortages: The market for ammunition is unstable right now and
a few certain calibers are in high demand, with a low supply. These rounds can
be difficult to find and reloading helps if you can’t always buy the round you are
looking for off the shelves.
73
These are the reasons that the RRRMC has come to NDSU to create a fast, high
volume shell sorting machine. For an organization that sees so many empty rounds
each day, reloading and the resale of brass cartridges can bring in a bit of added
revenue. The ability to be accurate and fast when sorting is crucial due to the volume
and nature of the intended purposes.
3.0 Project Plan Analysis
While looking at the issues that occurred in the last trial of making a shell casing sorter
the next design could resolve and avoid some of those issues. One main issue was the
inability to account for many shell dimensions, while taking into account tolerance, with
the previous image system. Therefore, a more accurate method of dimensioning is
going to be implemented in this design. This is going to require multiple highly accurate
measuring devices and a high resolution processor to meet the constraints. There were
also issues with the previous delivery system of the shells, so some design
modifications have to be done in order to use gravity as a source of transportation.
4.0 Objectives
The objective of this project is to design a shell casing separator that can sort a variety
of different spent shell casings by using multiple pneumatic driven potentiometers to
collect three separate dimensions on the casing to identify it correctly. This measuring
components, controller, and shell delivery system must be of high accuracy and speed.
This machine must be able to sort, potentially, hundreds of different handgun and rifle
shell casings. These casing are meant to be sorted into individual bins so that they can
easily be sold and reloaded.
5.0 Constraints
Within the project there lies design and safety constraints these include but are not
limited to being able to sort anywhere from 10 to 400 different casings. This being
broken up between rifle and pistol casings. The machine need to operate under 85 dB
as per OSHA standards.
The wide range casing variability stems from a vast range of casings across many
firearms although in reality we more realistically may come across much slimmer
number with a bin devoted to more rare casings that can be sorted by hand. The OCR
software needs to be able to give us a 99% or better reading along with a machine that
will sort to an accuracy of 95%. Those coupled with designing the machine to be
minimum maintenance and reliable to need little to no human interaction to start short of
being switched on will define the engineering constraints
74
The machine needs to operate under 85 dB in order to meet section 1910.95(b)(2) of
OSHA standards. 85 dB for 8 hours is the longest the human ear can go without
receiving damage. Also for the machine to be operated within the range by the
volunteers while People can still communicate effectively.
6.0 Main Tasks
In order to complete the project to full expectations a task list had to be made. First, the
problem had to he fully understood from the entire group to decide what the final
outcome was following the constraints of the project. After understanding the problem
some research had to be done on image recognition software along with a camera and
processor that can all work together with accuracy and speed. When a budget plan is
made the constraints and abilities of the project can be fully defined. Following, a
software must be able to communicate with the processing module given to voltages
from the potentiometers to deliver the following casing to its distinct place through
mechanical processes.
7.0 Revisions
There were some major changes in the project plan since it was first created at the
beginning of the last semester. Last semester a total project re-vamp took place setting
the project back a ways as well as altering some of the expected actions such as the
method of identification. The initial route was to use an optical character recognition
program, where a physical measurement identification process is the new method. With
the re-vamp a completed concept was still created. The first action item intended to
take place was to analyze the completed design. Again the group had to compensate
for another obstacle and alter the design by convert the electronic devices to pneumatic
components pushing back the ordering dates as well as finalizing the completed design.
Many more changes also needed to occur. Frankly the previous plan became very
vague in the seconds semester. Action items that were to order parts were broad and
grouped the parts by function (Ex. “Order Physical Framework Materials). It is now
known that that single functions need several parts to work properly. Recently it was
brought to attention, that the heart and soul of the project was in the identification stage
and an emphasis was put on completing the platform that would grasp the shell and
support the measuring components as well as programing these components to get
accurate measurements. With that in mind the programming aspect and fabrication of
the platform was moved up and is now the first item to be completed after the part
numbers are finalized. An addition change is that now that some research into specific
75
parts has been completed, all the time that was allocated to ordering parts is not
needed and has been freed up. That extra time was allotted to the programming,
debugging, and testing actions because it seemed that these tasks were greatly
underestimated when the initial project plan was created.
8.0 Task List
Task 8.1: Define Project
Objective: Analyze and understand fully the problem at hand.
Duration: 9/2 - 9/23 (4wks)
Task Leader: Nolan Michaelson
Additional Personal: 25% All team members
Resources: Dr. Selekwa, Dr. Sailer, & Library Database
Deliverables: Discussion of understanding to make sure everyone is on the
same page.
Task 8.2: Brainstorming
Objective: Obtain several designs that satisfy our objectives and constraints.
Duration: 9/9 - 9/23 (3wks)
Task Leader: Tom Crandall
Additional Personal: 25% All team members
Resources: Previous Design Documents & Library Databases
Deliverables: Two design sketches/ideas for each member that satisfy
objectives and constraints.
Task 8.3: Basic Design Selection
Objective: Select one general design to move forward with.
Duration: 9/16 - 9/23 (2wks)
Task Leader: Cole Cameron
Additional Personal: 25% All team members
Resources: Previous Design Documents
Deliverables: One concept Design Sketch
Task 8.4: Project Planning
Objective: Create project scope that covers all aspects of the project.
Duration: 9/23 - 9/30 (1wks)
Task Leader: Nolan Michaelson
Additional Personal: 25% All team Members
76
Resources: Project Planning Guides
Deliverables: A detailed outline of our project, timeline (Gantt Chart), and
deliverables.
Task 8.5: Research: Transport Hardware
Objective: Research different hardware mechanisms and analyze their
capabilities.
Duration: 9/9 - 9/30 (3wks)
Task Leader: Thomas Crandall
Additional Personal:
Resources: Library Database
Deliverables: Provide options for Transport Hardware relating to concept design.
Task 8.6: Research: Camera Options
Objective: Research several different options for cameras, while taking into
account their price and functionality.
Duration: 9/9 - 9/30 (3wks)
Task Leader: Cole Cameron
Additional Personal:
Resources: Library Database
Deliverables: Have three potential cameras and there details (pros & cons)
Task 8.7: Research: OCR Programs
Objectives: Research several OCR programs that are able to fit the needs and
constraints of the project.
Duration: 9/9 - 10/7 (4wks)
Task Leader: Steve Duval
Additional Personal:
Resources: Library Database, Maxx Kureczko
Deliverables: Have three potential programs (pros & cons)
Task 8.8: Budget Development
Objectives: Create a budget estimate incorporating all expected costs of the
products and other various expenses we might face. The department will then
review our budget and declare the funds our project will be delegated.
Duration: 9/30 - 10/21 (3wks)
Task Leader: Cole Cameron
Additional Personal:
77
Resources: NDSU Mechanical Engineering department, online catalogs, Creo
Parametric, Excel.
Deliverables: An outlined budget including any possible costs related to the
project.
Task 8.9: Research: Control Modules
Objectives: Investigate the capabilities of control modules and choose one that
best fits our needs. The module chosen will be dependent on the requirements
from the other machine components.
Duration: 9/16- 10/14 (4wks)
Task Leader: Nolan Michaelson
Additional Personal:
Resources: Online Catalogs
Deliverables: Bring info on three potential Control Modules.
Task 8.10: Design Physical Framework
Objective: Create a frame that will incorporate our components, allowing them to
function together efficiently.
Duration: 10/28-11/18 (3wks)
Task Leader: Cole Cameron
Additional Personal:
Resources: Previous Design Documents
Deliverables: Concept sketch.
Task 8.11: Project Re-vamp
Objectives: Renovate the existing project to allow for the use of physical
measuring devices to identify the casings instead of an OCR software.
Duration: 11/11-11/25 (2wks)
Task Leader: Nolan Michaelson
Additional Personal: Steve Duval,Cole Cameron, Tom Crandall
Resources: CAD Programs (Solidworks/ PTC Creo), internet
Deliverables: Updated Design
Task 8.13: Create 1st Semester Report & Presentation
Objectives: Assemble a report comprises of our findings, failures, and progress
from the first semester of design. Then present the report to our peers and
advisors.
Duration: 11/25-12/11 (2.5wks)
78
Task Leader: Cole Cameron
Additional Personal: 25% All Team Members
Resources: Gatherings from Task 1 - Task 11
Deliverables: Final Draft Report & Presentation
Task 8.14: Determine Part Numbers
Objectives: Solidify all model numbers for the needed design
Duration: 1/18 - 1/22 (1wks)
Task Leader: Steve Duval
Additional Personal: 25% All Members
Resources: Internet and product catalogues
Deliverables: Finalized Parts list
Task 8.15: Model and Print V-block design
Objectives: Order the need parts from the supplier/manufacturer incorporating
sufficient lead time.
Duration: 1/18 - 1/22 (1wks)
Task Leader: Nolan Michaelson
Additional Personal:
Resources: Solidworks and NDSU 3D printer
Deliverables: V-block part
Task 8.16: Project Planning Revision
Objective: Create project scope that covers all aspects of the project.
Duration: 1/25 - 2/5 (2wks)
Task Leader: Cole Cameron
Additional Personal: Steve Duval
Resources: Project Planning Guides
Task 8.17: Budget Revision
Objectives: Create a revised budget to adjust for the project re-vamp
incorporating all expected costs of the products and other various expenses we
might face. The department will then review our budget and declare the funds
our project will be delegated.
Duration: 1/25 - 2/5 (2wks)
Task Leader: Cole Cameron
Additional Personal: All
79
Resources: NDSU Mechanical Engineering department, online catalogs, Creo
Parametric, Excel.
Deliverables: An outlined budget including all costs related to the project.
Task 8.18: Determine Control Module Shield
Objectives: Analysis of the needed resolution will output the needed Bit size of
the shield needed to make the previous arduino controller capable for the
application.
Duration: 2/1 - 2-5 (1wk)
Task Leader: Tom Crandall
Task 8.19: Order Control Module Shield
Objectives: Order the shield needed to make the previous arduino controller
capable for the application.
Duration: 2/1 - 2-5 (1wk)
Task Leader: Cole Cameron
Deliverables: Arduino Shield
Task 8.20: Arduino Program Research
Objectives: Develop a basic knowledge that will be needed to program the
arduino to program the measurement components
Duration: 2/1 - 2/19 (3wks)
Task Leader: Tom Crandall
Additional Personal: Steve Duval
Task 8.21: Project Revision
Objectives: Renovate the existing project to allow for the use of pneumatic
measuring devices to identify the casings instead of an electrical system.
Duration: 2/2 - 2-9 (1wk)
Task Leader: Nolan Michaelson
Additional Personal: Steve Duval, Tom Crandall
Resources: internet
Deliverables: Updated Design
Task 8.22: CADD Drawings, BOM
Objectives: Create a 3D model and drawings of our chosen mechanical design
to aid in creating the BOM, FEA, and in physically creating the machine.
80
Duration: 1/25 - 2-12 (3wks)
Task Leader: Nolan Michaelson
Resources: CAD Programs (Solidworks/ PTC Creo)
Deliverables: Drawings of all components of design w/ BOM.
Task 8.23: Determine Pneumatic Part Numbers
Objectives: Solidify all model numbers for the needed pneumatic design
Duration: 2/8 - 2/12 (1wks)
Task Leader: Nolan Michaelson
Resources: Internet and product catalogues
Deliverables: Finalized Parts list
Task 8.24: Prototype Fabrication and Assembly For Identification Platform
Objectives: Assemble the structure of the identification platform. Get all
components assembled, mounted, and communicating properly.
Duration: 2/1-3/4 (4wks)
Task Leader: Tom Crandall
Additional Personal: Steve Duval
Resources: MELabs
Deliverables: Have a design that can properly identify specific casings
Task 8.25: Arduino Program Research (steppers)
Objectives: Develop a basic knowledge that will be needed to program the
arduino to program the stepper motors
Duration: 2/8 - 3/4 (4wks)
Task Leader: Cole Cameron
Additional Personal: Tom Crandall
Task 8.26: Order Pneumatics
Objectives: Order the pneumatic components that will drive the measuring
components
Duration: 2/8 - 2-12 (1wk)
Task Leader: Nolan Michaelson
Additional Personal: Cole Cameron
Deliverables: Pneumatic Cylinders
Task 8.27: Order Power Supply
81
Objectives: Order the power supply capable of supporting all the needed
components.
Duration: 2/15 - 2/19 (1wk)
Task Leader: Tom Crandall
Deliverables: Power Supply
Task 8.28: Design & Develop Software Application
Objectives: Create an application that can run an iteration executing the
identification casing sorting process. It has to identify various calibers with a 98%
accuracy.
Duration: 2/15 - 3/4 (3wks)
Task Leader: Thomas Crandall
Additional Personal: Steve Duval
Resources: Library Database & Computer Science Department
Deliverables: Application to execute machine process.
Task 8.29: Order: Physical Framework Tubing
Objectives: Order the need parts from the supplier/manufacturer incorporating
sufficient lead time.
Duration: 2/15 - 2/19 (1wk)
Task Leader: Nolan Michaelson
Resources: Manufacturers, online catalogues, ME department
Deliverables: Parts in hand.
Task 8.30: Fabricate Physical Framework and Casefeeder
Objectives: Order the need parts from the supplier/manufacturer incorporating
sufficient lead time.
Duration: 2/22 - 3/4 (2wks)
Task Leader: Nolan Michaelson
Additional Personal: Cole Cameron
Deliverables: Project framework and shell orientation process
Task 8.31: Order Extra Casefeeder Plates
Objectives: Order the needed parts that will allow for the orientation and delivery
for both small and large rifle casings.
Duration: 2/22 - 2/26 (1wk)
82
Task Leader: Cole Cameron
Deliverables: Shell orientation for small and large rifle calibers
Task 8.32: Order Air Lines and Air Compressor
Objectives: Order the need parts to run the pneumatic cylinders from the
supplier/manufacturer incorporating sufficient lead time.
Duration: 2/27 - 3/4 (1wk)
Task Leader: Steve Duval
Resources: Manufacturers, online catalogues, ME department
Deliverables: Parts in hand.
Task 8.33: Pick Up Hardware, Bins, and Plexiglass
Objectives: Pick up the needed parts that can be purchased at a hardware store
such as a plexi shield, hanging organizational bins, and nuts/bolts.
Duration: 2/27 - 3/4 (1wk)
Task Leader: Tom Crandall
Resources: Lowes
Deliverables: Parts in hand
Task 8.34: Debug Identification Program
Objectives: Run the previously developed program and fix any errors or delays
to increase accuracy and speed of shell indentification.
Duration: 3/7 - 3/25 (3wks)
Task Leader: Tom Crandall
Additional Personal: Steve Duval
Resources: Library Database, Computer Science Department & Eric Kubischta
Deliverables: A program that runs as desired with 98% accuracy.
Task 8.35: Order Transport Mechanisms
Objectives: Order the need parts to create a linear xy-table from the
supplier/manufacturer incorporating sufficient lead time.
Duration: 3/7 - 3/11 (1wk)
Task Leader: Cole Cameron
Resources: Manufacturers, online catalogues, ME department
Deliverables: Parts in hand.
Task 8.36: Fabrication and Assembly of the XY-Table
Objectives: Assemble the delivery system design to specification.
83
Duration: 3/21-4/1 (2wks)
Task Leader: Nolan Michaelson
Additional Personal: Cole Cameron
Resources: MELabs
Deliverables: Have a working XY-table capable of the needed speed and
accuracy
Task 8.37: Program Transport Hardware
Objectives: Develop a program that transports the casing depending on the
given measurements.
Duration: 3/21 - 4/1 (2wks)
Task Leader: Cole Cameron
Additional Personal: Tom Crandall
Resources: Library Database, Computer Science Department & Eric Kubischta
Deliverables: A program that controls transfer of shell casing.
Task 8.38: Wiring
Objectives: Properly connect all working components including the moving
platform to the power supply.
Duration: 3/21-3/25 (1wks)
Task Leader: Tom Crandall
Additional Personal: Nolan Michaelson
Resources: MELabs
Deliverables: Completed Prototype
Task 8.39: Debug Transport Hardware
Objectives: Run the previously developed program and fix any errors or delays
to increase accuracy and speed of shell delivery.
Duration: 4/4 - 4/15 (2wks)
Task Leader: Cole Cameron
Additional Personal: Tom Crandall
Resources: Library Database, Computer Science Department & Eric Kubischta
Deliverables: A program that runs as desired with optimal speed and accuracy.
Task 8.40: Prototype Testing
Objectives: Data will be assembled from trials of the prototype regarding the
machines accuracy and its ability to Function within our design goals.
Duration: 4/11 - 4/29 (3wks)
84
Task Leader: Steve Duval
Additional Personal: 25% All team Members
Resources: ME Labs
Deliverables:.Finalized, working design
Task 8.41: Create 2nd Semester Report
Objectives: Assemble a report compiled of our findings, failures, and final
design/prototype from the last two semesters. Then present the report to our
peers and advisors.
Duration: 4/18 - 4/29 (2wks)
Task Leader: Cole Cameron
Additional Personal: 25% All team Members
Resources: Gathered from tasks 1-40
Deliverables: A well developed delivery of the entire project from start to finish in
a report
Task 8.42: Create, practice, and deliver 2nd Semester Presentation
Objectives: Assemble a powerpoint compiled of our findings, failures, and final
design/prototype from the last two semesters. Then present the powerpoint in
front of our peers and advisors.
Duration: 4/18-5/5 (3wks)
Task Leader: Cole Cameron
Additional Personal: 25% All team Members
Resources: Gathered from tasks 1-40
Deliverables: A well developed delivery of the entire project from start to finish in
presentation form
Figure A1 Actual Spend Funds and Part Numbers
Orderd Parts Identification Quantity Price(total)
24V power supply SNANSHI 2 21.98
Arduino shield 1 39.99
48V power supply Genssi 2 69.88
Cylinder 5/16" 2.5" SDR-05-2 1/2 1 20.04
Cylinder 5/16" 1.5" SDR-05-1 1/2 1 19.46
Cylinder 1.2" 2.5" SDR-08-2 1/2 1 20.24
85
4-way solenoid MMM-41PES-D024 3 96.73
1/8" Regulator MMR-2P 3 81.68
5/32" speed controller elbow NSE532U10 6 36.66
5/32" male straight conection PC532NO1 15 16.27
1/8" breather vent BVS-18 6 3.78
5/32" hose 1J-156-10 100' 16.67
Timing belt pulleys 125N24 4 27.2
belt 7959K21 12' 25.92
1/4" rod 6061K21 1 4.78
2 flange bearing mount 2820T33 2 22.14
DryLin linear carriage 9867K4 1 66.4
DryLin linear guide (500mm) 9867K14 1 65
stainless steel linear guide (1200mm) 9215T43 1 408
1" 10' PVC tubes 531194 6 18.84
3-way manifold M1402-5 1 29.99
NEMA 23 stepper & driver MB450A 2 148.18
18 x 18 x 6 NEMA enclosure G7628731 1 49.93
slide potentiometer PTF01-201A-103B2 1 7
push potentiometer 682-9615R5.1KL2.0 1 42.25
raw materials (framework) NA NA 46.69
power supply cords NA 2 12.62
spray paint 1 3.79
5/32" straight connections (5 pack) 1 13.75
1 1/4" Spade bit 1 2.46
two-circuit din rail terminals 7641K71 4 14.04
din rail terminals end stop 7641K73 1 2.19
din rail terminals cover 7641K72 1 1.14
jumpers 7641K74 1 5.07
closed bearings 4575N33 2 20
open roller bearings 1434K43 2 20.46
Double acting air cylinder 3" 6498K848 1 30.89
Servo motor w/metal gear S142-16-6VM 1 20.69
86
Arduino screw in shield NA 1 11.99
Servo arm HAN9155 1 8.74
Ball Bearing Carriage 9215T23 1 214.58
Strut Channel 3310T57 6 36.72
Strut Channel Pipe Clamps 3979T11 36 38.52
Wiring Sleeve 9284K4 10' 4.89
Return Shipping Cost 15
Shipping 125
TOTAL 2008.24
Yet to be Ordered
bins S-13396 24 62.37
casefeeder plates 21074, 21075, 20172 3 116.85
TOTAL 2187.46
ALLOCATED 2200.00
REMAINING (UNDER BUDGET) +12.54
9.2. Appendix B
Figure B1 Calibers Chart
87
Figure B2 Tolerance Graph
88
Figure B3 Flow Chart
89
9.3. Appendix C
Figure C1 Modeled Linear Container Arrangement
90
Figure C2 Fabricated Linear Container Arrangement with Bins, Tubes and Bare Frame
Figures C3 and C4 Fabricated Grasp Design for Base Diameter
Figure C5 Fabricated Design for Height Dimension
91
Figure C6 Fabricated Servo Motor Design
Figure C7 Fabricated XY-Table
92
Figure C8 Integrated Power Box
93
Figure C9 Completed Design vs. Final Model
94
Figure C10 Alternative Final Product Comparison
9.3. Appendix D
95
Figure D1 First and second semester gantt chart
96
Figure D2 Final Design Flow Chart
97
98
Figure D3 Wiring Schematic
99
100
Figure D4 Final Code as of 5-1-16
#include <AccelStepper.h>
#include <MultiStepper.h>
#include <Servo.h>
int pos = 0; // variable to store the servo position
const int numReadings = 10;
int readings[numReadings]; // the readings from the analog input
int readings_h[numReadings]; // the readings from the analog input height
int readIndex = 0; // the index of the current reading
int readIndex1 = 0; // the index of the current height readings
int total = 0; // the running total for base diameter
int total_h = 0; // the running total for the heights
float average = 0; // the average of base diameter readings
float average_h =0; // the average of the height readings
int inputPin_x = A5; // the zeroing pin on claw in x direction
int inputPin_y = A3; // the zeroing pin on claw in y direction
int inputPin_bd = A1; // the base diameter readings
int inputPin_h = A2; // the height readings
int val_ir = 0; // the ir sensor val_irue
int val_x = 0; // the sensor value on the x direction of claw
int val_y = 0; // the sensor value on the y direction of claw
int x_zero = 1; // the count of zeroing x
int y_zero = 1; // the count of zeroing y
int zero = 1;
float vol_1 = 0; // vol_1=> reading from analogpin 1 inverted
int step_pin = 5; // digital pin for step feeder
int claw_pin = 6; // claw solenoid pin
int height_pin = 7; // height solenoid
int uptube_pin = 4; // drop tube solenoid
int count_1 = 25; // set the number of time for the smoothing funtion of base_diam pot to
run
101
int count_2 = 25; // set the number of time for teh smoothing function of height pot to run
int base_diam = 0;
int height = 0;
AccelStepper stepperx(AccelStepper::FULL2WIRE, 8, 9); //short travel stepper
AccelStepper steppery(AccelStepper::FULL2WIRE, 2, 3); //long travel stepper
Servo myservo; // create servo object to control a servo
MultiStepper steppers;
long positions[2]; // Array of desired stepper positions
void setup() {
Serial.begin(9600);
myservo.attach(10); // attaches the servo on pin 9 to the servo object
pinMode(step_pin, OUTPUT); // step feeder setup
pinMode(claw_pin, OUTPUT); // claw solenoid setup
pinMode(height_pin, OUTPUT); // height solenoid
pinMode(uptube_pin, OUTPUT); // drop tube solenoid
steppers.addStepper(stepperx);
steppers.addStepper(steppery);
stepperx.setMaxSpeed(2000.0);
stepperx.setAcceleration(2000.0);
steppery.setMaxSpeed(4000.0);
steppery.setAcceleration(3000.0);
Serial.println("Ready");
for (int thisReading = 0; thisReading <= numReadings; thisReading++) {
readings[thisReading] = 0;
}
}
float doACT( ) {
102
int bd = 0; // base diameter assigned val_irues based on voltage readings
float val_1 = 0;
while (count_1 > 0) {
// subtract the last reading:
total = total - readings[readIndex];
// read from the sensor:
readings[readIndex] = analogRead(inputPin_bd);
// add the reading to the total:
total = total + readings[readIndex];
// advance to the next position in the array:
readIndex = readIndex + 1;
// if we're at the end of the array...
if (readIndex >= numReadings) {
// ...wrap around to the beginning:
readIndex = 0;
}
// calculate the average:
average = (float)total / numReadings;
val_1 = average * (5.0/1023.0);
average = 0;
count_1 = count_1 -1;
}
if ( 2.500 < val_1 && val_1 <= 2.800 ) { bd = 1; } // assigned to
_38Super__9mm__380__38spl__357mag
else if ( 3.300< val_1 && val_1 <= 3.600 ) { bd = 2; } // assigned to
__45Auto__45Long______
else if ( 2.800 < val_1 && val_1 <= 3.200 ) { bd = 3; } // assigned to
__40S&W________
/*
else if ( 2.9 < val_1 && val_1 <= 3.0 ) { bd = 4; } // assigned to __________
else if ( 3.0 < val_1 && val_1 <= 3.25 ) { bd = 5; } // assigned to __________
else if ( 3.25 < val_1 && val_1 <= 3.5 ) { bd = 6; } // assigned to __________
else if ( 3.5 < val_1 && val_1 <= 3.75 ) { bd = 7; } // assigned to __________
else if ( 3.75 < val_1 && val_1 <= 4.0 ) { bd = 8; } // assigned to __________
else if ( 4.0 < val_1 && val_1 <= 5.0 ) { bd = 9; } // assigned to __________
*/
// this wiil de for any shell that doesn't match any of
the criteria
103
count_1 = 25;
Serial.println(val_1);
return bd;
}
float dohgt(){
int h = 0; // height assigned val_irue based on voltage readings
float val_h = 0;
positions[0] = -2500;
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(height_pin, HIGH);
delay(1000);
while (count_2 > 0) {
// subtract the last reading:
total_h = total_h - readings_h[readIndex1];
// read from the sensor:
readings_h[readIndex1] = analogRead(inputPin_h);
// add the reading to the total:
total_h = total_h + readings_h[readIndex1];
// advance to the next position in the array:
readIndex1 = readIndex1 + 1;
// if we're at the end of the array...
if (readIndex1 >= numReadings) {
// ...wrap around to the beginning:
readIndex1 = 0;
}
// calculate the average:
average_h = (float)total_h / numReadings;
val_h = average_h * (5.00/1023.0);
average_h = 0;
count_2 = count_2 -1;
}
if ( 0.920 < val_h && val_h <= 0.990 ) { h = 1; } // assigned to
__38Super__45Auto__
104
else if ( 0.700 < val_h && val_h <= 0.800 ) { h = 2; } // assigned to
__9mm______________
else if ( 0.600 < val_h && val_h <= 0.690 ) { h = 3; } // assigned to
__380______________
else if ( 1.400 < val_h && val_h <= 1.600 ) { h = 4; } // assigned to
__45Long__357Mag___
else if ( 0.830 < val_h && val_h <= 0.920 ) { h = 5; } // assigned to
__40S&W____________
else if ( 1.200 < val_h && val_h <= 1.370 ) { h = 6; } // assigned to
__38SPL____________
/*
else if ( 3.25 < val_h && val_h <= 3.5 ) { h == 6; } // assigned to __________
else if ( 3.5 < val_h && val_h <= 3.75 ) { h == 7; } // assigned to __________
else if ( 3.75 < val_h && val_h <= 4.0 ) { h == 8; } // assigned to __________
else if ( 4.0 < val_h && val_h <= 5.0 ) { h == 9; } // assigned to __________
*/
count_2 = 25;
Serial.println(val_h);
digitalWrite(height_pin, LOW);
delay(75);
return h;
}
void bin_1() {
positions[0] = 1150;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -3200;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
105
void bin_2() {
positions[0] = 150;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -3200;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_3() {
positions[0] = -800;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -3200;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_4() {
positions[0] = -1700;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -3200;
106
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_5() {
positions[0] = -2700;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -3200;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_6() {
positions[0] = -3700;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -3200;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
107
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_7() {
positions[0] = 1100;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -5650;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_8() {
positions[0] = 150;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -5650;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_9() {
108
positions[0] = -800;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -5650;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_10() {
positions[0] = -1800;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -5650;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_11() {
positions[0] = -2775;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -5650;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
109
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_12() {
positions[0] = -3700;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -5650;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_13() {
positions[0] = 1000;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -8050;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_14() {
positions[0] = 150;
110
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -8100;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_15() {
positions[0] = -800;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -8100;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_16() {
positions[0] = -1775;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -8100;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
111
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_17() {
positions[0] = -2775;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -8100;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_18() {
positions[0] = -3700;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -8100;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_19() {
positions[0] = 1100;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
112
positions[1] = -10450;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_20() {
positions[0] = 150;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -10450;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_21() {
positions[0] = -800;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -10450;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
113
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_22() {
positions[0] = -1775;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -10450;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_23() {
positions[0] = -2700;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -10450;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_24() {
positions[0] = -3700;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -10500;
steppers.moveTo(positions);
114
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_25() {
positions[0] = 1100;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -12900;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_26() {
positions[0] = 150;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -12900;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
115
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_27() {
positions[0] = -800;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -12900;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_28() {
positions[0] = -1700;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -12900;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_29() {
positions[0] = -2700;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
116
positions[1] = -12950;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_30() {
positions[0] = -3700;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -12950;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_31() {
positions[0] = 1100;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -15300;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
117
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_32() {
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -15300;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_33() {
positions[0] = -800;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -15300;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_34() {
118
positions[0] = -1700;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -15300;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_35() {
positions[0] = -2700;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -15300;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void bin_36() {
positions[0] = -3650;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = -15300;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
digitalWrite(claw_pin, LOW); //open claw dropping shell
119
delay(750);
positions[0] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition();
positions[1] = 0;
steppers.moveTo(positions);
steppers.runSpeedToPosition(); // Blocks until all are in position
}
void x0pt1() {
stepperx.setSpeed(2000);
stepperx.runSpeed();
stepperx.run();
}
void x0pt2() {
stepperx.setCurrentPosition(0);
stepperx.setSpeed(1280);
stepperx.runToNewPosition(-1250);
stepperx.run();
stepperx.setCurrentPosition(0); //setting home pos.
stepperx.setMaxSpeed(4000.0);
stepperx.setAcceleration(2000.0);
x_zero = x_zero - 1;
}
void y0pt1() {
steppery.setSpeed(2000);
steppery.runSpeed();
steppery.run();
}
void y0pt2() {
steppery.setCurrentPosition(0); //setting home pos.
y_zero = y_zero - 1;
steppery.setCurrentPosition(0); //setting home pos.
steppery.setMaxSpeed(4000.0);
steppery.setAcceleration(3000.0);
}
120
void loop() {
while ( x_zero > 0 ) { //zeroing the x direction
for (pos = 0; pos <= 0; pos += 1) { // goes from 0 degrees to 135 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(5); // waits 5ms for the servo to reach the position
}
val_x= analogRead(A5);
if ( val_x > 500 ) {
x0pt1();
}
if ( val_x < 500 ) { //bringing x to home pos.
x0pt2();
}
}
delay(50);
while ( y_zero > 0 ) { //zeroing the y direction
val_y = analogRead(A3);
if ( val_y > 500 ) {
y0pt1();
}
if ( val_y < 500) {
y0pt2();
}
}
digitalWrite(step_pin, HIGH); // step feeder on
val_ir = analogRead(A0);
Serial.println(val_ir);
if (val_ir >= 900) { //watch for the ir to be tripped
digitalWrite(step_pin, LOW); // step feeder off
delay(1); // delay between readings of ir
delay(750);
for (pos = 0; pos <= 135 ; pos += 1) { // goes from 0 degrees to 135 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(5); // waits 5ms for the servo to reach the position
}
delay(1000);
121
digitalWrite(uptube_pin, HIGH); // lift up tube
delay(750); // let drop tube come up fully
digitalWrite(claw_pin, HIGH); // closes claw on casing
delay(750); // let the reading settle
digitalWrite(uptube_pin, LOW); // up tube return to pos. in hole
for (pos = 0; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
delay(1500);
int (base_diam) = doACT(); // take the diam reading reading
delay(250);
int (height) = dohgt();
delay(250);
Serial.println(base_diam);
Serial.println(height);
//if (base_diam == 10) { bin_17(); } //__resort/junk__
//else { int (height) = dohgt(); } // check the heights
if ( base_diam == 1 && height== 1 ) { bin_6(); } //__38Super____
else if( base_diam == 1 && height == 2 ) { bin_4(); } //__9mm________
else if( base_diam == 1 && height == 3 ) { bin_16(); } //__380________
else if( base_diam == 1 && height == 4 ) { bin_14(); } //__357Mag_____
else if( base_diam == 2 && height == 1 ) { bin_2(); } //__45ACP______
else if( base_diam == 2 && height == 4 ) { bin_15(); } //__45Long_____
else if( base_diam == 3 && height == 5 ) { bin_3(); } //__40S&W______
else if( base_diam == 1 && height == 6 ) { bin_4(); } //__38Spl_______
else { bin_17(); } //__junk/resort_
}
}