Welcome! Log In Create A New Profile

Advanced

Scaling Trouble

Posted by mhiggins 
Scaling Trouble
May 09, 2013 09:42AM
Hi,

I have just received my 3D printer this week and am attempting to print a few prototype parts. I am having problems with scaling. The 3D CAD drawing that I created is to the correct scale, but after exporting to .STL, creating gcode with Slic3r and printing the job with Repetier-Host, I get a part that is the incorrect size.

There are two possible areas that could be causing the problem: (1) exporting to .STL and (2) scaling in Slic3r before creating the gcode.

The first possible trouble area: When I export to .STL in my 3D CAD program, the paramters I can change are (followed by the defaults in parentheses):

Surface Deviation (0.0)
Normal Deviation (7°)
Edge Length (0.0)
Aspect Ratio (7.0)

The second trouble area: if I set the Scale in Slic3r to 100%, the part is much, much too small when printed. If I set the scale in Slic3r to 1000%, the part I get is about 2X the desired size.

I'm thinking there must be something simple I'm not doing and/or doing incorrectly. I am very thankful for all help and guidance. I have listed below the programs and versions I'm using.

Software:
Operating System: Windows 7, 64-bit
3D CAD: Ashlar Vellum's Xenon v8 SP3 Build (888) - ACIS 16.0.4
Slicing Program: Slic3r Version 0.9.9
Printer Control Program: Repetier-Host Version 2.0
Printer: TypeAMachines 3D Printer
Re: Scaling Trouble
May 09, 2013 10:10AM
The simplest problem would be that the number of steps(of the stepper motors) per distance is wrong. This is set in the firmware.(preferably not slic3r) M503 tells stuff about settings, M92 is the one that defines the number of steps per some distance.(that could be any distance like motionof heads/bed but also motion of filament)

Two ways to go about this, one is to print some object, say a 15x20x10mm block and then use measurements on the sides. If a length(or height or width) should be L and is actually X then the number of steps per distance should be a factor L/X larger. M503 says M92 X... Y.. Z... and you tell the machine M92 X.. Y... Z... with the factors applied. You note down the values somewhere, and try again. Mind that the machine forgets these numbers when reset! M500 should store them permanently.

The other way is to know the number of steps per revolution and 'gear ratios' (well may be threaded rods excetera but that idea) and calculation how far it should go. (i don think that works 100% on filament; the gear ratio is different depending how deep it grips into the filament and there may be slippage, and the whole idea interacts with the thickness of the thread the printer lays out.)
Re: Scaling Trouble
May 09, 2013 10:56AM
Thank you very much for the help.

I can easily print out a block of known sze and then measure with a caliper to find the necessary ratios. However I'm not sure how/where to enter these values into the firmware or into the gcode. My gcode (pasted below) does not show these values. If you could give me a bit of guidance about where to enter these values once I figured them out, I'd be very grateful.

; generated by Slic3r 0.9.9 on 2013-05-09 at 09:22:52

; layer_height = 0.25
; perimeters = 1
; top_solid_layers = 3
; bottom_solid_layers = 3
; fill_density = 0.15
; perimeter_speed = 60
; infill_speed = 90
; travel_speed = 250
; nozzle_diameter = 0.35
; filament_diameter = 1.7
; extrusion_multiplier = 1.1
; perimeters extrusion width = 0.39mm
; infill extrusion width = 0.39mm
; solid infill extrusion width = 0.39mm
; top infill extrusion width = 0.39mm

G21 ; set units to millimeters
M107
;Standard Profile for Series 1. Single Extruder
M104 S185
M301 P24.72 I0.88 D231.1
G28
G1 X120 Y115 Z15 F10000
G92 E0
G1 Y5 Z15 F5000
M109 S185
G1 F100 E50
G92 E0
G1 X50 Z0.3 F10000
G90 ; use absolute coordinates
G92 E0
M82 ; use absolute distances for extrusion
G1 F6000.000 E-3.00000
G92 E0
G1 Z0.250 F15000.000
G1 X127.421 Y112.571
G1 F6000.000 E3.00000
G1 X127.561 Y112.431 F600.000 E3.00923
G1 X127.871 Y112.181 E3.02780
G1 X128.201 Y111.961 E3.04629
G1 X128.381 Y111.871 E3.05568
G1 X128.741 Y111.721 E3.07386
G1 X129.101 Y111.601 E3.09155
G1 X129.491 Y111.511 E3.11022
G1 X129.881 Y111.471 E3.12850
G1 X130.281 Y111.471 E3.14715
G1 X130.481 Y111.491 E3.15652
G1 X130.871 Y111.571 E3.17508
G1 X131.251 Y111.691 E3.19366
G1 X131.611 Y111.851 E3.21203
G1 X131.951 Y112.051 E3.23042
G1 X132.411 Y112.431 E3.25824
G1 X132.551 Y112.571 E3.26747
G1 X132.791 Y112.881 E3.28575
G1 X133.001 Y113.181 E3.30283
G1 X133.191 Y113.521 E3.32099
G1 X133.341 Y113.881 E3.33917
G1 X133.451 Y114.261 E3.35762
G1 X133.511 Y114.641 E3.37556
G1 X133.521 Y114.841 E3.38489
G1 X133.521 Y115.231 E3.40308
G1 X133.501 Y115.421 E3.41198
G1 X133.431 Y115.801 E3.43000
G1 X133.311 Y116.181 E3.44858
G1 X133.241 Y116.361 E3.45759
G1 X132.961 Y116.871 E3.48471
G1 X132.621 Y117.331 E3.51138
G1 X132.351 Y117.611 E3.52952
G1 X132.061 Y117.861 E3.54737
G1 X131.561 Y118.161 E3.57456
G1 X131.381 Y118.251 E3.58394
G1 X131.021 Y118.381 E3.60179
G1 X130.641 Y118.471 E3.62000
G1 X130.251 Y118.521 E3.63833
G1 X129.861 Y118.521 E3.65652
G1 X129.481 Y118.481 E3.67433
G1 X129.101 Y118.391 E3.69254
G1 X128.741 Y118.271 E3.71023
G1 X128.201 Y118.031 E3.73779
G1 X127.871 Y117.811 E3.75628
G1 X127.561 Y117.561 E3.77485
G1 X127.171 Y117.121 E3.80226
G1 X126.851 Y116.611 E3.83033
G1 X126.691 Y116.251 E3.84870
G1 X126.631 Y116.061 E3.85799
G1 X126.541 Y115.671 E3.87666
G1 X126.491 Y115.281 E3.89499
G1 X126.491 Y114.711 E3.92157
G1 X126.511 Y114.511 E3.93094
G1 X126.581 Y114.121 E3.94941
G1 X126.691 Y113.741 E3.96786
G1 X126.851 Y113.381 E3.98623
G1 X127.051 Y113.041 E4.00462
G1 X127.383 Y112.614 E4.02982
G1 F6000.000 E1.02982
G92 E0
G1 Y230 F10000
M104 S0 ; turn off temperature
M84 ; disable motors
; filament used = 1.0mm (0.0cm3)
Re: Scaling Trouble
May 09, 2013 03:09PM
I dont think you should use slic3r to calibrate the machine,. (Though I think it is possible with scaling the .stl, setting temperatures differently, and using extrusion_multiplier). The idea is that the machine should 'know' the distance, temperatures etcetera instead of you indicating different values to compensate for the incorrectness of the machine.

There are two processes here

1. The model and the slicing, this is mostly about how the print is done.

2. The machine and that its measurements and movements are correct.

I think the issue is the latter here. You dont use slic3r and .stl tools for it, you use stuff that interfaces to the machine like pronterface. Pronterface has a right-bottom text box where you can enter commands with the machine. Now, these commands could make the machine mis-function so you'll want to at least use M503, which makes the machine print out the current setting, and store those settings somewhere.(just by copy-pasting them for instance)

* M503 -> copy-paste and store

* Then you print a test cube in such a way that you know when you take it off which sides were x,y,z. I suggest a block with different length. For instance cube([10,20,10])= cube([SX,SY,SZ]), at least unless it is completely off, the you know the thinner direction is the X direction. (The Z direction you can surely identify)

* Then measure it, lets call the measurements MX,MY,MZ if for instance the values are too small, the machine made the motors move too little, if too large, they moved too far. M92 X... Y... Z... is basically how far the electronics thinks the motors need to move for that much movement of the print head itself.

* So look at the M92 X... Y... Z... you got from M503, the motors need to move more/less by some factor, the same factor difference as the factor between the size block you wanted, and the size block you got. If MX/SX=2 it was made twice too big, so M92 X... was twice too big, so you set it to have the value it was.

* You set it by sending M92 X... Y... Z... with the values you calculated. For instance 'new X value' = 'old X value' * SX/MX

* Then you store the value permanently with M500. If you dont do this, if you power down/reset, the values are reset. You'll probably want to note down the values incase this somehow fails.(why not) you should be able to see the changed values with M503

Hope it is clear, otherwise try the calibration wiki page has a section on it too.(and on other calibration)
Re: Scaling Trouble
May 09, 2013 05:35PM
Thank you for being so specific in your response. I downloaded pronterface and began to use it. I can print with it, but the M503 command does not return anything (ie. I send the command and it just says "M503 sending..."). I'm not sure how to resolve this problem. Do you have any ideas? Thank you again! Sorry that I am such a beginner.
Re: Scaling Trouble
May 10, 2013 08:16AM
Tbh i only have the machine running for a few weeks too. Also i dont have repetier, the reprappro has a Melzi running the Marlin firmware. (M115 returns the firmware version.) I dont know what firmwares support what exactly, the wiki has some indication, but not on everything.

I dont really know the compatibility of the software either. (Kindah expect most things to work together)

I take it you did click connect first and it said something like 'printer is now online'. (otherwise the response would've been "Printer is not online." i think)

So you printed it with repetier-host before, i suppose that means you can connect to the machine with that program. Maybe you could try send the gcodes manually with repetier-host instead, the screenshot shows a tab for it. Maybe for some reason it doesnt support M503, could try `M115`, `G28 X0`(homes X)

Edit: also you say it is the incorrect size, what are the measurements you got versus the one in the design?

Edited 1 time(s). Last edit at 05/10/2013 08:28AM by Jasper1984.
Sorry, only registered users may post in this forum.

Click here to login