This part of the site is now the Primary. The original site is still available for reference at - caggius.wordpress.com
THIS SECTION WILL ALWAYS BE WORK IN PROGRESS !
Disclaimer: I do not warrant anything that I have written down or done. I do not warrant its completeness or being suitable for purpose. You play with 3D printers at your own risk not mine, but hopefully I can save you a few steps and pounds (or dollars or roubles whatever) along the way.
The following process can be applied to the first time set up of a 3D printer and not just after an upgrade to the SKR. However following any major upgrade there is always significantly more risk of a human error that is just not there in a new build machine fresh from the Manufacturer. Things like mis-plugged/wired stepper drivers and configuration jumpers, wrong hardware or software configuration settings, poor soldering make it essential to take this process step by step and check everything before letting the machine loose with a print.
Install PrintRun
First it is essential to install a USB connected 3D printer controller program, such as Pronterface or Octoprint, on your computer. This is needed to issue the individual GCode commands to the printer for test, debug and to calibrate the Printer.
Retrieve the base ANet Configuration
Before starting the upgrade use Pronterface (or similar) to send gcode M503 to the original ANet Motherboard to retrieve from EEPROM the running set up that you have been using. If the board has already been removed from the printer just reconnect the 12V power and plug in the USB cable. You need to use the configuration values retrieved as the basis of your initial configuration of Marlin.
Remember the initial aim should be to get the printer working as well as it was before the upgrade. Then you can try the faster/newer/fun options once it has been debugged.
Check the Power Supply Voltages.
Do not connect the output to the SKR board. Do not connect the motors to the SKR Board.
First check the main Power Supply's input 120/220V Voltage setting switch – if it has one – matches your region's mains voltage. Now power it up and check the output Voltage is correct. There should be a small potentiometer next to the connector block to adjust the output voltage. Use this to set 12.0V or 24.0V as required. Power off.
Use a meter to check the 12V/24V output wiring for any shorts or open circuits. Connect the output wires. Double check for crossed wires – make sure Red goes to +ve and Black to -ve at both ends.
Double Check all your upgrade work
Now double check all your work before powering on for the first time.
Ensure that the Sensor cables have been rewired and are plugged correctly. But leave the motors unplugged for now.
Check Configuration Jumpers, Power Jumper, Stepper Drivers and UART JumpersNote: I have left the TMC Stepper Configuration Jumpers plugged for 16 Steps even in UART Mode in case of any coding errors. This works for the TMC2208 but does not work for other TMC drivers which may use these jumpers for other configuration details.
Stepper Driver Orientation. To facilitate checking most Steppers Drivers come with two different color pin sets. Check that the Black Pin Side is outboard that is next to the Motor connectors and the Colored (Red/Blue) Pin Side inboard.
Set VRef on all Stepper Drivers
Once Marlin has initially been compiled and installed on the SKR, but with the stepper motors disconnected/unplugged, we can power up the SKR using the PSU (remember to set the SKR power jumper first) for safety I recommend that you set the manual VRef to 0.73V (534mA) on all of the TMC stepper drivers, even if you are planning to use them in UART mode later.
If you are using the LV8729 then you will need to check what the value of sense resistors are before calculating and setting VRef. For R220 sensors this is 0.715V. Once the voltages are set you can power down and then connect the motors.
Never plug or unplug the motors whilst the board is powered on, this can destroy the stepper drivers.
Avoid moving the X or Y carriages by hand as the stepper motors will act as voltage generators and fast movement can produce sufficient voltage to destroy or damage the stepper drivers and possibly the main board.
Calibrate the Bed and Thermistor
With Pronterface power up the heated bed and run a calibration cycle to check the heater and thermistor. From Pronterface execute the following command
M303 E-1 S55 C8
This may take several minutes, you may want to adjust the Temperature (S55) to your preferred settings. Take note of the output for a later recompile e.g.
PID Autotune finished!
Put the last Kp, Ki and Kd constants from below into Configuration.h
#define DEFAULT_bedKp 103.10
#define DEFAULT_bedKi 12.03
#define DEFAULT_bedKd 588.97
Calibrate the Extruder and Thermistor
With Pronterface power up the extruder and run a calibration cycle to check the heater and thermistor. From Pronterface execute the following command
M303 S190 C8
This may take several minutes, you may want to adjust the Temperature (S190) to your preferred settings. Take note of the output for a later recompile e.g.
PID Autotune finished!
Put the last Kp, Ki and Kd constants from below into Configuration.h
#define DEFAULT_Kp 19.30
#define DEFAULT_Ki 1.08
#define DEFAULT_Kd 86.18
New! After burning myself whilst doing a hot filament change I fitted a silicon boot to the heater block. This has change the PID settings considerably. So it needed recalibrating.
#define DEFAULT_Kp 31.47
#define DEFAULT_Ki 1.99
#define DEFAULT_Kd 124.34
Test all Endstops
With pronterface, in turn hold open and then closed each of the axis minimum end stops whilst sending Gcode M119 to the printer. Check the results to see that all of the end stops are functioning correctly and do not need inverting.
> M119
Reporting endstop status
x_min: open
y_min: open
z_min: TRIGGERED
Level the X Carriage
With the printer powered off we can manually level the X Carriage.
Move the extruder to approximately 5cm (2″) above the centre of the bed. Position a 12.5cm (5″) tall block (I use a piece of teak dowel) on the worktop between the left hand Z motor mount and the print bed. Now manually wind down the left hand screw until the lower X Carriage guide rod touches the block (you can use the same paper tension test as in bed levelling). Now repeat the exercise for the right hand end of the carriage, then redo the left hand end again. The carriage should now be parallel to the worktop. Remember to remove the dowel before proceeding !
Note: This levelling is at best only accurate to 1 full step on each of the Z motors plus the flatness of your worktop, but this is good enough for use. The subsequent print bed levelling will take out most off, but not all, the remaining variation into account.
Check the direction and scale of X and Y motor movements.
Warning: If the Stepper Driver jumpers and/or Marlin are misconfigured it is possible to send a request for a 1mm movement of the printer and it may move many times that value, up to 16x for TMC and 128x for LV8729. So when testing for the first time be ready to pull the power plug!
Before powering on position the X and Y carriages in the middle of their travel. With Pronterface (or through the Marlin menus) use a small movement (initially single 1mm movements) to first check the direction of the X and then Y motor movement. If the X direction is wrong change the value of INVERT_X_DIR and recompile Marlin, likewise for Y. Slowly increase the size of the movements until you are sure that it is moving to scale ie a 10x 1mm requests generates roughly 10mm of movement. If there is a factor of 2,4,8,16,32 difference then stop and go straight to debugging the stepper jumpers and firmware settings .
If this is all OK then use pronterface to position the bed and extruder towards the (0,0) home position (the extruder positioned over front left edge of the bed). Mark the position of the carriage/extruder and measure a 100mm movement of X, then Y.
If you are using the stock motors, gears and belts then there really should not be any need to actually calibrate X and Y (DEFAULT_AXIS_STEPS_PER_UNIT ) as the ANet default Marlin settings and the correct stepper driver jumper/firmware settings can only deliver one precise result from the mechanics and not a percentage of it. Any other variation is normally a question of inadequate stepper current or belts/cogs binding/slipping (But may also be incorrect EEPROM settings).
Check the direction and scale of the Z and Z2 motor movements.
This is basically the same process as the other two Axis and the same warning applies be ready to pull the plug, as you really do not want to drive your hot end into the print bed. Check the direction of travel and scale with a small movement. Make sure that both motors move in the same direction and the same distance. If either one is wrong you will need to re-level the X Carriage before progressing. Then measure with a full 100mm movement. The actual measurements will be needed to calibrate the firmware. Like X and Y the Z movements are mechanically formulaic so for stock parts should not need further calibration.
Check the Extruder
With pronterface heat up the extruder and then try to extrude 10mm of filament – check the movement is in the right direction, if not change the value of INVERT_E0_DIR and recompile. Use a Sharpie pen or similar to mark the filament at 90,95,100,105,110mm above the extruder and then use Pronterface to extrude 100mm of filament. Use the checkmarks to determine how much filament was actually extruded. Take note of the actual value.
Unlike X,Y and Z there is scope for variation in the movement of filament through the extruder caused by a) manufacturing tolerances in the size of the geared pressure cog that drives the filament b) how soft the filament is, the softer the filament the further into it the driving cog will bite reducing the effective diameter of the cog and hence the amount of filament extruded c) the temperature of the filament and extruder assembly.
The actual measurement will be needed to calibrate the E value in DEFAULT_AXIS_STEPS_PER_UNIT in the firmware. For the ANet stock extruder the starting point is 100 steps per mm. If your setup over extrudes (uses more filament than requested) you would need to reduce the E value in proportion. Either way the formula is:
New value = 100steps*100mm/Actual mm’s extruded
Manually level the Print Bed
This should always be done at setup, even if you are going to use auto levelling ever after. The technique is the same as before the upgrade. There are plenty of youtube videos that you can follow. But this is how I do it.
Set all bed screws to about 18mm (2/3″) clearance between the two plates. Levelling is an iterative process as changing one screw will affect both X&Y planes and can also deform the plate. The first time you should expect to have to go round this loop 2 or 3 times.
Level front to back. Using Marlin or Pronterface move the hot end to the back left corner [X=20,Y=200] lower it until it binds on a piece of 80g paper and take note of the Z reading. Lift the head, move to the front left [X=20,Y=20] , lower and take note of the Z reading when it binds on the paper. If the front is higher than the back, adjust both front screws clockwise 1 full turn for every 0.5mm difference. If the front is lower than the back, adjust the front screws anti-clockwise. Now fine tune the adjustment screw so that the paper binds at the same Z height as the rear screw.
Level left to right. Using Marlin move the hot end to the back left corner [X=20,Y=200] lower until it binds on a piece of paper and take note of the reading. Raise the head, move to the back right corner [X=200,Y=200], lower until the paper binds and take note of the reading. Adjust both front and right hand screws until the paper binds at the same Z height as the back left screw.
Finally move the hot end to the front right corner [X=200,Y=20] lower until the paper binds and take note of the reading. Adjust just the front right hand screw until the paper binds. Ideally this should be at the same height as the other 3 corners but it is likely that you will have to repeat the exercise a few times until they are the same.
Any small variation left after several iterations is due to the distortion manufactured into the plate. Mine is small enough not be a problem. However if this is significant you can investigate auto bed levelling options which map and counter the beds distortions.
Calibrate the Print Bed offsets
The home position of the print bed is defined by the operation of the End Stop switches. But these are mechanical and have adjustable slot mounts. So the home position will rarely correspond to the [0,0,0] corner of the print bed and mechanical adjustment is time consuming and tricky. To counter this the [X,Y,Z]_MIN_POS are compiled set to 0 and can then be calibrated using the M206 gcode command.
There is also a second set of co-ordinates that expand the movement limits of the print head beyond the print space defined by [X,Y,Z]_MIN_POS.
The MANUAL_[X,Y,Z]_HOME_POS will allow us to enable movement outside of the bed. The ANet X Endstop switch is typically 30 to 40mm beyond the print bed X=0 position. Similarly the Y Endstop is 5 to 10 mm beyond the Y=0 position.
The MANUAL_X_HOME_POS on the A8 is normally set to somewhere between -30 and -40. This value can be measured, and either a) set precisely and Marlin recompiled, then X=0 would be the left edge of the print bed, or b) set approximately and the edge of the bed refined by using M206 to set the X offset (X_MIN_POS) without recompiling Marlin.
Home the X Axis then using Marlin move the X Carriage until it is overhead the left edge of the bed the X reading on the display is the offset we need to apply using one of 3 methodsa) Move the physical end stop switchb) apply the adjustment to the MANUAL_X_HOME_POS and recompile Marlinc) apply the adjustment to the current value of X_MIN_POS. First use M503 to recover the current X_MIN_POS value then subtract the measured X valuenew offset from that value and write the new X_MIN_POS value using M206..
Repeat the above for the Y Axis ..
Personally I prefer to mechanically set the Z=0 position to match the mechanics. That is:a) manually level the bedb) home all 3 Axisc) use Marlin to raise Z above the bed, then position the head at X=110,Y=110d) lower the print head until it just pinches a piece of paper and read the reported Z position of the print head. If you have done this before it should be within one or two mm’s. If not adjust the end stop switch position and start again.e) With the knowledge that an M3 Screw has a 0.5mm pitch we can calculate how many turns we need to make on all 4 corner screws to adjust the bed so that it is sitting at Z=0 (less the paper width). One full turn clockwise will lower the bed 0.5mm and vice-versa..However I really should do this in the firmware, take the reading we obtained in d) above and apply it to adjust the current Z_MIN_POS using the M206 command..So for example if the Z reading in d) above is +000.8mm then send M206 Z -0.8 to the printer, then home all Axis and retry – the print head should now pinch the paper at Z=+000.0.
We do not want to print past the edge of the Bed so the [X,Y,Z]_MAX_POS can be safely left as the ANet example set them.
If you change [X,Y,Z]_MIN_POS values then write them down as you will need to reset them when you overwrite the EEPROM.
Recompile Marlin and Reload Marlin
with the new Calibrated Settings from above.
Reset the SKR EEPROM default data to the new firmware values.
From Pronterface execute the following command sequence
1) M502 Load hard coded defaults from the new firmware
2) Use M206 to set the [X,Y,Z]_MIN_POS to the values above
3) M500 Write all values to the EEPROM
3) M503 List out the EEPROM Data for validation.
Short Test and calibration print
Belts and Braces !
Check the motion of the axis
Check the home position X=0, Y=0, and the Z=0
Run a calibration test print.
Now hopefully you are ready to work on the print quality and speed enhancements!