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 


04 July, 2020

Getting the first layer right

Over the past few days, I have made several attempts to level the bed of my Ender 5 Plus. I have read the manual that came with the printer, read several forums, and watched several YouTube videos. 

What I have learned
  • The first layer is very important to get right. This is the foundation that the rest of the print is built on. 
  • If a print has trouble sticking to the bed. Check the bed level is a good first step.
  • The OctoPrint plugin Bed Visualizer can help understand where there are high spots and low spots on the build plate.
  • There is the "right" amount of squish. See 'Bed Leveling Guide' image. 

I am using the model 'Bed Leveling Calibration Test Object (Parametric)' by pgreendland. The first couple of attempts turned out poorly. This caused me to relevel the bed. In looking closer at the results, I could clearly see each line the printer laid down. This got me to thinking that maybe under extrusion was the problem. I did switch some part on the extruder motor. I wanted metal parts instead of plastic. 

I performed the standard extrusion test. The hot end was heated to 200 C, I marked the filament at the 100 and 110 mm points, and extruded 100 mm. Only 94 mm of the filament was pulled in. 

To update the extruder steps, I made a back of the configuration using the OctoPrint plugin 'EEPROM Marlin Plugin'.  For my printer, the Extruder steps were 94. Using the formula (expected amount of filament * Current E-Steps) / Actual extrusion amount, I was able to calculate a new step value. 

(100 X 93) / 94 = 98.9

I set and saved the new value to the EEPROM then reran the extrusion test. This time the test hit the mark. 

Reprinting of the 'Bed Leveling Calibration Test Object' turned out better. The print stuck to the bed. The print was not as solid as I expected. I also think that the hot end may be a little high. 

For the next test, I am going with a more complex model. I am not changing any settings. I want to see if the current settings can produce a nice print. I am going with the 'CHEP Calibration Cube' for the model. 



Setting up Octoprint

When I was running my old 3D printer, I found using OctoPrint to be helpful. I think it would be good to set up a new instance of OctoPrint.

Steps
  • From the OctoPrint web site, I download OctoPi 0.17.0. 
  • Using Etcher, burned the image to a 16GB SD card. 
  • Updated the file octopi-wpa-supplicant.txt with my network credentials. 
  • ssh to the pi
  • ran raspi-config
    • changed the user password
    • change timezone
    • rebooted the pi
  • Using a browser, I navigated to the IP of the OctoPi and followed the prompts to set up the first user
At this point, I paused to explore the interface. While I was exploring, OctoPrint went ahead with checking for updates. Updates were discovered and I went ahead with installing them.

Plugins
  • Bed Visualizer
    • Displays 3D mesh of bed topography report
    • Settings
      • General
        • GCODE Commands for Mesh Update Process
          • G28
          • G29 T
  • EEPROM Marlin Editor
  • Floating Navbar
  • Heater Timeout
    • Settings
      • Enable
  • Navbar Temperature
    • Display temperatures on navbar
  • Octolaspe
    • Creates a stabilized timelapse
  • Octoslack
    • monitoring your printer and prints via Slack, Mattermost, Pushbullet, Pushover, Rocket.Chat, Discord, Riot/Matrix, or Microsoft Teams
  • Simple Emergency Stop
  • Themeify


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...