RRC
unwilling-turquoise

"Regelkreis" für Bauraumheizung

Dieses Makro soll bei jedem Schichtwechsel abgefragt werden und die BauraumTemp anpassen. Leider bekomme ich einen Fehler bei der Abfrage des Temp Sensors. Hat wer eine Idee? [gcode_macro MAINTAIN_CHAMBER_TEMP] ;Diese Zeile definiert ein Makro mit dem Namen _MAINTAIN_CHAMBER_TEMP, das verwendet wird, um die Kammer-Temperatur während des Drucks konstant zu halten. description: Konstante Kammer-Temperatur während des Drucks aufrechterhalten. gcode:;Dieser Block enthält den eigentlichen G-Code, der im Makro ausgeführt wird. {% if params.CHAMBER_TEMP is defined and params.CHAMBER_TEMP|int > 0 %} ;Dies ist eine Bedingung, die überprüft, ob die Parameter CHAMBER_TEMP und BED_TEMP definiert sind und ob CHAMBER_TEMP größer als 0 ist. Diese Überprüfung stellt sicher, dass die notwendigen Temperaturparameter vorhanden sind und die Kammer-Temperatur überprüft werden kann. {% set chambertempcontrol = (params.CHAMBER_TEMP|int) + 20 %} ;Hier wird eine Variable chambertempcontrol erstellt und auf den Wert von CHAMBER_TEMP plus 20 gesetzt. Dies definiert die gewünschte Regeltemperatur für den Heizer. {% set hysteresis = 5 %} ;Eine weitere Variable namens hysteresis wird erstellt und auf den Wert 5 gesetzt. Die Hysterese ist der Unterschied zwischen dem Ein- und Ausschalten der Heizung, um Temperaturschwankungen zu vermeiden.
3 Replies
unwilling-turquoise
unwilling-turquoiseOP3y ago
GET_CURRENT_TEMPERATURE SENSOR="temperature_sensor chamber_temp" {% set currentchambertemp = temperature|int %}
; Wenn die Kammer-Temperatur unter dem Sollwert minus Hysterese liegt {% if currentchambertemp < (params.CHAMBER_TEMP) - hysteresis %} ;Hier wird eine Bedingung überprüft. Es wird überprüft, ob die aktuelle Kammer-Temperatur (currentchambertemp) unter dem Sollwert (CHAMBER_TEMP) minus der Hysterese (hysteresis) liegt. Wenn dies der Fall ist, wird der darin enthaltene Codeblock ausgeführt. SET_HEATER_TEMPERATURE HEATER=chamber TARGET={chambertempcontrol} ;Wenn die oben genannte Bedingung wahr ist, wird diese Anweisung ausgeführt. Sie setzt die Zieltemperatur der Kammerheizung (HEATER=chamber) auf den Wert von chambertempcontrol. Dies bedeutet, dass die Heizung aktiviert wird, um die Kammer auf die gewünschte Temperatur zu bringen. ; wenn die KJammertemperatur etwas oberhalb des Sollwertes liegt {% elif currentchambertemp > (params.CHAMBER_TEMP) + hysteresis %} ;Dies ist eine Bedingung, die überprüft, ob die aktuelle Kammer-Temperatur (currentchambertemp) über dem Sollwert (params.CHAMBER_TEMP) plus der Hysterese (hysteresis) liegt. Wenn dies zutrifft, wird der folgende Codeblock ausgeführt. SET_HEATER_TEMPERATURE HEATER=chamber TARGET={params.CHAMBER_TEMP} ;Wenn die oben genannte Bedingung erfüllt ist, wird diese Anweisung ausgeführt. Sie setzt das Ziel für die Kammerheizung (HEATER=chamber) auf den Wert des Sollwerts für die Kammer-Temperatur (params.CHAMBER_TEMP). Dies führt dazu, dass die Heizung aktiviert wird, um die Kammer auf oder nahe dem gewünschten Sollwert zu halten.
; Ansonsten Heizer ausschalten {% else %} SET_HEATER_TEMPERATURE HEATER=chamber TARGET=0 {% endif %} {% endif %} Ist erledigt
Mike-Toro3D
Mike-Toro3D3y ago
Willst du die Lösung noch dokumentieren falls jemand über die Suche drau stößt?
unwilling-turquoise
unwilling-turquoiseOP3y ago
Ja - bin aber gerade unterwegs [gcode_macro _START_PRINT_HEAT_CHAMBER] description: Uses the chamber sensor to wait for chamber temp. Override the _START_PRINT_HEAT_CHAMBER macro to implement heated chamber handling. variable_target_temp: 0 gcode: {% if params.CHAMBER_TEMP is defined and params.BED_TEMP is defined and params.CHAMBER_TEMP|int > 0 %} {% set chambertempcontrol = (params.CHAMBER_TEMP|int) + 30 %} {% set z = printer["gcode_macro RatOS"].start_print_park_z_height|float %} {% set zSpeed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %} SET_GCODE_VARIABLE MACRO=_START_PRINT_HEAT_CHAMBER VARIABLE=target_temp VALUE={params.CHAMBER_TEMP} G0 Z{z} F{zSpeed} M84 M117 Heating chamber... RESPOND MSG="Heating chamber..." M140 S{params.BED_TEMP} M106 S125 SET_FAN_SPEED FAN=Nevermore_fan SPEED=1.0 SET_HEATER_TEMPERATURE HEATER=chamber TARGET={chambertempcontrol} TEMPERATURE_WAIT SENSOR="temperature_sensor chamber_temp" MINIMUM={params.CHAMBER_TEMP} SET_HEATER_TEMPERATURE HEATER=chamber TARGET={(params.CHAMBER_TEMP|int) + 20} UPDATE_DELAYED_GCODE ID=_HEAT_CHAMBER_CONTROL DURATION=1.0 MAYBE_HOME M106 S0 SET_FAN_SPEED FAN=Nevermore_fan SPEED=0.5 {% endif %} [delayed_gcode _HEAT_CHAMBER_CONTROL] initial_duration: 0 gcode: {% if printer['temperature_sensor chamber_temp'].temperature < printer["gcode_macro _START_PRINT_HEAT_CHAMBER"].target_temp|int %} SET_HEATER_TEMPERATURE HEATER=chamber TARGET={(printer["gcode_macro _START_PRINT_HEAT_CHAMBER"].target_temp|int) + 30} {% elif printer['temperature_sensor chamber_temp'].temperature > printer["gcode_macro _START_PRINT_HEAT_CHAMBER"].target_temp|int %} SET_HEATER_TEMPERATURE HEATER=chamber TARGET=0 {% else %} SET_HEATER_TEMPERATURE HEATER=chamber TARGET={(printer["gcode_macro _START_PRINT_HEAT_CHAMBER"].target_temp|int) + 5} {% endif %} UPDATE_DELAYED_GCODE ID=_HEAT_CHAMBER_CONTROL DURATION=5 [delayed_gcode HEATER_CHAMBER_OFF] initial_duration: 0 gcode: SET_HEATER_TEMPERATURE HEATER=chamber TARGET=0

Did you find this page helpful?