Showing posts with label Cura. Show all posts
Showing posts with label Cura. Show all posts

26 September, 2020

Fighting with the first layer

Recently, three events happened in a row that is leaving me with the problem of getting the first layer of my 3D prints to stick. The PLA filament that I was using ran out. An update to OctoPrint went sour, resulting in a rebuild. Lastly, I updated the version Cura I am using. 

I have tried several ways to get the print to stick. First was flipping the glass bed over. I have gone through the bed leveling process (both manual and automatic) several times. According to Bed Visualizer, I am close. In Cura, I have tweaked the 'Initial Layer Height' to 0.1 and the 'Build Plate Temperature' to 65C. The results I have gotten so far are either the filament doesn't stick or after a few layers, the edges start to curl and pull away from the bed. 

My next set of changes involved using a glue stick and switching from a skirt to a brim. I was able to get a 'CHEP Calibration Cube' to print. The print popped right of the bed. Closer inspection of the print revealed that the first layer is under extruded and the edges of the print pulled away from the bed. The top of the print (last layer) looks like the nozzle dig in a little (over extrusion).

I compared the latest print to prints from the previous roll of filament. The first layer on the previous filament is much thicker.

Possible Options

  • Make sure the bed is level
    • Good prints start with a level bed. 
    • Did this 4 times earlier in the day
  • Reduce the print speed for the first layer
    • It idea behind the slower print speed is to give the filament time to flow out of the nozzle into place and harden.
    • the current setting is 25 mm/s. This seems reasonable speed. I will skip with option
  • Increase the height of the first layer 
    • From what I have read, increasing the initial layer height can reduce the backpressure on the filament which should let the filament flow out a little easier.
  • Increase the extrusion amount for the first layer
    • This should force a bit more filament out. There is a possibility of the print suffering from an elephant's foot. It could also increase the backpressure on the filament.
  • Increase the extruder temperature
    • A little more heat could allow the filament to flow a little easier. 
  • Check the filament diameter setting
    • The filament size is 1.75 in the settings. 
    • Checked the nozzle diameter at the same time. 

Setting up for the next test print

Reprinting the CHEP Calibration Cube. Changed the initial layer height from 0.1 to 0.12. Changed printing temperature from 195C to 200C. Used the glue stick on the bed. 

Results

The print stuck to the bed a lot better. The first layer doesn't have as many defects and imperfections. I can clearly see a space between each line the makes up the first layer. This looks under extruded.

It seems this filament like the 200C. 

Setting up for the next test print

Reprinting the CHEP Calibration Cube. Changed the initial layer height from 0.12 to 0.18. Used the glue stick again. 

Results

There is even less under extrusion with the first layer. 

Setting up for the next test print

This time, I going to print the CHEP Calibration Cube, one of the tolerance tests from Makers Muse, and a few models of my own design (drop ceiling clip). Changed the initial layer height from 0.18 to 0.20. Changed from brim to skirt. Used the glue stick on the bed.

Results

I canceled the print just as the 3rd layer was starting. One of the models was not sticking to the bed. The first layer is under extruded. 

Setting up for the next test print

Just printing the CHEP Calibration Cube. Changed the initial layer flow from 100% to 102%. Wiped the bed down with Isopropyl Alcohol. Used the glue stick.

Results

The print was really stuck down. I have to use a putty knife to get the print free. The individual lines that make up the first layer are a little fatter and there is still a bit of space between the lines. 

Wrap up

This turned out to be a good learning experience. The lesson of a 'level bed is the starting point' was re-enforced. I learned that the distance between the 'bed and the nozzle', 'how fast the material flows out of the nozzle', and 'type of bed surface' all impact each other.  


14 September, 2020

Upgrade to Cura 4.7.1 and Upgrade of OctoPrint to Python3

Cura

Today, I made the jump from Cura 4.62 to Cura 4.7.1. In reviewing the release notes, for Cura 4.7.0 there were a lot of updates. I should have updated to Cura 4.7.0 earlier. 

There are some items in Cura 4.7.0 that I am looking forward to playing with or will make using the tool a little easier. 

  • Rotation widgets
  • Moved tree-support from experimental to normal settings
  • Adjust initial layer horizontal expansion
  • Allow a g-code to be inserted before or after pausing
Cura 4.7.1 contains a small list of bug fixes. 
 

OctoPrint

When I fired up OctoPrint today, I was greeted with the notice 'Upgrade your OctoPrint install to Python3!' After reading the blog post, I couldn't see a reason not to update. I open a SSH session to my Rasberry PI running OctoPrint and ran the commands from the article. It took a bit of time for everything to download and install.

There are some messages from the updated that will need to be researched or addressed at a later day. 

After rebooting the Raspberry Pi, I am now getting a message that 'The OctoPrint server is currently not running'. When I SSH to the Raspberry Pi, the message 'OctoPrint version : unknown' and 'OctoPi version : 0.17.0' is now displaying.

After a bit of thought, I am just going to rebuild the OctoPrint installation.

02 August, 2020

Comparing Cura profiles

Today, I want to test the differences between the Cura 'Standard Quality' profile and Chuck Hellebuyck's profile 'Cura for Creality Printers'.

Plan

  • Load the build plate with a few simple models.
  • Slice with the default 'Standard Quality' profile.
  • Print the models
  • Slice with CHEPV4.6.x_0.20(Good) profile
  • Print the model
  • Compare results

Actual

  • Room
    • 22C
    • Humidity 52

Run 1 - Standard Quality

  • Preheat the hot end to 190C
  • Preheat the bed to 70C
  • Note: Took about minutes to get the hot end and bed to temperature.
  • Slice the models
    • Estimates 
      • time 1 hours 17 minutes
      • material PLA 10g - 3.34 m
    • hot end to 200C
    • bed to 60C
    • Notes: Cura gave warning about the model not being manifold. 
  • OctoPrint 
    • estimates a time of 50 minutes
    • Octolapse running
  • End of run 1 notes
    • Lots of blobs, zits, and stringing when the hot end moves away for a picture.
    • Little stringing between objects
    • Print Time
      • OctoPrint 1:25:21
      • Cura with OcotoPrint connection 1:25:21
      • Slack notifications 1:25
    • Raspberry Pi temperature ranged from 38C to 40C
    • No noticeable lifting of the model from the bed
    • skirt pulled away from the bed easily, Measured skirt thickness at several places. Values ranged from .19mm to .23mm.
    • Models popped off the bed with just finger strength. 
      • EasyCalib3.stl
        • slight rounding of the corners of the base.
        • little z banding


      • TESTBLOKJE.STL
        • blobs from where the hot end moved away from the model. Most noticeable blobs were pointing in the direction the hot end moves away for Octolapse to take a picture. 


      • OpenRC_Calibration_Cube.stl
        • The M3 nuts I have did not fit the holes. The holes are just too small. 
        • Some blobs from Octolaspe


      • CHEPCalibrationCube.stl
        • Some blobs from Octolaspe 
        • X face - 20.01 to 20.42
        • Y face - 20.10 to 20.34
        • Z face - 19.95 to 20.24


Run 2 - CHEPV4.6x_0.20(Good)

  • Preheat the hot end to 190C
  • Preheat the bed to 70C
  • Slice the model 
    • Estimates
      • time 1 hour 39 minutes
      • material PLS 13g - 4.29m
  • OctoPrint
    • estimates 1 hour
    • Octolapse running
  • End of run 2 notes
    • Lots of blobs, zits, and stringing when the hot end moves away for a picture. The amount of artifacts seems lower. 
    • Almost no stringing between objects. 
    • Print Time
      • OctoPrint 1:42:52
      • Cura with OcotoPrint connection 1:42:52
      • Slack notifications 1:42
    • Raspberry Pi temperature ranged from 39C to 42C
    • No noticeable lifting of the model from the bed
    • skirt pulled away from the bed easily, Measured skirt thickness at several places. Values ranged from .17mm to .22mm.
    • Models popped off the bed with just finger strength. 
      • EasyCalib3.stl
        • No Z banding


      • TESTBLOKJE.STL
        • very similar to run 1.
        • more blobs on the pyramid


      • OpenRC_Calibration_Cube.stl
        • I was able to fit a nut into a few but not all of the holes and slots.


      • CHEPCalibrationCube.stl
        • x face - 20.0 to 20.35
        • y face - 20.01 to 20.25
        • z face - 19.95 to 20.20





Resources

  • walls are exact 1.0mm to see eventual over- or underflow
  • a little 45° overhang with a 1.0mm platform that shows warping and if you probably need to change the filament-fan speed
  • stringing in the tube or between tube and platform
  • a 0.2mm space between the cube and the cylinder to check with a paper if needed
OpenRC Calibration Cube (OpenRC_Calibration_Cube.stl)
  • M3 nuts should fit    
CHEP Calibration Cube (CHEPCalibrationCube.stl)
  • 20mm by 20mm by 20mm

25 July, 2020

Upgrade to Cura 4.6.2

Today, I upgraded my version of Cura to 4.6.2

After reviewing the release notes, there was no reason for me to upgrade to this version other than the habit of trying to keep the software current. 

Updating the starting and ending G-code

Today, I am making some minor tweaks to the start and end G-code within Cura. There are three changes I would like to make. The first is to have the bed and the hot-end heat up at the same time. Second, I am wondering if calling M420 right after a G29 is helpful. If it is not helpful then come up with helpful solution. The third change is to have the hot-end to have a different ending position.

Final G-code

Start G-code

M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration
M203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate
M204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration
M205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk
M220 S100 ;Reset Feedrate
M221 S100 ;Reset Flowrate

; Start Dual Nozzle/Bed Preheating
M140 S{material_bed_temperature_layer_0} ; start preheating the bed
M104 S{material_print_temperature_layer_0} T0 ; start preheating hotend
G28 ; home
M190 S{material_bed_temperature_layer_0} ; heat to Cura Bed setting 
M109 S{material_print_temperature_layer_0} T0 ; heat to Cura Hotend

G28 ;Home
G29 ;
M500 ; Save settings

G92 E0 ;Reset Extruder
G1 Z2.0 F3000 ;Move Z Axis up
G1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position
G1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line
G1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little
G1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line
G92 E0 ;Reset Extruder
G1 Z2.0 F3000 ;Move Z Axis up 

End G-code

G91 ;Relative positioning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X5 Y5 F3000 ;Wipe out
G1 Z10 ;Raise Z more
G90 ;Absolute positionning

G1 X{machine_width} Y{machine_depth} ;Present print
M106 S0 ;Turn-off fan
M104 S0 ;Turn-off hotend
M140 S0 ;Turn-off bed

M84 X Y E ;Disable all steppers but Z

Research 


Change 1

Chuck Hellebuyck has a video on how to get Cura to heat up the bed and hot end at the same time. Faster Hot End & Heated Bed warm-up in Cura

Change 2

G29 - Bed Leveling (Automatic): Probes the bed and enables bed leveling compensation.
M420 - Bed Leveling State: Get and/or set bed leveling state.
M500 - Save Setting: saves all configurable settings to EEPROM

Having a start g-code that uses a G29 followed by M420, is not necessary. The G29 turns on bed leveling, probes the bed, and stores the values to RAM. The M420 turns on bed leveling and reads the values from the EEPROM. 

Options to make bed leveling more helpful
  1. Modify the start g-code to run G29 without M420
  2. Modify the start g-code to run G29 and M500 without M420
  3. Modify the start g-code to run G29, M500, and M420
  4. Modify the start g-code to run M420 and occasionally run a bed leveling that saves the data

In thinking through the options, I have settled on option 2. The build surface on my Ender 5 Plus is removable. Having the auto-leveling routine run before each print should help get a good first layer as the build surface develops imperfections over time. By saving the bed leveling data, I should get two benefits. The first benefit is the data will be present after the power is cycled on the printer. The second benefit is the plug-in 'Bed Visualizer' will have current data. 

Change 3

The ending G-code uses the variable {machine_depth} to set the 'Y' axis. This puts the hot end in the back left corner. The problem is when the printer starts up the BL Touch sensor reports an error. My solution is to change from using the variable {machine_depth} to a value of '0'. 

Update: The X0 Y0 position put the hot end in the front left corner. I am trying X{machine_width} y{machine_depth}, hopefully this puts the hot end in the back right corner. 

Before Changes

Before I get started on making any changes, I recorded the start and end G-code that my version of Cura (4.6.1) is using.

Start G-code

M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration 
M203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate 
M204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration 
M205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk 
M220 S100 ;Reset Feedrate 
M221 S100 ;Reset Flowrate 

G28 ;Home 
G29 ; 
M420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height 

G92 E0 ;Reset Extruder 
G1 Z2.0 F3000 ;Move Z Axis up 
G1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position 
G1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line 
G1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little 
G1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line 
G92 E0 ;Reset Extruder G1 Z2.0 F3000 ;Move Z Axis up 

End G-code

G91 ;Relative positioning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X5 Y5 F3000 ;Wipe out
G1 Z10 ;Raise Z more
G90 ;Absolute positionning

G1 X0 Y{machine_depth} ;Present print
M106 S0 ;Turn-off fan
M104 S0 ;Turn-off hotend
M140 S0 ;Turn-off bed

M84 X Y E ;Disable all steppers but Z 


16 January, 2017

Setting up OctoPrint

I am setting up OctoPrint to give me more flexibility in monitoring and to free up a computer from being connected to the 3D Printer.

High Level Steps

  1. Get the OctoPi image
  2. Burn the image to an SD card. I am using Linux (Ubuntu) to burn the image.
  3. Configure the Raspberry Pi
  4. Test
  5. Move the equipment to the same location as the printer.


Detailed Steps

  1. Download the latest version of OctoPi
  2. Plug in your favorite Memory Card Reader
  3. Plug in your SD Card into the Memory Card Reader
  4. Open the Disks app
  5. Find your SD Card. The device is '/dev/sdd1' on my machine. Save the device info for a later step.
  6. In a terminal issue the following command: sudo dd if={location of image} od={destination} bs=4M
  7. I entered: sudo dd if=~/Downloads/2016-03-18-octopi-jessie-lite-0.13.0.img of=/dev/sdd bs=4M  
    • Warnings and notes about dd command
      • You need to run the command as superuser or use sudo
      • The dd command does not display any feedback while it is running. You need to wait for the command prompt to return
      • If the write fails try using 1M for the bs parameter.
      • The uppercase M in the bs parameter is important.
  8. Eject the SD card
  9. Put the SD Card into the Raspberry Pi.
  10. Plug in the Network Cable
  11. Apply power
  12. Wait for the Raspberry Pi to boot.
  13. In the terminal ssh to the Pi using the command:  ssh pi@octopi.local
  14. You will be prompted that the authenticity of the host can't be established and will need to accept the fingerprint. The default user for OctoPrint is 'pi' and the default password is 'raspberry'.
  15. Change the password of the pi to something that is secure and you can remember. Changing the password is done using the command:  passwd  
  16. Configure the Raspberry PI by issuing the command:  sudo raspi-config
  17. You will want to expand the filesystem, exit and reboot the Raspberry Pi.
  18. Once the Pi has finished rebooting, you can use the URL http://octopi.local. This may take a minute or two for page to display.
  19. You will be prompted to enter user name and password.
  20. Once the site appears, log in with the user name and password from the previous step.
  21. If prompted to update OctoPrint, perform the update. This will take a few minutes. When the update is complete you will be asked to reload the user interface. The update and reload took about 10 minutes for me.
  22. You will be prompted to set up a slicing profile. If you are already a Cura user you can import the profile. I updated my current Cura profile.
You should now have a basic setup for OctoPrint.

Plug your 3D Printer's USB cable into the printer and the Raspberry Pi then test if you can connect. In my case, I couldn't connect using 'Auto' for the Serial Port and Buadrate. I was able to connect once I manually set the values.

Testing that the Web Cam works by going to Settings -> Webcam & Timelapse. I clicked the test button, a dialog box pops up. I don't see the stream. To fix the issue, I used ssh to connect to the Pi, issued 'sudo nano /boot/octopi.txt', changed the camera usb options line to read 'camera_usb_options="-r VGA", saved the file, and rebooted the Pi.

Update 25 March 2017

I got some hardware to add to my OctoPi build out. The first item is 2.8 TFT with Touchscreen from adafruit. I followed the instructions for the Easy Install.

Note: in the scripts folder on the Raspberry Pi that is script named 'enable-adafruit-pitft' that did not work for me. It appears that script tries to install older libraries for the display.

It took some work to get OctoPiPanel running. My first attempt was to use the script included with OctoPi. This did not work for me. I was getting an error about pygame not being installed. What did work was using the instructions from the OctoPiPanel github page.

The second piece of hardware is a Raspberry Pi Camera Module Board. To get the module to work, I modified the file '/boot/octopi.txt', I just removed the # from the line camera_raspi_options="-fps 10"
.









Challenging myself to learn something new

I have recently set a big challenge for myself. I want to know about Machine Learning . To add to the challenge, I am trying out usin...