2018-08-26

Vinyl Stickers with a 1610 CNC Mill/Engraver

The process for cutting out vinyl stickers with one of these cheap CNC mill/engravers involves mounting a drag-knife and figuring out the software.  It's not particularly hard.  I did it and it works surprisingly well. Of course, I do have a 3D printer to make the parts I needed.

A Drag-Knife is a cutting blade mounted in a holder such that it can freely rotate to follow the cut line.  The knife does not spin under power, it just turns to follow the cut. They go from big to very small. For vinyl stickers, you want the small ones.  With these, the knife is mounted in a bearing so it can rotate and is held in place with just a magnet.  The holder needs to be mounted in such a way that it can spring in the Z axis while being rigid in the X/Y plane.  The holder tip is designed to rest directly on the vinyl under the spring pressure that your mount provides.  The depth of cut is set by the knife stick-out which is set by the holder using a screw assembly.

I picked up a holder and 15 knives for $11 off Ebay (they're even cheaper now... search for vinyl cutter).  While you're ordering this, pick up some vinyl sticker as well.  As a hint, it turns out that people like sticking strips of vinyl at the top of their windshields and those strips are about the right width and very cheap too.


Anyway, about that mount and spring pressure.  There are various designs, some even involving linear bearings, but I decided to try out what's called a "Diaphragm Flexure" that I can 3D print.  It's a very interesting concept I came across looking for something else... such is life in the Information Age.

He're a youtube video of the basic concept:


Here's an academic paper on why it works:
http://www-personal.umich.edu/~awtar/PHD/Diaphragm.pdf

What we're aiming for is a 3D-printed precision linear bearing where the reciprocator is our drag-knife holder and the whole thing mounts in the CNC Z-axis carriage where the spindle motor usually goes.  Yes, a lot of constraints:  The drag-knife holder sets the internal bore, the motor mount sets the outer diameter, we need about 2mm of easy Z-axis movement, and it needs to be as rigid as possible in the X/Y plane.  Took me all of 8 prints to get it right.





The STLs are up on PinShape, there are Fusion 360 project files for the Diaphragm and Housing on A360, and you can download them all for free... though you're more than welcome to buy me a cup of coffee for my efforts.  The Fusion files use parameters for bar width and thickness and also the cut width.  With those, you can alter the springiness and rigidity easily (Modify - Change Parameters).  I started out prototyping in PLA, with surprisingly good results, then switched to nylon figuring it would give better life while springing.  However, given the space constraints, the nylon proved much too flexible.  I couldn't get enough rigidity in the X/Y plane without losing all flexibility in Z.  I considered going with ABS, but the PLA worked so I just went with that.  It's a very small amount of plastic and an easy assembly.  If it ever breaks, I'll just print another.  The 0.5mm test flexure took a surprising amount of abuse before it started breaking.

3D printing these diaphragm flexures is not hard but requires much attention to detail:
  • Print on blue painters tape wiped with alcohol.  You'll never get the part off of glass or another solid surface without breaking the flexure bands.  Print, then peel the tape off the bed, part and all, then carefully peel the tape off the part.
  • I use Cura and had to turn on quite a few advanced settings to make this work.  Realise that the springs in this are printed plastic bands only 0.9mm thick.  It takes a lot of slicer settings to get this right.
  • The cut between these bands is very small, only 0.6mm and it can't be fouled with plastic or the spring won't work.  The model has a filet on the underside of each spring but you must still adjust how your printer lays down that first layer.  Too little clearance and the plastic will mush out and the cut will foul.  Too much clearance and the part won't stick to the bed.  Even with everything as good as I could get it, I still had to clear out some extra plastic under a magnifying glass while using a tiny scraper (an engraver bit actually).
  • Make sure there is only one "body" in the STL and then print the top and bottom layers 'concentric' for maximum strength.  I went with a triangle fill pattern, but I doubt that matters much.
  • I went with a layer height of 0.0875mm, which happens to match the step ratio on my printer, with an initial layer height of double that.  I did try an earlier one with a layer height of 0.04375mm (one step on my printer Z axis) but it doesn't seem to be needed.
  • Set the top and bottom layer count to 2 each.
  • I had to set my 'flow' to 85% (not fill, flow).  You will need to experiment with this to get the right amount of plastic laying down.
  • Fill was also in the 85% range but I doubt it matters much.  Between that thicker first layer and then the top and bottom layers, there is very little room for fill in the spring bands.  The inner and outer bores are not particular.  It's the spring part that is important.
  • The mount itself is not critical, just make sure the flexures tightly fit in the bore or you will need to glue.  Also, measure the distance between the 2 flexures when test fit on the holder and make sure this matches the length of the step inside the mount.  Your drag-knife holder may be a different length.  Note that the bottom step is actually a chamfer such that no support is required.
Print 2 diaphragm flexures and 1 mount.  To assemble: 
  • Scrape/sand out the inner bore of one flexure until it just presses on the nose of the drag-knife holder.  It needs a decent interference fit, or you will have to glue.  I would avoid glue if I could, preferring to print again.  These diaphragm flexures can't last forever and glue will make replacement a lot harder.
  • Do the same for the other flexure, sizing to match the other end of the drag-knife holder, but don't assemble this end yet. Yes, you will have to remove the drag-knife internals and locking nut.
  • Verify that the mount internal spacer matches the distance between the flexures.  
  • Press the drag-knife holder into the mount, seating the flexure that's around the nose.  Slide the second flexure down inside the mount from the other end until it seats on the other end of the drag-knife holder.
  • If you've done everything right then you should have your mount.  The flexures should both be at about neutral, in the middle of their movement, and the drag-knife should easily slide up and down the bore a couple of millimetres each way while not moving side to side.  Put the drag-knife holder back together, insert a knife, and set your initial depth of cut.
  • After that, pull the spindle motor out of the Z-axis of the CNC and slide this mount in.  It should be flush with the top and hang below the mount.  The bottom of the drag-knife holder must be lower than the lowest part of the Z-axis assembly.
  • Block up the CNC table until you can get the label within range of the drag-knife.


To use:
  • Make the top layer of the bed something that won't wreck your knife if the depth of cut is wrong.
  • Tape some vinyl sticker down on the bed, masking tape along the edges works well.
  • Pull the knife out of the holder.
  • Lower your Z-axis until it just touches the vinyl, then another 1mm.  You should see the diaphragm flex a bit.  Set your zero.
  • Raise the Z-axis and install the knife.
  • Cut your sticker.  Make sure there's no spindle-on in the gcode, unless you've disconnected your motor entirely.  I just made a cradle to hold it on the top rail.
  • It will take some experimenting to get the right depth of cut and adjusting said depth is not particularly easy with this setup, what with the adjuster and lock-ring down inside the mount.  But, it's a cheap conversion of a cheap mill.  Get over it.
Some random tips:
  • The Fusion 360 '2D trace' toolpath works.  In the CAM setup, set your cut to zero, at the model top.
  • Some fonts in Fusion 360 will generate 2 traces, both sides of each line.  Good for pocket milling out letters but very bad for cutting vinyl.  You can right-click on lettering and 'Explode Text'.  After that, you can easily delete one of the lines.
  • Set multiple toolpaths if there's a cut inside another cut, as is typical in letters.  The first toolpath cuts the inside, then the next toolpath cuts the outside.  That way, if the depth of cut is too deep and the backing lets go, the inside will already be cut.
  • Once cut, if the sticker is multi-part:
  1. If the depth is off and the backing is partially cut then put some masking tape on the backside to hold things in place.
  2. Then, peel off the waste vinyl from the backing (the part you don't want to be part of the sticker).
  3. Then, take more masking tape but foul it up a bit first by tacking it on your pant leg or something.  It's an old painter's trick to stop strong tape from wrecking the work.  It only has to just hold things in place.  Put the tape on the front of the sticker in overlapping rows such that they go across parts of each sticker element.
  4. Then, when you're ready to place the sticker, peel off the backing and any masking tape there.
  5. Apply the sticker.
  6. Remove the front masking tape, peeling row by row while holding the sticker parts in place.

2017-10-27

Linux Data Recovery of a Factory Restored Android Device

Somehow, I managed to pocket-dial my way to a factory restore on my Android phone.  Yeah... no idea how.  Anyway, while I'm quite good at backing things up, I have lost about 10 days worth of journal entries, a few photos, and some GPS tracks.  Certainly not the end of the world, but annoying.

So, I figured this is a good time to see what is recoverable from internal storage on an Android device after a format.  I'm no expert here, and I'm writing this as a way of taking notes.  This isn't intended to be a how-to guide for everyone that's made a foolish mistake.  It's not intended to be a complete reference for experts either. It's just what I did while learning how to do it.  I write notes as I go, and I figured I might as well share.  If you find this useful, then buy me a cup of coffee.

So, surprise, surprise... I've got 24GB of free space in my internal storage.  Nice shiny new unconfigured interface, factory default everything except the scratches.  Dang!

As I write this, I'm copying said 24GB to an image file on my desktop system.  I'll run some recovery tools on that when it's done.  Here's how I got to this point:

For some reason, my phone has the option to mount internal storage as an SDcard via USB, but nothing shows up on my Linux desktop.  Switching to MTP shows the file system, but that's pretty much useless for me as there's nothing there but what comes stock.  By design, the raw storage is not available.

So, I installed the Android Development Toolkit:
 sudo apt-get install android-tools-adb

That would show a connection via:
 adb devices
but said "insufficient permissions for device"

So, I rooted the device.  I wasn't keen on that as any writes to the device risk wiping the data I want to recover, but whatever.  I chose KingRoot.  Whatever works for your device.  That made no difference.  Sigh...

I found out that I should restart the ADB service via sudo:
 adb kill-server
 sudo adb start-server
That worked, I can now run ADB commands against the device.

Next up, I needed to figure out what partition to copy.   I used:
 adb shell su -c "cat /proc/emmc"
and then:
 adb shell su -c "cat /proc/partitions"
to cross-reference the partition for "userdata".  In my case, it was /dev/block/mmcblk0p22

Then, I copied the entire partition to my desktop via:
 adb shell su -c "dd if=/dev/block/mmcblk0p22" > ~/backup22.image

Anyway, that command is half-way finished now.  Considering this will be a 24GB file, from here on in, the commands I run are going to take their sweet time.  I'll update this as I go... maybe I'll actually get that 2KB of journal text file recovered, maybe the 20MB of photos, and a few other MB of map tracks.  Maybe I won't.  At least I've learned a few things already.

Hope this helps...

Update 1:

The first try at capturing the image stopped at 10.1GB.  The next ran to 27GB(?).  Neither Testdisk nor Photorec managed to get anything useful off either.  As well, after having decided to get it over with and factory-reset my phone to get rid of KingRoot, which seems rather invasive, I discovered that pocket-dialling my way to a factory-reset is near impossible.  The system is designed to avoid this.  Thus, something else must have happened.  Maybe, it crashed and scrambled the partitions enough that the phone decided to rebuild the file system?  Just guessing at this point.  In any event, I've decided to grab everything I can off the phone before doing the reset.  Thus:
 adb shell su -c "dd if=/dev/block/mmcblk0" > ~/backupAll.image
I'll let that run tonight and see what I can get off it later.

Update 2:

A factory-restore does not remove KingRoot.  Apparently, using its own uninstall does.  At least it appears to be gone.  Note that the above adb shell su ... commands no longer work, so my phone does not come rooted and does require this for access.  Still not having any luck with testdisk on the latest dd image.

2017-06-26

Why is FedEx Still in Business?

So... for the 3rd time in 5 days, because they obviously don't deliver on the weekend, I get a failed delivery notification on my door.  Same time every day, day after day.  On the first day, I noticed the delivery notification said I can reschedule or arrange for a pickup through "Delivery Manager."

Sounds great.  So, I go to the website, find out I have to make an account, and fill out the stupid form.  Except, it won't let me put the last digit of my postal code in... because it's not a zipcode, and I live in Canada.  No, it won't let me change the country to Canada either, despite the form having a very nice but quite non-functional country drop-down selection list.  After futzing about for a while, I find out that Delivery Manager is only for US customers.  So much for that.

And, next day, the next delivery notification.  You think that someone delivering to a residential address would figure out that if a person isn't home during the first weekday at 9am, they probably aren't going to be home the next business day, at 9am.  So... the form says 1st Attempt, 2nd Attempt, and Final Attempt.  I figure, if I miss Saturday, at least I can go pick it up.  No, they don't deliver on Saturday in Canada, apparently, despite what it says on the nice delivery notification, which should really be called the NO Delivery Notification.

So, on Monday, I get the Final Notification.  But, no address of where I can pick it up.  No information at all, actually.  After more futzing around on their website, I find that they aren't going to leave it anywhere I can pick it up.  They are going to keep trying for 10 days, presumably at exactly the time it's guaranteed that I won't be home to receive it, until they eventually give up and ship it back to where they picked it up.  That's nice.

So, I try to get some customer support on their website.  Nada.  Page not Found, over and over again.  Zero support.  Nothing, unless you count broken links.  So, you can imagine that I'm getting a little choked at this point.  I hate phones.

So, I call the number on the delivery notification, cellphone on a pay as you go plan as I don't have a land-line.  Haven't had a land line in a quarter century... I hate phones.  But, I call, and I get the machine.  It's useless, of course, so I ask to talk with a human.  Surprisingly, I get one, but he can't help me because I'm in Canada.  He has to transfer me to the International Support line.  You think the delivery notifications in Canada would have a customer support number that works in Canada.  I guess that's too hard for them to figure out.

So, I get transferred to the International Support line.  And, surprisingly, she says she'll arrange for it to be held at some sorting facility that isn't on the FedEx website store locator.  I have the address.  I just have to wait for them to call me and let me know they have the package.

I'll let you know if they ever call.

Honestly, I'm rather annoyed with this experience.  I tried to vent on their website, figured there would be some kind of complaint form, but nothing.  All dead links, page not found.  Makes a guy wonder how long it will be before it's "Company not Found."  It's pretty hard to make Canada Post look quick and efficient, but FedEx somehow managed to do it.

Sorry, had to vent.  If a stupid failing company can't even keep a website up enough to collect and trash complaint forms, then people will find other ways.  Maybe the next person searching the web for 'FedEx' and 'Complaint' will find this blog.  Misery loves company, after all.

Update:

So, after a few days, I get a garbled voice recording from a computer wanting me to go through a 3 minute customer satisfaction survey... on my pay as you go cellphone. I hung up... figuring that my expletive-riddled replies wouldn't be listened to anyway.  On a chance, I decide to drive the 30 minutes out to the industrial area where the warehouse is.  Apparently, they close for lunch, for a 2 hour lunch.  Luckily, I'm there early so I buzz the door.  Nothing.  I buzz again, and I get a guy on the intercom.  He buzzes me in and I get to this area with a big counter and nothing else.  But, a guy walks in and hands me my package.  Yay!  Wasn't that fun?

And another Update:

Just read the news, 2017-07-21. FedEx is starting to shut down their Canadian operations.  They say they'll still ship to Canada...  Yeah right.  Goodbye FedEx.

Sad to see all those people lose their jobs because of inanely stupid management decisions, but it was pretty obvious it was going to happen.  The only other disgusting part is that those managers will likely get bonuses because of all the money they 'saved'.

2017-05-27

Drilling Holes in all the Right Places



There are 2 common ways to drill accurately placed holes: floating or indexed.

The floating method:
  1. Layout the part, scribing lines to the accuracy desired.
  2. Prick punch (a fine 30-50deg punch) the scribed intersections. Done correctly, you should be able to feel the intersecting lines with the point of the punch but use a magnifying glass to confirm. An optical center punch is another option here, but again confirm.
  3. Drift the center mark as necessary until it is at the line intersection.
  4. Enlarge the mark with a center punch.
  5. Optionally, with a divider using the center punch mark as an anchor, scribe witness circles the same or slightly larger diameter than the desired hole.
  6. Select a very small drill with a tip that fits properly in the center punch mark. Some people prefer to just make the center punch mark larger than the web of the pilot drill they intend to use.
  7. Drill while allowing the work to float on the drillpress table such that the drill will align with the punch mark.
  8. Select the next drill, which should have a web thickness smaller than the original hole or punch mark and have a diameter slightly larger than the web thickness of the final or, if necessary, intermediate drill.
  9. Drill the final size.

The indexed method:
  1. Clamp and index the part to a known feature. If you index off a punch mark, use an appropriate measuring tool to pick up the mark.
  2. Crank the table to the desired hole location. If using a drillpress, you can index each hole to drill.
  3. Use a short spotting drill or, if it's all you have, a center drill.
  4. Drill to the web thickness of your final drill.
  5. Drill to final size.

General notes:
  • The floating method relies on a moving work-piece and flexing drill to align with a center punch mark. Horizontal rigidity is bad. Do not clamp down the vice or fixture and use jobber length drills. When drilling large holes, remember drill safety and consider indexing instead.
  • The index method relies on rigidity. Clamp and lock everything down. Use stub-length drills where possible. Use spotting drills if you have them.
  • Mixing the two approaches, using stub-length drills when floating to center punch marks for example, will give less accurate results.
  • Layouts on work to be clamped down and indexed will help with error checking but a center punch mark will not, in itself, correctly line up the drilled hole. It's up to the operator to correctly index to the mark.
  • When using the floating method, if the initial hole has gone off center then you can drift it back a slight amount. Use a cold chisel to notch the far side, the side you want to move away from, and then drill the next size up drill available, possibly repeating several times. Witness circles help with this approach.
  • When using the index method, if the initial hole has gone off center then you can re-index and use an endmill or, if large enough, bore it back.
  • If holes in multiple parts are to align, bolt, clamp, or even tack weld them together and drill all at the same time. Another option is to make a drill guide (jig) that is then clamped to each part in turn.
  • The tables on light-duty drillpresses will often flex down with drilling pressure, thus going out of square. For this reason, deep holes are best done on more rigid machines. If necessary on a light-duty drillpress, block the table up to reduce flex. Optionally, shim the work on the table to compensate for the expected flex for the drill pressure being used.
  • Tramming the table is also important on deep holes.
  • A poorly sharpened drill can drill oversized holes.
  • Accurately sized holes require reaming or boring.
The above is the received wisdom learned from various posters and topics on the Home Shop Machinist forum, as well as other places.

2017-01-06

Getting Started with a MonoPrice Select Mini 3D Printer

This post documents my entry into 3D printing via Linux. Obviously, I'm no expert. Rather, this is where I'm recording what I learn along the way. The intent is, more or less, just sharing my study notes. I needed a place to write things down... might as well share. Nothing original here, no great insights, just organising information in a way I find useful so I can find it again. That's all. If you find it useful then buy me a cup of coffee.

This is a living document... Still printing, and starting to figure out the Cura settings. Now experimenting with TPE-80A filament.

I decided to get into 3D printing with a MonoPrice Select Mini 3D Printer. Why? Because it's cheap, because it's getting rave reviews, and because there seems to already be a great community building up around it.

Background Info:

The Tools:

The slicer: Cura  This is the part that takes the model and converts it to printer-specific gcode.
  • Install under linux via custom PPA:
    sudo add-apt-repository ppa:thopiekar/cura
  • Update and then sudo apt-get install cura
  • Add custom printer to Cura with settings from Tyler Gibson's blog (above).
  • Add your material(s) with specifications.
  • Apparently, it's possible to import settings from a demo gcode file supplied with the printer. (never bothered). I've learned that it will only do this if the gcode was created by Cura and the versions are compatible.
  • Cura's interface is a bit odd and takes some figuring to get the profile info to stick. It also updates daily via the PPA, or so it seems so far. But, it seems to do well as a slicer.
The graphics gcode terminal: Pronterface.py from Printrun. This is used to set some parameters, upload gcode files to the SD card via USB, and can directly print a gcode file as well.
  • Linux prep:
    sudo apt-get install python python-serial python-wxgtk3.0 python-tk git-core python-pyglet python-psutil python-numpy
  • Use GIT to get the scripted app:
    git clone https://github.com/kliment/Printrun.git
  • Running via commandline: (seems to require admin privs)
    cd Printrun
    sudo ./pronterface.py
Inventor: The very expensive CAD to gcode option. (I can use it at work)
  • Adding a 3D printer model involves going into the 3D Print environment, Other printers, and making some change to any existing printer (like setting it to default). This creates an xml file under %appdata%\Autodesk\Inventor 2017\3DprinterDescriptions.xml. Manually edit that file, duplicating a line, and setting a random GUID and other values as appropriate.
  • Download and install Print Studio (a free Autodesk add-on)
  • Restart
  • At that point, using the 3D Print environment and from there running Print Studio gives various options under the media type (advanced tab).
  • Settings do not seem to be quite as fine as with Cura, but there are more options for editing supports.
Fusion 360: The free for hobby/student CAD to gcode option.
  • Starting to use this for a variety of reasons. I quite like it actually. It uses the same Print Studio that Inventor does, and I've still not figured it out. Still using Cura.
  • I am starting to really like Fusion 360. Even the Render environment is a lot of fun.

Things to do after unpacking the box:

  1. Update firmware (seems to be 2 halves). Mine is 24.42, newer than the blogs say.
  2. Enable and configure the WIFI settings. Not yet.
  3. Change PID setting for printhead temp regulation and, optionally, the table heater regulation. Used Printrun's pronterface to set them to values in Tyler Gibson's blog.
  4. Apply table covering of choice. (I've bought tape but it appears tablet screen glass protectors are now the rage). Mine came with tape, so I left it. Had to trim off the corners to get at the levelling screws.
  5. Level table and set print height. Uses the same 4 screws. Mine appears to be slightly crowned, so I set it for the middle. Note that using pronterface to move the table around is way easier than the printer menu and jog wheel.
  6. Lots of reports of loose screws and connectors, so a once-over may be in order. Didn't bother, feels nice, no odd noises.
  7. Set up the printer and filament in Cura, mostly as per Tyler Gibson's blog.
  8. Print the first demo (as specified in the manual) and adjust the print height accordingly. Didn't bother, went straight to printing a token I made in TinkerCAD, exported as an STL, sliced with Cura to gcode, then loaded the gcode into pronterface and told it to print. Came out well. Once it was finished, I raised the bed temperature to 70deg and popped the trinket off. Pictures in a bit.
So, all things considered, it works way easier and better than I had expected. It was, as intended a very easy first print, but still... 

I think I'm going to have a lot of fun with this.

Second Print

Feeling lucky, I decided to print a bigger file that I downloaded. A smartphone stand: (3.5 hr print)
  1. I uncompressed the ZIP.
  2. Loaded the STL into Cura.
  3. Rotated to print it on its side.
  4. Chose a "grid" fill for this print as it seemed more sensible.
  5. Cura said it was nearly a 3hr print. Good enough as a real test.
  6. Saved the gcode file.
  7. Loaded the gcode file into Pronterface.
  8. Connected the printer (in menu - printer was already connected via USB)
  9. Chose SD from the bar above the model pane.
  10. Chose to Upload (note the status bar at the bottom that shows progress).
  11. When done, I used the printer menu to print it.
  12. I disconnected Pronterface during the print. No untoward effect on the printer.
  13. The printer is not that noisy, though it gets annoying when everything else is quiet. I actually find it very difficult to sleep with, even in the next room. Just something about the non-regular whistling and lower tones mixing together... no more overnight printing for me.

More Prints

Going great. I'm still printing at what I've found is "medium" resolution, with a layer height of 0.175. No issues with adhesion at the start, and all the prints are turning out better than I had expected. Settings as follows:
  • Bed temp of 50deg to print, cranking up to 60deg to separate when done.
  • Layer height of 0.175
  • Wall thickness set to .8 (x2) for some prints. A bit thin but works. I'd say the finish is a little rougher though.
  • Speed is 50, with a wall speed of 25.
Starting to run out of the obvious test things to print so now it's a matter of getting into the editing side. Oh, and I created superfine to superrough profiles in Cura to match the layer thicknesses as suggested in the wiki, with other settings that seem to match (just guessing at this point). The 0.175 seems to be about middle. Haven't tried these alternative settings yet.

My Cura Settings

I'm not recommending these... I've no idea what I'm doing yet, but these are the settings I'm playing with at the moment and needed to write them down. This is as good a place as any. Note that the settings includes a page that makes these settings visible.

PLA-SuperFine:

  1. layer height = 0.0437
  2. initial layer height = 0.175
  3. line width (all) = 0.4
  4. Wall thickness = 0.4 (1 count)
  5. Top/bot thickness = 0.6
  6. Top/Bottom Pattern = Concentric
  7. Infill = 15%
  8. Pattern = defaulting to grid but may change depending on print
  9. Printing temp = 210 (pla)
  10. Printing temp initial layer = 215
  11. Build plate temp = 50
  12. Material diam = 1.75mm
  13. Material flow = 100%
  14. Enable retraction
  15. Print speed = 30mm/s
  16. Infill speed = 30mm/s
  17. Wall speed = 20mm/s
  18. Top/Bottom Speed = 15mm/s
  19. Travel speed = 100mm/s
  20. Initial Layer speed = 15mm/s
  21. Skirt/Brim Speed = 15mm/s
  22. Number of slow layers = 2
  23. Enable print cooling
  24. Support = default to off, model dependent
  25. Build plate adhesion = default to skirt, model dependent
  26. Skirt minimum length = 350mm
  27. Print sequence = all at once

PLA-Fine:

  1. layer height = 0.0875
  2. initial layer height = 0.2188
  3. line width (all) = 0.4
  4. Wall thickness = 0.8 (2 count)
  5. Top/bot thickness = 0.8
  6. Top/Bottom Pattern = Concentric
  7. Infill = 20%
  8. Pattern = defaulting to grid but may change depending on print
  9. Printing temp = 210 (pla)
  10. Printing temp initial layer = 215
  11. Build plate temp = 50
  12. Material diam = 1.75mm
  13. Material flow = 100%
  14. Enable retraction
  15. Print speed = 40mm/s
  16. Infill speed = 40mm/s
  17. Wall speed = 20mm/s
  18. Top/Bottom Speed = 20mm/s
  19. Travel speed = 120mm/s
  20. Initial Layer speed = 20mm/s
  21. Skirt/Brim Speed = 20mm/s
  22. Number of slow layers = 2
  23. Equalize filament flow
  24. Enable print cooling
  25. Support = default to off, model dependent
  26. Build plate adhesion = default to skirt, model dependent
  27. Skirt minimum length = 350mm
  28. Print sequence = all at once

PLA-Normal:

  1. layer height = 0.175
  2. initial layer height = 0.3
  3. line width (all) = 0.4
  4. Wall thickness = 1.2 (3 count)
  5. Top/bot thickness = 0.8
  6. Top/Bottom Pattern = Concentric
  7. Infill = 20%
  8. Pattern = defaulting to grid but may change depending on print
  9. Printing temp = 210 (pla)
  10. Printing temp initial layer = 215
  11. Build plate temp = 50
  12. Material diam = 1.75mm
  13. Material flow = 100%
  14. Enable retraction
  15. Print speed = 50mm/s
  16. Infill speed = 50mm/s
  17. Wall speed = 25mm/s
  18. Top/Bottom Speed = 25mm/s
  19. Travel speed = 120mm/s
  20. Initial Layer speed = 25mm/s
  21. Skirt/Brim Speed = 25mm/s
  22. Number of slow layers = 2
  23. Equalize filament flow
  24. Enable print cooling
  25. Support = default to off, model dependent
  26. Build plate adhesion = default to skirt, model dependent
  27. Skirt minimum length = 350mm
  28. Print sequence = all at once

PLA-Rough:

  1. layer height = 0.2625
  2. initial layer height = 0.3
  3. line width (all) = 0.4
  4. Wall thickness = 1.2 (3 count)
  5. Top/bot thickness = 0.8
  6. Top/Bottom Pattern = Concentric
  7. Infill = 20%
  8. Pattern = defaulting to grid but may change depending on print
  9. Printing temp = 210 (pla)
  10. Printing temp initial layer = 215
  11. Build plate temp = 50
  12. Material diam = 1.75mm
  13. Material flow = 100%
  14. Enable retraction
  15. Print speed = 60mm/s
  16. Infill speed = 60mm/s
  17. Wall speed = 40mm/s
  18. Top/Bottom Speed = 30mm/s
  19. Travel speed = 120mm/s
  20. Initial Layer speed = 30mm/s
  21. Skirt/Brim Speed = 30mm/s
  22. Number of slow layers = 2
  23. Equalize filament flow
  24. Enable print cooling
  25. Support = default to off, model dependent
  26. Build plate adhesion = default to skirt, model dependent
  27. Skirt minimum length = 350mm
  28. Print sequence = all at once

PLA-Super Rough:

  1. layer height = 0.3063
  2. initial layer height = 0.3063
  3. line width (all) = 0.4
  4. Wall thickness = 1.2 (3 count)
  5. Top/bot thickness = 0.8
  6. Top/Bottom Pattern = Concentric
  7. Infill = 15%
  8. Pattern = defaulting to grid but may change depending on print
  9. Printing temp = 210 (pla)
  10. Printing temp initial layer = 215
  11. Build plate temp = 50
  12. Material diam = 1.75mm
  13. Material flow = 100%
  14. Enable retraction
  15. Print speed = 75mm/s
  16. Infill speed = 75mm/s
  17. Wall speed = 37.5mm/s
  18. Top/Bottom Speed = 37.5mm/s
  19. Travel speed = 120mm/s
  20. Initial Layer speed = 37.5mm/s
  21. Skirt/Brim Speed = 37.5mm/s
  22. Number of slow layers = 2
  23. Equalize filament flow = off
  24. Enable print cooling
  25. Support = default to off, model dependent
  26. Build plate adhesion = default to skirt, model dependent
  27. Skirt minimum length = 350mm
  28. Print sequence = all at once

TPE-80A-Normal:

  1. layer height = 0.175
  2. initial layer height = 0.3
  3. line width (all) = 0.4
  4. Wall thickness = 1.2 (3 count)
  5. Top/bot thickness = 0.8
  6. Top/Bottom Pattern = Concentric
  7. Infill = 40%
  8. Pattern = defaulting to grid but may change depending on print
  9. Printing temp = 240
  10. Printing temp initial layer = 240
  11. Build plate temp = 0 (using double-sided tape on top of masking tape)
  12. Material diam = 1.75mm
  13. Material flow = 100%
  14. Enable retraction = No
  15. Print speed = 20mm/s
  16. Infill speed = 20mm/s
  17. Wall speed = 20mm/s
  18. Top/Bottom Speed = 20mm/s
  19. Travel speed = 60mm/s
  20. Initial Layer speed = 20mm/s
  21. Skirt/Brim Speed = 20mm/s
  22. Number of slow layers = 2
  23. Equalize filament flow = No
  24. Enable print cooling
  25. Support = default to off, model dependent
  26. Build plate adhesion = default to skirt, model dependent
  27. Skirt minimum length = 350mm
  28. Print sequence = all at once

More Printing

Had some failures, mostly with adhesion. I was printing a model downloaded from ThingiVerse, a Dremel nose finger guard, and part of it kept breaking free during the print. I first tried replacing the stock masking tape with some green painter's tape and that was worse. After much futzing around with using brims instead of skirts, adding supports, and sanding the tape, I managed to get a print that stuck. After that, I realised that the tape is way slipperier than regular masking tape. I replaced the tape and had better luck, though still not as good as the factory tape. I've got a couple of iPhone 5S tempered glass screen protectors on the way from China... which are supposed to be the solution to this problem. Time will tell.... (update) and, no. I had no luck with the glass and went back to regular masking tape, sanded a bit, and now with glue stick before each print. Seems to work well enough. I may try the glass with glue stick at some point, but I'll also see if I can find any of that fabled "blue painters tape" everyone keeps mentioning.

Another print, a whistle (another ThingiVerse download) also failed due to adhesion. This time it lifted up on one side from warping, but I let it print through. That was a mistake as... well... it's a whistle and compressing the tube you blow in kind of changes things. Live and learn. Anyway, after my initial success, I've now got a small but growing collection of failed prints. More successful ones as well... that ThingiVerse can be quite addictive and the printer has been working hard. The first roll of filament is noticeably down so I've ordered 2 more PLA. I think I'll avoid ABS until it's warm enough to put the printer outside while printing.

Note that I'm uploading designs and prints on PinShape. No point duplicating the pictures here.

Filaments

I've ordered a 12-roll variety pack from Filament.ca as well as some TPE-80A and Nylon-645. At this point, I've spent more on filament than the printer, which I consider to be a good thing. I'll be working through the various types, seeing how they do, over the next while.

TPE-80A Filament

I've been experimenting with this soft filament, somewhat rubber-like though it's not. I'd say if feels like it would make good drive belt material. That kind of strength and texture. Actually, I'd say the filament would be a very useful addition to the toolkit, but it is quite difficult to print with. First off, it is too soft to easily feed down the Bowden tube, instead going out sideways at the feed mechanism. Thus, I had to make a part to fill in the spaces so it couldn't escape. That part is here: MSM MK-IV Space Eraser, on PinShape. Solving that problem, the next issue is that it appears to shrink so much after printing that getting it to stay stuck to the bed is near impossible. After a few failed attempts, I decided to use double-sided carpet tape on top of masking tape (to protect the bed). It stuck quite well to the carpet tape but I still had issues with the carpet tape separating from the masking tape. Yeah, it pulls that hard. The next issue appears to be that it slips when trying to feed directly from the spool, and that causes missing lines in the print. The solution to that will be some kind of ball-bearing roller for the spool. Yes, a lot of hassle, but if I can figure out this filament, the rest should be easy.

Some Pictures

Some downloaded models from Thingiverse and PinShape:

The surprisingly hard thing to print:


And, some stuff I drew in Inventor and uploaded to PinShape
Tomy Plarail track bits...




Current Stats:

Nearly 1KG of PLA printed, with about 17% of that as waste. Yeah, I've been keeping all my failures, and supports, in a bag so I can weight it. Just curious.

2016-12-19

Notes on Using Epoxy Primer

Never used this stuff, but the information is worth filing away for when the day comes.

Note that epoxy primer seems to be a great way to prevent rust on bare metal, something regular primer does not do (and I can confirm that).


Mostly an original quote, but with a little reformatting to make it easier to read.

From: Radkins from the Home Shop Machinist forum, here.

Epoxy primer is great stuff and the first thing I do to any body panel or repair is to spray it with epoxy primer, the stuff is expensive but it can't be beat for corrosion protection!

A couple of tips for using this type of primer:

  1. It needs a rather rough surface to adhere properly. I scuff the bare metal with 180 grit paper and then apply two coats allowing it to become dry to touch before applying the second coat. If a finish is not applied within a day or so, this varies with brands, it will need to be scuffed with sandpaper and another coat applied before any topcoating is applied including conventional primers.
  2. If left for any length of time then it should be topcoated with another primer such as lacquer or one of the polyester filler primers. No scuffing needed if coated within a couple of hours. If left for weeks, never mind years, it becomes EXTREMELY hard making it very difficult to sand and causes difficulty in getting topcoats to adhere. If something like even simple lacquer primer is applied around two hours after the original application it will adhere quite well and is then easily prepped for painting even after being left for long periods of time, old uncoated epoxy primer however is a absolute nightmare to properly prep for finish painting!


Oh, and he follows up with this:  (something else I learned today).

NO, DO NOT SANDBLAST BODY SHEETMETAL!!!!! A sandblaster will warp most sheetmetal body parts beyond any hope of repair! I don't mean "Aw s#!* now I am going to have to fix that", I mean toss it in the scrap and buy new parts kind of ruined. Some parts that are stiff and well supported like door posts and some firewalls may be blasted ok but fenders, hoods, trunk lids, etc will be instantly distorted way beyond any repair. Those sand particles act like millions of tiny peening hammers and will distort the surface of the metal due to the uneven stretching (and no, heat has absolutely nothing to do with it despite the common misconception so keeping the parts cool is futile!). While it can and has been done successfully the blast operator has to REALLY know his stuff and even then it's highly risky.

2016-11-24

Turning a Radius



A neat way to mill a radius on something with a through hole.  Just put a pin in the hole, rest the pin on the top of the vice jaw, and then rotate, clamp, and cut repeatedly.

2016-09-09

Enduro Computer Project


WAIT!  Before you start reading and get disappointed, this is my research blog.  At this point, there is no enduro computer, it's not finished.  If fact, I'm still roughing out the design.  It may never get finished.  And, it's low priority for me.  I'm starting this now because I'm having to work through some technical issues and maybe somebody else might find my notes useful.  That's all.

Current status: Pre-Alpha, just planning at this point.

The plan: To set up a 2.4" TFT LCD display shield on an Arduino Uno with a Hall Effect sensor and some code and mount it on the handlebar of my Dirtbike for enduro racing.  Total cost should be in the $20 range (and that's probably overestimating).

So, I picked up a 2.4" TFT-LCD touch-screen from Ebay.  Absurdly cheap, in the $5 range.  It's an Arduino shield for an Uno, and it leaves enough pins for me to run a hall effect sensor, which I'll just salvage from a bicycle speedo (another stupid-cheap Ebay purchase).

Problem 1: Drivers for the TFT-LCD.  It appears there are a great many variants of these shields available, and very few come with any kind of documentation or libraries.  Most happen to have "www.mcufriend.com" printed on the PCB, so that means very little.  That website is in Chinese.

Most of the available drivers I tried for this just left a white screen, though the serial output seemed to work.  I did find one, SWTFT, that mostly works.  I can run the tftpaint example, except there is a white bar down the side.  Running the graphicstest example show that it is trying to write under that white bar, and it is trying to write with a backwards font.

Solution 1: The key is to identify which control chip you have and then get matching drivers.  Identify your chip with a utility found here.  Open the Serial Monitor in the Arduino IDE to see the information.

Solution 1a: My TFT-LCD shield uses the '4535' chip.  I found libraries for it at:  Cee'z Blog.  If you use his libraries then buy him a cup of Coffee, I did.  It's worth it.  Everything worked great with Cee'z libraries and example sketches, except the touchscreen was backwards.  No problem though... just run his example calibration sketch and copy the resulting numbers into the config section of the sketch you want to run.  Yes, the "min's" end up being bigger than the "max's" but everything's good after that.

The 'calculator' utility makes for a great example to work from.  Next thing is to figure out how I want the main display to look, and maybe a few sub-displays.

Problem 2:  Using the shield on an Arduino Uno seems to use all the pins.  I've read that A2 is not used, but my shield has a label for that pin (LCD_RS) and not using that pin (bending it out of the way... hey, it's a $5 shield) leaves a white screen.  The Ebay seller states that "you can use digital pins 2, 3 and analog 4 and 5. Pin 12 is available if not using the micro." Some of those pins are labelled. It will not work with D2 and D3 bent out of contact, so the seller's information is not correct either.

Solution 2: The D0/D1 (RX/TX) pins are not labelled on the shield, bending them out of the way left the display still working fine, along with the touch screen, but I've not yet determined if they're needed for the SDcard.  A5 (not labelled) does not seem to be used either.  A4 is labelled as the LCD_RST (reset?) and while it will work bent out of the way, I'm not sure if the library is writing to it or not.  Of course, switching to a MEGA, instead of an Uno, gives a lot of useful pins... but also left a white screen.

Solution 2a:  Using the MEGA is actually fairly simple.  Just edit LGDP4535.cpp (in Cee'z library), commenting out the Uno line and uncommenting the MEGA line.  '//' means this is a comment.
This says to use a MEGA instead:
#include "mega_24_shield.h"
//#include "uno_24_shield.h"
Don't forget to switch back if you want to use an Uno.

Background:  Enduros, for those that don't know, are races where the object is to travel at a set average speed rather than as fast as you can.  The trick to winning them is, however, not just riding at that speed but rather as fast as you can at the start of a section, then guessing how far to the next check, and then calculating what time it should be when you get there.  Parts of the section are typically very difficult to maintain the correct speed while other parts are easy.  Thus, there is a lot of guesswork involved, and math at the same time.  It's pretty easy to figure out how far you should have gone in 15 minutes if the speed is 20km/h:  20km/h * 1/4h = 5km.  Figuring that out for a speed of 17km/h over 10 minutes: 17km * 1/6h... not so easy when you're crashing through the bush and scrabbling over rocks and roots at speed.  Yeah, people actually pay to do that.  Crazy people anyway.  Even crazier ones pay big money for a handlebar mounted computer to do the math for them.  Then, there's cheap and crazy people like me that set out to build their own.

The Interface:  There are a lot of different ways to present the needed information but what I think I want for the main display is simply +/-Minutes, as big as I can make them.  Negative minutes means I'm ahead of where I should be and have some slack.  Positive minutes means I need to run WFO and catch up.  It will have 2 on-screen buttons:  Error and Check.  'Error' means I've missed a turn, happens a lot in enduros, and need to subtract some distance while I get back to the marked trail.  'Check' marks the clock, displays my results, resets the minutes without resetting the seconds, and lets me set the speed for the next section.

More later...

2016-07-17

Turning the End of a Big Bar

Say you need to turn the end of a bar that is too big to go through the lathe headstock and too long to fit between centers (or the center-rest if you have one)...

Here are some answers:

Arcane suggests:  If you have a milling vise setup that attaches to the cross slide for your lathe and a boring head with a MT3 taper, clamp the shaft in the vise, center it on the spindle and then use the boring head to reduce the end.

Dan suggests:  There was someone who did an interesting trick. They welded a smaller piece to the end and chucked it up. Supported the far end in a steady rest. Then they turned down the original bar and parted it. Rotate and repeat.

Better yet, just start with stock longer than required an part off the chucked bit.

My idea, specific to my 3in1 machine:
Using something of suitable height, like the angle table (level, just for the height), make a vertical clamp that hangs outboard the lathe.  Swing the head over to match and lock down, then use the X/Y to center.  Once centered, use the boring head as above, with the cutter pointing inward.  This would give me about 4' of length, and it would be easier to set up than removing the tailstock to use the lathe spindle.