Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🚧 WIP: Steel sheet check #4832

Draft
wants to merge 4 commits into
base: MK3
Choose a base branch
from

Conversation

3d-gussner
Copy link
Collaborator

@3d-gussner 3d-gussner commented Jan 8, 2025

Thanks @jfestrada for the idea in #4569.

This is a different approach for this request.

We have the https://help.prusa3d.com/materials (which is missing the PP powder coated steel sheet) and we could use it to warn users when they start to print:

  • Add new parameter Type to the M850 gcode and HW Setup -> Sheets to set the type of sheet

    • Smooth

    • Textured

    • Satin

    • NylonPA

    • PP

    • Custom

    • Reuse and add eeprom values needed

      • The Bed and PINDA temp values within the sheets eeprom aren't / have never been used. Replace these Sheet type
        previous values are >10 as the MINtemp for Bed would not allow any lower values so resetting these with 255 or default values 0-6 is not an issue
    • Also add M862.7 to check the compatible sheets with parameter P. In the PrusaSlicer Filament profiles we could add it to the custom G-code
      As the materials help article shows compatibility ✔️ and warnings ❕and not to use ❌ I would suggest a bit based value
      bit 0 = Smooth compatible
      bit 1 = Textured compatible
      bit 2 = Satin compatible
      bit 3 = NylonPA compatible
      bit 4 = PP compatible
      bit 5 = Custom sheet compatible (like G10 sheets see https://www.youtube.com/watch?v=g0PK4oXbJT8)

  • Add an additional Check state Always or Wait which is the same as Warn but doesn't timeout and HAS to be confirmed on LCD

    • With Always any M115 Gcode will trigger the LCD message to be confirmed.
  • Of course the default setting for the Sheet type check would be warn (with timeout)

ToDos:

  • Bit check M862.7 P

  • And an additional M862.7 parameter Warn with same bit based value

    • Example:
    • PLA : M862.7 P7 W0 PLA is compatible on Smooth, Textured and Satin, no additional warnings BUT NOT compatible on NylonPA and PP
    • ASA: M862.7 P4 W3 ASA is compatible on Satin, warning to use glue stick on Smooth and Textured and BUT NOT compatible on NylonPA
  • In case there is a warning or stop print send also an //action:notification to inform host users.

In PrusaConnect we already have some sheet information

  • Another check we could add is in the Preheat menu, so users which use that will be warned before the starting a print or 1st layer calibration.

  • Update Materials help page as PP sheet is missing

  • Optional Add prusa.io/materials link we could use in the warnings

    • This will need new translations as we are then limited to 2 rows for the message and the 3rd would be used for the link.
  • Update PrusaSlicer filament profiles for MK2.5/S and MK3/S/+ printers.

  • Review translations for Check selected steel sheet.

    • 🇨🇿 Zkontrolujte tiskový plát. @DRracer
    • 🇩🇪 Überprüfe ausgewähltes Stahlblech. @3d-gussner
    • 🇪🇸 Verifique la lámina de acero seleccionada.
    • 🇫🇷 Vérifiez la plaque en acier sélectionnée. @ErwanAliasr1 @Ilovemyhous
    • 🇭🇷 Provjerite odabrani čelični ploca.
    • 🇭🇺 Nezd meg a kiválasztott az acellapot. @AttilaSVK @Hauzman
    • 🇮🇹 Controllare la piastra d'acciaio selezionata. @wavexx
    • 🇳🇱 Controleer de geselecteerde staalplaat. @vintagepc @3d-gussner @stelgenhof
    • 🇳🇴 Sjekk valgt stålplaten.
    • 🇵🇱 Sprawdź wybraną płyta stalowa. @arekm
    • 🇷🇴 Verificați suprafața de print selectată @leptun @Hauzman
    • 🇸🇰 Skontrolujte vybranú platňu. @ingbrzy @shatter136
    • 🇸🇪 Kontrollera vald metallskivan.

Post release tasks:

  • Update doxygen documentation
  • Update RepRap Gcode wiki
  • PrusaSlicer profiles PR for MK2.5/S and MK3/S/+

Test PR:

  • In PrusaSlicer 2.9.0 -> Printer Tab -> Custom G-code -> Start G-code add below
M862.3 P "[printer_model]" ; printer model check
M862.1 P[nozzle_diameter] ; nozzle diameter check

following lines

;Sheet compatibility see https://help.prusa3d.com/materials

;Smooth   1
;Textured 2
;Satin    4
;Nylon    8
;PP       16
;Custom   32

; P<value> compatible                 W<value> warning, like "with glue stick"
;      SMO TXT SAT NYL PP  CUS         SMO TXT SAT NYL PP  CUS
;PLA :P 1 + 2 + 4              = 7  | W                        = 0
;PET :P     2 + 4 + 8          = 14 | W 1                      = 1
;ASA :P         4              = 4  | W 1 + 2                  = 3
;ABS :P         4              = 4  | W 1 + 2                  = 3
;PC  :P         4              = 4  | W 1 + 2                  = 3
;CPE :P     2 + 4              = 6  | W 1                      = 1
;PVA :P 1 + 2 + 4              = 7  | W                        = 0
;BVOH:P 1 + 2 + 4              = 7  | W                        = 0
;HIPS:P 1 + 2 + 4              = 7  | W                        = 0
;PP  :P                16      = 16 | W 1                      = 1
;FLEX:P     2                  = 2  | W 1     + 4              = 5
;NGEN:P     2 + 4              = 6  | W 1                      = 1
;PA  :P             8          = 8  | W     2 + 4              = 6
;Wood:P         4              = 4  | W                        = 0
;PVB :P 1     + 4              = 5  | W                        = 0
;PEI :P             8          = 8  | W     2                  = 2

M862.7 P{if filament_type[initial_tool] == "FLEX"}2{elsif filament_type[initial_tool] == "ASA" or filament_type[initial_tool] == "ABS" or filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "WOOD"}4{elsif filament_type[initial_tool] == "PVB"}5{elsif filament_type[initial_tool] == "CPE" or filament_type[initial_tool] == "NGEN"}6{elsif filament_type[initial_tool] == "PLA" or filament_type[initial_tool] == "PVA" or filament_type[initial_tool] == "BVOH" or filament_type[initial_tool] == "HIPS" }7{elsif filament_type[initial_tool] == "PA" or filament_type[initial_tool] == "PEI"}8{elsif filament_type[initial_tool] == "PET" or filament_type[initial_tool] == "PETG"}14{elsif filament_type[initial_tool] == "PP"}16{else}0{endif} W{if filament_type[initial_tool] == "PET" or filament_type[initial_tool] == "PETG" or filament_type[initial_tool] == "CPE" or filament_type[initial_tool] == "PP" or filament_type[initial_tool] == "NGEN"}1{elsif filament_type[initial_tool] == "PEI"}2{elsif filament_type[initial_tool] == "ASA" or filament_type[initial_tool] == "ABS" or filament_type[initial_tool] == "PC"}3{elsif filament_type[initial_tool] == "FLEX"}5{elsif filament_type[initial_tool] == "PA"}6{else}0{endif}; steel sheet check

and before

M115 U3.14.1 ; tell printer latest fw version
  • This will add automatically during slicing the needed M862.7 P<value> W<value> to the start gcode.

  • I tried to add the M862.7 to the PrusaSlicer Filament section, but frankly Custom G-Codes are added after the Printer tab Start G-Code. These kind of checks need to be at the beginning, like the Printer Type Nozzle size checks already are!

  • In LCD Settings -> HW Setup -> Checks -> Sheet default is

    • [Warn] which will warn the user on LCD screen with a timeout message when
      • the expected/supported sheet isn't selected / placed on the printer
      • the selected sheet has some warnings, like use glue stick
  • In LCD Settings -> HW Setup -> Steel Sheets -> you find a new menu Type

    • [Smooth | Texture | Satin | NylonPA | PolyPro | Custom]
  • Ideally you have at lest two Steel sheets calibrated.

Test 1

  1. Connect with a serial terminal
    a. ideally enable some logging
  2. Select LCD Settings -> HW Setup -> Checks -> Sheet [Warn]
  3. Select Smooth sheet
  4. Send M862.7 P7 W0 to simulate a PLA print, which can be printed on Smooth, Textured and Satin sheets BUT NOT on NylonPA or PP sheets.
    a. Nothing shown on LCD screen
  5. Send M862.7 P14 W1 to simulate a PET/G print, which can be printed on Textured, Satin and NylonPA sheets BUT NOT on PP sheets. With a glue stick applied the usage of the Smooth sheet is possible and will warn the user.
    a. LCD should show for ~30 seconds
Check selected steel
sheet.

>Cont.        Cancel
  1. Select LCD Settings -> HW Setup -> Checks -> Sheet [Strict]
  2. Repeat Steps 3 to 5
    a. The LCD screen of step 5 shows and NEEDS to be confirmed on LCD
Check selected steel
sheet.

                   v
  1. Select LCD Settings -> HW Setup -> Checks -> Sheet [Always]
  2. Repeat Steps 3 to 5
    a. The LCD message is always shown, but it times out and will continue

Test 2

  1. Connect with a serial terminal
    a. ideally enable some logging
  2. Select LCD Settings -> HW Setup -> Checks -> Sheet [Warn]
  3. Select Smooth sheet
  4. Slice a simple short PLA print with the new/modified PrusaSlicer profile
  5. Start this PLA print
  6. As the Smooth sheet is compatible with PLA no warnings are shown.
  7. Slice a simple short PETG print with the new/modified PrusaSlicer profile
  8. As the Smooth sheet should be used with glue stick while printing PET/G
    a. LCD should show for ~30 seconds
Check selected steel
sheet.

>Cont.        Cancel
  1. Select LCD Settings -> HW Setup -> Checks -> Sheet [Strict]
  2. Repeat step 3 to 8 and you should get same results as in Test 1
  3. Select LCD Settings -> HW Setup -> Checks -> Sheet [Always]
  4. Repeat step 3 to 8 and you should get same results as in Test 1 with one addition
    b. To also check "old" gcode without M862.7, the check is also executed when M115 is send during a print and shows following screen which DOESN'T timeout and NEEDS user interaction!
Check selected steel
sheet.

 Cont.       >Cancel

i. To not delay host connections the M115 doesn't execute the check when the printer is inactive.
ii. Frankly at this moment new gcode will show the LCD message twice when Always is selected.

Copy link

github-actions bot commented Jan 8, 2025

All values in bytes. Δ Delta to base

Target ΔFlash ΔSRAM Used Flash Used SRAM Free Flash Free SRAM
MK3S_MULTILANG 662 2 248330 5656 5622 2536
MK3_MULTILANG 734 2 247772 5665 6180 2527

#: ../../Firmware/Marlin_main.cpp:5844 ../../Firmware/messages.cpp:163
#: ../../Firmware/util.cpp:454 ../../Firmware/util.cpp:455
msgid "Check selected steel sheet."
msgstr "Skontrolujte vybraný platňa."
Copy link
Contributor

@ingbrzy ingbrzy Jan 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be "Skontrolujte vybranú platňu"

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, will wait for other reviews and commit later

@Hauzman
Copy link
Contributor

Hauzman commented Jan 8, 2025

@3d-gussner RO looks good from my perspective

@stelgenhof
Copy link

@3d-gussner NL looks good to me

@Ilovemyhous
Copy link

French gets a green light from my side. 👍

@AttilaSVK
Copy link
Contributor

Hungarian should be "Ellenőrizd a kiválasztott az tárgyasztal lapot"

@3d-gussner
Copy link
Collaborator Author

3d-gussner commented Jan 9, 2025

Hungarian should be "Ellenőrizd a kiválasztott az tárgyasztal lapot"

Thanks for the suggestion. I searched for existing terms and words and for steel sheet I found these:

"Please place steel sheet on heatbed."
"Kerlek, helyzed az acellapot a targyasztalra."

"Please remove steel sheet from heatbed."
"Kerlek, tavolisd el az acellapot az asztalrol."

Can you please also review the rest of the translations (of course so they do not exceed the limits) for "check"?

Now I see "Ellenorizd" and "Nezd meg a" (look at ???) are used for "Check"

Also you can use the diacritics. In this case "Ellenorizd" should be "Ellenőrizd" or not?

@leptun
Copy link
Collaborator

leptun commented Jan 9, 2025

@3d-gussner For ro I would do Verificați suprafața de print selectată. for consistency with the steel sheet naming in the other translations. Still 2 rows so it fits

@3d-gussner
Copy link
Collaborator Author

3d-gussner commented Jan 9, 2025

@3d-gussner For ro I would do Verificați suprafața de print selectată. for consistency with the steel sheet naming in the other translations. Still 2 rows so it fits

Thanks

I will wait for potential other changes before committing.

@ErwanAliasr1
Copy link

ErwanAliasr1 commented Jan 9, 2025 via email

@3d-gussner 3d-gussner added the Post release tasks open Tasks after release label Jan 10, 2025
@AttilaSVK
Copy link
Contributor

Hungarian should be "Ellenőrizd a kiválasztott az tárgyasztal lapot"

Thanks for the suggestion. I searched for existing terms and words and for steel sheet I found these:

"Please place steel sheet on heatbed." "Kerlek, helyzed az acellapot a targyasztalra."

"Please remove steel sheet from heatbed." "Kerlek, tavolisd el az acellapot az asztalrol."

Can you please also review the rest of the translations (of course so they do not exceed the limits) for "check"?

Now I see "Ellenorizd" and "Nezd meg a" (look at ???) are used for "Check"

Also you can use the diacritics. In this case "Ellenorizd" should be "Ellenőrizd" or not?

"Kérlek, helyzed a lapot a tárgyasztalra." - the literal translation is please place sheet on the object table. In Hungarian we don't really say that it's from steel. (kind of like in the Czech original, if I recall correctly)

However, just for consistency sake:
"Kérlek, távolítsd el a lapot a tárgyasztalról." - plase remove the sheet from the object table

Yes, Nézd meg literally means Look at, but it can mean Check as well. I might have used it instead of Ellenőrizd to save two characters. I'm thinking of going through the entire Hungarian translation in the near future to make it more consistent (and to add diacritics)

As for the diacritics, Ellenőrizd is correct.

@leptun
Copy link
Collaborator

leptun commented Jan 10, 2025

I'm thinking of going through the entire Hungarian translation in the near future to make it more consistent (and to add diacritics)

Please tag me when you start working on that as we may have to make a few changes to the diacritics scripts (enable/disable individual characters from the font based on usage).

Add Sheet warning bit check
Improve `M115` steel check when `Always` is selected for host connection
Add some debug output
@3d-gussner
Copy link
Collaborator Author

@AttilaSVK Thanks for the response. Please also tag @leptun when you are done, so we can try to get all used Hungarian diacritics shown correctly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Post release tasks open Tasks after release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants