Printing ABS on the Mini with PINDA and 110° Bed  

  RSS
bluedragonx
(@bluedragonx)
Active Member

tl;dr: Printing ABS is easier of you can get your bed to a reasonable temperature and your Z probe has temperature compensation. Read on for the why or scroll to the end for how.

 

Prusa advertises the Mini as being able to print ABS. Well, because that's something I wanted, and or a lot of other reasons, I bought a Mini. After a few weeks of familiarizing myself with the machine and printing a lot of fun stuff in PLA I decided it was time. So I built myself an enclosure of the highest of quality and made a few attempts.

The first problem I ran into was corners warping up from the bed - a classic with ABS. I was already running at 100°, which is the Mini's max bed temperature since 4.0.3. I did not want to roll back to 4.0.3 so I made an effort to get the enclosure temp up as high as I could in the hopes that I could avoid it. I couldn't. There just wasn't any way. I was unwilling to roll back to 4.0.2 (there are a lot of fixes in the firmware since then) so, being a software engineer by trade, and having a not insignificant amount of experience spelunking through other people's code, I set out to fix it. Turns out that's easy, you just have to change this line. Unfortunately you also have to void your warranty. Since warranties are made to be voided, I continued.

 

The results were positive. With the bed at 110° I had good prints with good bed adhesion. But here I ran into my next problem. As I began printing multiple parts back to back I found that I had to continuously adjust my Z offset down to get a consistent first layer. As the enclosure kept heating the MINDA would go out of  calibration. Prusa solves this on the i3 by using a PINDA - it has a thermistor so that the Z offset can be adjusted based on the temperature of the probe. The Mini does not have this.

 

Well what about the board? Does it support a PINDA? A visual inspection says yes - there's a four pin plug on the board and the MINDA uses only three of them. But is that extra pin connected to anything? Yes actually!

Well, what about software? I did some more code spelunking - and came up bunk. It turns out that Marlin added PINDA support in January - but for whatever reason the version of Marlin the Mini uses was forked from mainline last year and isn't making an effort to stay up to date.

 

I set out to backport PINDA support into Prusa's Marlin fork and ordered a PINDA in the mean time. This turned out not to be as much effort as I anticipated, so I installed the PINDA and loaded the new firmware.

Problem number...what number are we on? I ran the G76 calibration (which take forever, by the way) but the values were still off. It was better, but the calibration routine simply doesn't work for the Mini for whatever reason. I roughly followed this guide for getting the PINDA working on the i3 and (after a great deal of effort) was able to get sweet, consistent layers at temperatures from 35° to 60°! 

Now I've moved on to further tuning other areas to improve my ABS prints, but I believe I have solved the shortcomings of the Mini as it pertains to printing ABS.

 

"But how can I do this myself?" Well:

 

  1. First you need my modified firmware. I make no warranty of this. If it breaks your printer or causes other damage then you are on your own. You will need to build it yourself but it is available here.
  2. Void your warranty and install the firmware.
  3. Perform Z probe temperature calibration. This process requires some gcode-fu. This is best accomplished via OctoPrint but you can do this by typing out gcode in files and carrying them over to your printer on USB. You can...but it would take forever. The steps I follow:
    1. You will perform steps 3-4 for each of these temperatures: 35, 40, 45, 50, 55, 60
    2. Clear existing offsets with `M871 R`
    3. Print a first layer test and use live Z to adjust the offset. You will need to add the gcode `M192 S35` (replacing `35` with the temperature you're calibrating for) into your starting gcode after the bed temperature is set. It may help to center the PINDA probe on the bed after homing.
    4. Record the Z value.
    5. Subtract the first Z offset from each of the results. The resulting value will be the offset at each temperature. USe the M871 gcode to set each point: `M871 P I1 V0`, `M871 P I2 V30`, and so on.
    6. There are three data points missing for I7, I8, and I9. You should use linear extrapolation to determine those points in the event your probe heats past 60 degrees, or just add the offset of the last two values to get close enough.
    7. Save EEPROM with `M500` once the M871 commands have been loaded into the printer. I suggest you keep your calibration values somewhere in case your EEPROM gets cleared for any reason. I keep a Google Sheet with all of my calibration results.
  4. Add a `M192 S35` command to your start gcode after the bed heater is turned on so that your probe is heated to the minimum operating temperature.

 

And that should do it. This is working well for me so far and I'm quite happy with the results. What I'm not happy with is Prusa. They knew this was an issue and yet opted not to include PINDA support in the Mini. This is unacceptable when they clearly advertise it as supporting ABS which can only reasonably be printed in an enclosure. I cannot say that I would have saved any time just buying an Ender, but I do feel somewhat cheated as at least the Ender would have been simpler to set up for this and I would have saved money. As it stands I've spent a great deal of time fixing this issue and had to spend more money to upgrade the printer. A disappointment.

Posted : 17/07/2020 2:04 am
Dave
(@davem)
Active Member

Based on your work, it doesn’t sound like this would be an unreasonable expectation for a “MINI MK2” upgrade from Prusa that wouldn’t require voiding the warranty. 

Posted : 18/07/2020 1:49 am
bluedragonx
(@bluedragonx)
Active Member

Yes, though I would argue that it should have shipped with a PINDA to begin with. They could have added software support later. Prusa knows that the Z probe requires temperature compensation and the price difference between a MINDA and a PINDA isn't enough to warrant the cost savings.

They presumably reduced the max bed temperature after release as the bed doesn't reliably hit 110° on all Minis. That's an oversight in design or testing on their part and a Mk2 would benefit from an improved heating element.

Posted : 18/07/2020 2:44 am
Karl Herbert
(@karl-herbert)
Famed Member
Posted by: @bluedragonx

tl;dr: Printing ABS is easier of you can get your bed to a reasonable temperature and your Z probe has temperature compensation. Read on for the why or scroll to the end for how.

 

Prusa advertises the Mini as being able to print ABS. Well, because that's something I wanted, and or a lot of other reasons, I bought a Mini. After a few weeks of familiarizing myself with the machine and printing a lot of fun stuff in PLA I decided it was time. So I built myself an enclosure of the highest of quality and made a few attempts.

 

The first problem I ran into was corners warping up from the bed - a classic with ABS. I was already running at 100°, which is the Mini's max bed temperature since 4.0.3. I did not want to roll back to 4.0.3 so I made an effort to get the enclosure temp up as high as I could in the hopes that I could avoid it. I couldn't. There just wasn't any way. I was unwilling to roll back to 4.0.2 (there are a lot of fixes in the firmware since then) so, being a software engineer by trade, and having a not insignificant amount of experience spelunking through other people's code, I set out to fix it. Turns out that's easy, you just have to change this line. Unfortunately you also have to void your warranty. Since warranties are made to be voided, I continued.

 

The results were positive. With the bed at 110° I had good prints with good bed adhesion. But here I ran into my next problem. As I began printing multiple parts back to back I found that I had to continuously adjust my Z offset down to get a consistent first layer. As the enclosure kept heating the MINDA would go out of  calibration. Prusa solves this on the i3 by using a PINDA - it has a thermistor so that the Z offset can be adjusted based on the temperature of the probe. The Mini does not have this.

 

Well what about the board? Does it support a PINDA? A visual inspection says yes - there's a four pin plug on the board and the MINDA uses only three of them. But is that extra pin connected to anything? Yes actually!

 

Well, what about software? I did some more code spelunking - and came up bunk. It turns out that Marlin added PINDA support in January - but for whatever reason the version of Marlin the Mini uses was forked from mainline last year and isn't making an effort to stay up to date.

 

I set out to backport PINDA support into Prusa's Marlin fork and ordered a PINDA in the mean time. This turned out not to be as much effort as I anticipated, so I installed the PINDA and loaded the new firmware.

 

Problem number...what number are we on? I ran the G76 calibration (which take forever, by the way) but the values were still off. It was better, but the calibration routine simply doesn't work for the Mini for whatever reason. I roughly followed this guide for getting the PINDA working on the i3 and (after a great deal of effort) was able to get sweet, consistent layers at temperatures from 35° to 60°! 

 

Now I've moved on to further tuning other areas to improve my ABS prints, but I believe I have solved the shortcomings of the Mini as it pertains to printing ABS.

 

"But how can I do this myself?" Well:

 

  1. First you need my modified firmware. I make no warranty of this. If it breaks your printer or causes other damage then you are on your own. You will need to build it yourself but it is available here.
  2. Void your warranty and install the firmware.
  3. Perform Z probe temperature calibration. This process requires some gcode-fu. This is best accomplished via OctoPrint but you can do this by typing out gcode in files and carrying them over to your printer on USB. You can...but it would take forever. The steps I follow:
    1. You will perform steps 3-4 for each of these temperatures: 35, 40, 45, 50, 55, 60
    2. Clear existing offsets with `M871 R`
    3. Print a first layer test and use live Z to adjust the offset. You will need to add the gcode `M192 S35` (replacing `35` with the temperature you're calibrating for) into your starting gcode after the bed temperature is set. It may help to center the PINDA probe on the bed after homing.
    4. Record the Z value.
    5. Subtract the first Z offset from each of the results. The resulting value will be the offset at each temperature. USe the M871 gcode to set each point: `M871 P I1 V0`, `M871 P I2 V30`, and so on.
    6. There are three data points missing for I7, I8, and I9. You should use linear extrapolation to determine those points in the event your probe heats past 60 degrees, or just add the offset of the last two values to get close enough.
    7. Save EEPROM with `M500` once the M871 commands have been loaded into the printer. I suggest you keep your calibration values somewhere in case your EEPROM gets cleared for any reason. I keep a Google Sheet with all of my calibration results.
  4. Add a `M192 S35` command to your start gcode after the bed heater is turned on so that your probe is heated to the minimum operating temperature.

 

And that should do it. This is working well for me so far and I'm quite happy with the results. What I'm not happy with is Prusa. They knew this was an issue and yet opted not to include PINDA support in the Mini. This is unacceptable when they clearly advertise it as supporting ABS which can only reasonably be printed in an enclosure. I cannot say that I would have saved any time just buying an Ender, but I do feel somewhat cheated as at least the Ender would have been simpler to set up for this and I would have saved money. As it stands I've spent a great deal of time fixing this issue and had to spend more money to upgrade the printer. A disappointment.

Good work 👍 👍 !
Is there a documentation of what you have changed or added to the firmware?

Thanks!

Statt zu klagen, dass wir nicht alles haben, was wir wollen, sollten wir lieber dankbar sein, dass wir nicht alles bekommen, was wir verdienen....
Posted : 30/09/2020 10:04 pm
bobcousins
(@bobcousins)
Reputable Member
Posted by: @karl-herbert
Posted by: @bluedragonx

tl;dr: Printing ABS is easier of you can get your bed to a reasonable temperature and your Z probe has temperature compensation. Read on for the why or scroll to the end for how.

 

Prusa advertises the Mini as being able to print ABS. Well, because that's something I wanted, and or a lot of other reasons, I bought a Mini. After a few weeks of familiarizing myself with the machine and printing a lot of fun stuff in PLA I decided it was time. So I built myself an enclosure of the highest of quality and made a few attempts.

 

The first problem I ran into was corners warping up from the bed - a classic with ABS. I was already running at 100°, which is the Mini's max bed temperature since 4.0.3. I did not want to roll back to 4.0.3 so I made an effort to get the enclosure temp up as high as I could in the hopes that I could avoid it. I couldn't. There just wasn't any way. I was unwilling to roll back to 4.0.2 (there are a lot of fixes in the firmware since then) so, being a software engineer by trade, and having a not insignificant amount of experience spelunking through other people's code, I set out to fix it. Turns out that's easy, you just have to change this line. Unfortunately you also have to void your warranty. Since warranties are made to be voided, I continued.

 

The results were positive. With the bed at 110° I had good prints with good bed adhesion. But here I ran into my next problem. As I began printing multiple parts back to back I found that I had to continuously adjust my Z offset down to get a consistent first layer. As the enclosure kept heating the MINDA would go out of  calibration. Prusa solves this on the i3 by using a PINDA - it has a thermistor so that the Z offset can be adjusted based on the temperature of the probe. The Mini does not have this.

 

Well what about the board? Does it support a PINDA? A visual inspection says yes - there's a four pin plug on the board and the MINDA uses only three of them. But is that extra pin connected to anything? Yes actually!

 

Well, what about software? I did some more code spelunking - and came up bunk. It turns out that Marlin added PINDA support in January - but for whatever reason the version of Marlin the Mini uses was forked from mainline last year and isn't making an effort to stay up to date.

 

I set out to backport PINDA support into Prusa's Marlin fork and ordered a PINDA in the mean time. This turned out not to be as much effort as I anticipated, so I installed the PINDA and loaded the new firmware.

 

Problem number...what number are we on? I ran the G76 calibration (which take forever, by the way) but the values were still off. It was better, but the calibration routine simply doesn't work for the Mini for whatever reason. I roughly followed this guide for getting the PINDA working on the i3 and (after a great deal of effort) was able to get sweet, consistent layers at temperatures from 35° to 60°! 

 

Now I've moved on to further tuning other areas to improve my ABS prints, but I believe I have solved the shortcomings of the Mini as it pertains to printing ABS.

 

"But how can I do this myself?" Well:

 

  1. First you need my modified firmware. I make no warranty of this. If it breaks your printer or causes other damage then you are on your own. You will need to build it yourself but it is available here.
  2. Void your warranty and install the firmware.
  3. Perform Z probe temperature calibration. This process requires some gcode-fu. This is best accomplished via OctoPrint but you can do this by typing out gcode in files and carrying them over to your printer on USB. You can...but it would take forever. The steps I follow:
    1. You will perform steps 3-4 for each of these temperatures: 35, 40, 45, 50, 55, 60
    2. Clear existing offsets with `M871 R`
    3. Print a first layer test and use live Z to adjust the offset. You will need to add the gcode `M192 S35` (replacing `35` with the temperature you're calibrating for) into your starting gcode after the bed temperature is set. It may help to center the PINDA probe on the bed after homing.
    4. Record the Z value.
    5. Subtract the first Z offset from each of the results. The resulting value will be the offset at each temperature. USe the M871 gcode to set each point: `M871 P I1 V0`, `M871 P I2 V30`, and so on.
    6. There are three data points missing for I7, I8, and I9. You should use linear extrapolation to determine those points in the event your probe heats past 60 degrees, or just add the offset of the last two values to get close enough.
    7. Save EEPROM with `M500` once the M871 commands have been loaded into the printer. I suggest you keep your calibration values somewhere in case your EEPROM gets cleared for any reason. I keep a Google Sheet with all of my calibration results.
  4. Add a `M192 S35` command to your start gcode after the bed heater is turned on so that your probe is heated to the minimum operating temperature.

 

And that should do it. This is working well for me so far and I'm quite happy with the results. What I'm not happy with is Prusa. They knew this was an issue and yet opted not to include PINDA support in the Mini. This is unacceptable when they clearly advertise it as supporting ABS which can only reasonably be printed in an enclosure. I cannot say that I would have saved any time just buying an Ender, but I do feel somewhat cheated as at least the Ender would have been simpler to set up for this and I would have saved money. As it stands I've spent a great deal of time fixing this issue and had to spend more money to upgrade the printer. A disappointment.

Good work 👍 👍 !
Is there a documentation of what you have changed or added to the firmware?

Thanks!

There is a link to the firmware in Step 1 of the instructions above.

Posted : 01/10/2020 12:35 pm
Karl Herbert
(@karl-herbert)
Famed Member

@bobcousins

Thanks for the feedback!
In other words: how can I include these changes in future FW versions, e.g. 4.2.1 or later. For this I would like to know which files have been changed or modified or added. I assume that the author will not constantly update the FW. It would be helpful at least until Prusa has possibly included these functionalities.

thanks again!

Statt zu klagen, dass wir nicht alles haben, was wir wollen, sollten wir lieber dankbar sein, dass wir nicht alles bekommen, was wir verdienen....
Posted : 01/10/2020 3:11 pm
bluedragonx
(@bluedragonx)
Active Member

I've described the changes here. If you're interested in maintaining your own fork then you can start by looking at the branches and commits that I've ported and authored in my the linked Github repo. I will not be porting this to future versions. There's nothing compelling in the newer firmwares that would warrant the time. Furthermore I intend to get Klipper operating on the Mini as my next project, so I'll be abandoning Marlin entirely.

Posted : 01/10/2020 6:27 pm
nikolai.r
(@nikolai-r)
Noble Member
Posted by: @karl-herbert

In other words: how can I include these changes in future FW versions, e.g. 4.2.1 or later. For this I would like to know which files have been changed or modified or added. I assume that the author will not constantly update the FW. It would be helpful at least until Prusa has possibly included these functionalities.

You can use difference functions in git(hub) to see the changes were made to any branch or release. But I can tell you, maintaining a fork is no fun and just a lot of work.

@bluedragonx: Thanks for the write up.

Often linked posts:
Going small with MMU2
Real Multi Material
My prints on Instagram...
Posted : 01/10/2020 7:03 pm
Karl Herbert
(@karl-herbert)
Famed Member

@bluedragonx

Thanks anyway for the interesting contribution. I will take a look at it and weigh it up. Currently I could not find any problems with the Mini, but it is an interesting stuff.

Statt zu klagen, dass wir nicht alles haben, was wir wollen, sollten wir lieber dankbar sein, dass wir nicht alles bekommen, was wir verdienen....
Posted : 01/10/2020 7:18 pm
Share:

Please Login or Register