1 Bed 2 bed heaters. How to control both with a single M190?
-
First off, let me describe the setup. I am using a Duet3 6HC board and the bed is an aluminum plate that has 2 700 watt heaters on the bottom. The heaters are AC and driven by 2 solid state relays. Each heater has its own temperature probe. It takes just 2 minutes to bring the bed up to 70C from room temp. I use Cura as the slicer. All the software and firmware is the latest.
Here is the build thread: https://grabcad.com/library/retnirp-d3-the-3d-printer-1
The question is this. Cura generates a M190 command to control the bed heater but it assumes there is only one heater and so only the left side of the bed is heated. The right side heater is off. While I can control both heaters by messing with macros and startup scripts, how can I get the M190 command to control 2 bed heaters? From looking at the description of the M140 command, it looks like it should be able combine 2 heaters if you use the H parameter. This should work but does not. M140 H0:1
Here is my config.g file:
; Configuration file for Duet 3 (firmware version 3)
; executed by the firmware on start-up
;
; --------------- Pin/connection Mapping Legend -------------------
; out0 - UNUSED
; out1 - Extruder heater
; out2 - Coolant Pump
; out3
; out4 - Coolant Radiator Fan
; out5 - Part Cooler Fan (NOT USED)
; out6 -
; out7 - Solid State Relay 1 (Bed Heater Right)
; out8 - Solid State Relay 2 (Bed Heater Left)
; out9 - Run Signal to Limits/E-Stop board.
; out4.tach
; out5.tach
; out6.tach
; io0.in - X limit switch. Active High Signal.
; io0.out
; io1.in - Y limit switch. Active High Signal.
; io1.out
; io2.in - Z limit switch. Active High Signal.
; io2.out
; io3.in - Emergency stop from Limits/E-Stop board.
; io3.out
; io4.in - Unused Signal from Limits/E-Stop board.
; io4.out
; io5.in
; io5.out
; io6.in
; io6.out
; io7.in - BL-Touch
; io7.out - BL-Touch
; io8.in
; io8.out
; pson
; spi.cs0
; spi.cs1
; spi.cs2
; spi.cs3
; temp0 - Bed Temp Sensor (Internal not used)
; temp1 - Hotend Thermistor
; temp2 - Bed Thermistor (Right side of bed)
; temp3 - Bed Thermistor (Left side of bed)
; mcu-temp - MCU sensor
; driver0 - XY Left NEMA 23 Stepper 4.0 Amps, 20 tooth GT2 belt.
; driver1 - XY Right NEMA 23 Stepper 4.0 Amps, 20 tooth GT2 belt.
; Correction for XY = 0.988875 % of actual or 79.11 steps/mm
; driver2 - Z Left/Front NEMA 17 Stepper 1.5 Amps, Belt drive 3:1 reduction driving 1204 ballscrew.
; driver3 - Z Center/Rear NEMA 17 Stepper 1.5 Amps, Belt drive 3:1 reduction driving 1204 ballscrew.
; driver4 - Z Right/Front NEMA 17 Stepper 1.5 Amps, Belt drive 3:1 reduction driving 1204 ballscrew.
; driver5 - Extruder, NEMA 17 Stepper 1.3 Amps, 14:1 planetary geared, driving Bondtech Drivegear 36.13mm/rotation
;
; Home is at 0,0,0 extents are: X=600 Y=275 Z=220
; -----------------------------------------------------------------;General preferences
G04 P2000 ; Pause for 2 seconds.
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"retnirpd3" ; set printer name
G21 ; Set units to Millimeters.
M669 K1 ; select CoreXY mode;Drives Setup
M569 P0.0 S0 ; physical drive 0.0 goes reverse
M569 P0.1 S0 ; physical drive 0.1 goes reverse
M569 P0.2 S1 ; physical drive 0.2 goes forwards
M569 P0.3 S1 ; physical drive 0.3 goes forwards
M569 P0.4 S1 ; physical drive 0.4 goes forwards
M569 P0.5 S1 ; physical drive 0.5 goes forwards;Create Sensors and assigne them their inputs
M308 S0 A"Bed Int" P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0 (Bed Internal Temp)
M308 S1 A"Hotend" P"temp1" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp1 (Hotend Thermister)
M308 S2 A"Bed Right" P"temp2" Y"thermistor" T100000 B4138 ; configure sensor 2 as thermistor on pin temp2 (Bed Heater Thermister Right)
M308 S3 A"Bed Left" P"temp3" Y"thermistor" T100000 B4138 ; configure sensor 3 as thermistor on pin temp3 (Bed Heater Thermister Right);Create heaters, fans, and logical I/O pins.
M950 J0 C"io3.in" Q0 ;Define Emergency-stop as an Input pin
M950 S0 C"io7.out" ;Create servo pin 0 for BLTouch
M950 H0 C"out7" T2 Q10 ;Create Right bed heater output on out7 and map it to sensor 2, set PWM freq to 10Hz
M950 H1 C"out8" T3 Q10 ;Create Left bed heater output on out8 and map it to sensor 3, set PWM freq to 10Hz
M950 H2 C"out1" T1 Q10 ;Create Extruder heater output on out1 and map it to sensor 1, set PWM freq to 10Hz
M950 F0 C"!out4" Q25000 ;Create Fan 0 (water chiller fan) on inverted pin out4 and set its frequency to 25Khz
M950 F1 C"out2" Q0 ;Create Fan 1 (Water pump) on pin out2 and set PWM freq to 0Hz
M950 F2 C"out3" Q0 ;Create Fan 2 (part cooler fan) on pin out3 and set PWM freq to 0Hz;Endstops
M574 X1 S1 P"io0.in" ; configure active-high endstop for low end on X via pin io0.in
M574 Y1 S1 P"io1.in" ; configure active-high endstop for low end on Y via pin io1.in
M574 Z1 S1 P"io2.in" ; configure active-high endstop for low end on Z via pin io2.in;Drive Mappings
M584 X0.1 Y0.0 Z0.2:0.3:0.4 E0.5 ; set drive mapping. 3 Z motors
M671 X0.0:307.5:600.0 Y-20.0:345.0:-20.0 S5 ; define where the leadscrews are at 2 - left, 3 - rear right and 4 - front right;Axis Setup
M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation for all motors
M906 X3000 Y3000 Z1500 E800 I50 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout
M92 X79.11 Y79.11 Z2400.00 E1240.00 ; set steps per mm
M566 X100.00 Y100.00 Z100.00 E250.00 ; set maximum instantaneous speed changes (mm/min)
M203 X12000 Y12000 Z800 E1200 ; set maximum speeds (mm/min)
M201 X3000 Y3000 Z50 E7000 ; set accelerations (mm/s^2); Axis Limits
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X600 Y275 Z220 S0 ; set axis maxima; Z-Probe
M558 P9 C"^io7.in" H5 F100 T6000 ; set Z probe type to bltouch and the dive height + speeds
; before 6-15-22
;G31 P500 X0 Y32 Z2.435 ; set Z probe offset relative to the tip of the extruder. + in the Z offset will squish the 1st layer onto bed more.
; with mk3 nozzle length 12.53mm
G31 P500 X0 Y32 Z2.600 ; set Z probe offset relative to the tip of the extruder. + in the Z offset will squish the 1st layer onto bed more.
M280 P0 S160 ; ALARM RELEASE and push pin up.
M557 X25:575 Y32:257 S50 ; define mesh grid; Bed
M140 P1 H0 ;Map heated bed to heater 0. Must come before M143.
M140 P0 H1 ;Map heated bed to heater 1. Must come before M143.
;M140 H1:0 ;Map heated bed to heater 1 and 2. Must come before M143.; Heaters
M143 H0 S140 ;Set temperature limit for heater 0 to 120C
M143 H1 S140 ;Set temperature limit for heater 1 to 120C
M143 H2 S300 ;Set temperature limit for heater 2 to 300C; Heater Auto Tune settings
M307 H0 A131.2 C221.8 D1.1 S1.0 V24.0 B0 ;Bed Heater Right
M307 H1 A131.2 C221.8 D1.1 S1.0 V24.0 B0 ;Bed Heater Left
M307 H2 R2.142 K0.285:0.000 D17.69 E1.35 S1.00 B0 V23.9; Define the Fan setup
M106 C"H2o Fan" P0 S0.0 H-1 ;Define fan control. Give it a name, relete it to a fan index, speed = 0%, disable sensor control.
M106 C"H2o Pump" P1 S0.0 H-1 ;Define fan control. Give it a name, relete it to a fan index, speed = 0%, disable sensor control.
M106 C"Tool Fan" P2 S0.0 H-1 ;Define fan control. Give it a name, relete it to a fan index, speed = 0%, disable sensor control.; Tools
M563 P0 S"Extruder" D0 H2 F2 ;Define tool 0, give it a name, and associate the drive and heater, and the Part cooler fan
G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C
M404 N1.75 D0.4 ; tell the print monitor the filamenet diameter and nozzle diameter.Retraction and Pressure Advance.
M207 P0 S0.8 R0.8 F1200 T1200 ;Select the tool P, retraction distance S, un-retract distance R, retract rate F, and unretract rate T.
M572 D0 S0.05 ;Select the tool D, and the pressure advance S.; Emergency Stop
M581 P0 T0 S1 R0 ;Create a trigger and map it to the E-Stop input. Trip on rising edge, and at any time
M582 T0 ;Check to see if E-Stop is already pressed.T0 ;Activate the tool
-
I guess the simplest solution would be to wire the heater output to both SSRs signal inputs in parallel.
-
The M190 command has a P(index) parameter
I'd guess if it's omitted it default to 0
Try M190 P0:1 S60 maybe -
I have the same setup and the same issue
If you wire up both SCRs in parallel then each heater element is not closed loop
I just ensure that the Start GCODE starts both heaters and end GCODE shuts off both heaters
M104 P0 S<TEMP>; set bed 0 temp
M104 P1 S<TEMP>; set bed 1 temp -
@percar hi, just an idea. I planned do something simmilar but I will try to put the second heater as chamber header and then force but code that both, bed and chamber get the same temp
-
@owend said in 1 Bed 2 bed heaters. How to control both with a single M190?:
M190 P0:1 S60
That command only operates on P0. Heater 0 is set active at 60deg but heater 1 is unaffected.
-
@percar said in 1 Bed 2 bed heaters. How to control both with a single M190?:
I have the same setup and the same issue
If you wire up both SCRs in parallel then each heater element is not closed loop
I just ensure that the Start GCODE starts both heaters and end GCODE shuts off both heaters
M104 P0 S<TEMP>; set bed 0 temp
M104 P1 S<TEMP>; set bed 1 tempYes, this is how I am having to do it. Unfortunately this means that there must be a printer setup for each material with a different bed temperature as Cura can't issue a macro script that is assigned to a filament.
-
@phaedrux said in 1 Bed 2 bed heaters. How to control both with a single M190?:
I guess the simplest solution would be to wire the heater output to both SSRs signal inputs in parallel.
This would run the risk of overdriving one of the heating elements if both elements don't perform exactly the same. If you have just one signal to drive the SSR then there is just one temperature probe that is being monitored.