Welcome! Log In Create A New Profile

Advanced

hot end temp not stable

Posted by seppineppi 
hot end temp not stable
May 18, 2012 01:49PM
Hello,

i am using a arcol v4 hotend with gen7 board.

i started with the hotend with an 6.8 ohm resistor for heating, there i had no troubles with the heater management at all.

as the resistors burnt out, i swapped to the original resistor from arcol which has 4.7 ohm, not the temperatur will not get at its set temp.

what i am not able to do, is to get rid of the inital overswing. it seems to me, that the pid- controller efects the system to late and so the temp shoots far over the set temp.

is it possible to widen the range from where on the pid effects the temp? (i think its set to 10° under the set temp at the moment..)

thx a lot
Attachments:
open | download - tempcurve.JPG (61 KB)
Re: hot end temp not stable
May 19, 2012 03:32AM
In the version 0.62 and below the pid starts +/- 10 degrees. In the next version this is a parameter. If you want to fix it now, look in Extruder.cpp near the bottom

void manage_temperatures() {
  byte manage_extruder = 0;  ///< Extruder number, we are looking at. 1+NUM_EXTRUDER is heated bed.
  for(manage_extruder=0;manage_extrudercurrentTemperatureC;
       act->currentTemperature = read_raw_temperature(act->sensorType,act->sensorPin);
       act->currentTemperatureC = conv_raw_temp(act->sensorType,act->currentTemperature);
       byte on = act->currentTemperature>=act->targetTemperature ? LOW : HIGH;
#ifdef TEMP_PID
       act->tempArray[act->tempPointer++] = act->currentTemperatureC;
       act->tempPointer &= 7;
       if(act->heatManager==1) {
         byte output;
         int error = act->targetTemperatureC - act->currentTemperatureC;
         if(act->targetTemperatureC<(20<(PID_CONTROL_RANGE<pidMax;
         else if(error<(-PID_CONTROL_RANGE<Repetier-Software - the home of Repetier-Host (Windows, Linux and Mac OS X) and Repetier-Firmware.
Repetier-Server - the solution to control your printer from everywhere.
Visit us on Facebook and Twitter!
Re: hot end temp not stable
May 19, 2012 09:57AM
so you would change that:


#ifdef TEMP_PID
       act->tempArray[act->tempPointer++] = act->currentTemperatureC;
       act->tempPointer &= 7;
       if(act->heatManager==1) {
         byte output;
         int error = act->targetTemperatureC - act->currentTemperatureC;
         if(act->targetTemperatureC<(20<(10<pidMax;
         else if(error<(-10<tempArray[act->tempPointer++] = act->currentTemperatureC;
       act->tempPointer &= 7;
       if(act->heatManager==1) {
         byte output;
         int error = act->targetTemperatureC - act->currentTemperatureC;
         if(act->targetTemperatureC<(20<(10<pidMax;
         else if(error<(-10<<CELSIUS_EXTRA_BITS))
           output = 0;
         else {

so now the pid should start at 20° less than set temp.

according to the p-gain.... this overswing was created with p-gain at 30... ;o) so i am allready very low...
Re: hot end temp not stable
May 19, 2012 12:42PM
No, your code has removed the crucial part. The forum program ate the most crucial part, so my code was not complete. It was handled like a html tag :-(

The trick is in the line you don't see in my last post.
else if(error>(10

Here you have to replace the 10 with 20 in the else above the else with output=0. A line later you see output set to pidMax. That is where you need to make the change. Hope you understand what I mean. Is difficult to describe if the forum would delete the line.


Repetier-Software - the home of Repetier-Host (Windows, Linux and Mac OS X) and Repetier-Firmware.
Repetier-Server - the solution to control your printer from everywhere.
Visit us on Facebook and Twitter!
Sorry, only registered users may post in this forum.

Click here to login