Just wanted to say: It works! Thanks largely to anon4321, so thank you
I first reinstalled the default marlin without HB via Cura, to get the UltiController back in order.
I then went over my modified version of the marlin_v1 again, and found that it had the: "#define ULTIMAKERCONTROLLER" line, commented out...
Adding it back in fixed the UltiController isssue...
I then reuploaded the custom marlin via Arduino IDE, and it works, registers the bed etc.
One thing that worries me a bit is that this marlin doesn't seem to have a temp error function for the bed... When I unplug the thermistor frm the board, the UltiController just reads 0 degrees, but no warning... This leads me to think that if it bu accident got unplugged while the printer and bed is on, it would just keep heating on the bed, which would get very hot...
I have not tested it yet, since I actually still need to wire up the bed with the SSR....
And after that, of course go through the PID adjustment that anon4321 generously provided a guide for
Right now I'm actually messing with doubling the x/y steps/mm. in the firmware and installing Polulu DRV8825 stepsticks running 1/32 microstepping, I find adjusting the current to be a right bitch...
Recommended Posts
anon4321 16
Tommyph,
I think to make the changes by hand, get the source from:
https://github.com/Ultimaker/Marlin/archive/Marlin_v1.zip
Find this line in Configuration.h and make sure the value is 1 for the
#define TEMP_SENSOR_BED 1
If you have an SSR, you can enable PID mode for the bed by uncommenting this line (remove the leading //:
//#define PIDTEMPBED
Then you will need to use autotune to get a better set of PID parameters for the bed.
Go into Cura, go to File -> Preferences and change the Printing window type to Pronterface UI and click OK. Now go to File-> Print. In the text box on the lower right, you can enter GCODE which is sent directly to the printer. Enter this command exactly as shown:
M303 E-1 S70 C8
(change the value of S70 to be the temperature at which you will normally use the bed. S70 is 70C S60 would be 60C etc).
The printer will heat the bed up to the selected temperature and then run through 8 cycles (the C8 parameter).
Once the cycles are done, it will output a line saying something like use the last reported values. Do this by changing the P I and D values to the following command to those reported:
M304 P1 I2 D3
Finally save the firmware settings by issuing:
M500
or you can "burn" them in the firmware by editing Configuration.h and finding and changing these lines (the ones that start with #define DEFAULT_ ignore the ones with begin with //):
#ifdef PIDTEMPBED
//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
#define DEFAULT_bedKp 10.00
#define DEFAULT_bedKi .023
#define DEFAULT_bedKd 305.4
//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from pidautotune
// #define DEFAULT_bedKp 97.1
// #define DEFAULT_bedKi 1.41
// #define DEFAULT_bedKd 1675.16
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
#endif // PIDTEMPBED
Now when the bed reaches the set temperature, the PID mode will quickly pulse the power to the bed like 5 times a second and the temperature will be maintained very accurately.
Make sure that you reconfigure Cura so that it allows you to control the bed by going to the Machine -> Machine Settings and checking the Heated Bed item. This will not only enable an input for the bed temp, but the Pronterface UI in the printing dialog will also graph the bed temperature. in addition to the nozzle temp.
More info on PID autotune here: http://reprap.org/wiki/PID_Tuning
Link to post
Share on other sites