"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
automatic-azure
automatic-azureOP16mo 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-Toro3D16mo ago
Willst du die Lösung noch dokumentieren falls jemand über die Suche drau stößt?
automatic-azure
automatic-azureOP16mo 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
Want results from more Discord servers?
Add your server