New 6HC board, leadscrew stepping and bed temp issues
-
Hello All,
New Duet customer here. I bought a duet 3 6HC for a custom Cartesian 3d printer I made. I have two issues. The first issue, the X and Y movement are spot on, but the Z movement is way off even though I believe I have the steps per mm set correctly. I have dual 0.9 degree Z motors. My lead screws are 2 mm pitch 8 mm diameter and the lead screw nuts are correct (I double checked, 8 mm diameter, 2 mm pitch). I have 1/16 microstepping enabled for them in reprap. I put the steps per mm at 3200. When I use the duet interface to manually click Z +5, it moves the Z axis probably 50 millimeters.Here's the drives section of my config:
; Drives M569 P0.0 S1 ; physical drive 0.0 goes backwards M569 P0.1 S1 ; physical drive 0.1 goes forwards M569 P0.2 S1 ; physical drive 0.2 goes forwards M563 P0.3 S1 ; physical drive 0.3 goes forwards M569 P0.4 S1 ; physical drive 0.4 goes forwards M569 P0.5 S0 ; physical drive 0.5 goes backwards M584 X0.0 Y0.1 Z0.2:0.3 E0.4:0.5 ; set drive mapping M350 X16 Y16 Z16 E16:16 I1 ; configure microstepping with interpolation M92 X160.00 Y160.00 Z3200.00 E420.00:420.00 ; set steps per mm M566 X900.00 Y900.00 Z60.00 E120.00:120.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z180.00 E1200.00:1200.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z20.00 E250.00:250.00 ; set accelerations (mm/s^2) M906 X800 Y800 Z800 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout
The 2nd issue I have is my heated bed is about 20 degrees Celsius cooler than the thermistor is registering, even after PID tuning. If I set the bed temperature to 60 degrees Celsius, it will only get to about 40 degrees Celsius while registering 60 degrees Celsius in the duet web UI. I am using a creality cr10 heated bed and the documentation says it has a 100k thermistor on it.
Here is my Heaters section:
; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 B1 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"temp1" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp1 M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S280 ; set temperature limit for heater 1 to 280C
Any ideas on these two issues? I might have a faulty thermistor.
-
@impalanator
The creality stuff uses a 4092 thermistor so set your thermistor settings toM308 S0 P"btemp0" Y"thermistor" T100000 B4092
-
@impalanator i suspect that even tho your lead screws are 2mm pitch I suspect they are 4 start which would give a lead of 8mm per revolution so may be worth checking that. if so then set your steps for the Z to 800 and try again.
HTH
Doug
-
@impalanator For leadscrew steps per mm, the calculation is:
(steps per rotation x microstepping) / lead = steps per mm
For you, this is 400 x 16 / 2 = 3200, as you say.However, while the thread pitch of your leadscrews is 2mm, I'd guess it actually has 4 'starts', which would make it an 8mm lead. If you look at the top of the leadscrew, which of the following does it look like?
If it has 4 starts, the steps per mm will be:
400 x 16 / 8 = 800For your heater problem, you are using the default thermistor values:
M308 S0 P"temp0" Y"thermistor" T100000 B4138
You need to know what thermistors you have for the bed and hot end (make, model and/or specification), and set them accordingly. The RRF config tool has a list of the most popular thermistors, but you may need to add your own values if the ones you have aren't on the list. I expect you have 100k thermistors, but the Beta and C values are wrong.
A '100k thermistor' just means that at 25ºC, the resistance is 100k ohms, which is standard. However, different brands and models of thermistors can report wildly different resistances at specific temperatures. The Beta and C values allow you to work out what the temperature is accurately, for a specific thermistor. So knowing the brand and model of thermistor, so you can look up the Beta and C values, is important if you want your temperature reporting to be accurate.
It is possible to calculate these values; measure the resistance at three known temperatures and use the built-in calculator in the RRF configuration tool, or the one at https://www.thinksrs.com/downloads/programs/therm calc/ntccalibrator/ntccalculator.html
Edit: Effectively ninja'd by Jay and Doug!
Ian
-
@impalanator The 6HC may also need it's thermistor ADC calibrated for really accurate reading. See https://duet3d.dozuki.com/Wiki/Calibrating_thermistor_and_PT1000_readings
Ian
-
@jay_s_uk Thank you! I tried B4092 but it is still off by exactly 20 degrees Celsius after re-tuning. I think I just need to contact the manufacturer of the bed and ask them which thermistor they used.
-
@dougal1957 That was exactly the issue. I looked at the top of the lead screw and it has a 4 start. I changed Z steps per mm to 800 and now it is perfect.
-
@impalanator said in New 6HC board, leadscrew stepping and bed temp issues:
The 2nd issue I have is my heated bed is about 20 degrees Celsius cooler than the thermistor is registering, even after PID tuning. If I set the bed temperature to 60 degrees Celsius, it will only get to about 40 degrees Celsius while registering 60 degrees Celsius in the duet web UI. I am using a creality cr10 heated bed and the documentation says it has a 100k thermistor on it.
- What reading does the Duet give when the bed is at room temperature?
- How are you measuring the temperature of the bed, to compare it with the reading provided by the Duet?
- What is the construction of the bed?
-
@dc42 Thanks for the reply! The bed is aluminum. I hooked up a multimeter to the thermistor and brought the build plate to 25.0 degrees Celsius (measuring with an accurate infrared thermometer). The resistance was 95,600 ohms at 25.0 degrees Celsius. I changed my T value to 95600. After changing the value I measured the temperature of the bed which was still exactly 25.0 degrees Celsius. At that temperature, the duet web UI showed a temperature of 27.6 degrees Celsius so it looks like it's still off by a few degrees.
I contacted the manufacturer and they couldn't provide more information on the Steinhart–Hart values. They just re-iterated the fact that it's a "Creality CR-10 replacement bed."
Here is a picture:
-
I figured out the print bed temperature issue in case anyone else runs into this. I put a thermometer probe on the surface of the bed. I performed a PID auto-tune on the print bed and heated the bed to 115 degrees Celsius (using the thermometer to measure the temperature) since I believe 110 degrees is the highest I would set the bed for printing ABS. I turned off the printer and immediately unplugged the thermistor for the bed and hooked it up to an ohm meter. I watched the thermometer and as the temperature fell. When the temperature reached 110.0 degrees Celsius, I looked at the ohm meter and recorded the thermistor resistance at that temperature. I wanted to record another 2 more temperatures so I took another reading at 60 degrees Celsius and a final one when the bed got to room temperature. I plugged those values into the Steinhart-hart equation and got a beta value of 4116.93. I then updated my M308 command to this (the T value is the resistance of the thermistor at 25 degrees Celsius):
M308 S0 P"temp0" Y"thermistor" T95600 B4116.93 C0After saving the config and rebooting the board, the bed temperature displayed in the Duet3d WebUI is nearly perfect to its actual temperature.
-
@impalanator, bear in mind that of you use a glass bed, then at 65C its surface temperature will be about 5C lower than the bed plate below the glass, and at 100C it will be about 10C lower. This is because glass is not a good thermal conductor.
-
@dc42 Thanks! I put the glass bed on before the tuning exercise so the temp of the surface of the bed matches what is displayed in the Duet3d WebUI. It is less than a degree off at both 60 degrees Celsius and 110 degrees Celsius, within the error margin of my thermometer. I am very happy with the results .