Tuesday, January 7, 2014

Lilliputian Micro Robot

Lil·li·pu·tian
n.
A very small person or being.
adj.
1. Very small; diminutive.
2. Trivial; petty.

Updated 01/02/2014 - Added in progress pics at bottom

Lilliputian - seems like a pretty good description of this little fellow. Trivial, petty, diminutive, very small, etc. With all due respect to Swift’s Gulliver’s Travels of course. Inspired by Yahmez MicRObot challenge, this is my 2.0 attempt. The first attempt is still there and maybe viable for a future finish but I like this 2.0 layout much better. I just packed in as much as I could WITHOUT resorting to surface mount devices (SMD) which I have no skills with.

 
Size Matters

 
At least in the challenge so first I guess I should outline the current size of Lilliputian. Currently the bot is about 35mm wide by 50mm long (not including the bumper horns) and 35mm tall. Total weight is 34 grams (1.2 oz). Not tiny by any means or as compared to some other entries I guess but small for me. I gave up some size for features which was the plan from the beginning.

 

Chassis and Motors

 
Lilliputian features a 3D printed base chassis of my own simple design to mount the two GM15 micro motors. To keep things narrow I offset the motors and wheels giving it a bit of a goofy stance but making it much narrower than traditional back to back mounting. That is where some 90 degree gear motors such as those recently sourced by Yahmez would be quite handy. For wheels, I used a couple old mouse wheels that I had kept. It took a bit of work to clean out the middle to allow mounting and they are definitely crooked and poorly mounted but they have stayed on so far.

 
For speed control a L293D chip was used and was soldered up “dead bug” style. Without an inverter it does eat up six output pins to control the two motors but I figured I had plenty of pins in this situation. Two pins are used to control motor direction for each side and a pin is then used to drive PWM for each side.

 
However, the GM15 motors are really geared a LOT higher than I thought there were and the tall mouse wheels really push the speed of the bot beyond usable levels. The balance between enough PWM to move and too much while cruising is a challenge. Some better coding would be helpful as Yahmez suggested to maybe ramp up the power to get rolling and then settling it down for cruising speed. Something to work on later I guess.

 
I designed the chassis to use basic Pololu QTR encoders with striped disk on the wheels. I’ve done this before with larger sensors but not this small. I thought the Pololu QTR-RC sensors would work as they are small and since I didn’t read the datasheet like a fool I put the thing together and could not get output from the sensor. More reading revealed that you need to use the library to read the sensor as what makes them digital is the small cap that must be charged and then read using the same I/O pin. That will NOT work with driving an interrupt pin for encoder reading. I even tried making my own timer interrupt routine to go read the sensors but could not get any consistent output. Since then I have purchased the QTR-A sensors which are pure analog but have not tested if they can transition enough to drive a digital interrupt pin. Plus the fact that the wheels are glued to the output shafts and the wiring is on the opposite side there is no clean way to replace the existing encoders so that part of the bot is on hold.

 
Power

 
Powerwise a 3.7v lipo with onboard electronics for under / over voltage protection was mounted on the bottom side. It’s easy to get to and replace in case it bloats from overcharging and tucked up underneath quite nicely. However, everything on the bot is 5v so I used a Pololu step up / down regulator to turn the 3.xV into 5V. I believe the current limits are 500ma but it appears to be fine for my needs. Pretty sure I could not have run a ping sensor along with everything off that current but this thing is too small for such a sensor anyhow. I couldn’t find a switch that was small enough in my junk pile so I just used a three pin header for power and changing needs. I use a header jumper to power it up and a three pin connector for the charger. I used a wall wart charger that came with a little quad rotor and it appears to have some current limiting in it as well and has charged the battery without issues. The battery is a 240mah LiPo version but driving the speaker appears to really eat up power so run time is not impressive. Fun, just not impressive.

 
Brain Power

 
Originally I really thought I would go with one or more ATiny85 CPUs for this build but seeing the ability to mount up a ProMini 328 I changed direction as it is still my favorite Arduino CPU to use since it’s so small with full 328 capabilities and memory all in a 24 pin DIP. Instead of building a undershield or perfboard this time, I simply glued the CPU to another little mount I designed and printed that also mounted the wheel encoders (that do not work as noted above). I then soldered wires directly to the CPU instead of using header pins. Messy but seems best at this scale for me.

 
Sensors and Stuff

 

IR Receiver
I added an IR receiver to allow controlling the bot and his “modes” with a standard remote control. Each mode can be selected from the remote including RC control, autonomous mode, and some special entertainment type of functions. The IR sensor mounted on top of the AtMega chip on the ProMini quite nicely in my opinion. For now I’ve used an existing remote from a Toshiba stand alone DVD burner I had in the workspace but any remote could be used as it is quite easy to add IR control to a bot. I used to think that would be a challenge but with the IR library it’s very simple.

 
The remote is primarily used to change the “modes” of the robot from roam, light seek/avoid, light track/hide, “wag”, bark/attack, line follow, etc. It can also be used to drive the robot around with the arrow and navi buttons if desired.

 
IR Transmitter
Since I could not get the encoders to work, that freed up pin 3 that is used for the IR transmitter library so I stuck an IR emitter on the right rear of the bot. Thoughts are he can eventually communicate with SBot or something like that. Nothing is coded yet but maybe later.

 
LDR Light Sensors
Sensors are rather simple with two LDR’s for light measurements. Good news is the LDRs work well. Lilliputian can sit still and track light, turn away from light, and follow or run away from light. He also makes little bleepy sounds when he’s not happy with the light balance as he sees it. Bad news is my light follow code isn’t overly developed so he can get confused and start spinning in place rather easily.

 
QTR-RC Line Sensors
The line sensors do seem to work well using the Pololu library and can easily detect light, dark, and edges. BUT doing so in a fast enough manner to get a timely response from the platform has been a bit of a challenge so far. Additionally my chassis design leaves some to be desired as the offset wheels make it quite easy for the bot to do a “wheelie” when taking off which confuses the front mounted line sensors into thinking it has seen an edge so it stops, backs up, takes off and repeats the loop. Not good. I ended up mounting a small piece of Lego jewel in the back corner to stop the wheelies helping the edge detectors to function.

 
Bump Sensors 
Without sonar Lilliputian is pretty blind so I added a small bump switch up front. I can’t remember where these little switches were scavenged from but they are pretty handy little things that take very little pressure to turn on making them good sensors for a small bot. I think they were out of some old tape backup drives or something. Without whiskers they are pretty limited but does give some sensing to back off, turn and continue on at least.

 
Light and Sound
I always like my bots to make a bit of light and noise since I’m easily bored so a piezo speaker was salvaged from an old PC motherboard as recommended in the shoutbox and mounted on the rear. A cycling multi-color LED was mounted up front that adds a LOT of colorful light, in fact a bit too much so I added code to turn it on/off via the remote control. With the little speaker Lilliputian can play a few songs and act out or dance a bit.

 
Feature Set

 
Lilliputian currently has the following modes and features:

 
Roam mode 
Not overly useful but wanders around bouncing off things, avoids black lines if the line/edge avoid flag is set. Line/edge can be turned on/off with the remote as needed.

 
Light Track mode
In light track mode Lilliputian sits still and turns toward the brightest light source he can see at the time. If it’s too bright or you get too close to him with a flashlight he will back away from the bright light making a little noise. Again, in this mode he doesn’t drive anywhere forward for light, just sits there.

 
Light Hide mode
Just the normal inverted light seek mode but again sitting still and turn away from any light source until he is happily balanced. This really doesn’t mean find the darkest point, just turn away from any brighter light source.

 
Light Seek mode 
In light seek mode, Lilliputian follow the brightest light using the front LDRs for balancing. This works best when pointing a flashlight at the front allowing light control of Lilliputian. He will follow the brightest source he sees and once things are bright enough he will stop. If you make things too bright he will back away from the light.

 
Light Avoid mode
Again standard light avoidance routines, run away from the light. In this mode if he finds a dark enough situation he will stop as well and wait for any light changes.

 
Race mode
Just a silly little setup where he counts down with blips and takes off at full speed for a second or two. Just like in real racing, sometimes he crashes trying to go too fast. Once done he sings a little tune and spins in place having enjoyed the thrill.

 
Wag mode
Another silly one borrowed from SBot. Just wags back and forth for you.

 
Bark / Attack mode
Another silly little routine from SBot where he drives forward, makes a barking/noise sound and retreats.

 
Line Following mode
Lilliputian is really not well versed in line following yet. He can “usually” follow the line but with the high speed, bad code, and having to check for IR inputs, etc he can easily miss the line and take off running away. Even when following the line he is pretty jerky bouncing around trying to stay on course. But he can make it around a normal line sometimes.

 
HokeyPokey mode

 
Apparently he learned this routine from my TED robot I guess. One of the most important routines he plays the song and does the moves the best he can. Seems like he is having fun at least.

 
 
Future Feature Set

 
Maze solving - Really want to have it run the maze, store path, and re-run it… someday

Things that Didn’t Work
Wheel Encoders
Obviously the wheel encoder setup didn’t work as mentioned above. This may be resolved
through a different encoder but that will have to be for another bot someday.

 
Onboard Compass
Originally I really wanted to drop a small HMC5883L compass module I had on the bot. I tested the module on the bench and it worked pretty well. however, mounting it up on Lilliputian proved to kill the usefulness of it as mounted down by the CPU the compass does not work apparently from the RF interference of the CPU or maybe the magnets of the motors underneath it. I have built a small stand off to allow the compass to work but not really crazy about how it looks so not included here.

 
Closing Summary

 
So big plans scaled down for the most part. Original goal was wheel encoders, dead reckoning navigation, compass directional controls, Light sensors, line following, maze solving, IR controller, little monster. Reality is a neat little platform but not all the bells and whistles I originally had desired.

Oh well, one can’t hope for too much out of a Lilliputian unless there are a lot of them right?

No, I’m not building a lot of these things - too small for my patience :-)



Update 01/02/2014 - Added some early Pics

Per Lumi's request, here are a few early on pics. Unfortuately I didn't take many in process pics like I should have.

Raw printed chassis that I designed. Very simply base platform and two tubes to hold the motors.


Chassis loaded up with the GM15 motors and mouse wheels/tires.


Mounting the CPU up top. You can't see the mount which is just a tube with a flat piece on top to mount CPU.


Top view before CPU mount. The step up regulator on the left, H-bridge dead but up front.
Initially I was going to try using an LED and a couple LDRs for line follow. Bought sensor instead.


This is the best view I have of the "guts". Before line sensor install but you can see the wheel encoder attempt.
Pretty packed in but generally functional. I still think the right encoders would work.
Wouldn't be high resolution but could be useful.

Thanks for all the comments and encouragement all!

Monday, November 4, 2013

We Have Print

We Have Print

 
After the little delay in getting filament, it finally arrived from the new vendor. In the mean time I had almost forgotten that I need something to hold the spool so I scrounged around in the garage and found a bunch of leftover PVC T’s from my compressed air piping runs in the garage but had no PVC pipe left over. So I started looking around and found a sacrificial  broom whose handle fit nice and snugly into the PVC T’s A few 4.5” cuts later (btw, broom handles are much easier to cut that M8 rod :-/ ) I had a stand that should handle both the larger and smaller rolls of PLA.

 
Final Checks and Test

 
Before printing I went through the final checks again; bed level check, re-home everything, reviewed the whole printer and loaded up the PLA. the first thing was to finally check out the extruder and make sure it will work. I used the Pronterface default 185C setting, although recommendations from LMR experts would lower that later. Clicking on the Extrude button in the lower right of Pronterface pushes out the plastic. One thing I had read was to measure the amount extruded against the set amount in Pronterface which was 5cm. Sounds easy but on each extrude the output curls back up on itself making it hard to get a good idea. I finally pulled the curled up piece off and straightened it out to measure. It’s a little over 5cm but maybe I’m stretching it pulling it off?

 
Test Print #1

 
With all apparently in place, I figured I’d try the nickel test part to start with. It’s small, flat and provides some idea if you are on scale or not. First print, first fail. It tried to print but the very first failure was having the 1.75mm filament jump out of the hobbed bolt channel and run it’s way off the facing bearing. Nice. Not bad though. So I think maybe it’s a fluke and load everything back up and try again. Nope. Not only did the filament move off the bolt BUT the bed nuts that I thought lock washers would hold spin lose and the bed is too tight creating more issues.

 
So back to bed leveling and looking for a guide solution for the filament. The bed nut issue was simple, do what everyone tells you to do and put a dab of nail polish on each nut/thread when you’re level. Did that and done. The other issue wasn’t quite so simple. How to keep the 1.75 in the channel. I figured there were a few possible reasons; 1) I didn’t get the clamp bolts tight enough, 2) I didn’t tighten them evenly so it walks out one side, or 3) the hobbed bolt is really for 3mm and it’s just not a sharp enough cut to hold it in the center. So just to make sure and get a clean print, I retightened the bolts trying to get them even but the bolt issue was so easy. To test a guide I cut up a small piece of aluminum, slotted it and servo taped it to the extruder.

 
Ran another test print and it worked! You can see that item #3 looks pretty good for a 3rd print try. Testing the nickel fitting the slot didn’t go so well though. About .381mm off or .02% is what we calculated. Instead of making major changes I thought I’d try a cube of box to check outside dimensions so I printed a 2x2x1cm box. Outside dimensions were slightly LARGE so 

I’m not sure if I have a scale issue. Jinx, ossipee and hoff agreed that maybe there is too much filament being extruded so it’s making everything slightly fat. The default setting was 300mm/min so I backed it down to 275 for future tests.

 

In the mean time I wanted to print a few “fun” parts just because, those that didn’t have minute scaling needs so I loaded up the most impressive part to me, the beer can handle! Cool, nice, big print to test too. Load / Print / Fail - Extruder jam. Ok, better try a smaller part and get this extruder thing resolved. I went back and thought I’d really tightened it down, maybe it’s still just walking out because it’s not tight enough. So I tightened it, and tightened it and finally squashed the filament so it wouldn’t feed either direction. Not the solution.

 
Think Smarter

 
So the filament is drifting off / out of the bolt groove, maybe a better inbound alignment. I’m sure there is something else going on here as even when I was assembling the extruder I wasn’t really happy with the loose feel of the whole thing. But since I can’t fix that right now, how about a better feed guide? I found one online that snaps on top of the extruder but it didn’t really go down any deeper than my existing aluminum one. Think Protowrxs, think… Ouch, that hurt.

 
Digging around in the garage again I started thinking I need a small tube that can go deep enough into the extruder right down to the hobbed bolt to keep the walking to a minimum. Small tubes were abundant but none had any good mounting options. Then it hit me to try a
small pop rivet housing. I found one the right length and the filament fit in there just perfect. Wow, dumb luck. I knocked the riveting piece out and make a new more stable guide top, pressed the rivet into the hole and found a small nylon nut that I slightly drilled out to press fit on the bottom side to hold the rivet in.

 
It Works

 
So back to the big beer handle print, why not. Loaded it all back up, test extrusions, re-home, cross fingers and print. This time I watched it, and watched it, and watched it keeping an eye on the feed the best I could. By now it was getting late and after about half way through it was still working so off to bed and leave it be.

 
Results

 
The next morning low and behold a handy dandy beer can handle was done and a pretty clean print as you can see here. There are three locations where there is extra filament dangling around. They are consistent all through the layers so I’ll have to start researching what can cause that. The handle is slightly smaller than the stl measurements so I DO some scaling issues to fine tune.  Overall I have to say I am very happy with the output so far. I know it’s only day two of printing but I was pretty concerned it would be weeks before getting this working. Partly dumb luck, partly good assembly, but mostly good help from the LMR printer experts willing to share and assist a newbie.

 
Fine Tuning

 
So it was printing but as I noted it was still not perfect scale. The nickel doesn’t fit through the hole and the big beer can holder I made worked but was super tight to get it on a can. Obviously things are slightly too small. How to fix? Ossipee explained the process to me and I had already looked at the steps per mm settings in the configuration.h file in Marlin, but I still wasn’t exactly sure which direction to make the change, although it is obvious now. Instead I found another calibration site similar to the one that Birdmun had provided me a link to. What I liked about this one located here:http://mendelmax.com/RepRapCalculator.html, is that you just plug in the disired size, what you measured on your output, what your current configuration is and it calculates you a new number to plug in. So I plugged in my settings and measurements, obtained the value and updated the firmware. Much better.

 
Go Big

 
As ossipee recommended from the beginning, it may look fine at small scale but the real test is to “go big”... and fail likely in my case but none the less that is needed to get it right. So the next step from to reprint something bigger to see if the scale works and then re-adjust as needed. So needing a correct size beer can holder I re-printed it using the new scaling. Results were I ended up with too much scale at that level so re-calculated with the big scale measurements and re-print again. Pretty much the process. Of course you don’t have to print the whole thing, let it lay down enough layers that you can measure and stop the print, pull it and re-check / re-tune.

 
Experience

 
So beside some more really fine tuning the printer is working. It wasn’t too hard overall. I liked the mix of hardware of building the printer, especially since I’m a mechanical bicycle/goKart/motorcycle/car kind of guy at heart. I also like the electronics/software side of things and learning the basics of how it works, maybe because I’m an IT/coder/manager professional.

 
Other Resources:

 

Thursday, October 31, 2013

Waiting for Plastic

Waiting for Plastic

So the last update covered getting all the mechanical pieces assembled including the stepper motors, belts, pulleys, etc required to move the three different axis in order to create a 3d object. The next logical step is installing the control system that takes the control codes and drives the printer.

Ramps, Marlin, Slic3r, and Pronterface

Sure, veteran 3d printer builders know immediately what those are and likely how to use them. Me, not so much. What is a Ramps v1.4? Marlin sounds like a fish, Slic3r lethal and Pronterface like a personal problem. One thing I DID know was that somewhere in all that an Arduino micro-controller was going to be involved and I have learned a lot about them over the past year or so. I had already done some research and asked many questions at LetsMakeRobots.com (Never really thought of a 3D Printer as a "robot" but it IS physical computing as it was point out!) and was guided to use Ramps for the stepper, hot end, etc controller board (this mounts on top of the Arduino Mega that is used at the micro-controller), Marlin for the firmware that runs on the Arduino to do the actual work of controlling things, Pronterface for the printer interface, and Slic3r for the "slicing" part.

That's pretty much the overview of how it all works. You download the firmware or your choice, review and and tweak a few settings to match your particular type of controller and printer, install that on the Arduino Mega. Then you can use Pronterface to control the printer. Pronterface lets you control the printer but also pushes the "G-Code" to the Mega to process for the print job. But before you that, you have to use something to take your 3D model, most of which are in a .STL file format, to "slice" out each layer you are going to print. Once sliced up, the G-Code file is created that the firmware reads and then controls the printer. G-Code is a common 3D system code set used in CNC equipment, etc. Something else learned along the way. You can learn more about G-Code here: http://reprap.org/wiki/G-code

Really the best online source I found for a Prusa I2 build is here: http://www.nextdayreprap.co.uk/prusa-mendel-build-manual/. This will NOT be exactly like your printer or build but should be very close for an I2 setup. The software area will need to be adjusted for your selection / use as well. Software wise there are some prerequisites such as Python, Py-Serial, PYreadline, etc that may or may not be required. I just followed the directions and links from the site and it worked out. I did install Skeinforge along the way as in the instructions but have used Slic3r as it seems easier to use to me. No need to repeat all that here as the link is quite good.

Read the Details

One mistake I made, and one of the reasons I am "Waiting for Plastic" is that I ordered my JHead thinking it was a 3mm OR 1.75mm by removing the inner liner for 3mm. Everyone said 3mm would be easiest to start with and is more common so I thought fine, I'll just start with 3mm and ordered some black PLA to be ready. JHead arrived, I reviewed how to remove the liner and realized that wasn't the case. I then looked back at my purchase and the site clearly says "if you want 3mm tell them and they will drill it out for you", or you can drill it out yourself. Well knowing my drilling skills I was NOT going to try to drill a hole through the liner and cap so after more input from the LMR experts I decided to just go with 1.75mm. It's supposed to be better in the long run anyhow. No problem, 1.75mm ordered, went ahead and picked a couple different colors so should be here by print ready time. Well that's part of the story.

It's Alive!

Commissioning is always that weird exciting, scary, anxious, ready to make it happen experience. Similar to the first firing up of that hot rod engine you just spent a few grand putting together and hoping it doesn't all blow up, or in this case turn to blue smoke. Mine went really unceremoniously as the Mega took the first load of the Marlin firmware without issues. I did follow the Commissioning steps for the most part on the site above and only had to tweak a few configuration variables. Thanks for jinx, hoff, ossipee, birdmun and others online they cleared the path to understanding what I was actually doing. Without the Hot End hooked up I could get all the motors to move except the extruder which will not be allowed to work unless to hot end is up to temp. Since I do have GT2 belts and pulleys the default settings work but I did have to change the z axis from the Marlin defaults to get properly  Z height values.

Buzzy Steppers - No Move

The biggest issue was initially the steppers could step if I used the .1 or 1mm movements but at 10 or 100 they just sat there and buzzed. Troubled by the fact I didn't really find anything online that suggested any solution besides adjusting the current settings on the stepper controller boards which did not help I was stumped a bit. I finally found a bit of info online that was also suggested by jinx in regard to the jumpers UNDER the stepper boards. Unless the jumpers are all on, the board is not setup to microstep, a requirement for printing properly. I can't quite understand why the Sainsmart electronics kit I bought for a printer did not have any jumpers with it but I savaged enough  from some cheap PIR sensors I have to install them for the main steppers and viola it worked. Thanks to jinx for saving me on that one.

Continued Commission

Once I could see I could move the motors I moved on to getting all the end stops installed and working. My electronics kit included some fancy endstop switch boards. To me these ended up being a waste as they are quite limited on how you can mount them making it a little difficult to find the best mounting locations. I could not scrounge up enough normal micro switches or I would have just replaced them. Once installed jinx helped me with the M119 command to check if they are on/off, I immediately found I had wired them up backwards (although I wired them as noted on the Sainsmart website) as normally closed when they should be normally open. Since they were enabled it wouldn't let me move any motors. At least I knew they could work. A quick swap out of the connections yielded the correct status.

Bed Leveling

An important process for the whole thing is getting your bed level, especially as compared to the print head axis. By now I felt pretty confident that the printer was square and everything was as level as I could get it. So now I needed to mount the heated bed (heat not wired yet, just printing PLA for a while so no heat needed) and glass and get it leveled out more precisely. Originally I was going to get some springs for the bed from the hardware store but rummaging around in my Dads old parts bins that I've had forever turned up some pretty usable springs. They are bee-hive type springs and were the perfect height for the screws I had for the bed mount. Also with the smaller top area the screw fits in perfectly keeping it centered. At first I had tried to run the screws from the bottom up so I could adjust the nuts on the top of the bed. Mistake! For one I didn't drill the holes close enough for it to work if I locked the screws in the bottom plate. I should have done like hoff says and used the bed as the template, drill one, screw it together and drill the rest. The other reason having the screws coming up from the bottom is it's just messy. Must easier to simply press down on the bed/spring a bit and move the nut. And yet another reason is you have longer screws poking up around that sub millimeter sized hot end outlet. No need to risk damage more. Once the printer is working I will likely print some of these or similar to make using the nuts even easier: http://www.thingiverse.com/thing:152043


Printing Air

So with the endstops setup, basic bed leveling done, and the software figured out I thought I could do a test print but without plastic. Here you'll see no extruder activity since the hot end is not fired up but it really seems to be moving ok and rough measurements show it's not completely off base. I also ran some test with the hot end fired up and the extruder moves the right directions as needed.

Now if I just had some filament.

Waiting for Plastic

So I'm still waiting for plastic. Wait, I said I already ordered some right? Yes I did, but one week later I checked the vendor website for status and the order still says "Pending"... Nooooo! I did send a contact email asking what was up but no answer a day later so I jumped back online, found a vendor close to home again and bought another color. In this case within a couple hours the vendor sent a shipped status and a couple hours later the tracking said it was already processed and sorted at the sending PO.

So hopefully waiting for plastic will not be a long term status.





Wednesday, October 23, 2013

3D Printer - Progress

Assembly Continues

My hardware kit was supposed to have the needed metric cap screws, washers, nuts, etc for a Prusa I2 build but since there are many different iterations of the I2 it really wasn't complete. I found a couple additional kits of 25 pieces of M3 screws and picked up some different 10mm, 15mm, and 25mm lengths to have during the process. With the needed screws on hand I could try to move froward with more assemble.

JerZ to the Rescue

Although my parts kit came with some lower Z stabilizers, it did NOT come with the plastic caps required to use them. The kit had two caps that are used on the top of the Z smooth rod but nothing for the bottom. After discussion in the LMR forum, it was advised to NOT use the stabilizer bearings and instead let the threaded Z rods dangle in the air allow some end movement. The point is that if you lock the ends down and the threaded rod isn't perfect, you will get X Axis movement that will create print errors.

For me, I really liked the method that the Z smooth rod end mounted down low making it much more likely to keep the rods parallel so JerZ offered to print up a couple end caps that were missing and mailed them to me. The worked great and it was much appreciated! This removed the extra wide lower center threaded rod and cross bar clamps and the need to make a lot of adjustments to keep the Z rods parallel. That's what I think anyhow.

Step Step Step - Steppers

The stepper motors move the print bed forward and backwards, the head carriage left and right and the whole head assemble up and down. X/Y/Z - three planes and you have 3D. The recommended steppers for many printers are "NEMA17" units but of course I found out quickly there are many variations of them online. Different voltages, holding torque, some with D-shafts, others without, and on and on. Once again to keep it simple I searched specifically for 3D printer ads to try to at least narrow the choices down some. I also have some good input from birdmun in regard to selecting steppers with connectors at the motor.. which you can see in the pics I did NOT follow and may ultimately wish I had. His point is if you have socketed steppers you can more easily swap one out if you have an issue or dead motor. Very true, guess I'll be cutting/splicing wires if something happens.

After looking/poking/questioning around I locked down on a set found on ebay that are NEMA17, 76 oz-in holding torque, 4.2v, have the D Shaft, and are 1.8 degrees per step which I believe is the correct specs for what I'm doing. The actual part number is KL17H248-15-4A. They do NOT have sockets at the motor but they do have nice 750mm leads on them making it much easier to route the wiring back to the electronics.

"Some Clearancing May Be Required"

You see this with most printed printer parts you find online. Basically it's saying "Hey, these are printed parts, they are pretty dang close but you have to cut on them some to make them work". And cut on them I did have to. The worse areas were the 3mm nut capture areas that the nuts just would not fit into. Exacto knife skills saved the day but be warned, it's still easy to split parts due to the layered method of printing. I also just smoother some of the edges up, cleaned up stray strings, etc to try and make it all work and look a little better.

This was especially true on the extruder build and I did split out a couple parts slightly. I used some superglue to fill in the split and hope that will resolve any long term issues.
Another issue was getting the extruder Hobbed Bolt, the bolt that has a grove in it and ribbing to grab the plastic filament and push it through the extruder. The area where the head is supposed to fit into was pretty nasty in the print so I had to clean it up and try to make things fit. After that I still couldn't get it to fit at a perfect 90 degrees to the gear so I had gear wobble. It meshed ok, but I didn't like the wobble so the suggestion was to heat up the head enough to kind of melt it into place and 90 degrees position. Used a butane lighter, a little heat and it seems to have works. You can see the head doesn't quite fit into the socket on the gear though here. It's solid but I think I'll drop a bit of super glue in to make sure. I bought two hobbed bolts to have a spare so even if I move to a herring bone gear set I have a bolt.

The hobbed bolt is another part that could have been built at home I guess. It's a basic 8mm bolt with a notch and ribbing done on it but for $12 I found two online with the nuts and washers and figured it would take me longer to try to do it myself than $12 worth of time.

Hot End
To melt the plastic and get it down to the sub millimeter stream needed to print something, you need a "hot end". After research, reason, and lots of input from LMRians I went with the tried and true J-Head design. Since I picked mine up on ebay it is likely some knockoff but should work. It has a 0.4mm output, was supposed to be able to use 3mm or 1.75mm filament and had the heater and thermistor already installed and setup. I also had to get a mounting plate to hold it in the carriage and extruder. Hot end in hand, moving on. I had already ordered some 3mm black filament so I decided to do whatever was needed to make the J-Head use that size filament as I could tell it was setup for 1.75mm when I got it. After pulling it apart and discussing with hoff70 it became apparent that the head was MADE for 1.75mm but COULD be drilled out for 3mm. Looking back I can see the ad for the unit said THEY will drill it out for 3mm if you want before shipping. So another minor setback, can't use the 3mm filament I have now but the recommendation was to go with the 1.75mm size. It is supposed to be better/cooler/tighter/etc anyhow. So I coughed up some more money and ordered some 1.75mm black and went ahead and ordered some red as well as I really didn't want to be stuck printing black for too long.

Getting There

With the extruder together and the recently purchased hot end in hand, I finished mounting the extruder to the carriage. Still no belt on it but wanted to make sure it all fits together, belt route clear, etc before doing that. One thing again about clearance work, be care and make sure the nuts fit in the captures. The but was a little tight on one side of the hot end mount and forcing it in created another small layer split.

With the extruder on the carriage I checked the movement back and forth and although tight I believe it is working as it should.

Mounting Steppers

Mounting the steppers is really pretty straight forward. I just needed to make sure I used the correct length cap screws that weren't too long but not too short either. Some clearance work on the mounting slots and they fit just fine. There is now a mass of wires going nowhere but I'm not routing anything until I have the electronics in hand and plan where to mount it all.

With the Z Axis motors in I hooked up the CNC aluminum couplers that connect to the Z threaded rods. These seem much better and isolating any threaded Z rod imperfections but with anything there are those who say don't use them as well. Some say they will sag/stretch over time affecting the Z axis. Maybe so but they seem to much better than a hard clamped mount that comes with the original parts kit. I think with some continuous tune ups and system checks any sagging can be adjusted out as needed.

The Print Bed

A very important piece that needs to be right is the print bed. Although many get great results from printing on anything, I figured I need to build what I want up front. With that in mind, I included a heated print bed in my kit so I could print ABS later on if desired, but also it seemed like the easiest way to mount a nice thin setup. For the base, I used some 1/4 acrylic that I picked up at the local hardware store. I noticed that many use it as their base as it's flat, easy to cut, and just looks nice. After I cut it out to the basic size, I did hear from some on LMR that you need to protect it from heat if you are mounting a heated bed as it can warp. Figures.

So with a nice piece of acrylic for the lower bed mount, I ended up covering it up with some classic Mr. Gasket exhaust gasket sheet that I plucked from my garage and my car hobbies. This stuff can handle hundreds of degrees so it should protect the acrylic  from the heat bed. I even mounted with the Mr. Gasket logo up top just for the heck of it.

I also picked up some small springs at the hardware store to use to mount the heat bed/glass on for adjust-ability as many have done. I could have used ball point pen springs but these are similar and should work fine.

Belted

Next up was to get the belts on for the X and Y axis. I mounted the Y axis bed belt first using the included belt clamps but also use the trick of using small zip ties to hold a loop at the end of each belt and then one to tighten those loops together so you can pull the belt tight with the zip tie before tightening down the clamps. Worked well for the bed and I had smooth motion to and fro.

The X carriage setup wasn't quite as easy as there is not enough room between the two clamps to do the zip tie method. For this I clamped down one belt end and then left some extra length on the other end allowing me to pull it tight and clamp it down. Carriage moves left and right fine without any issues!

Extruder Mount
Next was the final mount of for the extruder and hot end on the carriage. After putting the extruder in place and starting the screws another problem arose. With the longer, higher torque, stepper motors, the motor extends backward into the path of the belt creating interference. At first I wasn't sure what to do besides get a short stepper for the extruder but after pulling it back off I found the angled mount holes that allow mounting the extruder slightly sideways. Mounting it like that clears the belt in the back but it does make the motor hit the threaded rod on the left side before getting to the edge of the print bed. Oh well, will have to do and limit switches should keep any interference at bay.

Summary To Date

So at this point the chassis is built, lower print bed mounted, steppers mounted, extruder and hot end mounted, all axis are moving properly manually and I've started routing and organizing wires. I've also labeled all the steppers with my label machine. Electronics are here so last steps are finalize bed leveling setup with springs, wire up the heat bed eventually along with the thermistor for that. More to come!




Monday, September 30, 2013

3D Printing... Attempting...

So with so many LMR (http://www.LetsMakeRobots.com) enthusiasts building, buying, printing, or renting 3D printers I figured I’d jump on the bandwagon and go along for the ride. I can really see the joy in being able to just print cool things off ThingiVerse much less the thought of designing some little mount, feature, cover or whatever for a robot you may be building.


Fear Factor


Having watched those who have built printers in the public eye like Hoff70, DanM, (others?) and seeing the vast list of options, printers, versions of the same printer, options on top of options for existing printers, and all the other confusing stuff that swirls around the 3D print world, I was quite leery of getting my feet wet, much less diving in headfirst and risk breaking my neck… or pocket book.


However, after a while of reading, watching, and listening to all the builders like Jinx, TinHead, and others and reading through a couple build manuals online it seems to have slowly come together into something I can finally being to grasp. Sure, the basics are simple, print head (and/or bed) moves in X/Y/Z manner while print head drops a precise amount of melted plastic or other material into a particular shape. Easy enough.. but then you start hearing GCode, PronterFace, Ramps, Sanguinololu, Skeinforge, PrintRun, send.py, and a million other speciality pieces of the process that at least I had no clue what they were or what they were used for.


Fortunately the LMR shoutbox is quite often full of 3D friendly people and just watching the conversations there, AND using the Internet for everything they said I didn’t understand I started to see that I could eventually make some sense of it all. At least enough to put something together and get started.


But Which One?


Of course, when you start looking you’ll find there are LOADS of different printers, versions, and obviously price ranges. For my first build I really wanted to get something large enough I’d be happy with but Uncomplicated enough that I could (hopefully) get it working and tuned well enough for quality prints. I looked a few options from the EventorBot, that looks nice and simple but apparently it’s kickstarter founder is no longer answering questions at this time, a Prusa Mendal Max that looks nice and sturdy but requires more specialized metal parts, a Rostock with it’s cool movements but circular print area, and a few others.


After asking around in the LMR shoutbox again most were saying for simplicity sake and easy tuning go with a Prusa model so I narrowed down on the RepRap site for options. After checking out the options there the Prusa Mendel I2 seemed to be the most popular and still should provide a good platform. It was actually kind of difficult making the final decision on which direction to go, I guess due to the time and money that will be invested, but likely just my uncertainty of what it’s all about.


The Plan


Having made the decision to go with the Prusa Mendel i2 I dug head long into what options there were. Buy a kit of all the parts? Buy a pre-assembled one?  Source out the parts separately? Or what the heck else. Although very likely buying a pre-assembled one or even a full kit may be the best bang for your buck, I decided to piece my own together from various sources and see if I can save any money and still make it work. Plus the treasure hunt for parts seemed to appeal to me anyhow forcing me to learn more about what are the best pieces to use or at least the most popular. It also lets me break the whole thing down in phases allowing it to smoothly fit into my budget.


After reading through more assembly manuals I found online I finally got a basic parts group figured out and dropped it all in a spreadsheet to review options, prices, etc. I really ended up just breaking it up into Rods, bearings, metric hardware, printed parts, extruder, hot end, electronics, power supply, steppers and pretty much “other” with estimated prices on them all.


I also had some enlightening discussions with other printer owners about going 8mm metric or keeping it easier to get parts by using 5/16 SAE rods. Although I could save a few bucks on the 5/16 stock, I decided for a first timer I better stay the course and stick with a known so I’m going with the metric setup.


Off We Go


So armed with a list and estimated prices I headed online to eBay, MakerFarm, SainSmart and others planning out my purchase route. The first steps are getting the basic frame built so I looked through options for rods, metric hardware, printed parts, and linear bearings. I also ran across some 5mm x 8mm couplers that looked like a better option that printed and picked them up as well as some metal stepper gears and GT2 belts. The rods, printed parts, and hardware arrived I spent an afternoon assembling it all. I chose an un-cut rod kit so quite a bit of time was measuring and cutting threaded and smooth rods to the right lengths. I also polished the smooth rods with some 1000 grit wet sand paper hoping to get things as smooth as possible. Note in the pic above the carriage is on backwards - fixed it right after that pic.


So What’s Next


As noted I broke the project down into three phases of which the first has been spent. The next phase will be for Steppers, Hot end and mount, skate bearings, Hobbed bolt, bed plates, etc and other misc items. After that will be the final electronics which I believe I am going with a SainSmart kit to keep it all together using Ramps 1.4, A4988 driver, Mega2560, end stop switches, heated bed, cooling fan, and a nice large LCD / Controller setup. The LCD/Controller should have an SD card as well for future computerless prints.


Software

As noted before, there are many different hardware configurations but the most confusing part for me was the software options out there. Everything from what CAD app to use to create or view parts to the controller versions and PC interfaces are all foreign languages at this time. I ended up finding this site to guide me through it all for the first try. http://www.nextdayreprap.co.uk/reprap-downloads/ I liked their walk through from the very basics of downloads through install and testing. I know there are some newer versions of the pieces out there but for now I plan on getting it working using their guidelines and then worry about possible version upgrades if warranted.


I’ve already worked through the download and installation process they have listed and have PronterFace running on the laptop I plan on dedicating to the printer interface. It doesn’t have anything to talk to so it may not be a good install but it looks cool on the screen. :-)


Upgrades


Of course browsing around ThingiVerse is not necessarily a good thing to do, even when you do NOT have a printer yet. I’ve already found several “upgrade” pieces I’d like to print for the printer itself once I get it working and tuned up. Things like a simple spool holder, filament guide, filament dust filter, bracing, fan holders, integrated Z motor mounts, etc. along with many cool robot pieces like Basile’s cool wheels, pan/tilt parts, and of course the BoB robot. Print, print, print! Of course I’ll have to print a few hundred small cubes along the way to get things working right.


The Future

It may take me a few months to get it hacked altogether and moving around but I’ll keep plugging along and posting updates as the project moves forward, or backwards.