introduction (goals, literature review) - school of...
Post on 12-Mar-2018
213 Views
Preview:
TRANSCRIPT
Surgical Suture Delivery System
Biomedical Design 273
By:
Sarah Hembree
Ryan Ruehl
Matt Larson
Project Advisor:
Dr. Raul J. Guzman
April 24, 2001
Abstract
Our project goal is to design a device that delivers different types of sutures from
their packages to the sterile environment of the operating table for use during surgery.
We focused our design to address four separate design problems:
Opening the non-sterile package Dispensing the sterile contents Storing the different types of packages in a loading cassette Determining a package removal system so that upkeep and maintenance is
minimized
Once the SSDS is implemented, cost will be reduced through efficient use of
correct sutures and OR time. The SSDS will sit on the border of the non-sterile
environment and the sterile environment. Therefore the Scrub Nurse or the Surgeon can
press the button and obtain the proper suture with ease.
Upkeep of the SDDS is minimal; sutures are loaded from the back of the device in
stacks and the trash is removed from the vacuum chamber.
Introduction
During a surgical procedure, the surgeon and his team must interact with the
circulating nurse in order to obtain materials from a non-sterile environment. The
circulating nurse has many jobs, one of which is to deliver the sterile contents of a suture
package when needed. Since the circulating nurse often has more than one operating
room (OR) to attend to, sometimes the surgeon must wait for the suture to be delivered.
This can lead to complications of the surgery if there is an emergency, as well as an
increase in cost to the hospital or patient through both wasted sutures and OR time. The
goal of this project was to design a device that can, based on user input, select a suture
from a cassette, open the suture package, deliver the suture sterilely to the surgeon, and
dispose of the package thus decreasing the work load for the circulating nurse.
The main design problem was to separate the ends of the foil and plastic/paper
suture package. Through brainstorming, patent searches, and the use of Ideation
Workbench (see Appendix B) , we generated six ideas to accomplish this task (listed
from least to most practical):
Electrostatic Method – An electrically charged plate would be placed above the
plastic suture flap. The plastic flap of the suture package would be attracted to the
plate. Once the flap of the suture package was stuck to the plate, it could be
pinched and separated. This method was an early idea and was extremely
impractical, if not impossible.
Cutting Method – A sharp blade would cut the first ½ inch of the package
parallel to its long axis. The sides of the package would then be clamped and
pulled apart. The motion would be similar to the opening of a ketchup package.
The chances of contaminating the suture with this method are high. Also, it is a
mechanically and electronically complex method to implement.
Crimp Method – This method exploits the differences between the plastic top of
the suture package and the paper bottom. If the first ½ inch of the suture package
is crimped between two grooved metal bars (one male and one female), the plastic
will retain the crimp to a greater extent than the paper will, thus the ends of the
package will be slightly separated. The effect is subtle and will not work on the
foil packages.
Friction Method – The suture is advanced foreword on a high friction surface. A
spring tensioned rubber wheel, rotating in the opposite direction, contacts the top
part of the suture and smears the top flap back. The top flap can then be pinched
and separated. This method was unreliable and also did not work with the foil
packages.
Thermal Method – It was discovered that the plastic top of the suture package
curls away from the bottom paper part when heated. This effect was obtained at
temperatures as low as 100 F. If a heating element were placed above the suture,
the plastic would curl toward it. The plastic could then be pinched and separated
from the paper. The method will not work on the foil suture package.
Vacuum Method – The method utilizes vacuum to separate the flaps on the end
of the suture package. The flaps can then be grabbed and separated. This method
was the easiest to implement and worked on both foil and plastic suture packages.
A vacuum system similar to the one utilized in US Patent 5,557,387 was used.
Methodology
The Sutures
The sutures are made of both plastic and aluminum, and up to 12 manufactured
types are used in a hospital, 6 maximum are used in certain type of surgery, with a
maximum of 10 used of a single manufactured type. Therefore we designed our cassette
to hold 10 of each of 6 types.
Minimums Maximums
seal 0.5 cm/0.1875"
0.7 cm/0.25 "
flap 1.6 cm/0.63" 2.5 cm/0.984"
length 12.1 cm/4.76" 15.5 cm/6.1"
width 5.7 cm/2.25" 6.3 cm/2.5"thickness 1/16" 3/16"
We obtained the typically used sutures and performed force analyses on them using a
spring scale and found that the maximum force to open any single package is 2 lbs of
force.
CalculationsThere were two critical specifications that had to be met in the designing of the
SSDS. The first one of these was the extraction force necessary for removing the suture
packet from the cassette bin. The second was the vacuum pressure necessary in order to
separate the two package halves. It was around these two constraints that the machine
was constricted.
The cassette consists of six spring-loaded bins. There are two coil springs that
press a acrylic plate into the stack of sutures when fully loaded. It is from here that the
calculations start. The spring force was determined experimentally. The first step is to
determine the spring constant. This was done by measuring the original length of the
spring (with no load) and the length of the spring with some force on it.
Original length (no load) = 2 5/8”Final length (with load) =4 1/8”Standard load = 1/2 lb.Spring constant (k) =1/3 lb./in. or 58.37 N/m
Aluminum Ethicon Plastic Ethicon Plastic Dexon Plastic Other
Seal 0.7 cm 0.5 cm 0.5 cm 0.5 cm
seal-seal length 11 cm 12 cm 10.55 cm 13.1 cm
flap length 1.7 cm 1.6 cm 1.6 cm 2.5 cm
total length 12.8 cm 13.5 cm 12.1 cm 15.5 cm
Width 5.7 cm 5.75 cm 6.3 cm 5.75 cm
The spring was not compressed beyond its linear constant. This was measured
experimentally. The acrylic (Plexiglas) plate has two identical coil springs, positioned on
opposite ends. This means that for a given deflection the force on the suture packet will
be doubled. In order to determine the actual force acting on the packet it is necessary to
multiply the displacement of the acrylic plate by the spring constant (k) previously
determined. With ten of the thickest sutures in the bin the springs were compressed 1.5”
(.0318 m).
F = k*x, with (k) being 1/3 lb./in. and (x) being 1.5” F = 58.37 (N/m) * .0381 mF = 2.224 N for each spring2*F is the total force, which is 4.45 N or 1 lb.
Now that the force on the suture is known it is simple to find the required force to
pull the suture from the bin. The force on the object times the coefficient of friction will
result in the force necessary to pull the object out. A static coefficient of friction was
used as static friction is always greater than that of a moving body. The calculated force
is easily supplied by the roller.
Force on the packet = 1 lb.Coefficient of Friction = .21Force necessary to remove suture = .21 lb.
The second design constraint is the vacuum necessary to pull apart the package
halves. A spring scale was used to measure exactly how much force was required to pull
apart the flaps of the suture packet. This experiment showed that 2 lb. of force was
adequate. In order to insure a large factor of safety a large wet/dry vacuum motor was
employed to generate vacuum. The maximum pressure generated by this motor is 54” of
water or 13,450 N. It could move 120 cfm’s of air (56.6 liters per second) which far
exceeded our demands under ideal conditions. To calculate the force that the motor
could generate on the packet one must first multiply the maximum pressure that can be
generated by the area of the loose flap on the suture packet.
Pressure * Area = Force(13,450 N/m2) * (9.12 * 10-4) = 12.266 N or 2.75 lb.
The available force on the flap is 2.75 lb. which is greater than the 2 lb. that it
takes to open, therefore the motor can pull apart the suture. If the whole packet is
subjected to the pressure generated by the motor,
13,450 N/m2 * .001936 m2 = 26 N or 5.8 lb.
This generates a factor of safety of 3, ensuring proper operation.
After significant testing it was decided to use a servo and foam rubber wheels that
would clamp down on the flaps to peel apart the packet like a banana. A servo turning
clamping wheels proved easier to construct than the purely vacuum method and thus it
was adopted. The servo motor used could pull over six pounds making it a safe
alternative to the vacuum idea.
Results
Circuitry and Programming
We determined that our circuitry must follow the following steps according to the
chart:
We decided the best way to build our circuit was with a microprocessor chip. We
were recommended to use a Parallax product called the BASIC Stamp. We decided to
purchase the BASIC Stamp IIE as it had 16 I/O pins instead of the 8 on the BASIC Stamp
I. The fully programmable I/O pins directly interface TTL-level devices and connects to
non-TTL devices. In our case it controls and processes input, controls timing and
switching of motors and solenoids.
The Servo Motor Circuit
The Servo motor requires three pins of the BASIC Stamp. We chose the P0 and
P1 for the two 220 resistors, the two 0.1 F capacitors, and the 10K potentiometer (we
used the VR-10K). Then the cassette servo is connected to P2 and the belt servo is
connected to P3.
The Stepper Motor Circuit
The Stepper motor requires six pins of the BASIC Stamp. We chose the P0 and
P1 for the two 220 resistors, the two 0.1 F capacitors, and the 10K potentiometer (we
used the VR-10K) since these components and pins are also used for the servo motor.
The stepper motor circuit also incorporated a ULN 2003 chip that was placed on P4, P5,
P6 and P7 (see Appendix A for the Stepper Motor code).
The Keypad Circuit
Pins P8-P12 are used for the keypad circuit. A 74C922 chip is used with a 1F
capacitor, a 0.1F and five 10K resistors.
The Vacuum Motor
In our model, we ended up just useing our power source to directly power the
vacuum motor. However, in order to use the BASIC Stamp a single pull relay is needed
with a solid state relay. We put the solid state relay, the Sharp opto isolator S101S02
from Jameco is inserted in the circuitry with a 220 resistor. It consists of two diode
pins and AC in/out for the relay that outputs the correct current to the motor.
Therefore three pins are free, P13, P14, and P15. Please refer to the circuit or the
download section of parallax.com for the data sheets we used.
Programming
We obtained a couple programs demonstrating the movement of some of our
elements, and had to adapt them for our procedure. Overall the programs had to flow in
the following manner: keypad input; cassette servo; pause; stepper motor up; vacuum
motor on as well as the belt servo; stepper motor down. Meanwhile the photodiode (or
whatever detector) should be constantly updated to detect activation; then the vacuum
motor off as well as the belt servo off.
So far we programmed the keypad correctly to input keys 1-6. The cassette servo,
however, is not perfectly programmed to give the correct pulse according to the key
pressed. We know that the following pulses are needed to position our current cassette
(once calibrated by positioning it flat with any pulse):
Key 1 = 545 pulseKey 2 = 645Key 3 = 750Key 4 = 850Key 5 = 965 Key 6 = 1065
Please see Appendix A for all of the PBASIC code.
Safety Issues
The Sterile Suture Delivery System has practically no safety issues. According to
Designsafe (see Appendix C) few cautions exist. Wear, friction/abrasion,
drawing-in/trapping, and entanglement could occur in stocking/restocking and cleaning
by the operator. Wear is very unlikely. Friction/abrasion as well as drawing-in/trapping
and entanglement could only occur if for some reason the device was on and started
moving when the back was off, which can be eliminated in production. Therefore our
device is concluded as safe.
Economics SSDS implementation would save the cost of sutures that are wasted in an
operation as some are opened in excess. We currently have no accurate data on the cost
of the sutures as it was never provided to us. Time will also be saved which means
money will be saved. For analysis purposes we estimated that sutures cost up to $30 each
and that at least two are wasted each operation, and twenty operations requiring sutures at
a hospital occur a day for a total cost of $1200 of wasted sutures.
The market for the SSDS will be universal to any hospital or clinic that uses
sutures. Each OR would only need one, and most likely only American Hospitals or any
hospital with a plethora of resources would find this device worthwhile to purchase as it
is not a necessity.
Development cost of our particular device is about $13,000 (an average of 800
hours of labor spent at $15 plus $1000 of parts). The manufacturer could market this
device for maybe $20,000. Therefore the benefit for the manufacturer would be $7,000
each.
Therefore the benefit/cost for the hospital for purchasing would be
$20,000/$432,000 = 4.6 % assuming that the device would only last a year although it
could potentially last a lifetime. Maintenance costs would be negligible.
Photograph of finished device.
Conclusions
The operation of the Surgical Suture Delivery System (SDDS) is, by necessity,
complex. The design will function on a wide variety of packets with high repeatability
and durability. The attending physician will be allowed to select from a variety of suture
types to meet the full range of needs anticipated for a specific operating setting, allowing
flexibility and efficiency while maintaining sterility.
A human interacting with a sterile wrapped keypad performs the first step. By
pressing buttons one through six, which correspond to six different types of sutures, the
surgeon is able to have the appropriate suture selected; this starts the suture delivery
process. The buttons are labeled for each different type of suture.
The selection decision is relayed into the BASIC Stamp II that will control the
various subcomponents of the SSDS from here. The first operation performed by the
encoded chip is to turn on the vacuum motor that will be used to separate the suture
package. Next the cassette containing separate bins for each type of suture is rotated by a
servo, aligning the selected suture's bin with the bottom perforated rubber belt. This
cassette is in the shape of a hexagon and has six spring-loaded containers that can rotate
about a central axis. The belt is on two rollers, one powered by a servo. The belt is
perforated to allow air to flow through it and is designed to be slightly wider then the
suture packet, assuring a firm grip. There is a similar belt right above this one that is also
powered. When actuated, the top belt touches the bottom one and together they can grip
the packet. At this point both belts start turning.
The lower belt is raised at the command of the BASIC Stamp II chip via a stepper
motor. This stepper motor, serving in the capacity of a winch, rotates its shaft thus
winding up a drive belt translating rotational displacement into lateral displacement. This
is connected to the axle of the non-powered roller and as the motor turns the axle is
raised. At the top of the axle's travel the perforated rubber belt is pressed into the suture
bin and, with the aid of suction provided by a small vacuum tube, extracts the topmost
suture.
With the bottom belt still fully raised the suture travels between the belts to the
front of the machine. At this point the large vacuum chambers at the top and bottom of
the perforated belts take effect, drawing the loose flaps of the suture package apart.
These flaps are pulled apart by the vacuum and drawn between the powered rollers and a
foam rubber wheel on the top and bottom of the top and bottom belts, respectively.
Through the action of the powered rollers and the compressive forces of the wheels, the
top and the bottom pieces of the suture packet are drawn apart, displaying the
hermetically clean suture for the surgeon. This process is similar to peeling a banana.
When the suture is removed from the SSDS, an infrared beam is broken, indicating to the
microchip to start the disposal process. The now empty and separated packet halves are
removed from the machine by the two vacuum chambers and are drawn into the waste
storage area. The last step is to turn off the roller motors and vacuum motor, a process
performed automatically by the microchip. This completes the surgical suture delivery
process. The system is now ready for selection, delivery and opening of another packet.
Overall our project was a success although we did not finish meet our goal of
automating the continuous process.
RecommendationsOverall we recommend that the project be continued with the following things in
mind:
The Cassette
There were several design possibilities for the cassette. The hexagonal shape that we
used is not necessarily the best. It was, however, the easiest to implement. The second
version of the cassette may take a form more similar to a vertical or horizontal CD
changer. If the hexagonal design is kept, however, the six corners should be cut off so
that the walls of the suture compartments form the new corners. Cutting the corners
would decrease the distance that the belt would have to travel. If the distance that the belt
has to travel can be cut down to ½ inch or less, it would become more feasible to use a
solenoid to raise it up and down instead of a stepper motor. The stepper/pulley system is
overly complicated for the simple task of raising the rear axel. If this system is retained,
however, it would be easier to use a servo motor to wind and unwind the string. Some
other design changes include:
The sutures are not very easy to load in the back. It would be easier to load them
if the Plexiglas spring plate extended beyond the cassette so that it could be
levered down. This, however, causes problems with the rotation of the cassette.
The Transport Path/Active Site
The front of the machine needs two guides, one for the upper belt and one for the
lower belt. These guides would guide the separated flaps of the suture package in
between the top of the upper belt and the foam roller and between the bottom of
the lower belt and the foam roller.
A photosensor should be added along the transport path to detect the presence or
absence of a suture. If the photosensor is placed near the front of the machine, it
should be of the ultraviolet type so that ambient light does not trigger it.
Gears need to be used to connect the driving axel of the bottom belt to the driving
axel of the top belt. The gears must be of a very specific size and we could not
obtain two. We tried to drive the top belt by inserting another gear driven shaft,
but that proved useless. We also tried to drive the top belt with a rubber pulley,
but the pulley only slipped.
The length of the upper belt was set by whatever we could get out of a broken
copy machine. It might not be necessary for it to be that long. Also, the lower
belt is spliced with electrical tape. It would be ideal to obtain a belt of proper
length since the splices block air holes and impede rotation.
The Vacuum Chamber
The PVC container that the suture package gets sucked into needs to be modified
so that the first wrapper that enters the chamber doesn’t get sucked to the top and
cut off the suction to the rest of the machine. Also, the chamber is very
inconvenient to access and empty.
The Power Supply
A more suitable power supply should be utilized. We obtained the current power
supply from a printer just to experiment with. It could be substituted with a 12V
power supply, unless solenoids are to be used to raise and lower the belt. Since
the proper solenoid would probably be 24V, it follows that a power supply that
can supply 12V and 24V would be necessary.
Ideal SSDS: Beyond Our Scope
The “Sterile” Delivery System will be applied to all sterile wrapped products such
as catheter packages and glove packages, despite size or package material.
With one touch of a button, the sterile product will be dispensed within about six
seconds, the package will be disposed of, and the system will reset with
troubleshooting sensors, etc.
The SDS will be computer controlled so that the maintenance of refilling the
cassette and removing the trash can be updated in a log.
The computer system will track quantities used and alert the user when it should
be maintained.
The vacuum motor could possibly be replaced by the in-house suction in
operating rooms.
References and Thank You’s
http://vubme.vuse.vanderbilt.edu/group9_00/
http://parallax.com
http://jameco.com
Dr. Barnett
Steve Gebhart
Billy and Mike from Digitec Copiers
Patent website
Some helpful BASIC Stamp Programming sites:
http://groups.yahoo.com/group/basicstamps/
Contact Information
Project URL: http://vubme.vuse.vanderbilt.edu/group9_00/
Raul GuzmanRaul.Guzman@mcmail.vanderbilt.edu423-4259
Sarah Hembree628 Occidental Dr. Claremont, CA 91711
Ryan Ruehl415 Riverbend Dr.Dandridge, TN 37725(865)397-6779ruehl2@juno.com
Matthew Lange Larson911 BerkshireAnn Arbor, MI 48104(734)769-9587b70vette@aol.com
Appendix A – PBASIC Code – Run with Stampw.exe on Parallax CD
1. This program controls the keypad only'{$STAMP BS2e}'PROGRAM: Keypad.bas'The stamp accepts input from a 16-key matrix with the help of 'a 74C922 keypad decoder chip'_________________________________________'_________________________________________
key_val var inc 'the datalines are connected to in8- in11key_av con 12 'the data availavle is connected to in12
bttnvar var byte 'used by "BUTTON"keyvalue var nib 'variable containing pushed button code
bttnvar=0 'used by "BUTTON"
'_________________________________________
'GET THE PUSHED BUTTON'__________________________________________
debug CLS 'clears screen
test:
gosub strokekey
debug DEC ? key_val 'shows decimal value of key pressed
debug BIN3 ? key_val 'shows binary value fixed in four values
PAUSE 1000
goto test
'__________________________________________
'END THE PROGRAM'__________________________________________
loop: goto loopend
'____________________________________________
' SUBROUTINE THAT WATCHED FOR KEYS TO BE PRESSED'___________________________________________
strokekey:
watch_keys: button key_av,1,255,0,bttnvar,0,no_keysreturn
no_keys: goto watch_keys
2. This program controls the rotation of the cassette servo only. It rotates it to a specific position.
'{STAMP BS2e}
PotCW CON 0 'clockwise pot inputPotCCW CON 1 'counter-clockwise pot input
Servo CON 3 'servo control pin
rcRt VAR Word 'rc reading - rightrcLf VAR Word 'rc reading - leftdiff VAR Word 'difference between readingssPos VAR Word 'servo position
'_________________________________________________
Main:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, 645 'move the servoPAUSE 15
goto MainEND
For our project, the servo, once calibrated by making sure the pulses position the
bottom flat, should be given the following length pulses depending on the button
pushed on the keypad:
Key 1 = 545 pulse = Bin 1Key 2 = 645 = Bin 2Key 3 = 750 = Bin 3Key 4 = 850 = Bin 4Key 5 = 965 = Bin 5Key 6 = 1065 = Bin 6
3. This program controls the stepper motor only
'{$STAMP BS2e}
'__________________________________________________
' Stepper variables'__________________________________________________
PotCW CON 0 ' clockwise pot inputPotCCW CON 1 ' counter-clockwise pot inputCoils VAR OutB ' output to stepper coils
speed VAR Word ' delay between stepsx VAR Byte ' loop countersAddr VAR Byte ' EE address of step datarcRt VAR Word ' rc reading - rightrcLf VAR Word ' rc reading - leftdiff VAR Word ' difference between readings
'___________________________________________________
Step1 DATA %1100 ' A on B on A\ off B\ offStep2 DATA %0110 ' A off B on A\ on B\ offStep3 DATA %0011 ' A off B off A\ on B\ onStep4 DATA %1001 ' A on B off A\ off B\ on
'____________________________________________________
Initialize:
DirB = %1111 ' make stepper pins outputsspeed = 5 ' set starting speed
debug "hello"'____________________________________________________
stepper:
FOR x = 1 TO 300 ' 1 rev forwardGOSUB StepFwd
NEXTPAUSE 200
FOR x = 1 TO 300 ' 1 rev backGOSUB StepRev
NEXTPAUSE 200
StepDemo:
HIGH PotCW ' discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt ' read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf ' read counter-clockwise
rcRt = rcRt MAX 600 ' set speed limitsrcLf = rcLf MAX 600
diff = ABS(rcRt - rcLf) ' get difference between readings
IF (diff < 25) THEN StepDemo ' allow deadband
IF (rcLf > rcRt) THEN StepCCW
StepCW:
speed = 60 - (rcRt / 10)GOSUB StepFwdGOTO StepDemo
StepCCW:
speed = 60 - (rcLf / 10)GOSUB StepRevGOTO StepDemo
'_______________________________________________________
StepFwd:
sAddr = sAddr + 3 // 4 ' point to next stepREAD (Step1 + sAddr),Coils ' output step dataPAUSE speed ' pause between stepsRETURN
StepRev:
sAddr = sAddr + 3 // 4 ' point to previous stepREAD (Step1 + sAddr),Coils ' output step dataPAUSE speedRETURN
4. This program controls the rotation of the belt servo only. It rotates continuously (only dependent on speed) since we modified our servo.
PotCW CON 0 'clockwise pot inputPotCCW CON 1 'counter-clockwise pot inputServoB CON 2 'servo control pin
rcRt VAR Word 'rc reading - rightrcLf VAR Word 'rc reading - leftdiff VAR Word 'difference between readingssPos VAR Word 'servo position
'_________________________________________________
Reps VAR nib 'counter for the FOR/NEXT loopFOR Reps = 2 TO 1
gosub MainservoNEXT
Mainservo:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1
RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT ServoB, (5) 'move the servoPAUSE 15return
END
5. First attempt at putting the keypad input to the cassette servo:'{$STAMP BS2e}'PROGRAM: Keypad.bas'The stamp accepts input from a 16-key matrix with the help of 'a 74C922 keypad decoder chip'_________________________________________
' keypad variables'_________________________________________
key_val var inc 'the datalines are connected to in8- in11key_av con 12 'the data availavle is connected to in12
bttnvar var byte 'used by "BUTTON"keyvalue var nib 'variable containing pushed button code
bttnvar=0 'used by "BUTTON"'________________________________________'' servo variables'__________________________________________
PotCW CON 0 'clockwise pot inputPotCCW CON 1 'counter-clockwise pot inputServo CON 2 'servo control pin
rcRt VAR Word 'rc reading - right
rcLf VAR Word 'rc reading - leftdiff VAR Word 'difference between readingssPos VAR Word 'servo position
'_________________________________________________
'_________________________________________
'GET THE PUSHED BUTTON'__________________________________________
debug CLS 'clears screen
test:
gosub strokekey
debug DEC ? key_val 'shows decimal value of key pressed
PAUSE 1000
IF key_val = 0 THEN cassetteoneIF key_val = 1 THEN cassettetwoIF key_val = 2 THEN cassettethreeIF key_val = 4 THEN cassettefourIF key_val = 5 THEN cassettefiveIF key_val = 6 THEN cassettesix
'__________________________________________
'END THE PROGRAM'__________________________________________
loop: goto loopend
'____________________________________________
' SUBROUTINE THAT WATCHED FOR KEYS TO BE PRESSED'___________________________________________
strokekey:
watch_keys: button key_av,1,255,0,bttnvar,0,no_keysreturn
no_keys: goto watch_keys'____________________________________________'' SUBROUTINES THAT OUTPUTS A PULSE TO THE CASSETTE'____________________________________________
cassetteone:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, (545) 'move the servoPAUSE 15
GOTO cassetteone
IF key_val <> 0 THEN loop'________________________________________________
cassettetwo:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, (645) 'move the servoPAUSE 15
GOTO cassettetwoGOTO loop
'________________________________________________________
cassettethree:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, (750) 'move the servoPAUSE 15
GOTO cassettethreeGOTO loop
'________________________________________________________
cassettefour:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, (850) 'move the servoPAUSE 15
GOTO cassettefourGOTO loop
'________________________________________________________
cassettefive:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, (965) 'move the servoPAUSE 15
GOTO cassettefiveGOTO loop
'________________________________________________________
cassettesix:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, (1065) 'move the servoPAUSE 15
GOTO cassettesixGOTO loop
6. Program with keypad input to the cassette servo and the belt servo'{$STAMP BS2e}'PROGRAM: Main.bas'The stamp accepts input from a 16-key matrix with the help of 'a 74C922 keypad decoder chip'_________________________________________
' keypad variables'_________________________________________
key_val var inc 'the datalines are connected to in8- in11key_av con 12 'the data availavle is connected to in12
bttnvar var byte 'used by "BUTTON"keyvalue var nib 'variable containing pushed button code
bttnvar=0 'used by "BUTTON"'________________________________________'' servo variables'__________________________________________
PotCW CON 0 'clockwise pot inputPotCCW CON 1 'counter-clockwise pot inputServo CON 3 'servo control pinServoB CON 2 'servo control pin
rcRt VAR Word 'rc reading - rightrcLf VAR Word 'rc reading - leftdiff VAR Word 'difference between readingssPos VAR Word 'servo position
'_________________________________________________
'_________________________________________
'GET THE PUSHED BUTTON'__________________________________________
debug CLS 'clears screen
test:
gosub strokekey
debug DEC ? key_val 'shows decimal value of key pressed
PAUSE 1000
IF key_val = 0 THEN cassetteoneIF key_val = 1 THEN cassettetwoIF key_val = 2 THEN cassettethreeIF key_val = 4 THEN cassettefourIF key_val = 5 THEN cassettefiveIF key_val = 6 THEN cassettesix
'__________________________________________
'END THE PROGRAM'__________________________________________
loop: goto loopend
'____________________________________________
' SUBROUTINE THAT WATCHED FOR KEYS TO BE PRESSED'___________________________________________
strokekey:
watch_keys: button key_av,1,255,0,bttnvar,0,no_keysreturn
no_keys: goto watch_keys'____________________________________________'' SUBROUTINES THAT OUTPUTS A PULSE TO THE CASSETTE'____________________________________________
cassetteone:
IF key_val = 0 OR key_val = 15 THEN pulseonepulseone:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, (545) 'move the servoPULSOUT Servo, (545) 'move the servoPULSOUT Servo, (545) 'move the servoPULSOUT Servo, (545) 'move the servoPULSOUT Servo, (545) 'move the servoPULSOUT Servo, (545) 'move the servoPULSOUT Servo, (545) 'move the servoPULSOUT Servo, (545) 'move the servoPULSOUT Servo, (545) 'move the servoPULSOUT Servo, (545) 'move the servoPAUSE 15
IF key_val <> 0 OR key_val <> 15 THEN beltservo
'________________________________________________
cassettetwo:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, (645) 'move the servoPULSOUT Servo, (645) 'move the servoPULSOUT Servo, (645) 'move the servoPULSOUT Servo, (645) 'move the servoPULSOUT Servo, (645) 'move the servoPULSOUT Servo, (645) 'move the servoPULSOUT Servo, (645) 'move the servoPULSOUT Servo, (645) 'move the servoPULSOUT Servo, (645) 'move the servoPULSOUT Servo, (645) 'move the servo
PAUSE 15
IF key_val = 1 OR key_val = 15 THEN cassetteoneIF key_val <> 1 OR key_val <> 15 THEN beltservo
'________________________________________________________
cassettethree:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, (750) 'move the servoPULSOUT Servo, (750) 'move the servoPULSOUT Servo, (750) 'move the servoPULSOUT Servo, (750) 'move the servoPULSOUT Servo, (750) 'move the servoPULSOUT Servo, (750) 'move the servo
PULSOUT Servo, (750) 'move the servoPULSOUT Servo, (750) 'move the servoPULSOUT Servo, (750) 'move the servoPULSOUT Servo, (750) 'move the servoPAUSE 15
IF key_val = 2 OR key_val = 15 THEN cassetteoneIF key_val <> 2 OR key_val <> 15 THEN beltservo
'________________________________________________________
cassettefour:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, (850) 'move the servoPULSOUT Servo, (850) 'move the servoPULSOUT Servo, (850) 'move the servoPULSOUT Servo, (850) 'move the servoPULSOUT Servo, (850) 'move the servoPULSOUT Servo, (850) 'move the servoPULSOUT Servo, (850) 'move the servoPULSOUT Servo, (850) 'move the servoPULSOUT Servo, (850) 'move the servoPULSOUT Servo, (850) 'move the servoPAUSE 15
IF key_val = 4 OR key_val = 15 THEN cassetteoneIF key_val <> 4 OR key_val <> 15 THEN beltservo
'________________________________________________________
cassettefive:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, (965) 'move the servoPULSOUT Servo, (965) 'move the servoPULSOUT Servo, (965) 'move the servoPULSOUT Servo, (965) 'move the servoPULSOUT Servo, (965) 'move the servoPULSOUT Servo, (965) 'move the servoPULSOUT Servo, (965) 'move the servoPULSOUT Servo, (965) 'move the servoPULSOUT Servo, (965) 'move the servoPULSOUT Servo, (965) 'move the servoPULSOUT Servo, (965) 'move the servo
PAUSE 15
IF key_val = 5 OR key_val = 15 THEN cassetteoneIF key_val <> 5 OR key_val <> 15 THEN beltservo
'________________________________________________________
cassettesix:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "
PULSOUT Servo, (1065) 'move the servoPULSOUT Servo, (1065) 'move the servoPULSOUT Servo, (1065) 'move the servoPULSOUT Servo, (1065) 'move the servoPULSOUT Servo, (1065) 'move the servoPULSOUT Servo, (1065) 'move the servoPULSOUT Servo, (1065) 'move the servoPULSOUT Servo, (1065) 'move the servoPULSOUT Servo, (1065) 'move the servoPULSOUT Servo, (1065) 'move the servoPAUSE 15
IF key_val = 6 OR key_val = 15 THEN cassetteoneIF key_val <> 6 OR key_val <> 15 THEN beltservo
'________________________________________________________
beltservo:
Reps VAR nib 'counter for the FOR/NEXT loopFOR Reps = 2 TO 1
gosub MainservoNEXT
Mainservo:
HIGH PotCW 'discharge capsHIGH PotCCWPAUSE 1
RCTIME PotCW,1,rcRt 'read clockwise,measuring charge of capsRCTIME PotCCW,1,rcLf 'read counter-clockwise
rcRt = rcRt */ $0068 MAX 250 'scale RCTIME to 0-250rcLf = rcLf */ $0068 MAX 250sPos = rcRt - rcLf 'calculate position (-250 to
250)
DEBUG Home, "position: ", SDEC sPos, " "PULSOUT ServoB, (1) 'move the servoPAUSE 20return
END
Appendix B – Innovation Workbench
Ideation Problem Solving ProcessA TRIZ-based step-by-step procedure designed to reveal Innovation
Concepts.
For More Information: Ideation Web Page
Innovation Situation Questionnaire1. Brief description of the problem
Surgical Suture Delivery System
Problem: During surgery, two nurses are required to obtain and open various sutures. This process is where one of the most common breaks in sterile technique occurs and is inconvenient.
Project Goal: To design a device that will minimize the chance for a break in sterile technique as well as increase operating room efficiency by delivering proper suture to the surgeon at the touch of a button.
2. Information about the system
2.1 System name
Surgical Suture Delivery System 2001 (SSDS 2001)
2.2 System structure
The system consists of two main parts. The first part is a cassette that contains the various types of sutures. The second part is a suture transport/opening pathway that delivers the suture without the outer package to the surgeon.
2.3 Functioning of the system
The primary useful function is the delivery of a sterile suture to the surgeon
The purpose of performing this function is to expedite the process of delivering sutures from the nonsterile environment to the sterile field of the operating table.
The current process is done manually and is error prone and inefficient.
2.4 System environment
The system environment is the operating room.
3. Information about the problem situation
3.1 Problem that should be resolved
The current suture opening and delivery method is inefficient and sometime results in breaks in sterile technique.
3.2 Mechanism causing the problem
The source of the problem lies in the multiple human interactions with the suture.
3.3 Undesired consequences of unresolved problem
Infection could occur and time is wasted.
3.4 History of the problem
The inefficiency of transport of unsterile sutures to the sterile environment has been a problem since introduction of sutures to the operating room. The current solution involves nurses manually transporting the suture between the environments.
3.5 Other systems in which a similar problem exists
This situation is common in the operating room and is paralleled by the problems arising from the use of catheters, gloves, etc.
3.6 Other problems to be solved
Cost, size, package separation, wrapper disposal
4. Ideal vision of solution
The ideal solution would be a compact device that can store and deliver a sterile suture in under seven seconds at the touch of a button.
5. Available resourcesSample suturesParts from suppliersAll necessary equipment to build prototypeConsulting professorsDr. Guzman
6. Allowable changes to the system
Any change is allowed as long as it fits the aforementioned parameters.
7. Criteria for selecting solution concepts
Results from Designsafe software (safe)Easy to operateMechanically feasibleMeets all of the criteria
8. Company business environment
The main working environment will be the BME lab at Vanderbilt University. We will use Vanderbilt Biomedical and Mechanical Engineering resources, Vanderbilt Medical Center resources, and outside resources.
9. Project data
Senior Design Students:Sarah Hembree sarah.b.hembree@vanderbilt.eduRyan Ruehl ryan.r.ruehl@vanderbilt.edu
Project Mentor:Dr. Raul Guzman raul.guzman@mcmail.vanderbilt.edu
Problem Formulation1. Build the Diagram
2. Directions for Innovation
3/17/01 3:40:33 PM Untitled 1
1. Find an alternative way to obtain [the] (input suture selection) that provides or enhances [the] (cassette rotation).
2. Find an alternative way to obtain [the] (cassette rotation) that offers the following: provides or enhances [the] (transfer of suture to the active site), does not require [the] (input suture selection).
3. Find an alternative way to obtain [the] (transfer of suture to the active site) that offers the following: provides or enhances [the] (opening mechanism), does not require [the] (cassette rotation).
4. Find an alternative way to obtain [the] (opening mechanism) that offers the following: provides or enhances [the] (suture enters delivery site), does not require [the] (transfer of suture to the active site).
5. Find an alternative way to obtain [the] (suture enters delivery site) that offers the following: provides or enhances [the] (wrapper removed), does not require [the] (opening mechanism).
6. Consider transitioning to the next generation of the system that will provide [the] (wrapper removed) in a more effective way and/or will be free of existing problems.
7. Find an alternative way to obtain [the] (wrapper removed) that does not require [the] (suture enters delivery site).
3/17/01 4:15:04 PM new diagram
1. Consider transitioning to the next generation of the system that will provide [the] (vacuum suction) in a more effective way and/or will be free of existing problems.
2. Find an alternative way to obtain [the] (vacuum suction) that does not require [the] (opening mechanism).
Prioritize Directions1. Directions selected for further consideration
First priority
opening mechanism
Long-term
effective cassette and circuit design
Out-of-scope
computer controlled inventory, selection
failure detection circuitry
2. List and categorize all preliminary ideas
Best Ideas:
Vacuum Method
Thermal Method
Friction Method
Backup Ideas:
Crimp Method
Cutting Method
Velcro Method
Electrostatic Method
Develop Concepts1. Combine ideas into Concepts
sub-problem: opening suture package
Ideas: vacuum and thermal methods
Compare: vacuum method can open all types of package, independent of package material, but it requires a perfect seal. The thermal method requires plastic package, but is very accurate. Therefore the vacuum method is more universal, but the thermal method might be less prone to failure.
We will apply a copy machine model for the vacuum method; the paper feeding mechanism.
2. Apply Lines of Evolution to further improve Concepts
Increasing Ideality:
Universality
---------------
Mechanical obstacles
Overcoming mechanical obstacles: intensify field, intensity vacuum
Increasing controllability; introducing negative feedback
increase vacuum in response to suction failure
reallocating vacuum in response to failing suction
Reduce complexity (simplification)
Specialization
This mechanism is specialized for sutures
Improve Reliability
Duplication of critical elements
Add more vacuum pumps/ducts
Evaluate Results1. Meet criteria for evaluating Concepts
Secondary Problem: ineffective vacuum
2. Reveal and prevent potential failures
Overcoming mechanical obstacles: intensify field, intensity vacuum
Increasing controllability; introducing negative feedback
increase vacuum in response to suction failure
reallocating vacuum in response to failing suction
Improve Reliability
Duplication of critical elements
Add more vacuum pumps/ducts
3. Plan the implementation
Measure force generated by vacuum system, compare force calculated to the slip/grip force calculations
Perform trials of the vacuum method to determine failure rates
Experiment with varying hole size in belts to determine the ideal size/number of holes
Determine the maximum force to open suture and the minimum suction in force and flow rate
Determine the speed of the belt without breaking suction
Determine how long the transport path length will be
Determine the time of belt rotation, before and after the photosensor detection
Appendix C- Designsafe Review Report
Appendix D – Additional Circuitry and Programming Materials
top related