Fix layer shifts on TMC2208

Thanks to feedback from @DerDominik I was made aware that Anycubic's default acceleration values in their source code are different from the ones they use in their compiled firmwares. Seems like insufficient torque on the Y-axis caused step loss on TMC2208 for that reason.

Co-Authored-By: DerDominik <derdominik@users.noreply.github.com>
This commit is contained in:
David Ramiro 2018-12-27 03:28:16 +01:00
parent fd3be9aca4
commit b959252220
No known key found for this signature in database
GPG Key ID: 5B042737EBEEB736
8 changed files with 23010 additions and 23002 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -629,7 +629,7 @@
* Override with M201 * Override with M201
* X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]] * X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
*/ */
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 60, 10000 } #define DEFAULT_MAX_ACCELERATION { 2000, 2000, 60, 10000 }
/** /**
* Default Acceleration (change/s) change = mm/s * Default Acceleration (change/s) change = mm/s
@ -639,9 +639,9 @@
* M204 R Retract Acceleration * M204 R Retract Acceleration
* M204 T Travel Acceleration * M204 T Travel Acceleration
*/ */
#define DEFAULT_ACCELERATION 1000 // X, Y, Z and E acceleration for printing moves #define DEFAULT_ACCELERATION 1200 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts #define DEFAULT_RETRACT_ACCELERATION 1500 // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves #define DEFAULT_TRAVEL_ACCELERATION 2000 // X, Y, Z acceleration for travel (non printing) moves
/** /**
* Default Jerk (mm/s) * Default Jerk (mm/s)

View File

@ -1,18 +1,24 @@
# Anycubic i3 Mega Marlin Firmware with TFT support # Anycubic i3 Mega Marlin 1.1.9 by davidramiro
This is my slightly customized version of the [Marlin Firmware](https://github.com/MarlinFirmware/Marlin), gratefully based on [derhopp's repo](https://github.com/derhopp/Marlin-with-Anycubic-i3-Mega-TFT) with his remarkable efforts to get the Anycubic i3 Mega TFT screen to work. This is my slightly customized version of the [Marlin Firmware](https://github.com/MarlinFirmware/Marlin), gratefully based on [derhopp's repo](https://github.com/derhopp/Marlin-with-Anycubic-i3-Mega-TFT) with his remarkable efforts to get the Anycubic i3 Mega TFT screen to work.
Feel free to discuss issues and work with me further optimizing this firmware! Feel free to discuss issues and work with me further optimizing this firmware!
I am running this version on an i3 Mega Ultrabase V3 (for distinction of the different versions, check [this Thingiverse thread](https://www.thingiverse.com/groups/anycubic-i3-mega/forums/general/topic:27064)) with FYSETC TMC2208 V1.2 installed. I am running this version on an i3 Mega Ultrabase V3 (for distinction of the different versions, check [this Thingiverse thread](https://www.thingiverse.com/groups/anycubic-i3-mega/forums/general/topic:27064)).
Basically, this should work on every Ultrabase version that has no bed leveling sensor and two Z-axis endstops. Basically, this should work on every Ultrabase version that has two Z-axis endstops. The new Mega-S works too, but calibrating your extruder is mandatory since it needs to have increased E-steps to around fivefold of the original value, see the instructions below.
Note: This is just a firmware, not magic. A big part of print quality still depends on your slicer settings and mechanical condition of your machine. Since I have reduced the acceleration and jerk settings a bit, depending on your slicer the estimated print time might be around 20% lower. You can compensate that loss of speed by raising the general print speed without losing quality.
## Known issues:
- Special characters on any file or folders name on the SD card will cause the file menu to freeze. Simply replace or remove every special character (Chinese, Arabic, Russian, accents, German & Scandinavian umlauts, ...) from the name. Symbols like dashes or underscores are no problem.
**Important note: On the SD card that comes with the printer there is a folder with Chinese characters in it by default. Please rename or remove it.**
## Why use this? ## Why use this?
While the i3 Mega is a great printer for it's price and produces fantastic results in stock, there are some issues that are easily addressed: While the i3 Mega is a great printer for its price and produces fantastic results in stock, there are some issues that are easily addressed:
- Many people have issues getting the Ultrabase leveled perfectly, using Manual Mesh Bed Leveling the printer generates a mesh of the planeness of the bed and compensates for it on the Z-axis for perfect prints without having to level with the screws. - Many people have issues getting the Ultrabase leveled perfectly, using Manual Mesh Bed Leveling the printer generates a mesh of the flatness of the bed and compensates for it on the Z-axis for perfect prints without having to level with the screws.
- Much more efficient bed heating by using PID control. This uses less power and holds the temperature at a steady level. Highly recommended for printing ABS. - Much more efficient bed heating by using PID control. This uses less power and holds the temperature at a steady level. Highly recommended for printing ABS.
- Fairly loud fans, while almost every one of them is easily replaced, the stock FW only gives out 9V instead of 12V on the parts cooling fan so some fans like Noctua don't run like they should. This is fixed in this firmware. - Fairly loud fans, while almost every one of them is easily replaced, the stock FW only gives out 9V instead of 12V on the parts cooling fan so some fans like Noctua don't run like they should. This is fixed in this firmware.
- Even better print quality by adding Linear Advance, S-Curve Acceleration and some tweaks on jerk and acceleration. - Even better print quality by adding Linear Advance, S-Curve Acceleration and some tweaks on jerk and acceleration.
@ -21,11 +27,6 @@ While the i3 Mega is a great printer for it's price and produces fantastic resul
- No need to slice and upload custom bed leveling tests, simply start one with a simple G26 command. - No need to slice and upload custom bed leveling tests, simply start one with a simple G26 command.
- Easily start an auto PID tune or mesh bed leveling via the special menu (insert SD card, select special menu and press the round arrow) - Easily start an auto PID tune or mesh bed leveling via the special menu (insert SD card, select special menu and press the round arrow)
## Known issues:
- Special characters on any file or folders name on the SD card will cause the file menu to freeze. Simply replace or remove every special character (Chinese, Arabic, Russian, accents, German & Scandinavian umlauts, ...) from the name. Symbols like dashes or underscores are no problem.
**Important note: On the SD card that comes with the printer there is a folder with Chinese characters in it by default. Please rename or remove it.**
## How to flash this? ## How to flash this?
I provided three different precompiled hex files: One for no modifications on the stepper motor drivers - good for people who didn't touch anything yet, one for boards with TMC2208 installed and where the connectors have been flipped and one with TMC2208 and the connectors in original orientation. I provided three different precompiled hex files: One for no modifications on the stepper motor drivers - good for people who didn't touch anything yet, one for boards with TMC2208 installed and where the connectors have been flipped and one with TMC2208 and the connectors in original orientation.
@ -38,7 +39,6 @@ I provided three different precompiled hex files: One for no modifications on th
- If you use a newer version of the TMC2208 that doesn't require the connector to be reversed (TMC2208 "v2.0" written on the PCB, chip on the top side), please also use `Marlin-AI3M-XXXXXX-TMC2208_reversed.hex`. - If you use a newer version of the TMC2208 that doesn't require the connector to be reversed (TMC2208 "v2.0" written on the PCB, chip on the top side), please also use `Marlin-AI3M-XXXXXX-TMC2208_reversed.hex`.
- If you use the original stepper motor drivers, use `Marlin-AI3M-XXXXXX-stock_drivers.hex`. - If you use the original stepper motor drivers, use `Marlin-AI3M-XXXXXX-stock_drivers.hex`.
### Or compile it yourself: ### Or compile it yourself:
- Download Arduino IDE - Download Arduino IDE
@ -56,6 +56,8 @@ I provided three different precompiled hex files: One for no modifications on th
- `M502` - load hard coded default values - `M502` - load hard coded default values
- `M500` - save them to EEPROM - `M500` - save them to EEPROM
## Calibration & Tuning
### Manual Mesh Bed Leveling ### Manual Mesh Bed Leveling
If you have issues with an uneven bed, this is a great feature. If you have issues with an uneven bed, this is a great feature.
@ -65,9 +67,10 @@ If you have issues with an uneven bed, this is a great feature.
- Don't adjust the bed itself with screws, only use software from here on: - Don't adjust the bed itself with screws, only use software from here on:
- Use a paper (I recommend using thermopaper like a receipt or baking paper) - Use a paper (I recommend using thermopaper like a receipt or baking paper)
- Use the onscreen controls or a tool like OctoPrint to lower or raise your nozzle until you feel a light resistance - Use the onscreen controls or a tool like OctoPrint to lower or raise your nozzle until you feel a light resistance
- If 0.1mm steps are not enough, you can send specific commands down to 0.02mm via those three commands: - If 0.1 mm steps are not enough, you can send specific commands down to 0.02 mm via those three commands:
- To raise: `G91`, `G1 Z+0.02`, `G90` - To raise: `G91`, `G1 Z+0.02`, `G90` (one after another, not in one line)
- To lower: `G91`, `G1 Z-0.02`, `G90` - To lower: `G91`, `G1 Z-0.02`, `G90`
- I also added fine Z axis controls to the special menu, might be easier to use.
- When done, send `G29 S2` and repeat the process for the next level point. Continue with `G29 S2`every time. - When done, send `G29 S2` and repeat the process for the next level point. Continue with `G29 S2`every time.
- After finishing the 25 points, the printer will beep and calculate. - After finishing the 25 points, the printer will beep and calculate.
- To ensure your mesh gets used on every print from now on, go into your slicer settings and look for the start GCode - To ensure your mesh gets used on every print from now on, go into your slicer settings and look for the start GCode
@ -77,7 +80,8 @@ M501
M420 S1 M420 S1
``` ```
- Enjoy never having to worry about an uneven bed again! - Enjoy never having to worry about an uneven bed again!
Note: By default, this firmware probes 25 points. This might take little while, if you you don't need an as precise mesh, you can change the grid size by sending `G29 Px` before starting the levling. E.g., `G29 P3` results in a 3x3 mesh, thus only 9 points.
Note: By default, this firmware probes 25 points. This might take little while, if you don't need an as precise mesh, you can change the grid size by sending `G29 Px` before starting the leveling. E.g., `G29 P3` results in a 3x3 mesh, thus only 9 points.
### Testing your bed leveling ### Testing your bed leveling
@ -90,40 +94,41 @@ G26 C H200 P25 R25
- If your leveling is good, you will have a complete pattern of your mesh on your bed that you can peel off in one piece - If your leveling is good, you will have a complete pattern of your mesh on your bed that you can peel off in one piece
- Optional: Hang it up on a wall to display it as a trophy of how great your leveling skills are. - Optional: Hang it up on a wall to display it as a trophy of how great your leveling skills are.
## Calibration (optional):
This firmware is using Anycubic's default extruder values and pretty well calibrated PID values. If you experience fluctuating temperatures or subpar extrusion, calibration is always recommended. ### Calibrating extruder & PID
### Calibrating extruder steps This firmware is using Anycubic's default extruder values and pretty well calibrated PID values. If you experience fluctuating temperatures or subpar extrusion, calibration is recommended.
### Extruder steps
- Preheat the hotend with `M104 S220` - Preheat the hotend with `M104 S220`
- Send `M83` to prepare the extruder - Send `M83` to prepare the extruder
- Use a caliper or measuring tape and mark 120mm (measured downwards from the extruder intake) with a pencil on the filament - Use a caliper or measuring tape and mark 120 mm (measured downwards from the extruder intake) with a pencil on the filament
- Send `G1 E100 F100` - Send `G1 E100 F100`
- Your extruder will feed 100mm of filament now (takes 60 seconds) - Your extruder will feed 100 mm of filament now (takes 60 seconds)
- Measure where your pencil marking is now. If it's exactly 20mm to the extruder, it's perfectly calibrated - Measure where your pencil marking is now. If it's exactly 20 mm to the extruder, it's perfectly calibrated
- If it's less or more than 20mm, add or subtract that value from 100mm, e.g.: - If it's less or more than 20 mm, subtract that value from 120 mm, e.g.:
- If you measure 25mm, your result would be 95mm. If you measure 15mm, your result would be 105mm - If you measure 25 mm, your result would be 95 mm. If you measure 15 mm, your result would be 105 mm
- Calculate your new value: ( 100mm / actually extruded filament ) * 92.6 - Calculate your new value: (100 mm / actually extruded filament) * 92.6
- For example, if your markings are at 15mm, you'd calculate: (100/105) * 92.6 = 88.19 - For example, if your markings are at 15 mm, you'd calculate: (100/105) * 92.6 = 88.19
- Put in the new value like this: `M92 X80.00 Y80.00 Z400.00 Exxx.xx`, replacing `x` with your value - Put in the new value like this: `M92 X80.00 Y80.00 Z400.00 Exxx.xx`, replacing `x` with your value
- Save with `M500` (You can repeat the process to achieve even more precision) - Save with `M500`
- Finish with `M82` - Finish with `M82`
### PID tuning ### PID tuning
- Turn on parts cooling fan, I recommend running it at 70% because of the 12V mod (`M106 S191`) - Turn on parts cooling fan If you have a radial blower fan like the original one, I generally recommend running it at 70% because of the 12V mod (`M106 S191`). Remember to also limit it in your slicer.
- Send `M303 E0 S210 C6 U1` to start extruder PID auto tuning - Send `M303 E0 S210 C6 U1` to start extruder PID auto tuning
- Wait for it to finish - Wait for it to finish
- Send `M303 E-1 S60 C6 U1` to start heatbed PID auto tuning - Send `M303 E-1 S60 C6 U1` to start heatbed PID auto tuning
- Wait for it to finish - Wait for it to finish
- Save with `M500`, turn off fan with `M106 S0` - Save with `M500`, turn off fan with `M106 S0`
Note: These commands are tweaked for PLA printing at up to 210/60°C. If you run into issues at higher temperatures (e.g. PETG & ABS), simply change the `S` parameter to your desired temperature
Note: These commands are tweaked for PLA printing at up to 210/60 °C. If you run into issues at higher temperatures (e.g. PETG & ABS), simply change the `S` parameter to your desired temperature
**Reminder**: PID tuning sometimes fails. If you get fluctuating temperatures or the heater even fails to reach your desired temperature, you can always go back to the stock settings by sending `M301 P15.94 I1.17 D54.19` and save with `M500`. **Reminder**: PID tuning sometimes fails. If you get fluctuating temperatures or the heater even fails to reach your desired temperature, you can always go back to the stock settings by sending `M301 P15.94 I1.17 D54.19` and save with `M500`.
## Detailed changes: ## Detailed changes:
- Thermal runaway protection enabled - Thermal runaway protection enabled