text:
Is z-axis zero near the hotend?
I'm in the process of building the D-Bot core XY printer, and I was hoping to know if the Z-axis 'zero' is near the hot end or near the bottom of the printer furthest away from the hotend? In this printer the Z-platform moves up and down and the nozzle stays at the same height.

Generally, Z-axis zero is when the hot end and the build plate are close to each other.  Some printers keep the hot end up at the top, and bring the build plate up to reach it.  Other printers keep the build plate at the bottom, and lower the hot end down to reach it.  As such, "Z axis zero" doesn't specify top or bottom of the physical printer, it just specifies that the hot end is right up against the build plate, ready to print its first layer.  In the printer you describe, where the hot end remains at the top, that's where Z zero is.
In terms of the model being printed, Z axis zero is always the bottom of the model, the first layer to be deposited on the build plate.  The numbers increase from there, either lifting the hot end up, or pushing the build plate down, depending on the design of the printer.

Yes, Z-Zero is typically at the "top" of the printer, closest to the nozzle(s). X and Y zeros are also typically in the lower-left corner of the buildplate.
However, the XY zeros are re-interpreted in slicing software to produce cleaner G-Code as it's sometimes difficult to read G-Code in negative coordinates. For this functionality, slicing engines utilize the machine build space length and width.
So if you encounter a situation where your machine "over travels" in either -X or -Y direction during startup, verify that the length and width of your build space is correct in your slicing engine.


text:
First layer overlap on one side
When printing the first layer, the infill overlaps on just one side of my print. Thereupon there's a rough, and a lot higher, surface on the first few millimeters after the wall.

Printer: Arduino Materia 101
Filament: Rec Pla
Temp: 210 degrees

I have tried to troubleshoot it, but I just found information about a problem when the infill isn't close enough to the wall everywhere.
However, for me, the problem is the contrary and just on one side.

This may be a result of an unlevel build plate (OP did not specify if calibration was done at time of writing).
If the area that is overlapping is higher (closer to the nozzle), the filament will be pushed down and around the nozzle as it extrudes in that area. This will result in excess filament overlapping unto other strands on the layer.
Please excuse my lack of artistic skills in paint, but the image below should illustrate what can happen when your build plate is unlevel:

Basically what it's trying to illustrate is that if the nozzle is closer than the expected layer height, the machine will continue to flow as if the nozzle is layer height away. This typically results in a larger layer width because the nozzle is essentially pushing material out of the way.
You will notice that as you go further to the right in the drawing, that your layer may begin to "thin out" because if the nozzle more than a layer height away, the filament "stretches" until it settles on the build plate, resulting in a thinner layer width.
Ideally, your nozzle will be parallel to your build plate at all points along the build space and the "Standoff Distance" will be equal to your layer height. So, you should see the top of your bead of filament at the same height as the bottom of your nozzle.

Sorry for the long delay... I'm not really good at calibrating yet, but i calibrated the build plate. I took a paper and put it on the build plate, then i liftet Z to 0. Afterwards i told the printer to move X and Y and leveled the build plate so, that the power i needed to pull the paper under the nozzle was the same in every place... So that should have done the trick, shouldn't it? Sorry for bad english. :/

Yes, it sounds like you did the right procedure. Your English looks fine :) You might do a little digging to see if there is a GCode program to help you calibrate faster if your machine does not have a procedure all ready.

Yes. That happens. I personally prefer this to the alternative which is it does not go far enough and curls back. That said depending on your slicer you will have a line overlap tolerance. But what's really happening is you are smooching your first layer. Aka your hot end is too high in relation to your first layer multiplier.
Failing that and if you see it later in the print. Again I don't think you really can fix it but you should recalibrate your printers firmware, steps per mm and your slicers filament size.
Looking at it I again it is a bit much. Maybe the plate is not flat. Does it happen on any other sides? After that we have the unlikely case your hotend is too hot. Which the slow down of the printer could cause too much material to ooze out. But I'm going to say plate level as number one suspicion.
3D printing is a lot like trying to spin 3-4 plates at once.. if you still have issues I can expand more on calibration steps you need to do.

Yes, you're right, it's better like that, than other way round...
Maybe the Printer just don't fits the requirements i have. but the steps per mm calibration would be interesting...

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

sort: votes


text:
Designing/Printing objects with sized holes
When trying to print parts that should contain certain sized holes, e.g. for screws, how to achieve that they are sized correctly?
Is it possible to calibrate the printer perfectly, so it prints holes correctly sizes in all common sizes (e.g. starting at 2mm diameter)? Or is it better to design the holes larger or print prototypes and increase the sizes according to the real prints?

The reason holes come out undersized is generally the slicer, so calibrating the printer itself cannot solve the issue (without making other things worse). The output of the printer is exactly what it should be, given the G-code provided to it. It's just that the G-code does not represent the hole diameter correctly.
It would be best to simply account for the deviation in your design, or simply drill out undersized holes to the correct diameter.

So STL files for exact printed objects, e.g. 3D-Printer-parts, might not be the best solution to share, because they are printer-specific?

Even in traditional manufacturing (milling, lathe, router, etc.) dimensions are often times offset to accommodate unforeseen variables such as cutting tool wear, material hardness, and especially operator/engineering error.
As Tom van der Zanden stated, it is common for holes to come out undersized. This is not a conscious action, but a result of uncompensated variables in the material. When you phase the material by heating it to near or at melting point, the material technically begins changing. With that can come varying changes in melting and cooling rates. Your slicing engine will not understand what should be compensated and what shouldn't.
So, I would suggest:

Aiming for the lower tolerance for your hole size. If you don't have a tolerance, just make one up and aim for about 0.5mm-1mm below your target hole size.
Ream the hole using a reamer or drill, utilizing the 3D printed hole as a pilot.
Be wary of 3D hole positions. If a hole is oriented in compound angles, meaning that it is not directly in-line with an axis plane such as XY, XZ, or YZ, then you may also have misshapen holes. These may result in positional errors if you decide to ream them out.

Make sure you know what purpose the holes are to serve.  If they are clearance holes , i.e. designed so that the screw or bolt slides thru easily, then there's nothing wrong with a slight oversize.
If you want a tappable hole, i.e. either drive threads for a machine screw or self-tap with wood/drywall screws, then you want to go undersized.
If you want the hole to be a close-fit with a non-threaded rod, as is done for maintaining alignment for moving parts, then almost certainly start undersized and clear the hole just enough to fit the desired rod.

I've had this issue too and I've pretty much solved it by making all holes polygons instead of round.
The general rule of thumb I follow is to use a polygon with 4 times as many sides as the hole diameter in millimeters, e.g. for a hole with a 3 mm diameter I'd use a 12 sided polygon.
Then it's a matter of choosing between a circumscribed (circle fits inside polygon) or an inscribed (polygon fits inside circle) polygon depending on what you're using the hole for.

Well, all holes are actually polygons because STL only describes a polygon-mesh. The question is how large you design the polygon.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
MakerBot Camera Stream
Is it possible to use the onboard camera on the 5th+ generation MakerBot printers to stream or save to a file?
I'd like to try and use the stream for customers on my 3DHubs account and they recommend setting up a YouTube stream. However, even if I'm able to stream to VLC Player or something, I'd like to get the video/images somehow.

I own the gen 5, not the gen 5+. As far as I can tell, the camera has not gotten much of an upgrade and the software is also just as limited. That said to be sure I verified on several sites such as this reddit.
There are some that claim that the software is open source. I do not think this is true given the parent company. Following even if it was you do not want to use their camera. It is shocking how cheap they went on this ultra premium printer. Which despite printing very well has not been received well. The main issue is that the camera is 320 by 240! That alone is enough to derail your quest I am afraid.
Take a look at this raspberry pi project on building your own camera set up. Though really any wireless camera setup should do. Using a Pi has the stand alone advantage.

I agree, the camera is not that great, but I'd rather utilize the camera as much as I can. It's been good enough to double check the status and have my wife get it back up and running if it's stopped. I've tried right clicking the video feed in MakerBot Print and long pressing in the Android App, but there aren't any options that pop-up to save anything.

The only hope then might be https://www.makerbot.com/media-center/2014/06/19/makerbot-developer-program-invitation-innovate

320 by 240? I think the sensor in my mouse has better res than that... what happened, did they find a crate of old camera phones from 2003?

@tbm0115 I think the answer is a resounding no. The system has bumped up the question so it can get marked off.


text:
Small Z axis step: Repetier-Firmware
Z axis length for my printer equals 120 mm. When I manually pass this length, from display controller menu, it's about few millimeters. Then I set the resolution (ZAXIS_STEPS_PER_MM) at 1600 steps per mm. And nothing changed, step still very small.
I use Repetier-Firmware, Arduino Mega+RAMPS 1.4, standard Nema 17 steppers and Prusa i3 like cartesian printer.
This is hardware or software problem? I checked the steppers, they're fine.

I solved this problem by change EEPROM value to "2" in Configuration.h:
#define EEPROM_MODE 2

Now ZAXIS_STEPS_PER_MM value load from firmware, not EEPROM.
#define EEPROM_MODE 0

— does not result in my case.


text:
Opening .STL to scale in Print Studio (Dremel)
New to 3D printing so sorry if this is a simple/basic question.  I've done a ton of Googling but can't seem to find the answer...
When I download a .STL file and open it in Print Studio, it opens as a HUGE object - much larger than you would ever want it.  How to I get the file to open at scale to how the designer wanted it.  For instance the following file from Thingaverse has specific size but I'm unsure of how to print it at that exact size.  I'm assuming that the info is able to be stored somewhere in the .STL file.
http://www.thingiverse.com/make:181631

Would the size you are experiencing be approximately 25.4 times what you'd expect it to be? If so, you may be looking at mm to inches conversion or the reverse of that. I'm not familiar with Print Studio, but your problem is common if the conversion is misdirected. Perhaps a setting within the software will resolve it.

The STL file format does not provide any way to provide the units of measurement for an object. The majority of FDM printers use millimeters so most people export objects with the assumption the values in the STL file are in millimeters.
As you found out that's not always true. The second most common assumption is to export in inches.
Most of the slicers I've used provide a scaling option if you can't edit the STL file yourself. Some will even offer to do the inches to mm conversion for you. Scale to suit when you print or use a 3d editor. I've gotten specific sizes by creating a temporary cube the size I wanted and scaling the object using the cube as a reference.


text:
Anet board - MOSFET replacement?
To learn about printing, and to print the parts for a printer of my own design later on, I've ordered an Anet A8.
I just saw this video, Anet A8 3D printer Review. all you need to know. This guy recommends using an external MOSFET. I was wondering if using a relay instead would also make it safe?

What kind of relay are you looking to replace what kind of mosfet, and what current and voltage does it need to deal with? There aren't really enough details in your question currently.

Maybe one which I can use to power the bed directly through the mains. I've seen some forum posts here and there mentioning that it is possible to use mains power (230VAC over here) for your heated bed, but I have no idea if that is applicable to the bed supplied with the Anet printers. Maybe something like a http://www.digikey.com/product-detail/en/omron-automation-and-safety/G3NA-210B-DC5-24/Z918-ND/206389 ?

Do not use a bed which is not made for mains power with mains power.

There are two areas of this design which seem to pose a risk of connectors overheating, the hot end and the heated bed. The heated bed runs at about 6 amps, 12 Volts. The hot end runs at a lower current, but can itself overheat if the thermistor stops providing feedback.
The problem in this design with the heated bed is mainly the connectors - they work OK when they are good, but can easily come a bit loose. This has two side effects. The bed heats less well, and the connector itself heats instead. Replacing the 2mm plug connector, and 2mm molex with direct soldered connections will help (the on-board mosfet seems OK with the current, unless you increase the power rail voltage).
A mosfet is a good solution for high current switching, the modules available have good screw terminals which should be OK for maybe 25A (well in excess of what you need). Mosfets are efficient when switched fully on, so there won't be much heating.
You would also use a relay (rated for at least 10A), but this will be noisy since the heater is switched repeatedly to maintain the target temperature. A relay also takes more power itself and will ear out if repeatedly switched under load.
Bottom line, if you have a good relay already, it is OK as a temporary (safe) solution. Longer-term a mosfet is better. Pay attention to the connectors at power supply, board (in and out) and heated bed. Using an additional mosfet for the hotend is maybe overkill.

Thanks for your reply. If I'm correct, the drive current on that SSR will not be that high, right? Also your last sentence is a bit hard for me to understand. You seem to indicate that a relay is good as a temporary measure, but then you go on to say that it is a good solution longer term as well. Did you mean MOSFET in one of the two cases? You also mention the connectors. Do you know of any way to improve the connectors? Sorry if I'm asking very obvious questions. The last time I dealt with electronics was in my physics classes almost 20 years ago. It's all a bit rusty.

Oops, correct. I'll edit... Solid-state relay and mosfet are interchangeable in this context. I was talking about an electromechanical relay...  Connector wise, you want something with eyelet type connections on a M4 bolt, not a 1mm^2 pin with a spring contact.

The SSR you link is maybe not good for a 12 V load. You'll find mosfet boards on ebay rated for about 30A without cooling, for maybe $10.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Photogrammetry using pure rotation?
I have a set of 42 images made as a rotation around the object and it is failing to generate a model in Visual SFM. From what I can gather, the problem is that just doing a rotation is insufficient. There must photographs taken from above as well.
Is there any way to avoid the need for high angle shots, and just use rotational shots and still get a 3D model from Visual SFM?

This is not a problem specific to Visual SFM, but a general technical problem. The software cannot accurately determine the depth of the pieces which approach perpendicularity with the camera lens. The software uses those varying measurements and estimated angles to calculate the geometry. Check out the law of cosines.


text:
Can the da Vinci Jr 1.0 print in 100 microns, if so how?
I was wondering if the da Vinci Jr. 1.0 can print in 100 μm layer height.
If so, how could I do this?

Hi Cates, and welcome to SE.3D Printing! Just to clarify, Do you want to print using 100 microns and are wondering if the da Vinci Jr. meets your needs (and if it doesn't, then how else would it be possible to print at 100 microns)? Or, are you asking if the da Vinci Jr. can print this fine and, if it does, how does the da Vinci Jr. manage to achieve such a layer thickness?

I will attempt to answer your question, as it stands.
Dealing with the first part, according to the product specifications, the resolution, or layer thickness, is indeed 100 μm, when printing using the Fine setting.

Resolution
Fine 0.1 mm (100 microns)
Standard 0.2 mm (200 microns)
Speed 0.3 mm (300 microns)
Ultra Fast 0.4 mm (400 microns)

With respect to the second part of your question, how could I do this? You simply put the printer into Fine mode, and the resulting print will be printed with 100 μm thick layers.
If this is not what you wanted to ask, then please clarify your question.


text:
Calculating the estimated print time of an already sliced file
I started to write an application that calculates the estimated total print time from the G-code file for an already sliced model.
The program works and it's pretty accurate.
It works as follows:

It scans the entire G-code file to identify all of the movements
It calculates the time for each move by dividing segment distance by the speed in mm/s.

Let's assume this is the G-code:
G28 ; home all axes
G1 Z0.200 F5400.000
G1 X158.878 Y27.769 E6.65594 F900.000

This is the calculation it does:
totalTime = 0

# G28 ; home all axes
currentX = 0 mm
currentY = 0 mm
currentZ = 0 mm

# G1 Z0.200 F5400.000
newZ = 0.2 mm
mmPerSecond = 5400 / 60 = 90 mm/s
deltaZ = newZ - currentZ = 0.2 - 0 = 0.2 mm
segmentLength = deltaZ  = 0.2 mm
moveTime = segmentLength / mmPerSecond = 0.2 / 90 = 0.002 s
totalTime = totalTime + moveTime = 0 + 0.002 = 0.002 s

# G1 X158.878 Y27.769 E6.65594 F900.000
newX = 158.878 mm
newY = 27.769 mm
mmPerSecond = 900 / 60 = 15 mm/s
deltaX = newX - currentX = 158.878 - 0 = 158.878 mm
deltaY = newY - currentY = 27.769 - 0  = 27.769 mm
segmentLength = square_root(deltaX² + deltaY²) = 161.287 mm
moveTime = deltaZ / mmPerSecond = 161.287 / 15 = 10.755 s
totalTime = totalTime + moveTime = 0.002 + 10.755 = 10.757 s

In this example, the print will take approximately 10.7 seconds.
More generally, the formula used is, for each movement:
moveTime = segmentLength / mmPerSecond

By summing up all the move times, we have the total estimated print time.
I've seen that some forums state that the 3D print time also depends on some settings on the 3D printer, especially Acceleration X, Acceleration Y, Acceleration Z, Jerk, and Z-Jerk.
I'd like to make it possible to use those values to more accurately calculate print time; however, I don't understand how those values affect the move time:

How should Acceleration and Jerk be considered; and, how do they speed up or slow down the print time?
How should I edit my formula in order to include Acceleration and Jerk in the print time calculation?

How acccurate do you need to be?  Yes you can plug in the accelerations, and compensate for short runs where the motors never reach full speed before decelerating, and so on, but if the net result is only off by, say, 2%, do you care?  Try printing something simple like a square pyramid and compare your prediction to reality.

I'd like to be as much precise as possible... Right now on a 9 hours print the difference between prediction and reality is 10-15 minutes, which is a lot. I'll look at marlin source code to find how acceleration and jerk are handled while printing

Maybe you could check slic3r and see how it calculates those parameters. I remember getting a time estimate when slicing.

@FarO I use Slic3r and I didn't ever see a time estimation. Maybe I'm not looking at the right place but there are lots of users asking for that feature over the web so I'm afraid there is no way to know print time in Slic3r.

@BackSlash I usually see it in Repetier at the end of the slicing in the output log. I guess then it's from Repetier itself!

First of all, there are some nice open source analyzers written in JavaScript that you can use online, or read the source to, at https://www.gcodeanalyser.com/ and http://gcode.ws/. Their predictions don't fully match actual printer firmware, but they do a reasonably close job, and reading them would be informative.
Basically, the story behind acceleration and jerk is that you can't change the velocity (speed or direction) of the print head instantaneously. It takes time to speed up and slow down. Acceleration is the max rate at which the velocity of the print head can change. Jerk is something of a misnomer/hack, and is the max fake-instantaneous change in velocity allowed at the junction of two segments/curves. The point of jerk is to avoid choppy motion when moving along a curve made up of many segments by accelerating/decelerating at each tiny corner. Note that there are two sets of settings for both acceleration and jerk:

a maximum absolute value (3D vector length) that frequently changed as part of the gcode in order to use different acceleration profiles for print moves vs travel moves, walls vs infill, etc.
per-axis absolute values (standard 1D absolute value) for the limitations of the machine, that are usually set in the printer's settings or the start gcode profile for your printer and never changed.

Movement is constrained to always respect both sets of settings.
Printer firmware uses acceleration and jerk settings along with lookahead at upcoming motion commands to decide how to actually operate the motors. When it starts a motion, it has to accelerate up to the configured max velocity within the acceleration constraints. It also has to start slowing back down midway through unless it knows the next motion is going to continue in the exact same direction; how much it has to slow down depends on the difference in the vectors of motion. If the next motion is going to be in approximately the same direction, it may be able to avoid slowing down by using the jerk allowance to make an "instantaneous" change of velocity at the corner. Only if you have long (relative to speed) linear or approximately linear motions will you ever actually reach the requested speed.
So, to estimate print time, you need to model this. Keep track of print head velocity while processing/simulating the gcode, and for each motion command, compute velocity as a function of time using the acceleration limits (accelerating at the max rate they allow). You also need to figure out the final velocity you want to end the motion with in order to be able to start the next motion command, and a point to start decelerating if necessary to reach that.

Jerk is the derivate of acceleration.

@trish: except when it's not. See my question https://3dprinting.stackexchange.com/questions/10369/why-does-jerk-have-units-of-mm-s-rather-than-mm-s%c2%b3.

I have tried looking into the printer firmware to see how the Acceleration setting affects the machine movement. From what I could tell, Acceleration seemed to be implemented differently depending on what firmware I looked at and was also affected by what the settings used on the printer were.  I didn't look any further because writing different rules for every different firmware seemed like too much trouble. Maybe someone that knows more about this would know if most firmware uses the same calculations.
I suspect that the acceleration setting will not make a lot of difference to the time that the print takes.  They haven't seemed to make a difference on the small prints that I have done printing with slow speeds. If you were printing larger prints at faster speeds that had long paths where the nozzle had time to accelerate and decelerate then I suspect you would notice a bigger difference with the time.
I have found that the biggest error between the predicted time and the actual time has been the time the machine spends processing the instructions. When printing a model that has a lot of short movements that need to be sent to the printer and they need to be processed and calculated by the printer, I have noticed the printer will pause for a fraction of a second. It is not long enough to see a difference in the printers movements, but it is noticeable enough to hear. I suspect that on cheaper printers this would cause a bigger error than the acceleration.
If someone can find out how the acceleration settings are calculated by the printer and what G-code command can be used to get the acceleration settings out of the printer, I would be really interested in knowing more about this.

Thank you for your answer, I'll keep searching. Thanks for pointing me in the right direction: I can read the Marlin source code and search for the acceleration and jerk control parts, it will surely help, I didn't think about it! Thank you!

"I suspect that the acceleration setting will not make a lot of difference to the time that the print takes." <-- this couldn't be more wrong. Acceleration is the dominant factor in print time whenever the ration between print speed and detail size is high (i.e. fast speed setting or small details or both). So much that increasing the [max] speed setting by a factor of 2x is unlikely to make even a 5% reduction in print time.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Marlin - slowing down print speed
I'm currently using Marlin firmware (1.1.0-RC7 - 31 July 2016) and would like to experiment with print speed.
In the file Marlin_main.cpp I see in the process_next_command() function, there is a variable called current_command which (supposedly) holds the G-Code values for travel distance and feedrate(speed).
I'm expecting the actual command for travelling to look something like this:
G1 X50 Y25.3 E22.4 F1500

but I'm getting tied up figuring out exactly where it is. I'm assuming if I can change F1500 to F200, I can effectively slow down the print speed.
I'm aware of line 753 in the configuration.h file:
#define DEFAULT_MAX_FEEDRATE {300, 300, 5, 25}  // (mm/sec)

I'm not interested in setting a fixed slow feedrate but would rather change individual G-Code commands. Can someone tell me where I can find the actual G-Code command to edit it?

G-code commands are not in the firmware. You're trying to find something in the code that simply isn't there. Your slicer is responsible for generating a g-code file, which you can then send to your printer (either by printing from an SD-card) or using a host program like repetier or cura. The commands in the G-code file are then executed by the firmware, but they're not part of it.
How the commands are actually processed is not trivial, and it happens in multiple places.
The commands are processed in the process_commands of Marlin_main.cpp. Upon reading a G1 command, it calls get_coordinates to parse the X/Y/Z/feedrate values from the command. Next, the prepare_move function is called, which applies the necessary transformations (clamping to endstops, and the reverse kinematics if you have a delta) before calling plan_buffer_line (which is in planner.cpp) which does some more preprocessing and computes a "block" which is pushed onto the buffer. Next, planner_recalculate is called, which iterates over the blocks to find feasible acceleration patterns for them. Finally, an interrupt (in stepper.cpp, ISR(TIMER1_COMPA_vect)) periodically reads blocks from the buffer and actually sends the signals to the steppers.

I get that G-Code commands are not in the firmware I am just trying to find the exact part where they are fetched and executed. I would like to edit the fetched code it before it is executed.

@makeithappen This was not clear from your question. I've edited my answer to explain (roughly) how the motion planning works. I don't understand why you are pursuing the firmware route, if you want to change F1500 to F200 just do it before you send the file to the printer!


text:
RCBugFix what is it?
I've posted an issue on GitHub and I have been advised to load RCBugFix.
I have never used it and I do not know what is about.
What is it?
How does it work?

It refers to a specific branch of the current project, named RCBugFix. It's basically the most up-to-date, bleeding edge version of Marlin that contains all of the most recent fixes (it is more up-to-date than RC). However, as it's so up-to-date, it's also not thoroughly tested and possibly quite unstable.

The latest Release Candidate lives in the "RC" branch. Bugs that we find in the current Release Candidate are patched in the "RCBugFix" branch, so during beta testing this is where you can always find the latest code on its way towards release.

Use with caution.


text:
Shifted Layers on Replicator 2
A few weeks ago a shift between layers in the y-direction (from the front to the back of the printer) of my Makerbot Replicator 2 appeared.
All prints have some small shifts between layers, but if the extruder has to move large distances (e.g. when I print the same object near the front and near the back of the print bed), they can reach up to 2 cm or so. In those cases the extruder seem to move the wrong distance towards the back, resulting in a shifted layer, and then moves about the same distance towards the front. Therefore objects at the front of the bed often are shifted less than at the back.  Here's an example of some small shifts in the 3D benchy (printed near the front of the bed). They are particularly obvious in the hull and in the supports of the cabin:

I've tightened the pulleys, lubricated the rods, restored the device to factory settings and made sure the connectors are plugged in properly, but the problems persist. I also have the impression that the locations of the shifted layers are quite reproducible.
From what I understand problems such as these along the x-axis, are generally caused by broken cables, which are pressed upon as the extruder moves. However, the pulley for the y-axis doesn't move, so it seems unlikely that the cable is the cause.
Any help is very much appreciated!

There are a few questions floating around like this

Its not possible to say without seeing the physical machine but I would assume its a mechanical problem. Perhaps the belt or a gear is worn out missing some piece so it slips sometimes. Or the gear its a little loose on its axle. When machine is off you can move the extruder by hand and try to feel if it does so smoothly.
I would not think its electrical but first thing to do is to detach all cables and put them back, because its easy to do. Second is the dismount stepper motor and check that its gear is attached firmly. If there is a bad cable then flexing and pulling it slightly might escalate the problem so that its always broken, which can be a good thing since intermittent problems are so hard to find.
If its the stepper motor driver electronics then a new driver board is needed, last thing to try unless you have two machines and can borrow a part.
I emailed makerbot support once about another problem, I did get some advice that way.


text:
Z axis top brackets, of P3Steel, differ between v1.x/2.x and v4
I have been studying the differences between version 2.x and version 4 of the P3Steel frames - in particular the AC08 bracket at the top of the frame which secures the top of the smooth bars and threaded rods of the Z axis on both the left and right sides. Here is the laser cut parts, for version 1.x, showing the part labelled as AC08:

Version 1.x/2.x has the AC08 bracket with two holes, one for the threaded rod and one for the top of the smooth bar (from the lasercut image):

However, in version 4, the corresponding top Z axis bracket only has one hole for the smooth bar and just an indentation for the bearing which holds the top of the threaded rod (from Twitter):

Here is a close up of the diagram from the google docs repository, listed in the v4 section on the RepRap Wiki page for the P3Steel, which shows the bearing assembly just apparently "resting" against the indentation:

Here is the bracket shown with the bar and threaded rod (again, from google docs):

Does anyone know why the top of the threaded rod is not secured by a hole, as it was in version 1.x/2.x? It just does not look particularly well secured.
Under the list of version 4 changes, see 2. Frame versions, it is mentioned:

The extruder no longer hits the Z axis top bracket

Is this the reason why the change has been made?

I don't know about the specific design of this printer, but constraining the rods at both ends is considered bad practice. If the leadscrew is somewhat non-straight, then with both ends constrained the wobble is transferred to the carriage, whereas with the top end free the top end wobbles, transferring less force to the carriage. But that doesn't explain an apparently floating bearing.

@TomvanderZanden - I understand why that would be true for designs that employ, the less precise, threaded rod  Would that also be true for designs which use lead screws, instead, as they are meant to be of a higher quality?

What do you gain by constraining the end even if it was perfectly straight?

@tjb1 - I am not sure, probably nothing... But it seems to me (as a complete novice) that having a "loose" bar/rod end seems a bit insecure, and, for want of a better word, somewhat "untidy". I had hoped that by constraining the end, that wobble would have been reduced - which could be the case, although other issues would thereby arise (such as increased motor wear)...

@Greenonline, when you constrain both ends you take most of the movement you seen at the top and force that movement to the center (where the Z axis is riding).  When you leave the top open, the rod is only constrained by the motor connection and the nut on the Z axis which allows it to move at the top assuming your motor connection is flexible.  I really fail to see what you hope to gain by fixing the top?

I've just seen this right now, I'm Alvaro Rey, the designer of the p3steel v4 mod. The change was made, because with previous versions with the extruder homed, if you go up in the Z axis, the extruder motor could hit the Z axis top plate. So, in order to avoid that, I just changed the design.
The bearing in the z axis is not necessary but some people prefer to use it, in order to avoid wobble in the threaded rod.
Anyways, I designed a printer part to fix the bearing in the Z top plate.

Excellent! Many many thanks for getting back to me, Alvaro and answering this question. And welcome to SE.3DP by the way... it is a real pleasure to have a designer onboard! :-)  BTW, do you have a link to the new printer part, which will fix the bearing?

This is mere supposition on my part, and not a definitive answer. This was posted prior to Alvaro's answer.

In response, or - rather - with respect to, to the comments under the question by tjb1 and Tom, I have been reading around the topic, and found some interesting articles.
The excerpt below from "An exploration of the topic", backs up Tom's argument about constraining the rods at both ends being bad practice, and explains why it is so. Whilst acknowledging that a loose, or floating end, is still an issue that needs to be dealt with, the article also states that constraining the end is not really a solution, as it can create more problems elsewhere (I have added the bold highlighting to the relevant text):

Wobble is pretty simple. Because the lead screw is mounted rigidly to
the motor, it needs to be perfectly straight and square to the axis
its trying to move. If it's not, as the motor rotates, that offset will
be converted into an elliptical motion instead of turning in a perfect
circle.  In big CNC world, as the axis is normally bolted to a
huge/heavy table which refuses to yield to this movement, it results
in breaking your motor or motor coupling (weakest point in the
connection). This is what flex couplings are designed to fix – if you
can’t guarantee a perfectly square mating between motor and axis, you
use a coupler with flex so that any movement can be soaked up in
flexing the coupler and the lead screw/rod moves in a nice circle
without busting your motor or mounts.  This is true when you have a
good solid supported connection on the lead screw like you’d see on a
‘proper’ CNC.  However on the Solidoodle, as the top end of the Z-Axis
is ‘unsupported’ and its only connection to anything is to the table
via a tiny little nut, its free to ‘flop about in the breeze’ so to
speak. Even a small 0.1mm offset from center can result in a much much
greater ‘wiggle’ at the top of the screw clearly visible to the eye.
Throw in even a 0.05mm bend in the rod, and it gets further amplified.
Adding better support to the axis, through a taller nut, multiple
nuts, or supporting the end, would reduce the influence of this
wobble. You do however, risk moving it to something else entirely –
for example, making the lead screw rigid would mean that the forces
would end up moving the motor itself, potentially causing fatigue
issues with how its bolted to the sheet metal case (mine already moves
a fair bit and its ‘stock’... making the screw rigid would see the
motor having to absorb all that movement instead of half of it
disappearing in movement of the screw...). Solving the motor movement
by securing it ‘better’ to the case would mean that the movement now
gets soaked up in the motor shaft and bearing, leading to premature
stepper motor death.

Thus, when first posting this question, I had originally presumed that the earlier versions of the model would be superior: Due to the fact that the earlier versions secured the top of the z-axis screw mechanism, then that would reduce the amount of "flapping about" of the loose end, which in turn would result in less wobble. However, I had not bargained for the negative consequences (such as the increased motor wear, mentioned above).
So, is the reason that the top brackets of the z-axis, in the version 4 of the frame, lost their threaded rod/leadscrew top-end constraint, therefore to prevent premature motor wear, at the expense of exhibited wobble?

Nice research and learning.  I have run into this sort of design problem many times where what seems to make sense in concept doesn't work in reality because of imperfections like warp alignment or tolerance.  At the last company I worked at we used a LOT of flexible couplers.  We also used gears that had a floating center to deal with multi-gear couplings where gear alignment could not be assured.


text:
How to offset my probe so it's not hanging off the bed at 0, 0 position when printing
I had my printer printing fine when using the stock trigger switch as I used it to print the green bracket you see in the picture.

My problem now is when I do a print with the sensor, it moves to 0,0 position. However in this position the sensor is hanging off the bed hence there is nothing for it detect so it crashes into the bed.
As far as I can tell the nozzle is homing in the right place.
How do I tell Marlin the new minimum position it needs to be in so it doesn't crash into the bed?

It does not matter if the probe is not above the bed during printing as long it is above the bed during auto leveling. This can be done by proper settings in your firmware configuration, no hardware changes are necessary.

There are at least 2 options to address the problem that you have:

Adjust end-stops so that in 0,0 position Z-sensor would still hang above the printing table. This would reduce printing surface but allow perfect calibration
Mount extra metal plate at the table mount where it would not bump into printer parts and remain reachable for the sensor (perhaps with sensor relocation) when positioned at 0,0. This option requires extra space within table movement boundaries but saves printing surface.

These solutions are totally unnecessary as it is easily fixed in the firmware. Only during levelling the probe needs to be above the bed, it is perfectly fine to have the sensor off the bed during printing.

It is not a problem that the sensor is not above the build plate during printing as long as it is above the build plate during the auto bed levelling sequence.
Homing does not necessarily need to be the (0,0) coordinate. Usually, a printer homes on the endstop switches, from that coordinate an offset is defined in the firmware to move to the origin. This implies that (depending on the position of the sensor), the sensor may be outside the bed area when the nozzle is at the origin (0, 0)). Therefore, similarly, you need to tell the printer the location of the Z sensor with respect to the nozzle position in order for the printer to keep the sensor on the bed when levelling by setting boundaries for the sensor to reach.

E.g. for Marlin firmware the offset from homing to the bed origin is defined for an Anet A8 by:
#define X_MIN_POS -33
#define Y_MIN_POS -10

The values you should use need to correspond to the actual offset from the homing point to the origin of the bed (0,0).
When using an auto bed leveling sensor like you are using you should consider this remark:

If using a Probe for Z Homing, enable Z_SAFE_HOMING also!

Un-comment the proper line in the configuration file to read:
#define Z_SAFE_HOMING

This will make the printer aware of the sensor, and home Z in the middle of the bed (default behavior, but can be changed), so that your sensor is never off the bed when probing the bed for Z homing.
Furthermore, you need to set the offset values of the center of your sensor to the nozzle center:
 *   Z Probe to nozzle (X,Y) offset, relative to (0, 0).
 *   X and Y offsets must be integers.
 *
 *   In the following example the X and Y offsets are both positive:
 *   #define X_PROBE_OFFSET_FROM_EXTRUDER 10
 *   #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
 *
 *      +-- BACK ---+
 *      |           |
 *    L |    (+) P  | R <-- probe (20,20)
 *    E |           | I
 *    F | (-) N (+) | G <-- nozzle (10,10)
 *    T |           | H
 *      |    (-)    | T
 *      |           |
 *      O-- FRONT --+
 *    (0,0)
 */
#define X_PROBE_OFFSET_FROM_EXTRUDER XXX   // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER YYY   // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]

Where XXX and YYY are your actual values.
And set the boundary of the probing section:
// Set the boundaries for probing (where the probe can reach).
#define LEFT_PROBE_BED_POSITION 15
#define RIGHT_PROBE_BED_POSITION 190
#define FRONT_PROBE_BED_POSITION 15
#define BACK_PROBE_BED_POSITION 170

Note that the values should match your bed size!
And:
// The Z probe minimum outer margin (to validate G29 parameters).
#define MIN_PROBE_EDGE 10

Details on setting the boundaries of the bed to keep the sensor on the bed is described in question "How to set Z-probe boundary limits in firmware when using automatic bed leveling?".

If using marlin firmware center your prints.
In my case...
#define NOZZLE_X          8
#define NOZZLE_Y          -56

Then, set the Z-Probe offset from nozzle.
In my case the Z-Probe is 50mm behind the hotend.
#define SENSOR_LEFT        0
#define SENSOR_RIGHT       0
#define SENSOR_FRONT       0
#define SENSOR_BEHIND      50

Finally set the bed extra movement. As you see i added the 50mm's at the back of the bed.
#define XTRA_BED_LEFT     0  // Distance nozzle can move towards the left past X = 0
#define XTRA_BED_RIGHT    0  // Distance nozzle can move towards the right past X = 200
#define XTRA_BED_FRONT    0  // Distance bed can move towards the front past Y = 200 (Y=280 for large bed)
#define XTRA_BED_BACK     50  // Distance bed can move towards the back past Y = 0

This way once auto leveling, the probe starts with (0,0) and the hotend is 50 mm's in front and out of the bed.


text:
Power Over Ethernet (Pi Zero Mod)
I'm looking to make 20-30 IoT devices, with the pi zero.
The price point is perfect, the only downside is that it doesn't have an Ethernet jack and the power adapter is not included.
I found a mod that deals with both of these issues, however it would involve a lot of soldering. The mod takes a USB to Ethernet adapter and 48 to 5 volt converter and allows the device to be both powered and connected to the internet with just an Ethernet cable.
With 3D printing or Milling is it possible to make something that snap fits the components together and mitigate a lot of soldering?
Is it possible to print or mill something that will do the 48 to 5 volt conversion?
Components:

Two male micro USB heads
48 to 5 volt converter
Ethernet adapter board
Pi zero

Unless I misunderstood your question, this is totally impossible with 3D printing. I voted to "close as unclear what you're asking" (though that might not be the best reason) because this question is based on a total misunderstanding of what 3D printing is.

While it is not easily possible to print the solider connections, it would be possible to 3D print a mount that holds your 3 components together on a single surface.  Wiring would be separate from this though.

Hi, Derek, I find you question very intriguing! However, you are probably a few years too early in asking this question, since the current state of 3D printing (at least the kind we typically discuss on this site) just isn't there yet. I am therefore putting your question on hold for now since most answers would be mere speculation. Please let us know if you would like your question reopened.

3D Print A Solderless Circuit Board
I think this was the solution I was looking for, unless someone else knows a method that's cheaper, faster, safer, etc.

Basically your printing a component mounting chassis and using brush in traces to make a circuit.  While this works you really are not printing a circuit board and can achieve the same concept by just painting traces on a perf board.  Another option to the paint on traces is rolls of adhesive backed copper trace.  But to use either effectively long term with reliable quality in a data circuit you need to solder.  There is conductive filament which added as one of the feeds on a dual extruder can print a circuit for limited power runs.


text:
Is cutting the arm off the Z-axis switch a good idea?
We all know (or should!) that the repeatability of common spring-arm limit switches is crappy at best.  I'm looking to build & install one of the precision height adjusters for the Z-axis limit switch, and noticed a post on some forum suggesting removing the arm and triggering the switch button directly (e.g. with a screw end).
Has anyone tried this, and if so has the repeatability of Z-homing improved any?
Edit
Sorry -- this is a stock Prusa i3, which depends on physical contact between the vertically-moving subassembly and a microswitch mounted on the frame.

Related question here http://3dprinting.stackexchange.com/questions/1109/which-endstops-are-most-precise

While I haven't seen this on a Z axis for a printer personally, there is no reason it wouldn't work, and would improve your repeatability in theory. Removing the arm on the switch is taking away the lever. Going back to simple machine mechanics, the lever gives you a larger range of motion in which the button could be triggered, with the tradeoff that you get a larger target to hit. How much of an improvement depends on the exact switch, where the button is compared to the axis of the switch, and how long the switch is.
My Shapeoko 3 CNC router has a switch for all three end stops that do not have arms, and my Original Prusa i3 mk2 has switches without lever arms on X and Y axis endstops, so there is is no reason it won't work for your i3 Z axis, you just need to make sure you can accurately hit the small button on the switch.

Exactly.  You remove the lever and the lever potentially bending/wearing on the plastic hinge over time.

My only thoughts are to the delay between when the switch is pressed and the printer stopping. Also the risk of the mechanics getting out of place and the head crashing.

Those are both separate issues outside the scope of the question. The question did ask about the mechanics of securing the items around the switch, just if it can be done, would it help improve the printer accuracy.

No. Buy a better switch if it's an issue (see below).
You would need to have some very tight tolerances to hit that micro button with whatever your arm is. If you had a machine with good tolerances you would not be considering this modification. That alone is why I would say this is not the greatest idea.
Following it might work if your Z is connected to the hot end and smashing into the bed. But I suspect you will still have a myriad of issues, such as the switch getting out of position enough to cause the head to crash into the machine. The real question now is how many rotations of the Z axis could happen if the printer is moving at maximum speed and the button is pressed? That metal arm is your grace period. Now your printer is potentially smashing into the switch.
Lastly, just get a switch with a more solid and less springy metal tab.
The real question is whether there is actually a variance caused by the metal arm? I would suspect that it hits the switch very precisely, consistently and within an acceptable tolerance. Removing the arm will buy you little. Replacing it with a stiffer-arm switch might serve you better.

I'm not convinced.  Take a look at some of the advanced Z-stop designs at Thingiverse.  A solidly-mounted lead screw is not going to move in the X-Y plane and thus will always be lined up with the button. Similarly, these designs lock down the microswitch position far better than the stock Prusa mount.

Well, you asked. Sorry I didn't say what you wanted to hear. That said go for it and write a blog post for the community :-) You do realize I have no idea what your setup looks like? If a Mendel max went with this it would be a disaster.

I tend to be biased towards quantitative answers, and yours, while a fair opinion, didn't have any tolerance data or personal experience. Sorry if I sounded dismissive.

@StarWind Your answer is a very resounding "no", while I'm sure it isn't quite that black and white. Are there maybe some situations in which removing the arm does make sense? As it stands, your answer reads like a rant on OP's printer.

I would note that you explicitly asked for an opinion answer when you have a title asking "Is x a good idea?" That does not lend itself to a quantitive answer.

@TomvanderZanden It is hard when there is no information of his printer. I stand by my answer and question your helpfulness in your reply.. It seems Jexoteric is more on the ball.

@CarlWitthoft I do want to address, if you want "quantitative answers" then you have to provide better questions. "Is this a good idea" is not a question that is formatted for this type of answer. Now Something specific such as "What are the down sides of removing a level" or better "What are ways I can increase precision in my Z axis" will yield what you were really wanting.

@TomvanderZanden With the information provided I do feel No is a valid answer. Following you are correct I do not address the pros in this case. I feel the risks outweigh the benefits. I do not believe this is a rant but I will keep it in mind and simply flag vague questions in the future.

The answer to this question is, no, taking the lever off will not do anything improve repeatability, but it will improve accuracy of the Z Axis. I have tried both ways, actually 4 with a Duet Wifi. 2x 8mm Leadscrews, 0.9 Stepper, Calibrated at 800 Steps per MM.

Full lever size: After actuation I have to baby step up my Z Axis 13 x 0.05mm to let go, and then 13 of the same baby steps back down to actuate it.
Short lever: After actuation I have to baby step 0.05mm 10 times, 10 more times to let go.
Small enstop button only: 3 x 0.05mm baby steps is all that is needed.
Larer button from roller lever endstops: 10 x 0.05 baby steps needed both ways.

The large endstop button only surprised me, thought it would be more reliable.
It is a bit more difficult to make the small button approach work, and it will increase the likelihood for failure and machine damage though.


text:
How do the E commands in G-code work, exactly?
I've tried looking online but haven't quite found the answer to what I'm confused about, exactly. Consider the following 3 lines of G-code:
G1 X129.000 Y126.322 E7.90758

G1 X128.349 Y125.707 F7800.000

G1 X128.476 Y125.548 E7.92045 F1800.000

Does the absence of an E command in the second line mean that no material is to be extruded from line 1 to line 2? As I understand it, the E parameter controls how much material has been extruded up to that line.
The reason why I am asking is because I'm trying to understand on the code level how to identify when a printer will travel without extruding any material, in the case of moving in the Z direction, or if you are printing multiple disconnected parts in one print. Since none of the Z lines seem to have any E commands, I'm inclined to believe that the absence of an E command means that when moving to the given position from the previous line, no material will be extruded. I've tried quite a few different queries online to try to discover if this is the case, but haven't found a simple answer, so I was hoping someone on this board could enlighten me.

Yes, the absense of an EX.XXX (or an EX.XXX with the same value as the previous one) means nothing will be extruded during the move. The extruder is treated as an imaginary fourth axis and works exactly the same as any other axis: if in a G1/G0 no new coordinate for it is specified, it retains its original position.

In that case, what is the point of a segment of code such as this? :
G92 E0
G1 X55.571 Y120.585 F7800.000
G1 X55.571 Y103.100 F7800.000
G1 X55.571 Y96.900 F7800.000
G1 X55.571 Y79.415 F7800.000
G1 X63.907 Y77.129 F7800.000
G1 E1.00000 F2400.00000
Why would it make 5 movements without any extrusion?

Sometimes you don't want a travel move to happen in a straight line. Generally, to avoid stringing, you want the majority of a move to happen "inside" a part, so that the smallest amount of the move is through free air. This means the shortest/best path from one point to another is not necessarily a straight line.

Sorry - what is stringing? Is that like "oozing" or "leaking" kind of?
I looked it up - gotcha. That makes more sense now. Thanks.

If you want to move from one side of the print to the other, unless the current layer is convex, the straight line from one part to another might cross the boundary of the current layer being built. This results in stringing and blobs (extra material on the outside of a print) since a little material oozes out of the nozzle (even when you're not extruding). By following the contour of the part (and not moving in a straight line) you can prevent (or minimize) the distance traveled on the outside

As a related question that I don't think warrants its own post, what is the significance of these 3 lines?
G92 E0 -- G1 X124.746 Y125.952 F7800.000 -- G1 E1.00000 F2400.00000
From what I understand, the first "resets" the counter for E. But what about the 3rd? Does this just extrude in place without moving? Seems a bit odd...Especially since an extrusion increment of 1.0000 is much greater than we'd tend to see in any other single line (skimming through the file I'm looking at, the highest seems to be ~0.3).


text:
Autobed leveling doesn't compensate
I finally manage to setup the ABL on my Prusa.
I run G28 to home all axes (for z I use the same probe used for ABL). Then
I run G29 E ( I use E because otherwise for some reason I have not understood yet, Z does not lift during probings) probing 4 points on the corners of the bed.
finally I get the map of the bed:
Bed Level Correction Matrix:
+0.999999 +0.000000 +0.001233
-0.000005 +0.999992 +0.003905
-0.001233 -0.003905 +0.999992

and after that, the print starts.
The first layer looks perfect however I have not seen Z moving a single step along the printing.
Any hint about what to check? Is the obtained map indicating that the bed is already too leveled to act on any compensation?
UPDATE
I printed a 180 mm diamater cylinder and the Z axis is not compensating the 1mm difference from edge to edge of the bed.

If it ain't broke, why fix it?

@TomvanderZanden, Lol....are you saying that is too leveled to call for Z compensation?

I found the issue. As I mentioned in my question UPDATE, trying to print something that cover the full bed, the ABL was not working.
The issue was the Gcode I added after the G29.
In fact for some reason I added a G28 X0 after the G29 and that basically cancel the data acquired in the G29.
I learned something new, do not use G28 after G29!
Now it is working nicely.

I believe that the matrix is shown transposed from how it should be, but that doesn't affect the answer. The compensated Z position is derived from the original (X,Y,Z) position by multiplying the corresponding vector with that matrix. This means that the new Z position would be
Z' = 0.999992Z - 0.001233X - 0.003905Y

If you have a 200 x 200 printbed, a diagonal move from one corner to the other would correspond to a 1mm change in Z-height. This should be noticeable, but if perhaps you're printing something quite small you might not notice it.
Though, if your first layer is perfect, I would see no reason to mess with it.

Agree with you about "don't fix what is fine" but if I installed the ABL is to have it working. I tried printing a 180mm diameter  cylinder 2 mm thickness. Since there is 1 mm change from corner to corner on Z, the ABL should have compensated. Nothing is happening. I do not see the Z working on the same layer from one edge to the opposite.


text:
Installing Slic3r on Kubuntu 14.04 with NVIDIA
I am running crazy trying to install Slic3r on my Kubuntu 14.04. It is a fresh Kubuntu and I downloaded the Slic3r package from them.
At first it worked well but then I changed the display driver to NVIDIA instead of the default Nouveau. I have repeated this operation a couple of times and I am almost sure that the NVIDIA driver screws up my system.
I have read and followed several "SOLVED" posts but none of them gave me a solution.
Any ideas?

Is this really a suitable question for this site? It's only marginally 3D printing related, and might be more suitable for a place where they deal with troubleshooting Ubuntu drivers.

I am having this problem only with this application, which is mostly used in the 3D Printing world.
This is the reason why I ask here this question.
There may be some other member having faced the same problem with this application.

Does the command line functionality of Slic3r work?

I have upgraded to Kubuntu 16.04 and it works after git cloning it.

There is a huge problem with any linux distributions and Nvidia drivers. I have tried countless times to get that driver to work but it crashed my systems time after time. If your slicer works with the default driver i would not try to change it. If it doesn't then you may have to go to windows where the driver is guaranteed to work. I know this is not the answer you are looking for but unless you can code a new driver to work for Linux thats the only solution.

Yes John!  Unfortunately I got the same conclusion after so many trial and error tests.
Surprisingly Cura seems to work so far and I'm sticking to it.


text:
Does the amount of figures on the board matter?
When 3D-printing on an 20*20cm, I've heard that the quality of the printings get worse if I fill out the board... Is it true? Should I keep it to small amounts at the time or doesn't it matter?

No, that's not (entirely) true. There might be some loss of quality if you print multiple objects at once, because when the printhead "hops" from one object to another it might leave a mark or ooze out some material. Also, a large number of retractions in a short period of time might lead to inconsistent extrusion.
However, none of this is particular to "filling out the board" as it happens even if you print only two objects at a time (or even when you're printing only one object with multiple islands).
It all depends on your printer (and in particular how well it handles retractions). If you're willing to do a small amount of cleanup afterwards (to remove the strings and blobs) then printing multiple objects at a time is completely viable.

This would depend on what type of printer you have and to some extent, the design of the printer.
Cartesian (i3 style) - Should not have any issues printing a full bed.  I have seen designs and variants of printers where the designer did not make the belts parallel to the travel axis (placing the mounting point on the carriage higher/lower than where it come off the pulley/idler) so as you move closer to the pulley/idler the angle starts to change dramatically.  While not extreme, this will introduce error in that axis.
H-Bot/CoreXY - Should not have any issues with a full bed as nothing is changing depending on hotend location.  I know there has been some concern about keeping the gantry square on H-Bot designs due to the way the motors pull when moving in certain directions but I believe that applies to the entire print area.  Both designs will have issues if belt travel is not parallel to axis travel as stated in the cartesian section.
Delta (Kossel/Rostock) - Have a varying axis resolution depending on the location of the hotend.  As the hotend gets close to an individual tower, the carriage on that tower has to move very little to move the hotend which depending on your pulley selection could affect your print resolution.  The sweet spot for a delta in terms of speed/resolution is the center of the bed.  The center is not the highest resolution but is the largest area where the resolution is relatively stable.  I've tried to summarize all that I could from here, but I've included the link if you wanted to read more about it or see the graphs.
Finally, as Tom covered. All three above will have issues with the entire bed depending on your hotend calibration and how well your printer was built. Delta's are fussy about build quality but you will solve most issues on a Delta if you level the bed before using any kind of bed leveling/probing.

I don't think the axes not being square cause issues the further you get from the bed center. A calibration cube being printed in one corner of the bed will be exactly the same as one printed in the center. The axes being non-square will only cause the cube in the corner to be printed at a slightly different location with respect to the one in the center than it should.

I guess I was thinking more of 10mm cube vs 100mm cube but that doesn't apply to filling the bed with pieces so I'll remove it.

Just to add to the other answers already here, I've also had problems with layer adhesion when filling up the print bed on an extrusion printer.  The longer the print head spends working on details around a single layer, the more chance the layer has to cool off before the next layer gets started.  I've started to suspect that layers that take longer to print end up with less adhesion to the next layer.


text:
While filament loading extruded filament wiggles
I cleaned up my Flashforge Creator Dual tonight, and loaded some transparent ABS prepping for a print.  The filament extruded fine, then started to wiggle, then became fine again.  Hot end is 0.4 mm and was heated to 230C.  What sort of steps should I take to troubleshoot the issue?  Has anyone seen this before?

Do you actually have a problem while printing? How filament comes out during loading/unloading isn't necessarily indicative of how it comes out during printing. I don't think you actually have an issue you need to worry about.

It might be similar to this issue (where teflon tube wasn't installed what caused softening filament inside heatsink)
Please check if your extruder is equipped with proper pipe inside (inner pipe diameter).
But the most probable cause is that a pipe had slide out so filament has enough room to get soft and to form such shape going out. Please take a look also here.
Here is a situation and its evolution.

fig. A:
1. filament
2. teflon tube (well positioned)
3. heatsink
4. nozzle
5. extruded filament
fig. B:
6. slided out teflon tube
7. empty space (heat)
fig. C:
8. bent filament
fig. D:
9. teflon tube
10. no extrusion
How it happens?
Teflon tube is usually well positioned so everything is fine in most cases. Sometimes because of poor filament (not-constant diameter) or because of bends on filament, teflon tube is slided out os its place while retraction. It goes on and on, up and up (fig.B)
Once tube is extended that much so filament starts to bend in empty (heat) space (fig.C) It increases the effect of sliding out teflon tube just because of bend (it works as a hook). But it can still work. Teflon tube can even be pressed back inside the nest.
Now because the empty space is heat then filament starts to melt (for example when there is no extrusion for a second) it becomes soft. When filament is soft enough it doesn't extrude as the force to press it throught the nozzle is too high for such soft material so filement definitely stops extruding itself. (fig.D) This situation cannot be fixed automatically. There is a need of user intervention.
Now you know why some extruders has a rim (or collar) on the top of heat barier tube. It secures a teflon tube from sliding out.

Reseated the teflon pipe, and loaded about a meter though the hot end.  The problem is gone.

@EvilTeach good to hear you've managed that. good luck

@EvilTeach I've added a picture and description why it may happend again :P

@darthpixel Perhaps that wasn't the best way to put it. My apologies that I was a bit harsh. In any case, this is now a very good answer (though perhaps you could expand on "similar to this issue" to "similar to this issue, where the teflon tube was not installed..."). I'm actually surprised that the teflon tube was the cause here, as from the photo it looks like the wiggles appeared after extrusion and not before.

@TomvanderZanden (i also apologize) it looks like filament becomes a bit soft before extrusion (maybe not quite constant) and it causes it to cool down in such strange way (shape) :) it may be conected to hot end heating cycle. So it wiggles and not-wiggles. Maybe when filament gets a bit soft it is compressed a bit on nozzle entry. That's just spoken thoughts.

If the filament displayed in the photo is the result of unimpeded extrusion from your nozzle, you don't have or have not described a problem. Filament extruded from a hot nozzle will react to many things. If a slight air temperature change is created on one side of the extruding filament, it will cool faster than the other side and curve in the direction of the cooler temperatures.
If there is a bit of old filament on the tip of the nozzle, it can cause the filament to hook back on itself, creating an interesting squiggle of filament before the weight is sufficient to cause it to drop.
A typical 3d printer problem is related to the results of a print or an obvious mechanical failure. Wiggly extruded filament is not a symptom of a looming failure, unless you have other indicators.


text:
Printing a non-self-aligning caged deep-groove ball bearing
I've recently designed a non-self-aligning caged deep-groove ball bearing. Now I'd love to get one 3D printed.
However, assembling those can be tricky and I highly doubt it's even plausible to print them. All the components themselves can be printed without a problem, but I'm not sure whether I'll be able to put them all together in the end.
What are my options?
FDM printers are probably out, although it would be great if I can find a way to use those. Would an SLA or perhaps an SLS printer be able to pull it off?
Of course the thing still has to work (move) in the end.

Two aspects of your question can immediately be addressed, one with much less certainty than the other.
If you were to print the indicated parts using PLA on an FDM printer and assembled as much as possible up to say, the outer bearing ring, you might be able to use boiling water to soften the ring with boiling water enough to get it around the balls. It's also possible that the deformation will effectively destroy the usefulness of the part.
On the other item, SLS is virtually perfect for this type of part. The un-sintered nylon powder provides positional support for all of the other parts being sintered. When the print is completed, the powder is blown out with high pressure air, freeing up the individual components as per the original design.
Be advised that there is to be expected some shrinkage of the parts which will affect any segment of the component that has tight or close clearances.
From Shapeways site regarding SLS printed parts (Shapeways)

Executive summary:
maintain a wall thickness of at least 1mm,
accuracy is 0.1mm,
always keep a clearance of 0.6mm
and parts may have a deviation of 0.2mm.

When designing something mechanical that has to be 3D printed or when adding a mechanical feature to your model there are several main considerations.

Also listed in the above link are the considerations of enclosed parts. Each of the balls in the bearing design may or will be printed as a hollow sphere filled with nylon powder. The bearing rings will also be printed as shells, unless appropriate steps are taken to make them solid.
By the same token, if a part need not be solid and can be designed with holes to "drain out" the un-sintered powder, the cost will be reduced accordingly.

A clearance of 0.6mm with a deviation of 0.2mm is going to get problematic with parts of a small size (and since most bearings aren't that big, the details get small very quickly. I guess I'll have to re-design the plastic bearings in less-conventional ways.

How about using a dual nozzle FDM printer with ABS and HIPS?
You can use HIPS to print any support materials or any spacers that you need.  The HIPS can then be dissolved using Limonene.  Limonene will not do much of anything to ABS.
Similar ball bearings have been printed like this before.  I am not aware of any reason this would not work for you.  Other types of ball bearings have been printed in FDM with no support material.

I didn't know such printers did exist, it definitely sounds interesting.

There is a caution regarding using Limonene and ABS, as part of the chemical structure of ABS is affected by Limonene.  Users of this method are cautioned to keep the immersion of ABS in Limonene to a minimum.

Well, there are other soluble supports.  That option does work but there may be other options besides HIPS that might work alot better with less degredation of the main material.   @fred_dot_u How do you feel about PLA and PVA? http://www.3ders.org/articles/20120128-dissolvable-support-material-used-for-3d-printing-gearbox-and-hilbert-cube.html

I've been using PLA with PVA recently, as I have a dual extruder printer. If I can get the PVA to stick to the build plate, the results are good. The bearing design would be a challenge for my slicer, as it would be difficult to designate the internal spaces to have support placed. People print bearings of this sort in place without supports but the results are somewhat crude. SLS would be the only way to get even moderately useful models of this nature.


text:
Converting Injection Molded STLs to printable STLs
I bought a 3D printer kit a few years ago, and it's been working pretty well, the kit was made with injection molded parts. -- It's similar to a Huxley, and through the years, it's started to turn into a repstrap as I've repaired it with non-printed parts.
The parts are all open source and the STLs are provided by the maker, but they're optimized for injection molding, so instead of having flat surfaces, the surfaces usually have a lot of extra support going on -- here's an example of what I'm talking about:

Mind you, this is one of the simpler parts. -- But mostly I just want to clean these parts up -- make the edges flat by "filling in" these gaps (because: 1. it will print easier, 2. I can let my slicer handle the infill for me, etc.)
Currently, I've been using mostly TinkerCad and trying to make little rectangles and other shapes and boolean union them together to fill these gaps.  But this is a lot of work, trying to get it just right without covering up important gaps or leaving pockets in the middle of the part is very time consuming and error prone.
Additionally, I'd like to be able to make minor beveled edges so that the parts are easy to peel up. -- I currently do this with boolean subtractions of a bevel shape I made (again, in TinkerCad).
Is there any software out there that makes these options easier? -- What's the easiest way to fill in these gaps and add beveled edges? -- I'm hoping to spend no more than 10 to 15 minutes per part.  (Right now, it's hours.)

I am voting to close this question as primarily opinion-based. Although @fred_dot_u made a valiant attempt at answering it objectively, ultimately there are still too many valid answers (there are hundreds of CAD packages that can do what you ask) without a good way to distinguish which is "best".

Although the foundation of your question is aimed at getting an opinion, I find nothing wrong with that, as long as answers are provided with an equal foundation based on facts.
I'm a fan of Meshmixer (free) but it's not well suited for this project, in my belief (opinion) as it's primarily aimed at organic modeling. On the flip side of this point is the fact that you have a working STL from which to build. Meshmixer will enable you to extrude the portions that sit below the surface level and create a flat plane. You can also "bridge" the elevated portions into a plane, but only if you remove the lower panels first. Leaving them in place creates an unprintable model.
Of course, Meshmixer has its own learning curve.
Along the same train of thought, Blender (free) is suited for performing similar tasks, again aimed at organic models. Again, starting with your STL makes it less of a complication.
Unfortunately, in my opinion, Blender's learning curve is substantially steeper, as the program does many things unrelated to 3d printing. It has spectacular control over the model and if you are able to learn the necessary controls and sequences, there isn't anything you can't do with it.
Meshmixer is more intuitive than Blender and therefore easier to learn. You may also find it easier to find YouTube resources for Meshmixer actions than similarly for Blender, mostly because the phrasing of your search will be clearer with Meshmixer.
As an example, one would create face groups of your STL. Various segments would then turn colors. You select the depressed face group and say, "cheer up" then delete that group. Using the appropriate tool, which currently escapes my alleged mind, you'd then bridge those faces remaining after the delete. What was once a shallow pool becomes a flat contiguous surface.
I would recommend using Lynda.com tutorial material if you can find it. There is also a resource called Honeypoint which somewhat specializes in Meshmixer tutorials.
Not out of the question is to engage the free Fusion 360 program and use all those YouTube resources, among others, to import your STL and create extrusions and modifications you require. Our local library has an agreement with Lynda.com which provides free access to Lynda.com's tutorial library. Conveniently for me, it has a great collection for Fusion 360.
I've become so accustomed to manipulating models in the above software and other programs that I attempted to rotate your image to see the other side! If this is one of the simpler ones, you have quite a job ahead of you!
Be sure to use an STL printability checker program to ensure your resulting models are workable. Meshmixer has that feature built in and a couple online services will repair your model free. One service I attempted to use destroyed the model, while the Microsoft version did not, but created a .3MF format. That added one more step to get it reconverted to .STL, but the results justified the effort.
Good luck


text:
Alignment of dual Z-axis steppers
My newly built ANET A8 has dual Z-axis steppers (and two threaded rods), but only an end-stop on one side. Am I missing some detail for ensuring proper alignment of Z as the extruder moves along the Z-axis? I notice there are mountings for a 2nd end-stop, but nowhere to attach this on the MCU board.
It seems that even after I check the leveling, there is scope for the two steppers to get out-of sync once the servos are turned off - is this something to worry about? I realise that during a print run, if I start with good alignment this should stay good.
I've only managed about 10 minutes of printing so far, and everything seems to work, but this is my first printer, so obviously I might have missed a vital step in the instructions quite easily.

All the Prusa-based designs I've seen have only one end stop.  While you are correct that it's theoretically possible for the two Z-drives to get out of sync, it's very unlikely in practice (barring serious friction, binding, etc.).
But even if it happens, remember that the endstop microswitch is only used to keep the extruder assembly from crashing into the print bed.  The stepper motors do not have shaft encoders, or any other position sensing mech, so if they were to get out of sync, there'd be no way to know this.
The reason there's provision for a stop mount, on both sides, is simply to make the physical parts of the frame the same.
That said, it is important to check the extruder support assembly to verify it's level as you build the printer - "level" meaning both supports are the same distance from the screw-drive shaft couplers.


text:
Z-axis steppers and bed alignment problems
I've actually solved this, but I think its still a useful question which I don't think is easy to answer with existing questions.
As soon as I'd built my ANET-A8 (Prusa i3 DIY kit), I found I was having problems with the extruder crashing into the bed. Although I thought I'd adjusted the bed leveling OK, the calibration seemed to keep getting messed up.
I tracked this down to two factors. First, I was winding the extruder head up some distance before loading the filament and starting a print. Second, at roughly half-way up the axis, the right-hand thread seemed to be getting stuck (more often when moving up than down).
What wasn't clear (and not mentioned in the building instructions) was what might cause this problem.

Is it correct to use the prusa tag for clones?

(thanx for creating it)

@SeanHoulihane There's no such thing as a "clone". The Prusa design is open-source and in my opinion, "Prusa" refers to any number of designs.

@TomvanderZanden Thanks for clarifying - I edited the tag :)

In many open source projects the name is trademark, while the designs are copyleft, the company still wants to maintain their brand (and reputation). However, I don't know Prusa's feelings on it.

So after reading the instructions more carefully, ANET do cover this in their operating instructions under troubleshooting. On closer inspection, I realised that the brass nut following the right hand thread seemed to be out of alignment with the stepper at the bottom. Fiddling with the flexible coupling helped a bit, but what I needed to do was place the assembly at the tight point, slacken the 3 bolts marked SHCS in the diagram, then tighten them again. I was expecting I might need to open out the holes, or re-make the white (factory printed) part, but this wasn't necessary.

ha! so there is caret nut :) it's good to hear you've solved it (btw: my suspicion about 1. assembling according to instruction was priviledged) ;) and 2. that there is a problem was priviledged too)

I don't think caret nut is a real word. It is probably a mistranslation.

@darthpixel - I would wager that caret actually means carriage, as in the x-axis carriage. Mostly because of the phrase in Tom's answer, which can eventually hang caret, which probably should be which can eventually hang [the x-axis] carriage

where did you find this under troubleshooting, I think Im having the same issue. Can't find what you are refereing to.

Found it in the A8 Operation instruction-1.1.pdf file provided on the SD card, page 66

I assume you did everything according to the instructions but here is a checklist of what could be possibly wrong:

Friction - check if you can rotate/move parts without lot of resistance
Screws - check if screws on couplings are tight and they don't slide over a shaft or thread
Stepsticks - check if they are cooled properly and similar (as there are two of them)
Carriage nuts on threads - check if they do not slide out of their nests while [the x-axis] carriage goes up
Filament - check if filament unrolls without resistance which can eventually cause [the x-axis] carriage to hang.

IMO #2 and #3 are the most possible cause

caret nut is a new term for me.

well - here is top left elem (prusa i2) where such nut sits http://3dprinter.my/cart/images/Reprap%20Prusa%20i2%20Printed%20Parts%20Black.jpg more or less the same is in prusa i3

I don't think caret nut is a real word. It is probably a mistranslation.

With (2), I had the spindle and the thread pressed tight together, the coupling was unable to bend...

@TomvanderZanden - I think caret should actually be carriage

@SeanHoulihane the issue is to have screws properly screwed

@darthpixel - Would you happen to have a source for the image and the checklist? Just to check the intended meaning of caret. I have downloaded the Anet troubleshooting guide but it was not mentioned in that document.

@greenonline checklist and image source, both come from my head :) let's forget this caret thing, I've just changed it in my ans

From http://3daddict.com/anet-3d-printer-common-mistakes-fix/
The motor shaft and the threading rod must have space between them in the flexible coupler.
That means unlocking the coupler from the motor shaft and moving it up a bit, in the end the threaded rod nearly touches the printer top hole instead of having like a 1cm gap.
This will allow the coupler to flex, and thus should handle small misalignments of the brass nut.
That's about point 2 of @darth-pixel answer, but before locking the screws, make sure to have empty space between rod and motor shaft


text:
Does a 5 axis 3D printer have any benefits over a regular 3 axis printer?
5AxisMaker has a 5 axis CNC/3D printer combo machine.  I understand what the benefits of 5 axis are for CNC machines, but are there any benefits for 3D printing.  In this video they show the printer printing on an angle, but this could have been done with just linear layers.
Would there be any cases where a 5 axis printer would preform better than a 3 axis printer?

One aspect of having this level of control with 3d printing of a model is the removal of the need for supports and the attendant post-processing. In the case of the model shown in the video, some effects are created by printing the continents in a conformal manner that would otherwise be impossible with conventional 3d printing. Cosmetically, the results of the "5d" printer are superior in this example.
There would also be some structural benefit for models with high organic content, that is curves and bulges, as opposed to orthogonal designs. Even with orthogonal designs, one can achieve stronger parts with cross-layered plastic in all directions, rather than being limited by x and y filament layers.
I see on the web site that one can exchange tool heads as well. One could print a 3d model, layering the filament on all the surfaces, then use a tool head change to a milling bit and smooth the surface under CAD control.  Alternatively, one could use foam or wood and mill a model shape to be covered with a 3d printed material.
Considering the relative novelty of this product, it's likely that many aspects of the creative utility have yet to be discovered!

RE the "relative novelty": the toolchain for 3D printing with more than 3 axes isn't there, so the only way you can take advantage of additional axes if you hand-craft the G-code yourself (or write custom software to generate it). Without a specific idea of how you're going to use your additional axes, they will be useless.

It would be interesting to see the software used by the OPs product manufacturer. As that product incorporates both milling and 3d printing, it is going to have severe requirements regarding the user interface.

Slicing prints for printing in 5 Axis is not going to be simple with the current software. If you look at the web site for the 5AxisMaker you can see they are using Algorithmic modeling software (Grasshopper). You would probably need to buy this as well and then spend a decent amount of time learning how to use this software as well if you were going to try and take advantage of the 5th Axis for 3D printing.
I have only seen Grasshopper used for 3D printing and 5 Axis used in research papers.


text:
How can I convert .STL file to .OFF to use in CGAL?
I want to skeletize the surface mesh. For that I need to export .STL from Solidworks and then convert that into .OFF file to be able to use it in CGAL library for skeletonzation. How can I do this?

Look at MeshLab  it imports and exports both .stl and .off   I have not used .off so not familiar on how well MeshLab handles them.  MeshLab is open source.

If you can handle a single intermediate step, you may find that OpenSCAD will perform as required. As a test, I created a cube 10 x 20 x 5 within OpenSCAD.  I kept the model simple, hoping the code generated would be short.
The results:
OFF

8 12 0
0 0 5
10 0 5
10 20 5
0 20 0
0 0 0
10 0 0
10 20 0
0 20 5
3  4 5 1
3  0 4 1
3  0 7 4
3  4 7 3
3  0 1 2
3  7 0 2
3  3 6 4
3  4 6 5
3  5 6 2
3  1 5 2
3  7 2 3
3  3 2 6
In your example, it would be necessary to use the import_stl feature of OpenSCAD, then render the model. Once rendered, use File, Export, Export as OFF to create the file you need.
I cannot provide certainty of the exported code, however, as I am not familiar with the format you seek.
Openscad

I would suggest using Meshlab. You can convert from .stl to .off and you can try other operations for quick results too, instead of diving to code for mesh manipulation.

There is the Free online tool to convert STL to OFF within second: https://cadcook.com/stl-off/
I used it for stl conversations..

authors: พุด แก้วพะวง


text:
Firmware Choice: Marlin vs Repetier vs Other
We are custom building a Cartesian 3D printer to be used in a production 3D printing environment, with the following requirements:

Intended Z resolution 0.13mm;
Dual extruders (primary + support material);
Four spools (two per material with y connector, perhaps add auto switch-over functionality later);
Camera;
Onboard 11" touchscreen for control & interaction, run by a Raspberry Pi 3;
Custom board based on ATMega2560 to control the printer;
Printer should gracefully handle conditions like "out of material", etc.

Question: How to select firmware?
Are there notable differences between the primary firmware options (Marlin/Repetier) for this setup?  From the google code groups, I understand the Repetier has a much cleaner code base, and apparently gives smoother physical performance.  Yet, from what I can gather, 95% of the community uses Marlin - is that correct?
Given that this printer will have the Pi3 to control "higher functions", is it worth considering a compact firmware like Teacup?
Edit 12/April/2017:
For others looking: After much review, Klipper was selected as the most forward firmware - all kinematic calculations are done on the host computer, instead of on the microprocessor, resulting is significantly faster/smoother stepper movement.

You say the printer is intended to be high end, so what do you mean by good speed/resolution? Do you have any particular figures/ranges in mind?

So you have a custom controller board...you know you will need to heavily modify the firmware to get it working right?  Anyway, I voted to close because you didn't specify what you were looking for in the firmware.  All of them easily hit your standard goals at this point.

Besides that high-end printer and Atmega sound mutually exclusive to me, many if not all open-source firmware should work after proper configuration. The only exception is some rarely used printer mechanics, like SCARA

Thanks, I have modified Marlin and it is working on the custom board now.  Just trying to understand if there is a significant difference between firmware options - aka is there a reason that a significant majority of people use Marlin over Repetier?

@MikhailZ FYI it eventuates that, if you use firmware that performs all the kinematic calculations on the host, then ATmega is more that sufficient: ~20% cpu usage @ 150mm/s.  Physics quickly becomes the limiting factor, rather than the processor.

This can be a solution, but haven't you checked boards based on processors like STM32? In most cases they have enough capacity to handle all calculations even for more complex devices, like deltas. In any case, for production printer you may want to stretch your speed goal far beyond 150mm/s.

Just FYI 150mm/s @ 20% cpu, Klipper can run well over 400mm/s without maxing cpu.  Appreciate the faster boards, though it just seems (to me) a much cleaner design (& faster) to pre-calculate on a host (RPi is order of magnitutude+ faster than STM32),  & keep only real-time operations on the real-time hardware.

Your choice of firmware depends on a lot of factors, but to name a few important ones: features, your driver board (RAMPS vs Sanguinololu vs Gen..etc), and G-code support.
Smooth/quiet operation is dependent on the motors and the driver chip's micro-stepping capabilities. The way the firmware interfaces with the driver chip plays a very minor factor in that.
Check this page for a list of firmware, their capabilities and compatible electronics (driver board):
http://www.reprap.org/wiki/List_of_Firmware
Would be useful to check G-code support of various firmwares also:
http://reprap.org/wiki/G-code
Also, as a note, a lot of the community uses Marlin, but for a lot of the commercial printers, the code has been modified slightly to fit their needs.
There is no perfect answer to this. Check the links and compare against your needs. Marlin is the safest bet since it has the most support, though you may need to modify or reconfigure it slightly for your custom board.

Given that this printer will have the Pi3 to control "higher functions", is it worth considering a compact firmware like Teacup?

A few days ago I came across klipper.
It seems to do exactly that functionality split you mention

Thanks for sharing, hadn't seen that, that is the kind of thing I am looking for.

Update: After significant review of Klipper, have found it to be excellent, first choice.  The design (all calculations done on the host) is a significant step forward.


text:
How can I learn to create models for 3D printing?
I've recently bought a 3D printer and waiting for it to be delivered I've given quite a lot of time to looking things up on Thingiverse. I see people create incredible models with gears, screws, lids and a lot of very cool and functional connectors (there are some project for boxes with an iris tipe lid that can be printed already assembled as a single model). I'd like to learn to do some of that as well. At the moment I have some proficiency with Blender where I can navigate the interface and sketch up some simple shaped model without any of the functional parts described above. My question therefore is:
Are there any tutorials that could help me create better models? If I need to I'm ready to learn to use a software other than Blender. I've tried searching for a similar question but found nothing.

Hi, welcome to the site! Unfortunately I think this question isn't a good fit, because it is far too broad. We prefer questions that have technical answers that fit within a few paragraphs. "How do I do X in 3D modelling software Y?" is a good question. "How do you learn modelling software Z?" is on the edge. "How do I learn modelling software full stop." is without a doubt too broad.

Hi! As pointed out by Tom, your question is very generic, and therefore have no single good answer. However, I found another question that might be considered a duplicate of your question (except for the particular model the OP wants to create). Does perhaps this question answer your own?

The answer to your question is yes, there are tutorials to help you create better models. Unfortunately, the back-story to the answer is beyond the scope of StackExchange.
Don't limit yourself to Blender, especially if you are attempting to create non-organic (engineering-type) models. Blender is great for curves and bulges and bumps (and animation, and so much else) but not so great for parametric modeling. Meshmixer is a useful program, but more organic than engineering.
Consider to search for OpenSCAD, Fusion 360, TinkerCAD, but also use terms such as "parametric 3d modeling software" to find a wider range of solutions to your quest.  The above programs are free, there are too many paid programs to list even a small number.
Oh, yeah, stay away from SketchUp for any 3d print modeling. So many failure modes result from models created with that program.

TinkerCAD has a very intuitive interface and a set of starting tutorials that got me to understand the basic controls in under 30 minutes. Although it seems a little simplistic I'll definitely be using it. Thanks for the advice.
OpenSCAD however feels very rough at first impact and I don't feel like I really understand it after around 1 hour of monkeying around. It does however feel much more powerful than TinkerCAD in allowing me to design more complex shapes so I'll keep looking into it.

Fusion 360 is a little hard to obtain and I seem to understand that there is no support for linux. It's been a while since i last booted windows but I'll definitely give it a try as soon as I can.
Thank you for your answer.

Ah, linux. Another piece of information missing from the question post. That does make things more difficult for you. You have to find the software that does what you want and hope there's enough secondary activity that someone has created videos and tutorials to cover it. I suppose you can restrict yourself to web-based software, but that's not always an easy answer either. OpenSCAD is in an always-developing stage and is indeed powerful, but depends on the code-writer's skill for the power level determination.

onshape is a good tool to get some good cad out.

I think rather than looking for a tutorial at this stage, it might be instructive to watch some videos on tuning and calibration (since these touch on what is difficult). Also download Cura (or some other slicer of your choice) and look into how your existing models would be printed layer by layer. Cura has a layer slider so you can step through the design.
So, to make an attempt at answering what I think could be a good question, things to research whilst waiting for your printer are:

Print failure examples and calibration;
Parametric 3D modelling packages;
Slicer operation (this ties in with calibration).

Thanks for the advice! Since my printer (Anet A8) will come as a kit to be assembled, I've already looked at all the youtube assembly and calibration videos I could find. After reading your answer I started digging into videos about slicers and was quite surprised to find out that changing the slicer can produce such different results on the same printer.

I got mine last week, and I'm happy with the results so far.