Sunday, 23 November 2014

Putting bits and pieces together

At FabLab with plenty of time and space. Let's see what I can throw together.

X Idler Assembly:

Requires 2x624 ball bearings, which are 13x5x4mm. My own are much bigger, FabLab has some that are 13x6x5. Also need two linear bearings LM8UU - they should be 15mm wide and 24mm long, but the chamber for them measures 26x19mm, not exactly a snug fit.
The normal place for bolts and nuts didn't have the M3 20mm I need a lot of, but I got help to find the secret stash. Now I have plenty.

X Motor Assembly

Missing polypropylene strips, will leave the clamps open for now.

I realize now my motors aren't NEMA17, but some odd ducks recycled from elsewhere, maybe NEMA23-ish. Add to shopping list.

Don't have the 15 pin IDC either, nor 1.2m ribbon cable. Can't get very far on this right now.

Y Idler Assembly

Also missing the right ball bearings for this. Attaching screws.

Y Motor Assembly

Obviously don't have the motor. Got the M3x8mm screws

Y Carriage Assembly

No Dibond nor linear bearings yet. The bearing holders don't have nut traps in sturdy, I guess they take regular nuts with washers galore. Surprisingly not star washers. I added the bolts that I could, using 20mm in the anchors since I don't have 16mm at hand.

X Carriage Fan Assembly

Don't have a fan here. I might have one at home?

X Carriage Assembly

More missing linear bearings. Odd, there are M4 nut traps but no M4 nuts or bolts specified in either the BOM or the manual. Ah, those come later. Attached the pieces loosely for now.

PSU Assembly

Want to print this part of the manual in color to be sure I get the wires right. Plus, I'm missing the resistors.

Can't do the assembly of subassemblies meaningfully. All that's left to do today is the extruder connection PCB - yay soldering!

Things I may need to pay FabLab for

1662mm of 34 way ribbon cable.

Shopping list

8xLM8UU
4x624 bearings
4xNEMA17
15 way D IDC socket
M3 star washers
Polypropylene strip 501 x 25 x 0.5mm and 410 x 18 x 0.5mm
1 Dibond sheet 216x216x3mm
M3x16mm bolts
Fan 60mmx15mm (I think I have one at home)
THS15 Alu clad 10R
THS15 Alu clad 4R7
2 smooth rods 10mmx403mm
PCB bed 214x214mm
Glass sheet 214x202x2mm
4 hex male/female pillar M3x20mm
Polypropylene strip 278x33x0.5mm
Belt T5 6mmx680mm
Belt T5 6mmx905mm
Smooth rod 10x290mm
Smooth rod 10x432mm
2 brass nuts M8
2 smooth rods 10x336mm
2 threaded rod 8x296mm
1 micro SD card (no, I don't have any randomly lying around!)
MicroSD to USB adapter

Saturday, 22 November 2014

Drilling and framing

Drilled all the holes in the MDF this afternoon. However, due to missing strange sizes of drill bits and plain oops, I drilled the following differently:

The 1.7 mm and 2.5 mm holes were drilled with 2mm
The 4 mm holes were drilled with 5mm by accident - I don't actually have a 3 mm wood drill, so the second drill bit is 5mm, not 4.
The 4.4 mm holes on frame_left are drilled with 5mm. I will need to use washers.

Also a piece of wood under the boards would probably have prevented a lot of flaking off. Especially the larger holes look pretty bad. Dammit.

Ah, fuckit. This will be the first, straight-forward, ugly version. I can do a fancy painted one later.

Drilled the last few holes with a correct underlay, and they were perfect.

The left and right stays are a little off vertically. I hope that doesn't warp anything.

Adding the ribbon clamp and cable holders required opening the model in OpenSCAD to see where what goes.

Skipping the bed fan assembly for now, since it's optional.

Can't do the X idler yet since I don't have linear bearings here. There were some at FabLab, so I'll take the bits there at next opportunity. Same for the X motor assembly and thus the Z axis.

Oh. All my small bolts and stuff is actually out at FabLab, too. I guess I'll just print the install instructions, sort out the printed parts, and bring them out next time I go there.

Skipping the heat shield since I'm starting out with PLA.

Skipping hot end and extruder motor since I have a Wade's extruder already assembled.

Holding off on the spool holder for now, can add it when I'm actually printing.

I will need to check carefully for any differences in electronics setup between dibond and sturdy rather than just expect the manual to apply directly. Don't want to try my Melzi electronics by mistake - that should only be done on purpose:)

Here's the frame, at least, front and back. You can see a few of the drill flakes on the back.



Friday, 21 November 2014

Starting on Mendel90

Work has started on my Mendel 90. I have the printed parts and the sheets, plus whatever I can scrounge up of screws, electronics and bits and pieces.

I've decided to make it not just functional but also pretty, so I'm painting the printed pieces bronze and the sheets copper. I would get copper rods instead of iron, except that I don't know if there is a difference in materials quality.

There are a few differences in overall build between the "sturdy" version that I'm building and the "dibond" version that's described in the manual. First difference I notice is that the square tubes under the base are not present in "sturdy", presumably because it's sturdy enough as it is.

Here are all the pieces I got from nophead, the first few already bronzed:


Wednesday, 14 May 2014

Which 3D printer should I make/get?

I've decided that my current 3D printer project ("The Monster") is a dead end. It's sad but true. Problems are piling up faster than I can fix them. So now I'm looking for an easy but not overly expensive way to get to actual printing. I can reuse an extruder (Wade's), some Nema-17 (probably) motors, and some opto-endstops, but probably not much more.

So what design should I go for? My priorities are
  1. Simple to build (given access to a good makerspace with a lasercutter).
  2. Low maintenance (both that it is designed to not break and that what breaks is easy to fix).
  3. Compatible with common software/materials
  4. Good print volume compared to size
Exchangeable heads would be nice, but is not required.

Note that print speed is not a priority. I'd rather have a slow machine that works than a fast one that doesn't.

My current prime candidates are
  • Something like a scaled-down X400  (but not at that price!)
  • Some sort of delta printer (but they're kinda high)
  • An Ultimaker (but just how easy is fixing on them?)
but I'm very open to suggestions.

Saturday, 3 May 2014

Post-move recalibration

FabLab has moved into a new, shiny, and, in particular, roomy location in Gewerbehof Westend. A longer bike ride, but pretty straight on the U4. During the chaos of the move, I had The Monster home, hoping to get more luck with the GCodes. However, there are just way too many distractions there, so nothing got done. Today, it moved back to FabLab, and I went through the checking and calibration routines. The results are... dismaying.

The Y stage runs fine when it runs, but about half the time it doesn't start running after changing direction. A little push helps. I'm guessing it needs oil, but the appropriate area is hard to reach. Alternatively, the teflon runners are worn down enough that they provide just enough resistance when stationary.

The Z stage had to have its other (top) endstop adjusted, as it hit one of the screws just before, tilting the plate and making the endstop plate miss the gap. Not too hard to fix.

The extruder stepper motor plain refuses to do anything. There's a little blink in the motor LEDs when power comes on, but otherwise it just sits there, its power LED shining forlornly like a one-eyed puppy that doesn't understand what its master wants.

The heater heats and the temperature meter meters, though I have that going for me, which is nice.

Carefully tipping up the Y stage plate, I was able to oil the rest of the driving screw.

I made a few updates to my speed test program: It can do soft turns, and once it's testing, it will detect endstop hits and abort. Which has the nice side effect that if I upload the program without turning on the power, it will go through the init phase, then think it's hit the endstop when it finds it low, and just abort. I can then turn on the power and reset for a proper run at my own pace.

Aha! One of the nuts holding the bearing arms in place on the Y stage had moved down and was hitting the X stage board. That helped a bit, but there's still some amount of that issue - the nut under the roller bearing also hits the X board.

Took off the Y board by moving it outwards while lifting the end. Tightened all nuts and redid the rather worn teflon on the sliders. Problem persists. Running out of ideas.

Also: Very jealous of the X400 that's just running quietly and issuelessly in the background, as well as the meter-and-a-half-high delta bot being assembled in front of me.

Monday, 16 September 2013

Calibrating endstops with GCodes

Took a look under the bottom and fixed the bearings holding the X stage straight. Seems more stable now.

Time to find out why running a simple program crashed the Y stage into the end.

Trying G28 commands to home moved X and Y in the wrong directions. Trying to move G01 X10 just gave a loud noise of futile attempt at moving --was that why the X stage could run so much faster, it wasn't properly held. Must recalibrate X speed - max is 2000, not that different. So why did it object? Let's run back and forth at high speed for a bit... seems to be quite happy, except at 1950 it gives a crunchy sound when turning. Since the others are slower, I'll just keep this at 1800.

Doing G28 and G01 F300 G01 {X/Y/Z} NNN to figure out why it's homing like it is. Turns out I had the direction bits exactly reversed, since it apparently likes to home to max. Not sure why, but with inverted X and Y it homes appropriately.

Looking at the generated GCode from ReplicatorG. They use GCodes that are not defined on either Wikipedia or the RepRap.org wiki, and get some basic facts wrong like the maximum feedrate. Editing the slicing profile to fix this (setting rapidMoveFeedRateXY to 1200, zMaxHoming to true, all extrusionProfiles to feedrate 1200). It's problematic that every layer of the system has its own slightly incompatible way of designating which direction to go.

Frustrating. I can run individual GCode commands and the manual control fine, but trying to run the generated GCode, and it just seems to do weird random things. Hate!

Also, every 5th or so Y move is stuck. Again no idea why.

Tried G161/G162 from the Arduino serial console, and got homing to work. That way lies a lack of madness. I should test each command that the GCode creator makes and get them to work independently, before trying to run them together.

Monday, 9 September 2013

Where did all my movement go? ... Wheeee!

Starting again from the cliffhanger last time: Why, suddenly, does nothing move? What bone-headed mistake did I do this time?

Unplugged all but the Extruder stage from the Arduino (that one can't hit an endstop). When connecting ground to the correct pins, it stutters, when not connected to ground it does nothing.

The stepper output shows a regular 90 mV on the stepper pin and the direction pin switching between 0 and 5 V. The 90mV may just be the meter sampling a rapidly changing value, since the stepper pin goes up for each step, then down.

Wasn't the high speed I had set it to (unless I have burned out the motor). It just blinks once when getting power, then the stepper lights go out.

Main power looks good -- slightly low on 12V, only 11,3V.

Tried on the Y stage. Putting ground on pins 8, 9, 10 does nothing, but pin 2 works. Re-checking the diagram, yes indeed, pins 8-10 are reserved, not ground. Which means I probably need to remake my shield. I bet they printed them just now:)

That means I need to have a common ground bar rather than chaining them like I'd been doing (I don't know why that worked, obviously it doesn't now). X and Z agree. The extruder is a different beastie, so I shall leave it alone for now and do speed tests on X, Y, and Z.

Noticed that the speed variable was highlighted like a keyword, so I renamed that, no effect. Comparing with a working program, I noticed the setCurrentPosition being called in init. Remove that -- and it works. Testing Y speed now. Speed 100 is quite slow. Changing initial speed to 300, then 800.

Y stage is happy up to 1400 mm/minute == 23 mm/second. For safety, let's say 20 mm/second.
X stage goes all the way up to 1950 mm/minute == 32 mm/second. For safety, let's say 30 mm/second.
Z stage goes to 1800 mm/minute == 30 mm/second. Calling that 25 mm/second.
Ex also works no, up to an amazing 2350 mm/minue == 39 mm/second. Call that 35 mm/second.

They also all run together, very good. Temperature test also works once it's been all wired up. Now for the real firmware setup.

Seems to ignore my changes, giving an error on Z_MAX_PIN even after I comment it out. Turns out the Arduino software doesn't reload from symlinks when the base file is changed. Restarting it helped.

When generating GCode, I set feedrate and travel feedrate to 20 mm/s.

Trying to build still gives me errors, though:
  • Homing in the wrong direction for selected machine: 'G162 X Y F2500 (home XY axes maximum'
  • Homing in the wrong direction for selected machine: 'G162 X Y F2500'
  • You're moving too fast! G1 X-0.0 Y-8.9 Z1.7 F1080.0 E146.57 turns at least one axis faster than it's max speed.
  • You're moving too fast! G1 X-0.0 Y-8.9 Z10.88 F1200.0 E790.555 turns at least one axis faster than it's max speed.
  • You're moving too fast! G1 X-0.0 Y-8.9 Z11.42 F1200.0 E887.258 turns at least one axis faster than it's max speed.
    ... and many more 
This is curious. G162 doesn't even exist in several of the GCode specs, and the feed rates for G1 should be well within the limits. Trying with 15 mm/s feedrate. Crawl, crawl, crawl... even that is too fast. Trying with 9 (i.e. 540 mm/minute), which is below the search feed rate. I have the Teacup set to the following: 

/// used for G0 rapid moves and as a cap for all other feedrates
#define MAXIMUM_FEEDRATE_X 1800 // 226
#define MAXIMUM_FEEDRATE_Y 1200 // 226
#define MAXIMUM_FEEDRATE_Z 1500 // 226
#define MAXIMUM_FEEDRATE_E 2100

/// used when searching endstops and as default feedrate
#define SEARCH_FEEDRATE_X 600
#define SEARCH_FEEDRATE_Y 600
#define SEARCH_FEEDRATE_Z 600
// no SEARCH_FEEDRATE_E, as E can't be searched

But the real culprit is the ReplicatorG machine definition in /Applications/ReplicatorG.app/Contents/Resources/machines/reprap.xml, which set a max feedrate of 500. Just below what I stopped at:)

With this fixed, the only errors I get are
  • Homing in the wrong direction for selected machine: 'G162 X Y F2500 (home XY axes maximum'
  • Homing in the wrong direction for selected machine: 'G162 X Y F2500'
  • You're moving too fast! G1 X105.0 Y-70.0 Z10.0 F3300.0 (move to waiting position) turns at least one axis faster than it's max speed.
  • You're moving too fast! G162 X Y F2500 (home XY axes maximum turns at least one axis faster than it's max speed.
  • You're moving too fast! G162 X Y F2500 turns at least one axis faster than it's max speed. 
Fixed these instructions in the generated GCode (except for homing in the wrong direction, which I'm not sure of). Running it sounded like a helicopter warming up! After apparent attempts at homing the Z axis with no effect, the X and Y axis moved at steadily increasing speeds -- Y towards 0, X away from 0. Y crashed into the endstop, while I stopped X before it could get away. Not a perfect success, but it's the first semblance of control from ReplicatorG, so it's a success after all.

From the control panel, I see all stages turning, and the heater heating and being measured. So it's all good.