Enable heatbed PID mode and add several tweaks

Enable heatbed PID mode and add several tweaks

Enable PIDTEMPBED and add several tweaks

• Enabling heatbed PID tuning
• Tweaking default hotend PID
• Enhancing MMBL grid from 9 points to 25 (3x3 to 5x5 -
 fair warning, leveling might take a few minutes now!)
• Increasing buffer and lowering baudrate to ensure smoother prints via USB
• Removing some redundant stuff to save memory

Thanks to @NetrunnerAT for his recommendations!

Co-Authored-By: NetrunnerAT <netrunnerat@users.noreply.github.com>
This commit is contained in:
David Ramiro 2018-11-16 10:50:55 +01:00
parent a813344030
commit 5e56a939e3
No known key found for this signature in database
GPG Key ID: 5B042737EBEEB736
2 changed files with 52 additions and 7 deletions

View File

@ -138,7 +138,7 @@
// Show Temperature ADC value
// Enable for M105 to include ADC values read from temperature sensors.
#define SHOW_TEMP_ADC_VALUES
//#define SHOW_TEMP_ADC_VALUES
/**
* High Temperature Thermistor Support
@ -880,7 +880,7 @@
// The ASCII buffer for serial input
#define MAX_CMD_SIZE 96
#define BUFSIZE 4
#define BUFSIZE 16
// Transmission to Host Buffer Size
// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
@ -889,13 +889,13 @@
// For debug-echo: 128 bytes for the optimal speed.
// Other output doesn't need to be that speedy.
// :[0, 2, 4, 8, 16, 32, 64, 128, 256]
#define TX_BUFFER_SIZE 0
#define TX_BUFFER_SIZE 4
// Host Receive Buffer Size
// Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough.
// To use flow control, set this buffer size to at least 1024 bytes.
// :[0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]
//#define RX_BUFFER_SIZE 1024
#define RX_BUFFER_SIZE 32
#if RX_BUFFER_SIZE >= 1024
// Enable to have the controller send XON/XOFF control characters to
@ -1099,7 +1099,7 @@
#if HAS_TRINAMIC
#define R_SENSE 0.11 // R_sense resistor for SilentStepStick2130
#define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current
#define HOLD_MULTIPLIER 0.2 // Scales down the holding current from run current
#define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256
#define X_CURRENT 800 // rms current in mA. Multiply by 1.41 for peak current.

View File

@ -9,19 +9,62 @@ Basically, this should work on every Ultrabase version that has no bed leveling
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:
- Very loud stock stepper motor drivers, easily replaced by Watterott or FYSETC TMC2208.
-- To do that, you'd usually have to flip the connectors on the board, this is not necessary using this firmware.
- Very loud stock stepper motor drivers, easily replaced by Watterott or FYSETC TMC2208. To do that, you'd usually have to flip the connectors on the board, this is not necessary using this firmware.
- 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.
- 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.
- Thermal runaway protection: Reducing fire risk by detecting a faulty or misaligned thermistor.
#### How to flash this?
- Download Arduino IDE
- Clone or download this repo
- In the IDE, under `Tools -> Board` select `Genuino Mega 2560` and `ATmega2560`
- Open Marlin.ino in the Marlin directory of this repo
- Customize if needed and under `Sketch`, select `Export compiled binary`
- Look for the .hex file in your temporary directory, e.g. `.../AppData/Local/Temp/arduino_build_xxx/` (only the `Marlin.ino.hex`, not the `Marlin.ino.with_bootloader.hex`!)
- Flash the hex with Cura, OctoPrint or similar
- Connect to the printer and send the following commands:
- `G502` - load hard coded default values
- `G500` - save them to EEPROM
#### PID tuning
- Send `M303 E0 S200 C8 U1` to start extruder PID auto tuning
- Check the output, after finishing it should report `Kp`, `Ki` and `Kd`values
- Send `M301 Pxx.xx Ixx.xx Dxx.xx`, replacing the `xx.xx` with the values from the output in the order from above
- Send `M303 E-1 S60 C8` to start heatbed PID auto tuning
- Same as above, read the values and send them with `M304 Pxxx.xx Ixx.xx Dxxx.xx`
- Save with `M500`
#### Manual Mesh Bed Leveling
- Level your preheated bed as well as you can
- Send `G29 S1`, your nozzle will go to the first calibration position
- Don't adjust the bed itself, only use software from here on:
- Use the onscreen controls or a tool like OctoPrint to lower or raise your nozzle
- If 0.1mm steps are not enough, you can send specific commands down to 0.02mm via those three commands:
- To raise: `G91`, `G1 Z+0.02`, `G90`
- To lower: `G91`, `G1 Z-0.02`, `G90`
- When done, send `G29 S2` and repeat the process for the next command. Continue with `G29 S2`every time.
- After finishing the 25 points, the printer will beep and calculate. After seeing `ok` on the console, enter `M500` to save the mesh to EEPROM
- To ensure your mesh gets used on every print from now on, go into your slicer settings and look for the start GCode
- Look for the Z-homing (either just `G28` or `G28 Z0`) command and insert these two right underneath it:
- `G501`and `M420 S1`.
- Enjoy never having to worry about an uneven bed again!
## Changes:
- Thermal runaway protection enabled
- TMC2208 configured in standalone mode
- Stepper orientation flipped (you don't have to flip the connectors on the board anymore)
- Some redundant code removed to save memory
- Manual mesh bed leveling enabled ([check this link](https://github.com/MarlinFirmware/Marlin/wiki/Manual-Mesh-Bed-Leveling) to learn more about it)
- Heatbed PID mode enabled
- Buffer & baudrate tweaks to improve print quality over USB
- 12V capability on FAN0 (parts cooling fan) enabled
### Additional features by derhopp:
- Subdirectory support: you have to press the round arrow after selecting a directory
@ -29,11 +72,13 @@ While the i3 Mega is a great printer for it's price and produces fantastic resul
### Todo:
- [ ] Tweak TMC2208 steps
### About Marlin
<img align="right" src="../../raw/1.1.x/buildroot/share/pixmaps/logo/marlin-250.png" />
Marlin is an optimized firmware for [RepRap 3D printers](http://reprap.org/) based on the [Arduino](https://www.arduino.cc/) platform. First created in 2011 for RepRap and Ultimaker printers, today Marlin drives a majority of the world's most popular 3D printers. Marlin delivers outstanding print quality with unprecedented control over the process.