*To bang or not to bang? What's your opinion?* Don't forget to like & subscribe and share this video on Facebook, Reddit, Twitter, and other platforms!
On my Ender 3 Pro I left the Bang Bang when I switched to the Btt skr e3 mini 1.2. I have no issues with it. The temperature is only fluctuating by a couple of centidegrees. I guess it will not improve that much changing to PID.
I plug my bed to a lab power supply. I made a Voltage/Temperature calibration curve. That's it: constant current and constant temperature; no noise, no fluctuations whatsoever.
Wow, interesting finding, I wasn’t thinking that could have such a big effect. Now I’m thinking to put some dial gauges on the bed and see how much it deforms while doing some heating tests. Many thanks for the insights Stefan, very useful 🙌😎
For large 4-point constrained PCB beds it can be really dramatic. With the PCB bed from my BLV cube kit, you could see it moving by eye if you parked the nozzle over the middle.
@@CNCKitchen And it would be super to compensate this in firmware during print with automatic z-baby stepping :D Like mesh bed leveling, but temperature mesh compensation.
@@JanVokas That would be really neat, but you would only be able to compensate for the bed lifting/dropping. If your bed were warping during the heat cycling, you could compensate for the first couple layers, but after that, the part geometry will result in unpredictable part movement.
@@Kineth1 You are correct, but what if the mesh compensations were applied to the X, Y and Z? This might be harder to predict, however! Perhaps, piezoelectric sensors could be placed under the print bed to monitor any bed deflections and compensate in real time!
Wow, One degree variation doesn’t seem like it would affect the bed warp that much. Im surprised. I can’t help wondering if the change in current draw from bang bang switching fully on/off is causing issues with the stepper drive current thus causing those issues where PID is a more gradual change in current draw. Wonder if a better power supply would also correct it. That buzzing in the bed seems more like a power supply noise (ripple) which made me think of current as a possible cause. Very interesting video Stefan. Well done.
I might have a closer look at that though I don't think that the steppers are a problem due to their discrete steps, though who knows what happens to the microsteps?
@CHEP I think you might be on to something there. I had a problem in my printer with the Z-axis not moving enough upon layer change. The firmware would indicate the correct height but the actual height was about 20-25% lower. This only happened to me when I would print ABS with the bed at 105C so drawing a lot of current. When I would print PLA with smaller bed temp it would print just fine. My fix was increasing the Z-motor Vref voltage. I too believe that a minute 1-1.5C variation in bed temperature wouldn`t affect the print quality that much. This needs further investigation.
@@CNCKitchen Full steps on stepper motors are fairly accurate when stationary. Any microstep step is not precise and can be within a small number of actual microsteps of the position you think your at. Take a strip of paper and rip it in half, now do the same thing again and again and again and again. You now have 16 smaller pieces of paper. You have increased resolution but the resolution does not equal precision. Each piece of paper is not precisely torn, not precisely the same size as the others. With the ripped paper you can separate two objects by 3 micro-pieces of paper and the position will be more accurate than if you were limited to 1 full strip of paper. But, the spacing is not precisely 3/16 of the full paper strip. It may in fact be closer to 2/16 or 4/16 because our paper micro steps are not precise. Microsteps increase resolution of movement and smoothness of movement at low speeds. You don't get something for nothing though. With microstepping as the RPM increases the potential power output of the motor decreases. Some stepper drivers will 'morph' steps from n-microsteps to full steps as RPM increases (all done internally, you are still sending microsteps to the driver). This gives you the best of both worlds. Increased resolution, increased low speed smoothness and all the power out of the motor at high RPMs. Please see my post about indicating to your bed when the bed it stationary and heated to measure any deflection in Z. My suspicion is that if your bed is deflecting with a 2C delta T then it is due to it being held at the corners thus any thermal expansion/contraction can only be relived by the center of the bed bowing in the Z direction.
Best comment exactly what I thought. Its a power issue. Electrical noise affecting the steppers. If say a second power supply was used for the bed heat this would also fix it.
I had similiar problem, but I discovered, that my problem was in suppling power. If power was switched to bed, nozzle temperature also fluctuated and I belive that this was the problem. My solution was new power supply. Your videos are still on of the best in 3dprinting and keep up good work!
Please try this experiment. Keep the bed stationary, use a sensitive test indicator, something with 0.01mm graduations, to indicate the center of the bed. Now try each heater control scheme and see how much your bed is actually moving in Z due to fluctuations in temperature.
The issue with that kind of a measurement is that your indicator is also growing and shrinking as the temperature fluctuates, and needs to be accounted for.
@@TurkishLoserInc introduce a thermal insulator, such as a 3d printed object. if the effect is real it doesn't matter whether or not the dial indicator is directly in contact with the bed
Hi Stefan, good video. This problem also annoyed me for some time. Easier way to see if this problem is the cause: print without bed temperature. Then you don't need to compare with the threaded rod Cheers
Minor correction - @6:00, it's only the PIDTEMP line that needs to be commented out (undefined) to use bang-bang. You would need to leave "BANG_MAX" defined. Note line 483 only says to comment out the one line.
Thank you so much for bringing this to my attention! I've been pondering where the "banding" in my prints was coming from. My build platform is 600x600 and heating via a AC heating element controlled by a SSR. It makes sense that a bang-bang controller would cause the bed to flex and result in print distortions. Thank you!!!
This is a good argument for a bed that is only fixed at one end and the other is able to slide when it expands rather than the whole thing bulging in the middle.
omg I needed this two years ago when I built my HEVO with a duet... I had this same artifact and it took me FOREVER to figure out because as you noted, if the print speed changes (shorter layer times for instance) the banding changes. I printed so many vases and spent a lot of time on duet's help forums before someone had me try changing the bed to PID and like magic it disappeared.
even with a large thermal mass for example if the glass isnt thermally bonded (bed clips) there is still maybe an isulation gap causing the metal plate to flex under the glass causing the glass the pulsate with the metal plate though on my large printer i use bang bang, with thermal tape under the glass and its fine
@@meky0 Wouldn't it be the reverse? If the glass is bonded to the metal, it's forced to follow the erratic motions of the metal. If the binding is loose, the glass bed can sortof ignore whatever the metal underneath is doing. Not too sure about this though.
@@CNCKitchen The original pid bed implementation in Marlin was specifically because of a glass bed. The heater side of the glass swinging around in temperature by just a little while the top was more stable would cause bowing that led to banding. Although that was with a 250w heater, which is a bit large.
Thank you so much. I have been fighting this kind of Z banding for over a year. Have not been able to correct it. Thank you so very much!!!! I am now Z Band FREE!!!!!!!!!!!!!
You are totaly on point. I know this problem for many years. But in my case I had a huge problem to configure correct PID values, because everytime i run the autoconfiguration it gave me different results and they were not good. Turns out this was problem with stability on 5V stepdown on my MKS Gen v1.4 board which is used asi reference for calculations. (It was the same for all boards at that time - old RAMPs, Rumba, MKS Gen L, all have bad architecture). In the end adding capacitor and endless tunning of PID values helped and now my bed oscilate +/-0.1. But it was pain to get there.
I had the same issue a couple of years ago. The way I found out it was due to bang-bang was that the issue disappeared when I printed PLA with the bed off. PID solved it.
You are my favourite 3d printing Nerd (no offense) :-) Well explained, very very good video! Now I check immediately if my printer is crap or only misconfigured...Thank you!
I don't think it's that. It must have something to do with the "power shocks" on the Mainboard itself. They are strong and happen less frequently than mini burst of PID.
It is, at least on the original printer that bed pid was implemented for in Marlin, the mendel max. It had a 250w heater and a glass bed. The math is all in the git commit to prove it.
@@stephenmcdonald3781 the temp sensors are super quick? It only depends on often you poll it. You could basically get 5 different values within a second when you heat it up. However the temperature transfer in the bed is slower and thus you will get a different temperature through the entire bed. The temp sensor can only tell what's in the center of the bed.
Wow, it never occurred to me that the thermal expansion & contraction of the bed would affect prints in such a way. I have a Prusa i3 Mk3 because I wanted a matured product where I wouldn't have to try and diagnose odd issues like this, just build it, tune it a little and endlessly print. 2.5 years of ownership has shown that strategy paid off :)
My lack of money made me go the complete opposite direction for my 1st printer: an entirely scratch built project, not even a clone, only just similar to the i3 style in montion design (and even that just similar - mine runs on lead screws all the axis), and Marlin on it. Sure as heck is quite the ambitions project and I have quite a bit on my hands to tune and test, tho I'm glad to report to anyone that cares that it's indeed moving and heating correctly right now!
I just had a problem with thick and thin layers and if I hadn't have watched this video a week previously, I'd have tore my hair out 😄 Thanks for the great info!
In fact I like that "digi" singing noises. My first CNC machine (Tron CNC) did make a huge variety of sounds, especially when going through curved paths. It was a music to my ears. Most annoying sound came from the spindle,compressor or vacuum. No matter if the vac was used to hold down material or to suck the debris off the milling path.
Hey, another reason for z-banding other than lead screws and heatbeds might be an extruder feed gear that is not concentric with the stepper motor shaft. This can be pretty easily checked by printing two different sized towers and seeing if the z-banding happens at the same frequency on both of them, if it does not, then your feed gear might not be concentric.
Oh wow, very very well documenting, Stefan. I have learnt the way to scientifically document my researches and projects through your video over the years.
Awesome work, not many people catch these flaws.. kudos to you my friend! Noticed this a long time ago back around ~2014 when i used my MakerBot Replicator Clone with wooden frame as my main and only machine. When i figured the temperature swing was causing the parts to come off over time despite hallow or solid parts that would cause more "pull" from shrinkage, i started using insolation under the bed and found wool not only insolated beautify but also damped the vibrations on fast prints or sharp edges. I also used Kapton tape on the Y axes bed frame to reflect the heat upwards. From that experience i quickly noticed the banding gone and put two and two together. Massive improvement for ABS print bed adhesion *I didn't get any data back then but i did for an i3 machine i have now, It went from ~5 degree swing while printing a large vase (to simulate air pumping though and over the bed) to a ~1 degree swing
Bang bang, he shot me down Bang bang, I hit the ground Bang bang, that awful sound Bang bang, my baby shot me down ..... 🤣 Very informative video. Thanks.
Great information! I had this problem on one of my printer, and it was clear to me that the problem is in the Z Axis but after seeing this am going to try your method to know which one is really the problem! Danke Stefan!
Suggestion for an experiment: Take a 2nd bed board, flip in over and epoxy it to the bottom of your working bed board. Wire both heaters in parallel. In this manner, any strain force generated by one board will (approximately) be compensated by the strain force (in the opposite direction) of the other board. I anticipate that you only need to measure the temperature of the top board. If you have concerns about double the wattage, then heat the bottom board, and measure the temperature of the top board.
I have created an external plate based on 300W mosfet for bed contol. With 12V 200W Webasta heater it need about 5 minutes to reach real 90 degrees on glass. PID control work really great, temp hold in coridor about 0.1 degree. I must mention that 220W Ac relay is really dangerous in this mode.
Finally a "trusted source" I can point people towards when I tell them to PID their bed. Usually it goes like Them: "I have Z wobble, but my leadscrews are alright" Me: "PID temp your bed" Them: "but Marlin says PID temp your bed is bad" Me: "Give it a try, it worked for me" Them: "I don't see how it can be physically relevant" Me: "I can show you on my printer by dynamically enabling and disabling PID on the bed heater that it works" Them: "must be a firmware bug then" Me: "Please, just try" Them: : "Oh, look it worked!" And then people subsequently forget about it. (Marlin docs still state "If your configuration is significantly different than this and you don’t understand the issues involved, you probably shouldn’t use bed PID until it’s verified that your hardware works" -- I understand people shying away with this caveat. On Duet hardware it works well, of course (-: )
Instead of printing the 2nd cylinder at 200% speed, print a 2nd cylinder of half the diameter of the 1st, ensuring the printing speeds are equal (don't let auto-cooling slow down the smaller one). That way the material load on your extruder will remain equal, eliminating an extra experiment variable.
I would have thought that the change in voltage (because of the power draw of the bed) would have more of an effect on the heating ability of the hot end... This is very interesting. I wonder if the PID tuning of the hot end would be different with and without the bed being heated (as a result of the different drive voltage). Great video. Thanks
That's it ! Nothing to do with thermal expansion/contraction. More like voltage fluctuation affecting the board...the power supply, and consequently the motors. Bang-bang control create two distinct levels...while PWM control spread out the influence.
Also, depending on how much load the heater is applying, turning it hard on and hard off could also cause voltage dip on the extruder heater, or the motors
I've been chasing that Z(?) banding issue for some time. Consequently I now have Single Start Z screws and Dual Collet type couplers fitted which helped Z banding... a LOT. But there remains similar artifacts to what you are showing in this video. Believe that the source is My OverHyped Bondtech extruder mechanism.. The main filament gear uses a Grub screw. Which shifts the drive gear Off center when tightened. Lovely !! Add on the other rather imprecisely machined driven extruder gear and the foolish variable diameter Hobbed drive teeth detail.. and I get a pulsed (and a visible /measurable ! ) extrusion flow variation. Backing off the Idler spring tensioner Helps.. Noticably. It seemingly lets those gears have a wee bit of wiggle room for slightly improved flow consistency. Replacing that idler gear with a suitable Ballbearing race... improves the situation .. notably more.. In process of finding / building a Better quality (verifiably concentic) Extruder drive setup. Likely a Single Drive gear version.
Hey guy. I studied materials engineering in school, just got into 3d printing through work as a product designer. In school I studied both the optical and mechanical properties and i was always dubious of the procedural similarities in "performance". I challenge you to print a clear filament AS CLEAR AS YOU CAN - petg, pla, abs, nylon it doesn't matter - and test the mechanical properties to there not so clear counterparts.
For everyone saying it could be an issue with the voltage drop in the PSU. I had this problem with a 230v heated bed run on a different circuit via a SSR. And the problem was solved by using PID instead of bang bang. That being said in a 12v bed there might be other effects as well.
Nice video. A few years back when I built my Hypercube Evolution I had both lead screw induced Z-wobble and bed heating induced layer inconsistencies as shown in the video. That combination was "fun" to figure out...
You want to put some insulation on the underside of the heated bed, I have mine insulated, I put that on when I was building it since it worked well on my Anet. Temperatures are more consistent (within 0.2C) and it saves a small bit of energy when printing. You want a silicon sock on the hotend also of course for the same reasons.
My first 3D printer was a Solidoodle 3. There was a design flaw that resulted in a large lag between the heater and the thermistor on the extruder. It would take over 30 seconds for the thermistor to see a change in the temperature after the heater would turn on, and vice versa when it turned off. This became quite a problem when I upgraded to newer firmware because the thermal runaway kept tripping. It also meant that, even with a reasonably-well tuned PID control, the temperature varied by +/- 5C from the setpoint. I believe this was the cause of some very noticeable inconsistencies in the surfaces of the printed parts.
This happened to me exactly a couple days ago with my Anet ET5! Instead of the bed fluctuating it was my extruder. I Had to flash marlin 2.0 since the stock Anet firmware won't let me do a PID tune through pronterface. After PID tuning I've had much better prints :)
@@CNCKitchen but you should check the voltage/current on the Mainboard traces itself. The bed instantly sucks full power causing little spikes which could also drain/hit capacitors and cause a quick shortage of current. The fan of a JGAurora A5 always lowered the rpms once the bed banged. But of course I'm not as much inside this tech as you are. Just trying to guide thoughts in another direction.
@@CNCKitchen Could ultimately be skewing the thermistor though. Would be interesting if you could rule this out. You could remove the heatbed (leave it attached, but don't actually print on it - i.e., just leave it sitting behind the machine). So you have the same electrical load, but you're not heating the actual print surface.
Yes also the LEDs on the heatbed flickered annoyingly so i used PWM few. 5Hz and it works perfect 0.0°C differences and low switching good for my FET :)
I had the same problem after I changed the firmware/hardware configuration. It took me weeks until I found an article about that phenomenon. After changing the Z setup multiple times! 🙄😅
Incredibly smart. I never had thought of this. This issue may also be amplified and propagated to the extruder especially if the printer has a relatively weak power supply. It can be demonstrated as patterns due to the higher switching noise as the power supply is unable to provide enough power to the bed, or by skipping and under extrusion.
I think my Ender 3 has the same problem. I added a glass plate to the print bed, which of course changes the thermal capacitance. The graph of the bed temperature in octoprint is oscillating and some pattern is visible along the z axis in the prints. I will definitely try tuning the PID loop!
A quick and easy test to eliminate the heatbed cycling as the issue is you can turn off the bed after the first few layers and you can see the results quite well. It will go from the regular layer issues to completely smooth. I just print with the bed off since I am too lazy to change firmware.
Fascinating! I never knew the bang bang was called... well... that. Always just thought it was a realllly slow kind of PID. :P Amazing how much those bed temps affected the print quality, I would never have guessed!
It blew my mind when I first saw how pronounced the artifacts can be from the bed expanding and contracting. It’s definitely important to use PID for the bed, and there is little reason to use bang-bang heating today.
One of the causes could be also voltage drop caused by bed current draw, as MK3 PSU works close to its limit. Anyway, I never thought about it, I am pretty sure my bed works at bang-bang and I spent more than healthy amount of time chasing z-banding. Thanks!
Hey Stefan, on the topic of thermals you should do an episode on modding the prusa part cooling fan or shroud or both. That's a longstanding problem with prusas
you must be mistaken, everyone knows that prusa's are perfectly engineered printers with no flaws that never have problems and turn out perfect prints every time and are completely worth the 100% markup.
Yay, there is one issue with older or cheaper heat beds. PID may trip thermal runaway. Likely during preheat as when the bed gets close to set temp, it starts pulsing to slow heating to prevent over swing. But that makes it rise slower than the min “degrees per minute” even when set at the lowest setting. Been considering figuring out how to leave Bang Bang, but put in slicer gcode to switch somehow after preheat.
I find that PID auto tuning is very poorly done. I generally tune it by hand using Repetier Server where you can see the % power and all the fluctuations. Generally I get it down to a very smooth very low noise power level.
Yes, I find I get the best and most sane PID values by hand tuning on the bed. Especially with AC powered beds that have large thermal mass. If you go to Wikipedia for PID control there is a graphic on the right hand side about halfway down about PID tuning that explains almost everything you need to know in one graph. It shows how the P, I, and D affect the setpoint, rate, and oscillation.
That is also my guess. Bang Bang has a very high impact on the Mainboard especially when using the mosfets from the board and not exter Al mosfets with seperate cables. I speak from experience. Bought a used JGAurora A5 which had bang bang and no separate mosfets. You could hear the power loss on the cooling fan. Also it affected the print quality each time the 300x300mm bed banged power. But it's just one possible reason.
I'm inclined to go this way as well. With steel and aluminum expansion coefficients in the 10-30 micrometer range per C and a fluctuation only being within a single degree, one would need a fan actively cooling the board itself to produce those kinds of results. I think the hysteresis board management is drawing power from the heater, motors, or both and causing the issue, not the bed flexing.
That’s very interesting about SSR controlled beds. I have one that seems to struggle getting to temperature. I blamed it on lack of insulation and the fact it’s trying to heat through a magnetic bed to the spring steel / pei surface
I have used a bang-bang algorithm for a diet. I weigh myself every day and keep a running average of three days. If my weight is above the set point ( a linear ramp down to my weight goal), I take a low calorie day (750 cal). If I am at or below my set point, I eat my maintenance calories. It work pretty well, but getting two low calorie days in a row takes a bit of will power.
Exactly the problem I had with my Anycubic Mega S. I never imagined only +/- 1°C could have such a huge impact, but apperently it does. Even the part cooling fan could decrease bed temperature and cause an overpronounced elephant foot if set to 100% too early - a badly designed fan duct could make things even worse if air stream blows too much towards the heat bed or hits the nozzle. And when the hotend is PID-tuned without having the fan enabled, it might cause undershooting or dips in temperature when you actually use the fan - in the worst case even introduce or worsen clogging... I wish I had seen your video back then, as it took me a few weeks to actually figure this out. Anycubic's support first sent me new threaded rods and brass nuts, but there was still significant Z-banding. After quite a few test prints I noticed, pretty much by coincidence, that printing with the heat bed turned off didn't result in what I thought to be the usual Z-wobble. Turns out the latest official firmware from their website (that I downloaded and flashed right after I got the printer) was either using bang-bang or badly tuned PID values. But since PIDTEMPBED was disabled, I had to switch to knutwurst's firmware to be able to PID auto-tune the bed at all. Anycubic's support is pretty awesome, though - They quickly sent me an updated firmware with bed PID auto-tuning enabled. Now I have an officially supported firmware and completely got rid of any Z-banding.
Great find! My printer has been using bang-bang forever, and I've had issues like this before (although not entirely sure if Z-wobble or this). Something else to consider : If using bang bang, the 0% -> 100% duty cycle change has a large impact on supply voltage to the rest of the system (on my printer at least). I hear the drop in RPM (therefor voltage) to my part and cold-end cooling fans when it periodically turns on. Could this also contribute to this anomaly, and to what degree? I wouldn't think that a +-1 degree temp change on the bed could be the sole contributing factor. Maybe a test with a bed heater with an independent power source could provide some data on this. Thanks for a great video as always!
What about power supply? You basically share the PSU with the motors, bed heating and hotend - while the bed is heating you take away current from the motors which would lead to less torgue = less extrusion assuming you are printing fast, also the hotend would get less power so it would take longer to correct temps. The holding/and moving torgue for the z-axis would also drop means it won`t get to the same position.
I have to try this with my Anycubic I3 Mega. The slow on/off led under the bed indicates bang bang. It's a big issue with a 4mm thick glass ultrabase. I'd love to see that effect go away. It's the last hurtle I have to clear with my printer!
Oh, that explains why I was never able to solve that wobbly Z axis on my CR10s, but it went completely away when I moved to a duet! That's also why PLA was the most affected, while with PETG and ABS the problem was less severe, the higher temperature meant that the bed was not so much overpowered that there was a lot of difference in temperature between on and off!
Hi 3D brothers - you can use the prefix "U1" on the PID Tuning command (M303 E-1 C8 S60 U1) on Marlin to keep the values in memory - just save with M500 and you don´t have to send them back to the EEPROM - saves one step :) cheers
the PID noise can easily be mitigated by properly setting up the PWM frequency in SOFT_PWM_SCALE. Marlin used to warn you about the negative effects of using a higher PWM frequency in the comments, the FETs heating up due to having to switch more frequently.
I've been trying to diagnose such things on my printer too. I also did notice that prints in an enclosure come out perfict whereas those printed in open air have slight and near regular variations. So, right now, ABS prints come out better than PLA for me.
Moin Stefan! Kleiner Tip: Du sprichst „Z“ immer so aus wie das englische „C“. Das kann an manchen Stellen ziemlich verwirrend sein. Sprich‘ es besser wie auf Deutsch, nur mit einem weicheren „s“ also quasi „set“ aus. Glückwunsch zu den 300k, das wurde aber auch Zeit!🍺
Völlig normale Aussprache für amerikanisches Englisch. Das kartesische Koordinatensystem kommt meines Wissens auch ohne eine C-Achse aus, weshalb dort eigentlich keine Verwirrung aufkommen sollte, oder sehe ich das falsch?
Die ham mich angekuckt die amies wo ich zed gesagt hab, die kannten den Buchstaben nicht. Wo die mir dann "sie" zurückgesagt hatten hab ich mindestens doppelt so doof zurück geschaut
Ganz zu Anfang klingen die z-patterns wie c-patterns , das stimmt schon. Die z-axis klingt dann aber wieder richtig. Aber wer spricht schon 'richtig' englisch, bei so vielen Akzenten unter native speakern. Oxford-Englisch zu lehren ist wirklich ne sch. idee, schön das du lieber am. engl. versuchst.
This could explain the banding issues on the Artillery Sidewinder X1. It has a large AC bed. I hope it’s at least doing PID, because upgrading firmware on it can be tricky due to the separate touch panel controller.
I think you found the root cause (Bang bang style system) but it is not due to the reason you think (bed heat changes). There is no way a degree one way or the other is causing this, but the hit on the power supply with a Bang Bang system will drag down the machine and leave the banding. It is like rolling up a window on a car, then roll up the other side while the first one is still going up. The one going up slows and speeds up as you start and stop moving the other side.
Interesting. You've just inspired me to install a prometheus exporter plugin on octoprint. Can't wait to see detailed temperature graphs. edit: Status update: Works great. I wish I had done that sooner
@@CNCKitchen works nicely so far, there's an accompanying Grafana dashboard as well. I'm currently printing PETG with 80°C bed temperature. Min temperature: 79.4°C, Max temperature 80.6°C, average temperature 80°C. I think my next Marlin build will use PID.