Bed Leveller (3D Printer Assistant)

So you have written that new, must have program. Let us see it here.
PartierSP
Posts: 57
Joined: Tuesday 30th November 2021 12:14am
Location: Canada
Contact:

Re: Bed Leveller (3D Printer Assistant)

Post by PartierSP »

I guess that's just the 'Engineer' in me concerned with that. My old job we'd have to brain storm all the safety issues of anything we were designing. No matter how big or small. Old habits die hard. ;)

Like you said, when the hot end is down near the bed this isn't an issue for most printers. But if someone set the rapid plane up a couple of cm, they could get their fingers stuck in between the hot end and the bed. Now is this ever going to happen? Shouldn't any owner of a 3D printer realize the risks of a moving printer running at temperature? You would think they should, and hence respect the machine. Thus I was probably just over thinking this. The gains in having the hot end on really does out weighs this issue.

---------------------------------------

When I originally trammed my bed I only checked the corners. I later decided to check the centre as well and found it was actually warped upwards a bit (probably less then 0.10mm). But since Cura likes to put everything in the centre, I would set all four corners down slightly to get the centre of the bed at the correct height.
PartierSP
Posts: 57
Joined: Tuesday 30th November 2021 12:14am
Location: Canada
Contact:

Re: Bed Leveller (3D Printer Assistant)

Post by PartierSP »

For minimal size I was just going to add a form resize event and programmatically resize it if it's less then a given amount. Not sure if there's a cleaner way to do it in Gambas or not. I want to see if it gives me an 'form fighting' effect or not.
PartierSP
Posts: 57
Joined: Tuesday 30th November 2021 12:14am
Location: Canada
Contact:

Re: Bed Leveller (3D Printer Assistant)

Post by PartierSP »

stevedee wrote: Tuesday 7th December 2021 11:14am It took me a while to realise that there was often a tiny bead of plastic on the tip of the nozzle (barely visible) which can throw out your leveling if the nozzle is cold. See my post for a better explanation: http://captainbodgit.blogspot.com/2021/ ... r-bed.html
Interesting read. Me being new to owning/running one of these printers, there is always something new to discover/learn. Yes we definitely need to add more functionality to this program. Get the hot end going, and even move to a predefined 'Cleaning' position. But I think after cleaning we may want to force another homing cycle in case the head has been bumped too hard. Thoughts?
User avatar
stevedee
Posts: 518
Joined: Monday 20th March 2017 6:06pm

Re: Bed Leveller (3D Printer Assistant)

Post by stevedee »

PartierSP wrote: Tuesday 7th December 2021 11:47am I guess that's just the 'Engineer' in me concerned with that. My old job we'd have to brain storm all the safety issues of anything we were designing...

...Shouldn't any owner of a 3D printer realize the risks of a moving printer running at temperature?..
Like you, product safety occupied a large chuck of my working life, especially during the 1980s & 90s with the introduction of the European Safety Directive.

My 3D printer is certainly a hazardous piece of kit. Not only can the nozzle reach temperatures well over 250'C, but there are several crush hazards, finger traps and other pinch points around the partially unguarded toothed belts. So I doubt that it complies with EU safety standards.
...But since Cura likes to put everything in the centre...
Although Cura initially places models/prints at the centre of the platform, I always drag them to the corner nearest Home and then slice the model before printing.
User avatar
stevedee
Posts: 518
Joined: Monday 20th March 2017 6:06pm

Re: Bed Leveller (3D Printer Assistant)

Post by stevedee »

PartierSP wrote: Tuesday 7th December 2021 12:15pm ...Get the hot end going, and even move to a predefined 'Cleaning' position. But I think after cleaning we may want to force another homing cycle in case the head has been bumped too hard. Thoughts?
I guess the first question is 'what is this program for? Is it basically for your own use or do you see this as an App for 3D Printer users?

It would be possible to set out a procedure and program your app to do every step from heating the nozzle and retracting the filament, to stepping between 'calibration' points on the bed. Or you could just settle for the system to step between cal points with a heated bed & nozzle, stopping periodically to allow the user to make a bed adjustment.

Anyway, here is one idea for a procedure;
1. press start and machine 'Homes' while heating bed and nozzle.
2. Once machine reaches target temperatures, program automatically retracts filament by a few millimetres (i.e. not far enough for filament to fully eject from extruder) and extruder rises (z) enough for nozzle inspection/cleaning (maybe 150mm).
3. press something to continue, machine Homes, then moves to position #1
4. User adjusts bed.
5. press to continue to next position, or to exit.
6. repeat 4 & 5 until done.
PartierSP
Posts: 57
Joined: Tuesday 30th November 2021 12:14am
Location: Canada
Contact:

Re: Bed Leveller (3D Printer Assistant)

Post by PartierSP »

Been busy working away at this. Been incorporating many of the ideas and suggestions. I also got rid of the sqlite3 dependency (I really like that gb.settings class, its so handy).

cogier - Thanks for that upload. It gave me a really good step up on getting FMain to resize. I've since tweaked it further and like how it works now except for the delay when moving the middle button row (Home, HE On, Bed On, Settings). Not sure what I can do to fix that yet.
stevedee wrote: Tuesday 7th December 2021 4:41pm I guess the first question is 'what is this program for? Is it basically for your own use or do you see this as an App for 3D Printer users?
Well I'm going to make it useful for me, and would like it to be useful for yourself as well. At that point, I'm sure others would find it useful as well.
It would be possible to set out a procedure and program your app to do every step from heating the nozzle and retracting the filament, to stepping between 'calibration' points on the bed. Or you could just settle for the system to step between cal points with a heated bed & nozzle, stopping periodically to allow the user to make a bed adjustment.

Anyway, here is one idea for a procedure;
1. press start and machine 'Homes' while heating bed and nozzle.
2. Once machine reaches target temperatures, program automatically retracts filament by a few millimetres (i.e. not far enough for filament to fully eject from extruder) and extruder rises (z) enough for nozzle inspection/cleaning (maybe 150mm).
3. press something to continue, machine Homes, then moves to position #1
4. User adjusts bed.
5. press to continue to next position, or to exit.
6. repeat 4 & 5 until done.
Instead of doing a full program of moves, waits, repeats, etc, I'm thinking of just enabling/disabling buttons as required. I like the extra flexibility this would give the operator. Especially when doing the actual tramming. The operator could jump from one position to any other position. And this would also allow them to recheck/clean the head at any time too. The only real issue I'd have to deal with would be Home first, and never move the extruder unless we are at full hot end temperature. Home first is easily dealt with by enabling/disabling buttons. Enforcing Hot End temperature would require sending a M109 S200 prior to an E command. I need to verify I got that M code correct. But it should set and pause the printer until the temperature is reached vs M104 which simply changes the temperature.

Anyway, here is the current beta I have. :)
Attachments
Bed-Leveller-beta.zip
Current Beta
(19.97 KiB) Downloaded 279 times
User avatar
cogier
Site Admin
Posts: 1118
Joined: Wednesday 21st September 2016 2:22pm
Location: Guernsey, Channel Islands

Re: Bed Leveller (3D Printer Assistant)

Post by cogier »

cogier - Thanks for that upload. It gave me a really good step up on getting FMain to resize. I've since tweaked it further and like how it works now except for the delay when moving the middle button row (Home, HE On, Bed On, Settings). Not sure what I can do to fix that yet.
In my experience, a Splitter only wants 2 'top level' items to deal with. So I have put the 'Buttons' and the bottom panel in another VBox container so that the Splitter only has to deal with the 2. You need to use AutoResize OR Expand but not both. You can set the position of the split in Splitter with the Layout command, see line 37. vsMain.Layout = [40, 60] = 40% for the top and 60% for the bottom. You can set up a setting to save this array value if you want.
Bed-Leveller-beta-1.3.tar.gz
(18.81 KiB) Downloaded 247 times
User avatar
stevedee
Posts: 518
Joined: Monday 20th March 2017 6:06pm

Re: Bed Leveller (3D Printer Assistant)

Post by stevedee »

PartierSP wrote: Thursday 9th December 2021 11:26am ...Instead of doing a full program of moves, waits, repeats, etc, I'm thinking of just enabling/disabling buttons as required. I like the extra flexibility this would give the operator. Especially when doing the actual tramming. The operator could jump from one position to any other position. And this would also allow them to recheck/clean the head at any time too. The only real issue I'd have to deal with would be Home first, and never move the extruder unless we are at full hot end temperature. Home first is easily dealt with by enabling/disabling buttons. Enforcing Hot End temperature would require sending a M109 S200 prior to an E command. I need to verify I got that M code correct. But it should set and pause the printer until the temperature is reached vs M104 which simply changes the temperature...
I started hacking something together yesterday afternoon, based upon my suggested procedure.

I'm using "M104 S180" and "M140 S60" to set the temperatures, and "M155 S5" to instruct printer to return the temps every 5 seconds. I then get the program to proceed once the values are >= to the target values (180'C & 60'C).
Here are my Constants so far:-
Const MOVE_HEAD As String = "G0"
Const AUTO_HOME As String = "G28"
Const SET_HOTEND_TEMP As String = "M104 S"
Const SET_BED_TEMP As String = "M140 S"
Const RESET_TEMPS_0C As Integer = 0
Const BED_60C As Integer = 60
Const NOZZLE_180C As Integer = 180
Const DISABLE_STEPPERS As String = "M18 X Y"
Const TEMPS_REPORT_ON As String = "M155 S5"
I haven't done the filament retraction bit yet (...too many things competing for my time!).
User avatar
stevedee
Posts: 518
Joined: Monday 20th March 2017 6:06pm

Re: Bed Leveller (3D Printer Assistant)

Post by stevedee »

I thought I'd take this opportunity to describe the bed leveling process, and there are two reasons why I'd like to do this; (1) there maybe those that are interested in what it means & how it works, either now or in the future, and (2) its also an opportunity for someone to tell me if I have got it wrong ...because I may have!

With the kind of 3D printer that I have, there are four motors;
- one drives the printer head/extruder left and right (the X axis)
- the second one drives the heated bed or platform forwards & backwards (Y axis)
- the third one raises and lowers the print head (Z axis)
- and the forth one attempts to extrude the plastic filament into the heated print head/extruder (like a glue-gun) or retract it

With this configuration, when the printer is given the "home" command (g-code G28) it operates the X,Y & Z motors to their minimum position; i.e. the motors stop when each axis operates its dedicated limit switch. On my printer, these are just simple micro-switches.

All further movement (e.g. X, Y & Z coordinates defined by the object you are printing) is relative to this "home" position. The task of bed-leveling involves raising or lowering each corner of the bed until the bed almost touches the extruder nozzle. I try to set this nozzle-to-bed gap to 75um (0.075mm). Therefore if I then print an object where the required layer thickness is (say) 0.2mm, the first layer is printed with the nozzle about 0.275mm above the bed.

So you can see that we are operating with a very demanding setup. And the expansion/contraction of parts due to temperature should, where possible, be minimised.

Its quite remarkable that the damn thing works!
PartierSP
Posts: 57
Joined: Tuesday 30th November 2021 12:14am
Location: Canada
Contact:

Re: Bed Leveller (3D Printer Assistant)

Post by PartierSP »

stevedee wrote: Thursday 9th December 2021 4:26pmI try to set this nozzle-to-bed gap to 75um (0.075mm). Therefore if I then print an object where the required layer thickness is (say) 0.2mm, the first layer is printed with the nozzle about 0.275mm above the bed.
I was doing much the same except using a single sheet of printer paper as my shim instead. But I was finding it was too thick and I tried switching to some thinner paper (what a pain to work with that was). It was then I found out I should have been telling the printer to position its self the paper thickness above the bed and then level it. And that's what started this project. So in reality any shim with a known thickness will work. For that matter, even a decent quality drill shank could possibly be used.
Post Reply