Hi Slice,
ik zou zo zeggen dat dit te maken heeft met de instellingen van de PID regelaar van je printer voor het verwarmen van het hot-end. In de Marlin software, kun je de instellingen van de regelaar in de configuration.h file aanpassen. Ik zag dat er ook een automatische tune mogelijkheid in de Marlin SW zit [
reprap.org]. Je kunt blijkbaar met een koud hot-end door het ingeven van
M303 S175 C8 automatisch een opwarm test laten uitvoeren. In dit geval voor 175 graden. Hij herhaalt dit 8 keer, en geeft dan de beste parameters voor de PID regelaar terug. Die kun je dan opslaan in de EEPROM van het Arduino bord, op je kunt de instellingen kopieren in configuration.h.
Ik zal proberen jouw probleem te verklaren. Een regelaar werkt probeert het verschil tussen de ingestelde temperatuur (185 graden) en de door de thermistor gemeten temperatuur weg te regelen door de twee waarden van elkaar af te trekken (de fout) en die fout dan te vermenigvuldigen met de P (proportionele waard). De uitgang van de regelaar stuurt de puls pauze modulator aan die je verwarmingselement aanstuurt. Je ziet dat op de Arduino/RAMPS door het knipperen van het LEDje. Doordat je warmte in je hotend stopt, zal je thermistor gaan meten dat de temperatuur oploopt en daardoor wordt de fout kleiner. Dus wordt ook de P waarde van de regelaar kleiner en zal de puls pauze regelaar langszaam uitgaan en daardoor zal er minder warmte in je hotend komen. Kortom, het opwarmen stopt langzaam. Als vervolgens door het doorvoeren van PLA de warmte uit je hot-end wegloopt, zal je thermistor meten dat de temperatuur afneemt, de fout wordt weer groter en de verwarming gaat weer aan.
Als je dit principe snapt, dan komen we bij het volgende aspect van de PID regelaar. Als je je hotend een beetje vlot wil opwarmen, dan moet je een "grote" P factor instellen. Dit betekent echter dat je hotend ook bij een kleine fout (10-20 graden) nog vol open gaat. Met als gevolg dat je over de ingestelde waarde gaat, waarna de verwarming een tijd uitgaat, en dan gaat hij weer hard aan etc. Je zult begrijpen dat dit makkelijk tot oscillaties (slingeringen) kan leiden. Als je dit niet wil biedt de regelaar twee opties. De eerste is dat je een kleine P waarde kiest, maar dan warmt je hot-end lafjes op. De tweede optie is dat de regelaar zijn D gedeelte activeert. Dit moet je zien als een tegenkracht, die als je hotend begint op te warmen, gaat tegensturen en als dit goed is afgesteld, zal het hotend niet over de ingestelde waarde schieten en zal hij tijdig stoppen. Als de D-waarde te hard ingrijpt, zul je zien dat je hotend opwarmt, de temperatuur oploopt, maar dat dan op een bepaald moment de opwarming lijkt stil te vallen. De temperatuur staat even "stil", daarna gaat de temperatuur weer in stapjes omhoog, tot dat die weer langzamer gaat etc. Maar wel altijd in de goede richting, en nooit over het maximum heen.
Een derde aspect van de regelaar, en hier komt jouw probleem, is dat een regelaar met P en D altijd een fout overhoudt, in jouw geval 3 graden. Deze fout wordt weggeregeld door de I actie (integratie). Dit wordt moet je zien als een hele kleine kracht, die bij kleine fouten die heel langzaam wegregelt. Door kleine pulsjes aan het hot-end af te blijven geven zal hij jouw 3 graden verschil wegregelen.
Voor jouw geval zou ik zeggen: probeer de auto tune actie of anders: vergroot de P actie van je regelaar, dan heb je minder fout over en zorg dan met I actie dat e.e.a wegregeld.
In Marlin configuration.h heb ik momenteel de Ultimaker settings aanstaan. Niet perfect, maar goed genoeg.
// PID settings:
// Comment the following line to disable PID and enable bang-bang.
#define PIDTEMP //ZORG DAT DEZE AANSTAAT!!!!!!!
#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
#define PID_MAX 255 // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#ifdef PIDTEMP
//#define PID_DEBUG // Sends debug data to the serial port.
//#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
#define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
// is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
#define PID_INTEGRAL_DRIVE_MAX 255 //limit for the integral term
#define K1 0.95 //smoothing factor within the PID
#define PID_dT ((16.0 * 8.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine
// If you are using a preconfigured hotend then you can use one of the value sets by uncommenting it
// Ultimaker
#define DEFAULT_Kp 22.2 // DIT IS DE P WAARDE
#define DEFAULT_Ki 1.08 // DIT IS DE I WAARDE
#define DEFAULT_Kd 114 // DIT IS DE D WAARDE
// Makergear
// #define DEFAULT_Kp 7.0
// #define DEFAULT_Ki 0.1
// #define DEFAULT_Kd 12
// Mendel Parts V9 on 12V
// #define DEFAULT_Kp 63.0
// #define DEFAULT_Ki 2.25
// #define DEFAULT_Kd 440
#endif // PIDTEMP
// Bed Temperature Control
// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
//
// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz,
// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
// If your configuration is significantly different than this and you don't understand the issues involved, you probably
// shouldn't use bed PID until someone else verifies your hardware works.
// If this is enabled, find your own PID constants below.
//#define PIDTEMPBED
//
Hier komen ongetwijfeld vragen over. Als het niet duidelijk is, graag even aangeven waar verdieping nodig is.....
Gr.
Eric