OpenDACT(Delta Automatic Calibration Tool) - For Repetier
Posted: Sun Jul 19, 2015 2:23 am
Current Status: In Progress/Testing
Contributors: RollieRowland, mhackney, geneb
Source Download: https://github.com/RollieRowland/OpenDACT
OpenDACT(open source delta automatic calibration tool) is an automatic calibration program meant for delta style 3d printers running the repetier firmware.
Update Log:
Version 3.1.0A - Timing fixes, calibration fixes, tons more
Changes:
-The program now utilizes responses from the printer to initiate the next step of the height map generating process.
-Also, the calibration algorithm is ran on a separate thread than the reading thread. This prevents the printer console from being locked up.
-There is also a manual calibration included on the third tab of the advanced area - which utilizes the same exact algorithm as the automatic calibration.
-Slight changes to the calibration control flow, the steps per mm is now corrected afterward. This reduces the error between the horizontal radius changes and the steps per millimeter.
-Heuristic mode fixes
-Disconnection fixes
-Stop button for calibration
-Basic mode is now fully iterative
From default settings on my printer, I got a successful calibration in 3 iterations. After randomizing values (tower offsets, horizontal radius, alpha rotation), I had a successful calibration after 9 iterations - would be faster if heuristic was enabled.
Upcoming Changes:
-improve control flow to increase speed of calibration
Download:
https://github.com/RollieRowland/OpenDACT/releases
Version 3.0.1PA - Calibration Fixes
Changes:
-Tower offset calibration now uses horizontal radius to complete step as opposed to delta radii, also is predicted ahead of measurement - reduces number of iterations.
-Changed main control flow of calibration process
-Time wait for printer moves is now calculated based on the set travel speed/distance
-Support for other system languages(not tested, hands on the killswitch)
Not yet finished:
-Iterative mode(might not be reimplemented)
-Heuristic mode(will decrease number of iterations)
-UI
Download - https://drive.google.com/file/d/0B06WCA ... sp=sharing
Version 3.0.0A - Minor Fixes - Download: https://drive.google.com/file/d/0B06WCA ... sp=sharing
Version 3.0.0PA - Major UI changes, too many calibration fixes to count
The tower offsets and delta radii now calibrate first (and properly). The program can now correctly predict what the values of the heights will be before they are set, similar to before but more accurate. The zprobe setting does not operate properly yet, so it requires that you manually set your z height with your probe in place prior to calibrating and setting the zheight again afterward the calibration completes. This version has been thoroughly tested.
Download - https://drive.google.com/file/d/0B06WCA ... sp=sharing
Version 2.0.5A - Steps Per Millimeter Correction - Untested
I still cannot test this (mostly because my printer is in a thousand pieces throughout the house), however, I am fairly sure the connection issues have been corrected. The thread created for reading the log from the printer would not be created due to incorrect input. This then would trigger an exception to be called as the thread was trying to be joined when it was never created in the first place. I have corrected this specific issue, there may be others though. Also, since there is a new step involved in the calibration you should stay near your printer/kill-switch.
Changes:
-Connection fixes
-Steps per millimeter correction: scaling correction
-Correct horizontal radius values and diagonal rod values
You will now have to know the exact length or at least the theoretical length of your diagonal rods for correct results. Although, you may leave the field blank and it will use the EEPROM value for the length of your diagonal rod.
Download:
https://drive.google.com/file/d/0B06WCA ... sp=sharing
Version 2.0.4PA
Ok, I've just corrected the issue that was causing the XYZ offset to send absurd (20,000+ steps) values back to the printer. This version will include scaling error minimization, 3 different calibration methods, a working UI, damage prevention(no values get sent if they will break your printer), and a still not yet completed tower analysis. The tower analysis is not pertinent to the calibration, which is why I am going to upload the version anyway.
Tests(all EEPROM values reset prior to testing and at 270mm build diameter):
Test 1: Basic Calibration - Tolerance: +/-0.01mm - 6 iterations.
Test 2: Basic Calibration - Tolerance: +/-0.01mm - 8 iterations.
Test 3: A.I. Calibration - Tolerance: +/-0mm - 17 iterations
Test 4: H.A.I. Calibration - Tolerance: +/-0.01mm - 30 iterations
I recommend that you run the tests in this order(only continue if the previous failed):
1. Basic - estimates: fastest, if you know your default settings or the programs defaults work for your printer
2. A.I. - learns offsets and estimates: slower, higher chance of calibration completing if the basic gives you problems
3. H.A.I. - learns offsets and will correct its mistakes: if this doesn't work, then make sure that you are not missing a tower...
Download - https://drive.google.com/file/d/0B06WCA ... sp=sharing
Version 2.0.3PA - Not operating, absurd XYZ offset values
I am going to go ahead and upload what I have so far, the XYZ offset is not as efficient(higher # of iterations) as I would like, but it gets the job done. Also, the printer analysis is not complete. I have the equations written out over a couple sheets of paper, but need to transfer it to code, so at the moment it will not be correct. I have included two screenshots; one without changing the EEPRom settings, and one with setting them to defaults. Both worked.
-Do not run this if you zheight is off by more than 10 millimeters(without changing settings), your nozzle may crash into the plate.
-Make sure you change the Zmin type before running.
-Use G31 to check your probe.
-The advanced calibration does not differ much from the basic calibration at the moment, use either.
I will be changing the basic calibration eventually, but for now it uses the advanced calibration code without checking the offsets. It works the same, if not better, but it will take way longer.
How to:
-Run setup for first time use, run .exe for 2nd+ use.
-enter build diameter
-enter baud rate
-select COM port
-check settings
-press calibrate
-when log says "Calibration Complete", disconnect and close application
-print
This program has not been vigorously tested, there may be some errors, so keep close to the kill-switch. If this causes errors, then copy the console and send it to my email with a description of what you think may have happened.
I plan on eventually compiling my notes/diagrams into a readable format to upload so everyone can understand what all is happening in the calculation - most likely in .PDF format.
Download(with Source and .exe):
https://drive.google.com/file/d/0B06WCA ... sp=sharing
Version 2.0.2PA
Features:
-Choose whether to update EEProm automatically, or save configuration for later.
-Printer learning calibration
-Support for other firmware
-Mapping error in XY scaling, based on the rotation of towers
-Fixed height-map display
**Never Formally Uploaded**
Version 2.0.1Beta - Advanced Calibration - Now slightly more confusing
I have tested everything included in this version and everything works - however if you run advanced calibration, reset your EEProm to default first. Otherwise you will be waiting a while. The only other issues that this version has is in how it logs information, it has no effect on usability, but the height-maps/other program modified textboxes act odd. Also, with XY dimensional accuracy - not much unless your frame is very distorted. Will be fixed soon.
I managed a tolerance of +/- 0.01 at 5mm/s - lower the z-probe start height to 10 with FSRs - but cannot tell if any higher accuracy is achieved due to the significant figures returned from the printer.
New Features:
-support for FSR and Z-Probe
-control over z-probe speed
-less lag/thread sleeping, now depends on how long your printer takes to communicate
-live height-map
-accuracy control
-advanced calibration to learn specifics about Your printer - similar to expert mode in V1.0.3
-maximum iterations
-control over time pausing for printer communication (sends script and waits designated time)
-FSR plate offset control (raises the print height slightly so you have a first layer)
-determine z-probe height, this requires you to set your z-height first
-fixed printer commands
-improved parser
-faster/less lag/connects/sends-receives reliably - thank you mhackney
How To:
Basic Calibration:
-Enter build diameter
-Enter Baud Rate
-Select COM port
-Click connect
-Click Calibrate
-Wait for console to read Calibration Completed
-Disconnect
-Close application
Advanced calibration mode:
-Enter build diameter
-Enter Baud Rate
-Select COM port
-Click connect
-Click the advanced button
-Click advanced calibration
-Acquire patience
-Once finished, you can open the "More..." tab and write down the changed values to save your self time in following calibrations.
-Disconnect
-Close application
Download:
https://drive.google.com/file/d/0B06WCA ... sp=sharing
The download includes the source file/designer file and a how-to.
Version 2.0.0A - Automatic Calibration - Now 300x easier
TLDR Update: This is an automatic calibration tool for delta printers running Repetier 0.91+. Also, you need a Z-Probe.
Currently, the program is set to only calibrate within a tolerance of +/- 0.05 mm, however, my printer finished with a tolerance of +/- 0.02mm. (Second test was +/- 0.015).
Note:
-You do not need to reset your EEProm. I have tested from defaults and after entering in random but close-ish values.
-The program may seem frozen but it is most likely not, I put the threads into sleep mode when communicating with the printer to prevent code from being lost/skipped. This will prevent user input, so if something goes wrong, then use the power switch on your printer.
-Test your Z-Probe before using this program (G31 - hold switch, send/let off switch, send - state should change), the state should read L when you are not pressing the switch, and H when you are pressing it.
-Make sure your Z-Probe height is measured and set correctly. Also, if for some strange reason your Z-Probe height is above 70, do not use this program. PM me and I will increase the g-code height.
-This program is compiled for Windows, it was tested on Windows 8.1 and 10, but should work back to XP as well.
-Disconnect from your printer before closing, else you will receive lag.
-If this changes your Diagonal Rod length more than 0.5 +/-, then you should consider measuring your rods, and if the programs calibration was right then good, otherwise you should probably rebuild your frame.
-Even though this works well on my printer, that does not mean there may not be issues with yours. On the first couple passes keep your hand near the kill switch. That is a warning. I will not be liable for any issues this may cause.
Requirements:
-Z-Probe
-Repetier Firmware 0.91+(This may work with others, although Repetier is the only one which has been tested)
-Windows OS
-Delta 3D Printer (yes, you need this)
-USB cord connected to printer (why did I type that? you know this)
-Drivers installed for your controller
-Know your build diameter
-Know your baud rate
How to:
-Run the .exe
-Enter your printers build diameter
-Enter your printers Baud Rate (look in your printers EEProm in your host software)
-Click connect
-Press Calibrate
-Once Log shows that the calibration is complete, press disconnect, and close the application
I will upload a how-to video soon, although it is fairly self-explanatory.
Download V2.0.0 - https://drive.google.com/file/d/0B06WCA ... sp=sharing
#### Manual Calibration Below ####
TLDR: This is a program which can calibrate delta printers from an inaccuracy of +/- 2mm(Or more! But this was the test value) to an accuracy of +/- 0.015mm in under ten minutes.
If you consider using this I would recommend reading or skimming this post.
Current Version - V1.0.3PA
Updates:
Inversion Control - will help if your dial gauge/measurement tool reads the opposite of mine
Accuracy Control - will allow you to set the desired accuracy of the program, i.e. no more lag on my behalf - you choose how much you want
XYZ Offset Changes - now has the ability to decrease the offset if necessary, i.e. drop from 400 to 200
More expert settings - with this you can calibrate your bed in ONE iteration, however, it takes just as long.
Future Plans:
Speed improvements.
//What
I very recently started to work on a program which will calibrate a delta style 3d printer, which I made to calibrate my Rostock Max V2. This calibrates my printer without even touching the endstops, shimming the bed, or any other interesting method with which I have seen. But with recent tests, I have corrected my printer from a tolerance of about +/- 2mm (yeah, it was far off) to a tolerance of approximately +/- 0.015 in less than ten minutes.
This program corrects the Alpha Rotation, XYZ offset, Horizontal Radius, and Diagonal Rod length. I will go into more detail on how this is done later on in this later on in the post.
Based on tests:
This WILL calibrate your bed even if your towers aren't square.
This WILL calibrate your bed even if your endstops are off, in fact, you won't even need to touch your endstops with this calibration.
This WILL calibrate your bed even if your borosillicate plate is warped. (Of course only to a certain extent)
This WILL calibrate your bed if your bed is slanted.
//Why
I created this program out of frustration, mostly. I have tried using an uncountable amount of techniques others have used to successfully calibrate their printers. Most of the time, the techniques are very similar to how the Rostock Max V2 manual says to calibrate the machine, however, that method is flawed in some cases. It completely ignores 3 radial areas of the plate, while there are 6 that need calibrated. In some cases, this works perfectly, on a perfect machine. However, the method in the manual cannot calibrate printers that are not mechanically perfect.
That is where this program comes into play, as I have tried to manually calibrate tower offset, alpha rotation, etc. But it is next to impossible to get it perfect without spending 4 weeks straight, skipping your job and skipping sleep to calibrate it this way. But this program fixes these issues, and it doesn't take four weeks. I managed to calibrate mine to the precision that is SeeMeCNC states that the Rostock Max V2 can operate at in under 5 minutes.
Of course there are requirements to use this:
-calipers, or a dial gauge
-zip ties, or other way to mount the calipers/dial gauge
-rubber band if you are using calipers(don't laugh)
Or if you are fancy, then you can use a Z-probe.
//How
if you don't have a Z-probe. I attached my calipers with 2 zip ties to the side of my hot end, and attached a rubber band to the slider on the calipers and the other end of the band to the hot end as well, this just allows the calipers to have a slight amount of pressure against the plate, giving more accurate results.
Once you're set up to measure the plate, enter this g-code after setting all of your EEPROM configuration back to it's original settings:
//recommendations
-once your hot end is centered in the middle of the build plate, zero your dial gauge or calipers, otherwise this WILL NOT work
-have the program ready to enter in the data points once you start the calibration g-code
-there is no need to heat your bed, but if you feel it is necessary, then go for it
/////////////////////////////////////G-Code is fixed now, use only on Rostock Max V2 For G-code on other printers reply and we will figure it out.
G28
G1 Z2 F5000
G4 S5
G1 Z50 X0 Y0
G1 Z50 X-113 Y-65
G1 Z2 X-113 Y-65
G4 S3
G1 Z50 X-113 Y-65
G1 Z50 X0 Y0
G1 Z50 X113 Y65
G1 Z2 X113 Y65
G4 S3
G1 Z50 X113 Y65
G1 Z50 X0 Y0
G1 Z50 X113 Y-65
G1 Z2 X113 Y-65
G4 S3
G1 Z50 X113 Y-65
G1 Z50 X0 Y0
G1 Z50 X-113 Y65
G1 Z2 X-113 Y65
G4 S3
G1 Z50 X-113 Y65
G1 Z50 X0 Y0
G1 Z50 Y130
G1 Z2 Y130
G4 S3
G1 Z50 Y130
G1 Z50 X0 Y0
G1 Z50 Y-130
G1 Z2 Y-130
G4 S3
G1 Z50 Y-130
G1 Z50 X0 Y0
G28
///////////////////////////////////// //How it works
To give an explanation of how this program works, I will briefly describe each step.
/* The program in its current state has the ability to calculate your steps per millimeter for your printer if you do not know it(you Really should however), but it is needed to accurately changed the XYZ offset. */
//XYZ offset
This is essentially virtual endstops.
//HorizontalRadius
The program simply averages the heights of the build plate at the towers and virtual towers at the edge of the build plate. This value is then subtracted by each tower to give the new tower heights, and multiplied by -0.5 then added to the horizontal radius. This simply balances the points around zero.
//Delta Radius
Delta Radius is currently bypassed due to changing XY scaling issues. (Replaced with XYZ offset).
//Alpha Rotation
Now, having all non-virtual towers calibrated, the opposing towers need calibrated. This is done partially via alpha rotation.
For instance, when you increase the base value of A by 210 to 211, it increases the virtual tower opposite of the Z tower by 0.5 and decreases the virtual tower opposite of the Y tower by 0.5. Alpha rotation does Not affect the opposite tower of the tower changed or any of the non-virtual towers. Given this, the virtual towers can all be balanced, i.e. the values will all be equivalent but greater than or less than zero (unless you are not from this planet.)
//Diagonal Rod
To give an example of what happens when you change the length of the diagonal rod, if you increase the base value, in my case 269 to 270, the XYZ towers will be increased by approximately 13% of the value changed (1, so 0.13mm) and the virtual towers will be increased by 21% (0.21mm) of the value.
This presents an issue, but nothing that can't be fixed! Given the situation, you could either increase or decrease the value of the diagonal rod until all values are equivalent, but then all values will be greater than or less than 0. But since these heights are all the same it can be canceled out by changing the value of the horizontal radius until all values are approximately zero.
Getting through these steps, it is possible to get a theoretical tolerance of +/- 0.0001mm(the programs settings), giving a perfectly flat bed. (Even if your bed was mechanically warped.)
Following these steps, it is entirely possible to calibrate a delta with only modifying values in the EEPROM. That is what the program does for you! Except all you have to do is enter your current settings and then get your new values right back.
And if your calibration wasn't close enough the first time, you can go through again! But that would only apply if you were planning on printing something 1/10th the thickness of a piece of paper.
//How to use it
Enter in your current settings, then press calibrate, then copy the change data back into your EEPROM. More information is available when you hover over the input boxes in the calibration tool.
Since this is not a compiled program (just Javascript/HTML, sorry I am lazy), I am making it open-source, anyone can improve it and modify it to their need. The current version can be downloaded off of my GitHub page - https://github.com/RollieRowland/Delta- ... ation-Tool
////////////////////////////////////////////////////////////////////////////////////////////
Version 1.0.3 is now up on GitHub, it is best to keep the program up to date, as I make corrections/improvements every day.
////////////////////////////////////////////////////////////////////////////////////////////
-This calibration has only been tested on my Rostock Max V2, although it is set up to work with any delta style machine.
-If the results are not very accurate, then you will have to modify the expert settings.
-If this does not improve your printer at all you can pm me or reply to this post, as there may be issues with the program.
-If you have any recommendations for me to change or add to the program, then pm, reply, or email me.
(If there are any dead links and you would like a specific version of the software then send me an email.)
Contributors: RollieRowland, mhackney, geneb
Source Download: https://github.com/RollieRowland/OpenDACT
OpenDACT(open source delta automatic calibration tool) is an automatic calibration program meant for delta style 3d printers running the repetier firmware.
Update Log:
Version 3.1.0A - Timing fixes, calibration fixes, tons more
Changes:
-The program now utilizes responses from the printer to initiate the next step of the height map generating process.
-Also, the calibration algorithm is ran on a separate thread than the reading thread. This prevents the printer console from being locked up.
-There is also a manual calibration included on the third tab of the advanced area - which utilizes the same exact algorithm as the automatic calibration.
-Slight changes to the calibration control flow, the steps per mm is now corrected afterward. This reduces the error between the horizontal radius changes and the steps per millimeter.
-Heuristic mode fixes
-Disconnection fixes
-Stop button for calibration
-Basic mode is now fully iterative
From default settings on my printer, I got a successful calibration in 3 iterations. After randomizing values (tower offsets, horizontal radius, alpha rotation), I had a successful calibration after 9 iterations - would be faster if heuristic was enabled.
Upcoming Changes:
-improve control flow to increase speed of calibration
Download:
https://github.com/RollieRowland/OpenDACT/releases
Version 3.0.1PA - Calibration Fixes
Changes:
-Tower offset calibration now uses horizontal radius to complete step as opposed to delta radii, also is predicted ahead of measurement - reduces number of iterations.
-Changed main control flow of calibration process
-Time wait for printer moves is now calculated based on the set travel speed/distance
-Support for other system languages(not tested, hands on the killswitch)
Not yet finished:
-Iterative mode(might not be reimplemented)
-Heuristic mode(will decrease number of iterations)
-UI
Download - https://drive.google.com/file/d/0B06WCA ... sp=sharing
Version 3.0.0A - Minor Fixes - Download: https://drive.google.com/file/d/0B06WCA ... sp=sharing
Version 3.0.0PA - Major UI changes, too many calibration fixes to count
The tower offsets and delta radii now calibrate first (and properly). The program can now correctly predict what the values of the heights will be before they are set, similar to before but more accurate. The zprobe setting does not operate properly yet, so it requires that you manually set your z height with your probe in place prior to calibrating and setting the zheight again afterward the calibration completes. This version has been thoroughly tested.
Download - https://drive.google.com/file/d/0B06WCA ... sp=sharing
Version 2.0.5A - Steps Per Millimeter Correction - Untested
I still cannot test this (mostly because my printer is in a thousand pieces throughout the house), however, I am fairly sure the connection issues have been corrected. The thread created for reading the log from the printer would not be created due to incorrect input. This then would trigger an exception to be called as the thread was trying to be joined when it was never created in the first place. I have corrected this specific issue, there may be others though. Also, since there is a new step involved in the calibration you should stay near your printer/kill-switch.
Changes:
-Connection fixes
-Steps per millimeter correction: scaling correction
-Correct horizontal radius values and diagonal rod values
You will now have to know the exact length or at least the theoretical length of your diagonal rods for correct results. Although, you may leave the field blank and it will use the EEPROM value for the length of your diagonal rod.
Download:
https://drive.google.com/file/d/0B06WCA ... sp=sharing
Version 2.0.4PA
Ok, I've just corrected the issue that was causing the XYZ offset to send absurd (20,000+ steps) values back to the printer. This version will include scaling error minimization, 3 different calibration methods, a working UI, damage prevention(no values get sent if they will break your printer), and a still not yet completed tower analysis. The tower analysis is not pertinent to the calibration, which is why I am going to upload the version anyway.
Tests(all EEPROM values reset prior to testing and at 270mm build diameter):
Test 1: Basic Calibration - Tolerance: +/-0.01mm - 6 iterations.
Test 2: Basic Calibration - Tolerance: +/-0.01mm - 8 iterations.
Test 3: A.I. Calibration - Tolerance: +/-0mm - 17 iterations
Test 4: H.A.I. Calibration - Tolerance: +/-0.01mm - 30 iterations
I recommend that you run the tests in this order(only continue if the previous failed):
1. Basic - estimates: fastest, if you know your default settings or the programs defaults work for your printer
2. A.I. - learns offsets and estimates: slower, higher chance of calibration completing if the basic gives you problems
3. H.A.I. - learns offsets and will correct its mistakes: if this doesn't work, then make sure that you are not missing a tower...
Download - https://drive.google.com/file/d/0B06WCA ... sp=sharing
Version 2.0.3PA - Not operating, absurd XYZ offset values
I am going to go ahead and upload what I have so far, the XYZ offset is not as efficient(higher # of iterations) as I would like, but it gets the job done. Also, the printer analysis is not complete. I have the equations written out over a couple sheets of paper, but need to transfer it to code, so at the moment it will not be correct. I have included two screenshots; one without changing the EEPRom settings, and one with setting them to defaults. Both worked.
-Do not run this if you zheight is off by more than 10 millimeters(without changing settings), your nozzle may crash into the plate.
-Make sure you change the Zmin type before running.
-Use G31 to check your probe.
-The advanced calibration does not differ much from the basic calibration at the moment, use either.
I will be changing the basic calibration eventually, but for now it uses the advanced calibration code without checking the offsets. It works the same, if not better, but it will take way longer.
How to:
-Run setup for first time use, run .exe for 2nd+ use.
-enter build diameter
-enter baud rate
-select COM port
-check settings
-press calibrate
-when log says "Calibration Complete", disconnect and close application
This program has not been vigorously tested, there may be some errors, so keep close to the kill-switch. If this causes errors, then copy the console and send it to my email with a description of what you think may have happened.
I plan on eventually compiling my notes/diagrams into a readable format to upload so everyone can understand what all is happening in the calculation - most likely in .PDF format.
Download(with Source and .exe):
https://drive.google.com/file/d/0B06WCA ... sp=sharing
Version 2.0.2PA
Features:
-Choose whether to update EEProm automatically, or save configuration for later.
-Printer learning calibration
-Support for other firmware
-Mapping error in XY scaling, based on the rotation of towers
-Fixed height-map display
**Never Formally Uploaded**
Version 2.0.1Beta - Advanced Calibration - Now slightly more confusing
I have tested everything included in this version and everything works - however if you run advanced calibration, reset your EEProm to default first. Otherwise you will be waiting a while. The only other issues that this version has is in how it logs information, it has no effect on usability, but the height-maps/other program modified textboxes act odd. Also, with XY dimensional accuracy - not much unless your frame is very distorted. Will be fixed soon.
I managed a tolerance of +/- 0.01 at 5mm/s - lower the z-probe start height to 10 with FSRs - but cannot tell if any higher accuracy is achieved due to the significant figures returned from the printer.
New Features:
-support for FSR and Z-Probe
-control over z-probe speed
-less lag/thread sleeping, now depends on how long your printer takes to communicate
-live height-map
-accuracy control
-advanced calibration to learn specifics about Your printer - similar to expert mode in V1.0.3
-maximum iterations
-control over time pausing for printer communication (sends script and waits designated time)
-FSR plate offset control (raises the print height slightly so you have a first layer)
-determine z-probe height, this requires you to set your z-height first
-fixed printer commands
-improved parser
-faster/less lag/connects/sends-receives reliably - thank you mhackney
How To:
Basic Calibration:
-Enter build diameter
-Enter Baud Rate
-Select COM port
-Click connect
-Click Calibrate
-Wait for console to read Calibration Completed
-Disconnect
-Close application
Advanced calibration mode:
-Enter build diameter
-Enter Baud Rate
-Select COM port
-Click connect
-Click the advanced button
-Click advanced calibration
-Acquire patience
-Once finished, you can open the "More..." tab and write down the changed values to save your self time in following calibrations.
-Disconnect
-Close application
Download:
https://drive.google.com/file/d/0B06WCA ... sp=sharing
The download includes the source file/designer file and a how-to.
Version 2.0.0A - Automatic Calibration - Now 300x easier
TLDR Update: This is an automatic calibration tool for delta printers running Repetier 0.91+. Also, you need a Z-Probe.
Currently, the program is set to only calibrate within a tolerance of +/- 0.05 mm, however, my printer finished with a tolerance of +/- 0.02mm. (Second test was +/- 0.015).
Note:
-You do not need to reset your EEProm. I have tested from defaults and after entering in random but close-ish values.
-The program may seem frozen but it is most likely not, I put the threads into sleep mode when communicating with the printer to prevent code from being lost/skipped. This will prevent user input, so if something goes wrong, then use the power switch on your printer.
-Test your Z-Probe before using this program (G31 - hold switch, send/let off switch, send - state should change), the state should read L when you are not pressing the switch, and H when you are pressing it.
-Make sure your Z-Probe height is measured and set correctly. Also, if for some strange reason your Z-Probe height is above 70, do not use this program. PM me and I will increase the g-code height.
-This program is compiled for Windows, it was tested on Windows 8.1 and 10, but should work back to XP as well.
-Disconnect from your printer before closing, else you will receive lag.
-If this changes your Diagonal Rod length more than 0.5 +/-, then you should consider measuring your rods, and if the programs calibration was right then good, otherwise you should probably rebuild your frame.
-Even though this works well on my printer, that does not mean there may not be issues with yours. On the first couple passes keep your hand near the kill switch. That is a warning. I will not be liable for any issues this may cause.
Requirements:
-Z-Probe
-Repetier Firmware 0.91+(This may work with others, although Repetier is the only one which has been tested)
-Windows OS
-Delta 3D Printer (yes, you need this)
-USB cord connected to printer (why did I type that? you know this)
-Drivers installed for your controller
-Know your build diameter
-Know your baud rate
How to:
-Run the .exe
-Enter your printers build diameter
-Enter your printers Baud Rate (look in your printers EEProm in your host software)
-Click connect
-Press Calibrate
-Once Log shows that the calibration is complete, press disconnect, and close the application
I will upload a how-to video soon, although it is fairly self-explanatory.
Download V2.0.0 - https://drive.google.com/file/d/0B06WCA ... sp=sharing
#### Manual Calibration Below ####
TLDR: This is a program which can calibrate delta printers from an inaccuracy of +/- 2mm(Or more! But this was the test value) to an accuracy of +/- 0.015mm in under ten minutes.
If you consider using this I would recommend reading or skimming this post.
Current Version - V1.0.3PA
Updates:
Inversion Control - will help if your dial gauge/measurement tool reads the opposite of mine
Accuracy Control - will allow you to set the desired accuracy of the program, i.e. no more lag on my behalf - you choose how much you want
XYZ Offset Changes - now has the ability to decrease the offset if necessary, i.e. drop from 400 to 200
More expert settings - with this you can calibrate your bed in ONE iteration, however, it takes just as long.
Future Plans:
Speed improvements.
//What
I very recently started to work on a program which will calibrate a delta style 3d printer, which I made to calibrate my Rostock Max V2. This calibrates my printer without even touching the endstops, shimming the bed, or any other interesting method with which I have seen. But with recent tests, I have corrected my printer from a tolerance of about +/- 2mm (yeah, it was far off) to a tolerance of approximately +/- 0.015 in less than ten minutes.
This program corrects the Alpha Rotation, XYZ offset, Horizontal Radius, and Diagonal Rod length. I will go into more detail on how this is done later on in this later on in the post.
Based on tests:
This WILL calibrate your bed even if your towers aren't square.
This WILL calibrate your bed even if your endstops are off, in fact, you won't even need to touch your endstops with this calibration.
This WILL calibrate your bed even if your borosillicate plate is warped. (Of course only to a certain extent)
This WILL calibrate your bed if your bed is slanted.
//Why
I created this program out of frustration, mostly. I have tried using an uncountable amount of techniques others have used to successfully calibrate their printers. Most of the time, the techniques are very similar to how the Rostock Max V2 manual says to calibrate the machine, however, that method is flawed in some cases. It completely ignores 3 radial areas of the plate, while there are 6 that need calibrated. In some cases, this works perfectly, on a perfect machine. However, the method in the manual cannot calibrate printers that are not mechanically perfect.
That is where this program comes into play, as I have tried to manually calibrate tower offset, alpha rotation, etc. But it is next to impossible to get it perfect without spending 4 weeks straight, skipping your job and skipping sleep to calibrate it this way. But this program fixes these issues, and it doesn't take four weeks. I managed to calibrate mine to the precision that is SeeMeCNC states that the Rostock Max V2 can operate at in under 5 minutes.
Of course there are requirements to use this:
-calipers, or a dial gauge
-zip ties, or other way to mount the calipers/dial gauge
-rubber band if you are using calipers(don't laugh)
Or if you are fancy, then you can use a Z-probe.
//How
if you don't have a Z-probe. I attached my calipers with 2 zip ties to the side of my hot end, and attached a rubber band to the slider on the calipers and the other end of the band to the hot end as well, this just allows the calipers to have a slight amount of pressure against the plate, giving more accurate results.
Once you're set up to measure the plate, enter this g-code after setting all of your EEPROM configuration back to it's original settings:
//recommendations
-once your hot end is centered in the middle of the build plate, zero your dial gauge or calipers, otherwise this WILL NOT work
-have the program ready to enter in the data points once you start the calibration g-code
-there is no need to heat your bed, but if you feel it is necessary, then go for it
/////////////////////////////////////G-Code is fixed now, use only on Rostock Max V2 For G-code on other printers reply and we will figure it out.
G28
G1 Z2 F5000
G4 S5
G1 Z50 X0 Y0
G1 Z50 X-113 Y-65
G1 Z2 X-113 Y-65
G4 S3
G1 Z50 X-113 Y-65
G1 Z50 X0 Y0
G1 Z50 X113 Y65
G1 Z2 X113 Y65
G4 S3
G1 Z50 X113 Y65
G1 Z50 X0 Y0
G1 Z50 X113 Y-65
G1 Z2 X113 Y-65
G4 S3
G1 Z50 X113 Y-65
G1 Z50 X0 Y0
G1 Z50 X-113 Y65
G1 Z2 X-113 Y65
G4 S3
G1 Z50 X-113 Y65
G1 Z50 X0 Y0
G1 Z50 Y130
G1 Z2 Y130
G4 S3
G1 Z50 Y130
G1 Z50 X0 Y0
G1 Z50 Y-130
G1 Z2 Y-130
G4 S3
G1 Z50 Y-130
G1 Z50 X0 Y0
G28
///////////////////////////////////// //How it works
To give an explanation of how this program works, I will briefly describe each step.
/* The program in its current state has the ability to calculate your steps per millimeter for your printer if you do not know it(you Really should however), but it is needed to accurately changed the XYZ offset. */
//XYZ offset
This is essentially virtual endstops.
//HorizontalRadius
The program simply averages the heights of the build plate at the towers and virtual towers at the edge of the build plate. This value is then subtracted by each tower to give the new tower heights, and multiplied by -0.5 then added to the horizontal radius. This simply balances the points around zero.
//Delta Radius
Delta Radius is currently bypassed due to changing XY scaling issues. (Replaced with XYZ offset).
//Alpha Rotation
Now, having all non-virtual towers calibrated, the opposing towers need calibrated. This is done partially via alpha rotation.
For instance, when you increase the base value of A by 210 to 211, it increases the virtual tower opposite of the Z tower by 0.5 and decreases the virtual tower opposite of the Y tower by 0.5. Alpha rotation does Not affect the opposite tower of the tower changed or any of the non-virtual towers. Given this, the virtual towers can all be balanced, i.e. the values will all be equivalent but greater than or less than zero (unless you are not from this planet.)
//Diagonal Rod
To give an example of what happens when you change the length of the diagonal rod, if you increase the base value, in my case 269 to 270, the XYZ towers will be increased by approximately 13% of the value changed (1, so 0.13mm) and the virtual towers will be increased by 21% (0.21mm) of the value.
This presents an issue, but nothing that can't be fixed! Given the situation, you could either increase or decrease the value of the diagonal rod until all values are equivalent, but then all values will be greater than or less than 0. But since these heights are all the same it can be canceled out by changing the value of the horizontal radius until all values are approximately zero.
Getting through these steps, it is possible to get a theoretical tolerance of +/- 0.0001mm(the programs settings), giving a perfectly flat bed. (Even if your bed was mechanically warped.)
Following these steps, it is entirely possible to calibrate a delta with only modifying values in the EEPROM. That is what the program does for you! Except all you have to do is enter your current settings and then get your new values right back.
And if your calibration wasn't close enough the first time, you can go through again! But that would only apply if you were planning on printing something 1/10th the thickness of a piece of paper.
//How to use it
Enter in your current settings, then press calibrate, then copy the change data back into your EEPROM. More information is available when you hover over the input boxes in the calibration tool.
Since this is not a compiled program (just Javascript/HTML, sorry I am lazy), I am making it open-source, anyone can improve it and modify it to their need. The current version can be downloaded off of my GitHub page - https://github.com/RollieRowland/Delta- ... ation-Tool
////////////////////////////////////////////////////////////////////////////////////////////
Version 1.0.3 is now up on GitHub, it is best to keep the program up to date, as I make corrections/improvements every day.
////////////////////////////////////////////////////////////////////////////////////////////
-This calibration has only been tested on my Rostock Max V2, although it is set up to work with any delta style machine.
-If the results are not very accurate, then you will have to modify the expert settings.
-If this does not improve your printer at all you can pm me or reply to this post, as there may be issues with the program.
-If you have any recommendations for me to change or add to the program, then pm, reply, or email me.
(If there are any dead links and you would like a specific version of the software then send me an email.)