First layer is not evenly closed
-
Hello everyone,
I have converted my Raise3d E2 to a Duet mini5 and 2 LC1 Toolboards and IR Z-Probe and have 2 problems that I cannot solve.
I would like to describe problem 1 here and I will open a new entry for the second. Link to problem 2
The first problem is that my first layer is not evenly closed. When I print one layer (180x180 mm) the first layer has a thickness of between 0.18mm and 0.26mm. The hardware on the printer is very solid and has no problems. I did not have these problems before the conversion either. Perhaps someone can give me tips on where I could look for the error.
My bed leveling is controlled by a macro that creates a Heightmap.csv depending on the print plate and filament used and then saves this in a BlackPrint 60°C file, which is called up in Start.g when printing.
RepRapFirmware 3.6.0-alpha.4+3
config.g:
; Configuration file for Duet 3 Mini 5+ (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.15 on Sat Nov 26 2022 13:27:47 GMT+0100 (Mitteleuropäische Normalzeit) ;########################################################################################################################### ; General preferences ;########################################################################################################################### M575 P1 S1 B57600 ; enable support for PanelDue G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Raise 3D E2" ; set printer name ;########################################################################################################################## ; Network ;########################################################################################################################## M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S1 ; disable FTP M586 P2 S0 ; disable Telnet ;########################################################################################################################## ; Drives ;########################################################################################################################## M569 P0.0 S0 D3 H50 V30 ; physical drive 0.0 goes forwards M915 P0.0 T50 M569 P0.1 S0 D3 H50 V30 ; physical drive 0.1 goes forwards M915 P0.1 T30 M569 P0.2 S0 D3 H50 V30 ; physical drive 0.2 goes forwards M915 P0.2 T50 M569 P20.0 S0 ; physical drive 0.3 goes forwards Extruder links M569 P0.4 S0 D3 H50 V30 ; physical drive 0.4 goes forwards M915 P0.4 T50 M569 P21.0 S1 ; physical drive 0.5 goes forwards M584 X0.0 Y0.1 Z0.2 E20.0:21.0 U4 ; set drive mapping M350 X16 Y16 U16 Z16 E16:16 I1 ; configure microstepping without interpolation M92 X80 Y80 U80 Z800 E286.216 :286.216 ; set steps per mm linker Extruder : rechter Extroder M566 X600 Y600 U600 Z30 E300:300 ; set maximum instantaneous speed changes (mm/min) M203 X10000 U10000 Y9000 Z600 E3000:3000 ; set maximum speeds (mm/min) M201 X1500 U1500 Y1500 Z120 E3000:3000 ; set accelerations (mm/s^2) ;M906 X850 U850 Y850 Z800 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent M906 X1200 U1200 Y1200 Z900 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ;########################################################################################################################## ; Axis Limits ;########################################################################################################################## M208 X10 Y-3 Z0 U35 S1 ; set axis minima M208 X335 Y255 Z240 U355 S0 ; set axis maxima ;########################################################################################################################## ; Endstops ; configure switch-type (e.g. microswitch) endstop for high end on Z via pin null ;########################################################################################################################## M574 Y1 S1 P"io1.in" M574 X1 S1 P"io2.in" M574 U2 S1 P"Io4.in" ;M915 X S-63 H10 R1 ; Set very sensitive stall detect ;M574 X1 S3 ; configure endstop for stall detection ;M915 X S20 H140 R0 ; Set very sensitive stall detect ;M915 X S-63 H10 R1 ; Set very sensitive stall detect ;########################################################################################################################## ; Switch ;########################################################################################################################## M950 J1 C"SPI.CS2" ;M581 P1 S0 T5 R0 ;Alarm wenn tür beim drucken geöffnet wird ;M581 P1 S1 T6 R0 ;TEST war vorher nicht drin ;########################################################################################################################## ; Filament Sensoren ;########################################################################################################################## M591 D1 P1 C"io6.in" S1 M591 D0 P1 C"io5.in" S1 ;########################################################################################################################## ; Z-Probe ;########################################################################################################################## M558 P8 C"20.io0.in" H5 A7 S0.008 F200 T10000 ; P=Sondentyp C=Eingangspin H=Anfahrhöhe A=Anzahl Tastvorgänge S=Tolleranz (Standard 0,03) F=Abtastgeschwindigkeit T=Verfahrgeschwindigkeit G31 P500 X17 Y21 Z1.30 ; set Z probe trigger value, offset and trigger height + Tiefer - höher M557 X31:335 Y20:225 P7 ; define mesh grid ;########################################################################################################################## ;Acclerometer ;########################################################################################################################## M955 P20.0 I24 ; configure accelerometer on toolboard with CAN address 121 and specify orientation M593 F51 S0.2 P"zvddd" M955 P21.0 I24 ; configure accelerometer on toolboard with CAN address 121 and specify orientation ;########################################################################################################################## ; Heaters ;########################################################################################################################## M308 S0 P"Temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 B1 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S2 P"21.Temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 as thermistor on pin temp2 M950 H2 C"21.out0" T2 ; create nozzle heater output on out2 and map it to sensor 2 M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H2 S340 ; set temperature limit for heater 2 to 340C M308 S1 P"20.Temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 as thermistor on pin temp2 M950 H1 C"20.out0" T1 ; create nozzle heater output on out2 and map it to sensor 2 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S340 ; set temperature limit for heater 2 to 340C ;########################################################################################################################## ; Temp Sensoren ;########################################################################################################################## M308 S10 Y"mcu-temp" A"MCU" ; defines sensor 10 as MCU temperature sensor M308 S11 Y"drivers" A"Duet stepper drivers" ; defines sensor 11 as stepper driver temperature sensor ;M950 F5 C"out6" Q500 ; create fan 2 on pin fan2 and set its frequency ;M106 P5 H3 T40:70 ; set fan 2 value ;########################################################################################################################## ; Fans ;########################################################################################################################## ;M950 F0 C"vfd" Q500 ; create fan 0 on pin out4 and set its frequency ;M106 P0 C"Bauteil-Lüfter L" S0 H-1 M950 F0 C"20.out1" Q500 M106 P0 C"Bauteil-Lüfter L" S0 H-1 M950 F1 C"21.out1" Q500 M106 P1 C"Bauteil-Lüfter R" S0 H-1 M950 F3 C"out5" Q500 ; create fan 2 on pin vfd and set its frequency M106 P3 C"LED" S150 H-1 ; set fan 2 value. Thermostatic control is turned off M950 F4 C"out4+out4.tach" Q25000 M106 P4 C"Filter-Lüfter" S0 H-1 M950 F5 C"21.out2" Q500 ; create fan 0 on pin out3 and set its frequency M106 P5 C"Hotend Fan rechts" S1 H2 T45 ; set fan 0 name and value. Thermostatic control turned on for Hotend M950 F6 C"20.out2" Q500 ; create fan 0 on pin out3 and set its frequency M106 P6 C"Hotend Fan links" S1 H1 T45 ;########################################################################################################################## ; Create a tool that uses the low end (X) carriage ;########################################################################################################################## M563 P0 D0 H1 F0 S"linker Extruder" ; tool 0 uses extruder 0, heater 1 and fan 0 (P=Werkzeug Nr., S=Name, D=Extruder Motor, H=Heizung, F=Bautellüfter) G10 P0 X0 Y0 Z0 S0 R0 ; set tool 0 offsets and temperatures ;########################################################################################################################## ; Create a tool that uses the high end (U) carriage ;########################################################################################################################## M563 P1 D1 H2 X3 F1 S"rechter Extruder" ; tool 1 uses extruder 1, heater 2, fan 2, and maps X to U G10 P1 Y0.1 U26.6 Z0.02 R0 ; set tool 1 offsets and temperatures für Z: + Tiefer - höher U: - weiter nach rechts + weiter nach links (G10 P1 Y0 U27.0 Z0.02 R0) ;########################################################################################################################## ; Create a tool that prints 2 copies of the object using both carriages ;########################################################################################################################## M563 P2 D0:1 H1:2 X0:3 F0:0 S"Duplikation" ; tool 2 uses both extruders, hot end heaters and fans, and maps X to both X and U G10 P2 X-25 Y0 U-176.3 Z0 S0 R0 ; set tool offsets and temperatures ;G10 P2 X10 Y0 U-176.3 Z0 S0 R0 ; set tool offsets and temperatures ;G10 P2 X0 Y0 U-40 Z0 S0 R0 ; set tool offsets and temperatures G10 P2 R0 S0 M567 P2 E1:1 ; set mix ratio 100% on both extruders ;########################################################################################################################## ;Create a tool that Prints in Mirrior Mode ;########################################################################################################################## ;M563 P3 H1:2 D0:1 X0:3 F0:0 S"Spiegeln" ;G10 P3 X-25 Y0 U-176.3 Z0 S0 R0 ;G10 P3 R0 S-2 ;########################################################################################################################## ; Custom settings are not defined ;########################################################################################################################## ;########################################################################################################################## ;Temperatur anpassung MCU ;########################################################################################################################## M912 P0 S2 ;########################################################################################################################## ; Miscellaneous ;########################################################################################################################## M501 ; load saved parameters from config-override.g M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss M98 P"GlobaleBuildplate.g" G4 S2 ; wait for expansion boards to start```
start.g:
M291 P"Start.g wird ausgeführt" S0 if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed G28 M98 P"/Macros/SUB/CheckDoor" M561 ; Disable Mesh Bed Kompensation G4 S1 M106 P3 S25 ; LED schalten 25% M98 P"/Macros/SUB/Preheat" G28 Z0 ; Z Homen M98 P"/Macros/Buildplate"
The mesh is then called up via M98 P"/Macros/Buildplate". For example, for the BlackPrint and PLA printing plate it is BlackPrint60°C.csv
this is my slicer start code:
T0 M291 P"Beginne slicer start gcode" S0 M703 ; load config file for [filament_type] G90 ; set printer absolute mode M82 ; set extruder to absolute mode M106 S0 ; fan off M106 P3 S180 ; LED an T0 ; set first toolhead M703 ; load config file for [filament_type] G1 Z3 F2000 ; Move to Z3 for height clearance before Intro line G92 E0 ; set position M291 P"Intro Line" S0 M116 S5 M400 ; intro line G1 Z0.35 F5000 G1 X60 Y-2 F5000 G1 X150 Y-2 E16 F1000 G1 X170 y-2 F5000 G1 X170 Y0 F5000 G1 X150 Y0 F500 G1 X60 Y0 E30 F1000 G1 X40 Y0 F5000 G1 Z5 F2000 ; Move to Z5 to prevent dragging nozzle and scratching bed G92 E0 ; set position G1 F2000 M117 "Druck wird gestartet"
-
-
@Anawandur from the middle of the 3 photos in your post, I think the bed is quite severely tilted or warped, and either you haven't generated a height map and applied mesh bed compensation or it isn't working.
Please post the height map that you were using for that print.
-
@dc42 My macro buildplate is loaded in start.g, in which the correct mesh and Z-offset are loaded according to the filament and loaded print plate.
start.g
M291 P"Start.g starting" S0 if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed G28 M98 P"/Macros/SUB/CheckDoor" ;Check whether the door must be opened or closed according to the material M561 ; Disable Mesh Bed Kompensation M106 P3 S25 ; LED 25% M98 P"/Macros/SUB/Preheat" ; Heat Makro G28 Z0 ; Z Home M98 P"/Macros/Buildplate" ;Load buildplate including mesh according to the print plate and take Z-offset into account.
Macros/Buildplate
; check if BuildTak selected is if global.buildplate_type == 1 echo "BuildTak is selected" if (move.extruders[0].filament == "PLA" || move.extruders[1].filament == "PLA") G4 S1 M291 P"BuildTak PLA 60°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"BuildTakheightmap60c.csv" ;G4 S2 ;M290 S-0.20 ; Baby Stepp is setting ;echo "Babystep for Buildtak is 0.04mm" if (move.extruders[0].filament == "PETG" || move.extruders[1].filament == "PETG") G4 S1 M291 P"BuildTak PETG 70°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"BuildTakheightmap70c.csv" ;G4 S2 ;M290 S0.04 ; Baby Stepp is setting ;echo "Babystep for Buildtak is 0.04mm" if (move.extruders[0].filament == "ASA" || move.extruders[1].filament == "ASA") G4 S1 M291 P"BuildTak ASA 100°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"BuildTakheightmap100c.csv" ;G4 S2 ;M290 S0.04 ; Baby Stepp is setting ;echo "Babystep for Buildtak is 0.04mm" if (move.extruders[0].filament == "PA12CF" || move.extruders[1].filament == "PA12CF") G4 S1 M291 P"BuildTak PA12CF 90°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"BuildTakheightmap90c.csv" ;G4 S2 ;M290 S0.04 ; Baby Stepp is setting ;echo "Babystep for Buildtak is 0.04mm" ;--------------------------------------------------------------------------------------------------------------------------------------- ;check if PEIglatt selected is if global.buildplate_type == 2 echo "PEIglatt is selected" if (move.extruders[0].filament == "PLA" || move.extruders[1].filament == "PLA") G4 S1 M291 P"PEIglatt PLA 60°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"PEIglattheightmap60c.csv" ;G4 S2 ;M290 S0.04 ; Baby Stepp is setting ;echo "Babystep for PEIglatt is 0.04mm" if (move.extruders[0].filament == "PETG" || move.extruders[1].filament == "PETG") G4 S1 M291 P"PEIglatt PETG 70°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"PEIglattheightmap70c.csv" ;G4 S2 ;M290 S-0.20 ; Baby Stepp is setting ;echo "Babystep for PEIglatt is -0.20mm" if (move.extruders[0].filament == "ASA" || move.extruders[1].filament == "ASA") G4 S1 M291 P"PEIglatt ASA 100°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"PEIglattheightmap100c.csv" ;G4 S2 ;M290 S0.04 ; Baby Stepp is setting ;echo "Babystep for PEIglatt is 0.04mm" if (move.extruders[0].filament == "PA12CF" || move.extruders[1].filament == "PA12CF") G4 S1 M291 P"Peiglatt PA12CF 90°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"PEIglatthighmap90c.csv" ;G4 S2 ;M290 S0.04 ; Baby Stepp is setting ;echo "Babystep for Buildtak is 0.04mm" ;--------------------------------------------------------------------------------------------------------------------------------------- ; check if FR4dünn selected is if global.buildplate_type == 3 echo "FR4dünn is selected" if (move.extruders[0].filament == "PLA" || move.extruders[1].filament == "PLA") G4 S1 M291 P"FR4dünn PLA 60°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"FR4dünnheightmap60c.csv" G4 S2 M290 S0.20 ; Baby Stepp is setting echo "Babystep for FR4dünn PLA is +0.20 mm" if (move.extruders[0].filament == "PETG" || move.extruders[1].filament == "PETG") G4 S1 M290 R0 S0 ; Reset baby steps M291 P"FR4dünn PETG 85°C" R"Heightmap loaded" S0 T4 M300 S800 P1000 G29 S1 P"FR4dünnheightmap85c.csv" G4 S2 M290 S0.20 ; Baby Stepp is setting ;M300 S2000 P1000 echo "Babystep for FR4dünn PETG is +0.20 mm" if (move.extruders[0].filament == "ASA" || move.extruders[1].filament == "ASA") G4 S1 M291 P"FR4dünn ASA 85°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"FR4dünnheightmap100c.csv" G4 S2 M290 S0.20 ; Baby Stepp is setting echo "Babystepp für FR4dünn ASA is +0.20 mm" if (move.extruders[0].filament == "PA12CF" || move.extruders[1].filament == "PA12CF") G4 S1 M291 P"FR4dünn PA12CF 90°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"FR4dünnheightmap90c.csv" G4 S2 M290 S0.20 ; Baby Stepp is setting echo "Babystep for FR4dünn PA12CF is +0,12 mm" ;--------------------------------------------------------------------------------------------------------------------------------------- ; check if BlackPrint selected is if global.buildplate_type == 4 echo "BlackPrint is selected" if (move.extruders[0].filament == "PLA" || move.extruders[1].filament == "PLA") G4 S1 M291 P"BlackPrint PLA 60°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"BlackPrintheightmap60c.csv" ;G4 S2 ;M290 S-0.12 ; Baby Stepp is setting ;echo "Babystepp für BlackPrint is -0.12mm" if (move.extruders[0].filament == "PETG" || move.extruders[1].filament == "PETG") G4 S1 M290 R0 S0 ; Reset baby steps M291 P"BlackPrint PETG 85°C" R"Heightmap loaded" S0 T4 M300 S800 P1000 G29 S1 P"BlackPrintheightmap85c.csv" ;G4 S2 ;M290 S-0.12 ; Baby Stepp is setting ;M300 S2000 P1000 ;echo "Babystepp für BlackPrint is -0.12mm" if (move.extruders[0].filament == "ASA" || move.extruders[1].filament == "ASA") G4 S1 M291 P"BlackPrint ASA 85°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"BlackPrintheightmap100c.csv" ;G4 S2 ;M290 S-0.12 ; Baby Stepp is setting ;echo "Babystepp für BlackPrint is -0.12mm" if (move.extruders[0].filament == "PA12CF" || move.extruders[1].filament == "PA12CF") G4 S1 M291 P"BlackPrint PA12CF 90°C" R"Heightmap loaded" S0 T4 M290 R0 S0 ; Reset baby steps M300 S800 P1000 G29 S1 P"BlackPrintheightmap90c.csv" ;G4 S2 ;M290 S0.04 ; Baby Stepp is setting ;echo "Babystep for Buildtak is 0.04mm"
-
When did you last update the mesh?
-
@Phaedrux I created this mesh directly before printing. Since I have big problems with the first layer, the bed is leveled with a macro and the Heightmap.csv is created. Depending on the loaded build plate and filament type, the map is then written to example: Blackprintheightmap60°c, which is then loaded into start.g.
-
@Anawandur Have you tried using more points in the mesh? It looks to me like that smaller rectangle would fit between two mesh points. Are you sure you have the probe offset set correctly? Might be worth posting a picture of the printer showing the probe position so that folks can check that the offsets look correct? Also worth posting your zhome macro so we can see what that is doing.
If things are still not correct I'd be tempted to try to simplify things and just run a gcode file that performs the scan and uses that mesh to do the test print. You have a lot going on in all of those various macros.
-
@gloomyandy I've already tried it with 15 points. If I use more points, the first layer becomes even more uneven. With 3x3 I get a better result than with 7x7.
I think I have specified the offset correctly, the IR sensor is located at the back right.
Home.z
T-1 P0 G91 ; relative mode G1 H2 Z4 F2000 ; raise head 4mm to ensure it is above the Z probe trigger height G90 ; back to absolute mode G1 H2 X170 Y110 F6000 ; put head over the centre of the bed, or wherever you want to probe M558 F400 G30 ; lower head, stop when probe triggered and set Z to trigger height G1 H0 Z5 F250 M558 F50 A9 S0.003 G30 M558 F200 A1 G1 H1 X-350 U355 Y-2 F3000
-
I did a few more tests today. I have different printing plates. On my BlackPrint FR4 (black) I have different mattings due to previous prints or scratched surfaces, which apparently has a big impact on the IR probe.
In the following photo you can see a matting strip, that's exactly where the IR probe measured and found .0.9mm.
.
Then I took a measurement on a BuildTag. There is white writing on the bottom left and in the middle there are marks from an old print. This is also reflected in the heightmap.
.
-
I have now replaced the IR sensor with the BL-Touch and the problem is gone. I think that the different shades on the printing plates caused these errors when using the IR sensors.
-
@Anawandur From the wiki page on the IR probe, it may not work well with a PEI plate: https://docs.duet3d.com/Duet3D_hardware/Accessories/IR_Probe#bed-surface
This is highly transparent to IR. Paint the underside matt black (see below) before using adhesive sheet to attach it to the bed plate. Changes to the surface finish affect the trigger height slightly. We have a report that as an alternative to painting the underside black you can sand the top surface with very fine grit sandpaper until it has a dull matt appearance, but we have not confirmed this.
Clearly it's not working great with FR4 either. I don't think we have ever tested it with the IR probe, but it sounds like FR4 is invisible to IR too. Painting the back matt black and/or sanding the top may help. But it sounds like you're happy with a BLTouch now.
Ian