Measuring the tension on the head of a drum or banjo is important in order to be able to determine if the head is the right tension for your needs. It’s also useful to measure tension that gives a particular tone you like, ensuring you can always get back to the same tension after swapping the head or experimenting.
A commercial gauge is available called a Drum Dial and retails for $60 or more. Here is how I made mine for just a few dollars.
I started off with a cheap Harbor Freight dial indicator. Mine is digital but the analog version would work fine also. These can be picked up for $15 or less with coupons.
Next I added a base. I 3D printed mine but it can also be made out of wood. The spring in the dial indicator is quite weak so I designed the base so that the zero point is one millimeter from maximum spring compression. This ensures that we are using as much spring pressure as the dial indicator can give to press into the head. The base is a friction fit onto the indicator and a tight fit is needed. The bottom of the base has to be completely flat.
Once the base is installed turn on, press down on a flat surface and set to zero. Remove from the surface and apply a few times to make sure the zero point is always found.
Now press down on the drum or banjo head to measure the head tension. The Drum Dial comes with a spacer to help keep measurements away from the tension hoop. I decided to eyeball it instead.
The values obtained can’t be compared with a Drum Dial or other DIY tension gauges because the result is dependent on the strength of the spring however Drum Dials use a scale that sets 100 to the highest tension. To convert the dial indicator value to the same scale:
- 0.000″ = 100
- -0.001″= 99
- -0.002″ = 98
- -0.010″ = 90
The 3D printed base used three shells, 20% infill, took about one hour and cost about $0.40 in plastic.
Here are the dimensions of the base for making your own. All dimensions are in millimeters.
- loosen the screws holding the servo and move it back slightly so the gears are still meshing but there is no sideways pressure on the servo shaft.
- make sure the pivot servo is not near the limit of it’s range at any point. When near the limit it will attempt continuous rotation and will lose it’s position.
- check the hub retainer is not touching the lower bearing.
- move the gear housing away from the servo and make sure it rotates freely.
- rotate the in tray outwards slightly and update the in tray position in config.xml. This will move the center of the in tray slightly further from the center of the pivot.
- make sure y axis is vertical (see item 6).
- rotate the out tray outwards slightly and update the out tray position in config.xml. This will move the center of the out tray slightly further from the center of the pivot.
- make sure y axis is vertical (see item 6).
- make sure both sides of the grabber are vertical.
- raise the toolhead microswitch so that more of the grabber is lowered into the hole in the center of the disc.
- make sure that the y axis is exactly horizontal.
- make sure that the y axis is exactly horizontal.
- check that the Y axis is vertical (see item 6).
- make sure that both sides of the grabber are vertical.
- make sure the hub retainer is close to, but not touching, the lower bearing.
- loosen the nuts holding the gear housing to the threaded rod and re-tighten while pressing down on the rear of the gear housing.
- check the y axis is securely attached to the threaded rod.
- adjust the two M8 nuts on the threaded rod at the hub to shorten/lengthen the arm from the pivot to y axis. Make sure the grabber is exactly over the center of the disc.
- tweak the drive tray position in config.xml
2. Ideas for Improvements
- Increase DVD capacity for faster PCs.
- Redesign main gear housing to use less plastic.
- Sugru veneers for grippers.
- Eliminate Raspberry Pi.
– merge BotServer into JacktheRipperBot.exe
– PC communicates directly with Pololu Maestro
- PC farm for faster ripping
– use Raspberry Pi to create image of discs which are then put into a queue. A farm of PCs work on encoding the queue.
- Cable management on top of support ring to keep wires away from gears.
- Stack two or three DVD drives vertically so the robot can load and unload into all of them.
- Add support for ripping “profiles” to JacktheRipperBot.exe, allowing different Handbrake settings to be used for specific discs in the in tray.
Install the Pololu Maestro software and then connect the Maestro to your PC and start the software.
The microswitches should already be displaying their status. Press the switches and make sure they are working.
Enable the three servo channels and manually move each servo to make sure it works.
Use the software to position the arm over the in tray, DVD drive and out tray. Make a note of the servo position values. Be careful not to go near the limits of the servo as it turns into a continuous rotation servo and loses position.
Use the software to work out a slow speed for raising and lowering the toolhead and also the value to make it stop without the servo making a buzzing sound. Make a note of these values.
Finally use the software to determine the servo values for the grippers being fully open and fully closed. Make a note of these values.
Open the DVD tray and put a DVD into it.
Use the two M8 nuts next to the hub to adjust the length of the arm so that the grippers are directly above the hole in the DVD.
Swing the arm over the in tray and check if the grippers are positioned over the center. If not swing the tray outwards slightly or add M8 washers as spacers between the tray and the tray anchor. If you move the tray then you will need to check again the servo value need for the in tray position.
Repeat this for the out tray.
3. Raspberry Pi Setup
Copy to the Raspberry Pi (RPi) the following:
Edit config.xml in a text editor and insert the servo values you have worked out.
Mono needs to be installed on the RPi but the version in the repositories does not work. Instead use the version found here.
Run the server with:
mono ./BotServer.exe config.xml
Open the DVD tray and put a DVD into the in tray.
Load a disc by visiting: http://192.168.1.70/botapi/?command=loaddisc
Replace the IP address with the address of your RPi. The disc should be loaded into the tray.
You may have to adjust the YAxisLowertoDriveTime in config.xml which is given in 1/1000th of a second and governs the time spent lowering the toolhead before dropping the disc into the drive tray.
Once the load disc function is working test the unloading with: http://192.168.1.70/botapi/?command=unloaddisc
The YAxisLowertoOutTrayDropTime in config.xml governs the time spent lowering the toolhead before dropping the disc into the out tray. It has to drop from low enough that it consistently goes into the tray, but high enough that when the stack in the out tray is full there is space to drop the last disc.
4. PC Setup
Copy the following files to your PC:
Make sure the full .NET Framework 4.0 is installed. If you need to install it then reboot before running JacktheRipperBot.exe.
Install DVDFab Passkey or AnyDVD. Both applications have the option to execute a command when scanning of a disc has completed. Set this up to run ScanningFinished.bat.
Install Handbrake and check the correct path to HandbrakeCLI.exe is used in Rip.bat.
Start JacktheRipperBot.exe and enter the IP address of your RPi.
Go to the advanced tab and try the various operations individually.
Once you are happy everything is working enter the number of discs in the in tray and click on Start to start ripping!
The following block diagram shows the arrangement of the electronics.
For wifi connect a USB wifi interface to the Raspberry Pi (RPi). Connect a USB cable from the RPi to the Maestro. I connect to the RPi via SSH and I have configured my router to always assign the same IP address.
The Maestro requires a separate 5V power supply for the servos.
Connect the servos to the Maestro as follows:
- Channel 0 = Core servo for pivoting
- Channel 1 = Y axis servo
- Channel 2 = Toolhead servo
Use the servo extension cables for the Y axis and toolhead servo.
Wire the microswitches as shown in this diagram. I used servo extension cables and the colors mentioned reflect that. Note that the signal wire could also be white.
The 5V connection to the Maestro is not the one on the servo connectors. There is a separate 5V and GND along the top edge. See this section of the Maestro user’s guide for details.
Solder a two pin header onto the pads for the 5V and GND. Use the two way molex connector and 0.1 inch pins to create a connector to plug onto the header. Note that the ground pin is not used, instead the ground on the servo connectors is used.
Part I covered the introduction to the robot. This part covers the mechanical assembly.
I divided the mechanical design into several groups, which I will refer to throughout. These names are also used for the part designs.
The frame holds everything together. It attaches to the DVD drive. Onto the frame is the in and out trays and what I call the “core”. The core is the main pivoting mechanism for the arm that loads and unloads discs.
At the end of the arm is the YAxis which raises and lowers discs. This should have been called the ZAxis but C’est la vie…
Finally the toolhead is at the bottom of the YAxis and grabs and releases discs.
I printed all parts in PLA with three perimeters and 20% fill.
No support is required. The STLs are already correctly orientated.
Any STL name ending in _X2.stl means print two copies of that part.
Whereever M8 nuts are used always use a M8 lock washer against the nut, unless the nut goes into a nut trap.
Exploded diagrams don’t show M8 lock washers, M3 hardware or M2 hardware.
Filing of the printed parts may be needed, especially for the M2 nut traps and if the first layer has a lip because it was squashed.
If you are unsure about any step you can download a 3D PDF of the entire robot. Open in Adobe Reader and click on the image. You can then spin the model around and zoom in to examine it from every angle.
1. DVD Drive
The DVD drive must be an internal 5.25 inch type designed to be used horizontally. The tray electronics must open and close the tray fully by pressing the front button on the drive. When the tray is open it must be possible to lower a disc into the tray vertically. I.e. make sure the front of the drive does not overhang the back of the tray slightly.
Attach the left and right brackets onto the drive using M3x12 bolts and the rear mounting holes in the drive case. The curved ends go towards the rear.
Attach the tray anchors to the left and right brackets using M3x18mm bolts. M3 nuts go into the recesses on the bottom of the tray anchors.
Attach the in and out trays to the tray anchors. Use M8x30mm threaded rod, M8 nuts and M8 lock washers. The out tray has slightly sloping sides at the top. The in tray does not.
Attach the electronics caddy to the left bracket using two M3x14mm bolts. Put M3 nuts into the nut traps.
Attach the four M3x100mm threaded rods to the left and right brackets. M8 nuts are placed into the recesses in the bottom of the brackets.
Attach the corners to the threaded rods you just added. They should be positioned as close as possible to the top of the threaded rods.
Attach the GWS S125 1T servo to the servo bracket. The end of the servo with the shaft must go to the end of the servo bracket that is built up underneath. Use four M3x14mm bolts with M3 washers next to the bolt heads.
Press the servo gear onto the shaft of the servo. It will be a tight fit. Note that there are three servo gears. Use the “core” servo gear.
Press a 608ZZ bearing into the recesses in the top and bottom of the gear housing.
Slide the main gear into the slot in the gear housing.
Press the hub into the gear housing so that it goes through the upper 608ZZ bearing, the main gear and then the lower 608ZZ bearing. Make sure it is all the way in. It will be a tight fit. If you can’t make it fit through the gear then carefully file the hole in the gear, but do not overfile.
Attach the hub retainers to the bottom of the hub. These clamp onto the cross-shaped part of the hub. Use two M3x16mm bolts with nuts. It should be close to the bottom of the gear housing without touching it.
Place the support ring on top of the gear housing.
Slide two M8x200mm threaded rods through the left corner, servo bracket, gear housing and right corner. The order should be (from left to right):
M8 nut, M8 lock washer, left corner, servo bracket, gear housing, M8 lock washer, M8 nut, M8 nut, M8 lock washer, right corner, M8 lock washer, M8 nut.
Press the servo gear onto the Futaba S3003 servo (modified for continuous rotation). The fit will be tight. Be sure to use the servo gear for the Y axis.
Slide the servo down into the Y axis. The tabs on the servo go towards the front of the Y axis.
Push the rod up into the Y axis from the bottom. When it reaches the servo gear you will have to move the servo up and down a bit to get the rod to slide in. You can also carefully turn the servo by hand.
Attach the servo to the Y axis using four M3x14mm bolts. Use M3 washers next to the bold heads.
Attach the microswitch without a roller to the side of the Y axis using M2x14mm bolts. Put M2 nuts into the nut traps. Use the image above to orientate the microswitch.
Attach the Y axis to the core using a M8x220mm threader rod. A M8 nut goes into the nut trap on the underneath of the Y axis. The order should be (from front to back):
M8 nut (in nut trap), Y axis, M8 lock nut, M8 nut, M8 nut, M8 lock nut, hub, M8 lock nut, M8 nut
Screw the 9g micro servo to the back of the frame using two M2x10mm bolts.
Attach the guide which goes between the two forks using a single M2x10mm bolt.
Slide the rack into position.
Press the servo gear onto the servo shaft. It will be a tight fit. The teeth on the gear should mesh with the teeth on the rack.
Attach the fixed gripper to the frame using a M2x10mm bolt.
Attach the moving gripper to the rack using a M2x10mm bolt.
Attach the microswitch with the roller to the frame using two M2x10mm bolts.
Attach the toolhead to the bottom of the rod on the Y axis using two M3x14mm bolts.
I had a problem.
Over the last 15 years my wife has amassed a huge DVD collection and we don’t have enough space for shelving to access them all. About a year and a half ago I decided to start ripping the discs to a media server. This went well initially but it was tedious. Ripping is a slow business and every hour I had to feed the computer another disc which was disruptive to normal life. I gave up.
Recently inspired and armed with a 3D printer I decided to build a robot to perform the disc changing. Jack the Ripper Bot was born.
View the video of the robot in action: http://www.youtube.com/watch?v=mmHycIOtYHA
I will divide the description of Jack into five parts: introduction, mechanics, electronics, software and troubleshooting.
My aims were:
- Modular software and hardware design
- Open source
- Low cost
- Using off-the-shelf electronics
A stack of discs are placed into the “in tray”. An arm moves over to the stack and grabs the top disc. The disc is then lowered into the drive tray. Ripping takes place. Once complete the disc is removed from the drive tray and the arm takes it over to the “out tray” and places it there.
A Raspberry Pi is used to control the robot and a PC is used to control the overall process and the ripping.
I have a laptop which is about four years old and it can rip a DVD in about 1 hour 15 minutes. The in tray is designed to hold 24 discs to give about 28 hours of ripping time. It is of course possible to increase the capacity of the in tray and the out tray if your PC is faster than mine.
Pronsole is a great way to control a 3D printer. it’s quick, efficient and customizable, however it does omit some useful commands. Here are some you can add to make it a bit more useful. Define the command using ‘macro’. then use the command by typing it’s name in.
This command turns the motors off. Useful if you wish to manually move an axis on the machine.
macro motorsoff M18
On the Melzi board removing and inserting the SD card stops the card from being used any further until M21 is issued.
macro resetsd M21
It can be handy to see all the gcodes that are being sent to the controller board and all the responses coming back. Also if you have a RepRapPro machine it won’t monitor the temperatures because pronsole doesn’t understand the values that are returned. Using this command will allow monitor to work again.
macro loud !self.p.loud = 1
This is the opposite of loud. It turns off reporting of gcodes and responses.
macro quiet !self.p.loud = 0
Rendering models using a variety of materials allows a finished object to be viewed and analyzed before committing to cutting wood or printing plastic. SimLab Composer works very well with Alibre Design. Here is an example showing my fan mount for the current RepRapPro Mendel design:
The nozzle mount is an STL from RepRapPro. The fan is an IGES file from GrabCAD. The M3 nuts and bolts are STLs from TraceParts. Finally the fan mount was exported as 3D PDF from Alibre Design.
3D printing by using layers of melted plastic filament, such as used by RepRap printers, causes small holes (less than 15mm in diameter) to end up smaller than the designed size. To compensate for this people create designs with larger holes so they shrink to the right size. It’s not an ideal solution – how much do they need to be increased by? What if you later want to send the same design to a commercial printing service that is more accurate?
The RepRap developer Nophead examined this issue and came up with a simple way to design holes that print at the right size regardless of the printing method. He called them polyholes.
In short the solution is to approximate the hole with a polygon and increase it’s size slightly.
Creating these polyholes in a CAD package is tedious. The size has to be calculated and the number of sides varies with the hole size. ADScript has this functionality baked right in. Here is an example python script:
# use millimeters for all values Units.Current = UnitTypes.Millimeters # test block dimensions length = 15 width = 10 depth = 3 # size of test holes diameter = 3 # create a new part, get the XY plane and create a sketch on the plane PolyholeTest = Part("PolyholeTest") XYPlane = PolyholeTest.GetPlane("XY-Plane") Base = PolyholeTest.AddSketch("Base", XYPlane) # draw the part outline Base.AddPolyline([0, 0, length, 0, length, width, 0, width, 0, 0], False) # draw a regular hole Base.AddCircle(length / 3, width / 2, diameter, False) # draw a polyhole Base.AddPolyhole(length / 3 * 2, width / 2, diameter, False) # extrude the sketch into a part PolyholeTest.AddExtrudeBoss("Block", Base, depth, False) # save and export to STL for printing PolyholeTest.Save("C:\Users\Andy\Desktop") PolyholeTest.ExportSTL("C:\Users\Andy\Desktop\PolyholeTest.stl")
When this script is run it produces the following test part with the regular hole on the left and the polyhole on the right:
To rotate the part simply change the plane used, perhaps to “ZX-Plane”, and run the script again.
ADScript makes it easy to use Alibre Design with Python scripting. For example creating a new part:
Test = Part("Test")
We can get access to planes in the design workspace, for example:
XYPlane = Test.GetPlane("XY-Plane")
Once we have a part and plane we can create a sketch on the plane:
MySketch = Test.AddSketch("MySketch", XYPlane)
Adding to the sketch is easy:
MySketch.AddCircle(0, 0, 10, False)
Now we can extrude it:
Object = Test.AddExtrudeBoss("Object", MySketch, 5, False)