Friday, September 30, 2011

Prusa Mendel RepRap: Calibration Step Two



In Calibration Part One I tackled physical calibration. Part two of the calibration process is in the firmware settings. I used sprinter firmware to start with, but have recently switched to marlin. Marlin is almost identical to sprinter in configuration, so this information will work for both. If you have a different firmware, the idea is basically the same. I'm also assuming you will be using RAMPS 1.x, the Arduino IDE and pronterface.py in this tutorial. If you are using RAMPS, and you want the marlin firmware, be sure to use the link above to get the "non-Gen6" version. I won't be going into the particulars of each program I name in this tutorial. Look for upcoming posts for an examination of each piece of software.

Step Two: Firmware and Temperature Ballparking

Fortunately, this is rather straightforward. What you will be aiming for is that when the bot is instructed to move +1mm on the axis, or to extrude 1mm of filament, it actually does that to within 0.02mm. That is about the maximum positional accuracy of your typical Prusa Mendel RepRap.
  1. Open the Arduino IDE
  2. Open the firmware .pde file (i.e. sprinter.pde)
  3. Switch to the configuration.h tab
  4. Scroll down to find the line:
    float axis_steps_per_unit[] = {80, 80, 3200/1.25,700}; 
  5. Open pronterface.py and connect to the electronics
  6. Power up the power supply and make sure each motor moves in the correct direction with small moves. If it doesn't move in the right direction, STOP. You either need to change how you have your motors plugged in or you need to change the direction the motors move in the firmware (in configuration.h).
  7. Home the X axis and press the X +100 button in pronterface
  8. Did it move 100mm? Measure it to find out. The X axis is easy to measure when the nozzle is close to the print surface. Make a mark on the blue tape under the nozzle at home, and then where it lands after X +100, and measure the distance.
  9. Use the RepRap Calculator to figure out the new steps_per_unit value for the X axis.
  10. Enter 100 in the desired movement field
  11. Enter your measurement of actual movement in the next field
  12. Copy and paste the steps_per_unit value from configuration.h for that axis in the third field of the calculator. The steps_per_unit values are in the order X, Y, Z, E and each value can be an equation instead of a numerical value. So the default value for Z is 3200/1.25, meaning 3,200 divided by 1.25. You can substitute the actual value for the Z parameter.
  13. Copy and paste the new calculated value (up to three decimals) back into configuration.h and save the file
  14. Exit out of pronterface.py
  15. Press the reset button on the electronics
  16. Upload the firmware to the electronics
  17. Rinse, repeat until that axis is as finely tuned as your margin of error for measuring will allow. Additional refinements to these values can be done after the machine starts printing.
  18. Rinse and repeat for the Y and Z axis.
Ballpark the temperature.
  1. The thermistor attached to a hot end is not calibrated. So while 185 deg. C might be the right temperature for PLA, it's not as easy as setting the temperature to 185 in pronterface.py and forgetting about it. You'll need to find the melting point of the plastic you're using and then start printing with a temperature that is a reasonable setting somewhat higher than that minimum.
  2. Heat the nozzle up to a good starting temperature. For PLA you might want to start at 185 deg.
    Caution! If this is the first time you have turned on the hot end, monitor the temperature carefully and if it soars way past the target temperature (by more than 10 degrees) or doesn't register much of a change in temperature, turn the power supply off immediately. Don't freak out if the hot end starts to smoke, though. The first time or two of heating the nozzle, it will smoke.
  3. Set the speed on the extruder (in pronterface.py) to about 150 and extrude 30-50mm of filament.
  4. Immediately turn the nozzle off (set the temperature to 0) and keep the nozzle clear by removing the ooze and wiping the nozzle tip with paper towel.
  5. When the temperature has reached room temperature again, turn it back on to 185 deg. and turn on print monitoring
  6. Watch the tip of the nozzle carefully. Note at what temperature the plastic starts to ooze out of the nozzle again.
  7. Set the temperature at the observed melting point and try to extrude a small amount (5-10mm)
  8. If it doesn't come out at all, try again and grab the filament. Feel to see if the filament is still going into the extruder. As long as the filament is moving, keep hitting the extrude button until something comes out.
  9. If the filament isn't moving, turn the temp up four degrees and try again. Give the filament a little push to get it moving again. Caution! You may have clogged up the teeth of a normal hobbed bolt at this point. If you get a lot of slipping that you didn't before, you will need to open the extruder and clean it up. I used a cut-thread bolt, so I'm not too worried about clogging it up.
  10. If the extrusion is slow, great, you're in the ballpark. Your starting temperature is about 10 degrees higher than that.
How to tell if the temperature is too high.
  • The plastic actually drips out of the nozzle of the idle extruder and forms droplets
  • Air escapes the nozzle, making little bubbles at the tip
  • Your test prints stick so hard to the blue tape that it's impossible to remove them without tearing the tape
  • You get a lot of blobs and your lines have the appearance of melting down over the previous layer, perhaps sliding off the side a little.
  • There is a strong smell of cooking plastic (there is always a smell, but overheated plastic has a strong scent)
Next Up: Calibration Part Three is an introduction to Skeinforge.

3 comments:

George Frick said...

What are indicators that the temperature is too low; simply that it won't extrude at all?

Any advice on getting 'jumpy' readings from thermistor? Bad connection?

kwixson said...

George: If you have fed plastic into the nozzle until it stops/slips/strips and you have nothing at all oozing out of the bottom, either it's not hot enough or the nozzle is plugged up.

But if you're getting jumpy readings, then who knows what temperature you're getting. I think a bad connection is a strong possibility. Have you tried hooking a multimeter up to the thermistor to check it's resistance?

Unknown said...

With Sprinter you can issue the M92 command in the pronterface console to change the esteps on the fly. http://reprap.org/wiki/G-code#M92:_Set_axis_steps_per_unit

If your X e-steps was 40, and the calculator says you need 40.256 you can issue "M92 X40.256" and try again. Then once you've iterated through that a few times, write it to the configuration file and reprogram your board. Anything to help avoid opening the arduino IDE.