Detect overheated driver
-
Is there a way to detect if a motor driver has overheated? One of my printers is slowing down a lot after it prints for awhile and Iām trying to figure out why.
-
Unless you are using very old firmware, you will get warning messages in the Console pages of DWC and PanelDue if the drivers overheat. You can also use M305 to set up a virtual heater to monitor them.
-
@dc42 said in Detect overheated driver:
Unless you are using very old firmware, you will get warning messages in the Console pages of DWC and PanelDue if the drivers overheat. You can also use M305 to set up a virtual heater to monitor them.
@dc42, could you please give a couple of concrete examples of how to set up a virtual heaters for, say, Driver 0 (X-Motor) and Driver 1 (Y-Motor) using the M305 command so that they could be monitored in DWC?
I've read and re-read the documentation on this here, but still not sure what the specific parameters ought to be, mainly the 'P' parameter.
What I find a bit confusing is that in my config.g I have:
M305 P1 T100000 B3950 C0 R4700 ; Set thermistor + ADC parameters for heater 1;
But, unless I'm mistaken, that would mean P1 is mapped to the E0 driver which runs my extruder stepper, so I'm not sure how the axis drivers are mapped to the 'P' parameter.
I'm also not entirely clear what other parameters are needed in this context (if any)?
Edit: I hope this isn't highjacking your thread, @mperdue . My question seemed directly relevant to your query, but if needed, I'll happily start a new one).
-
@snowcrash
I'm not sure how M305 relates to the virtual heater channels for the drivers and CPU but this is how I used them to control my case fans.M106 P2 F10000 L0.2 B1 T35:40 H100:101:102 ; Set fan 2 Duet case fan. ; Turns on when the MCU temperature (virtual heater 100) reaches 35C ; and reaches full speed when the MCU temperature reaches 40C ; or if any TMC2660 drivers (virtual heaters 101 and 102) report that they are over-temperature
-
Unless things have changed recently, the driver chips don't actually report temperature. They just report alarms to indicate that they are close to or exceeding maximum temperature. I can't off hand remember what these temperature are but they are quite high. If it's any help, what I did is attached a bead thermistors to one of the drivers (the one that gets the most use) with small dab of epoxy, then set up virtual heater to monitor this (and control fans).
So in my config.g I have:
M305 P103 X2 S"Duet\Duex" T100000 B4725 R4700; Set thermistor + ADC parameters for "heater" 2 - this is used to measure stepper chip temperature on Duet
Then I have case fans that blow air onto the underside of the chip set up thus:
M106 P2 S255 I0 F250 H103 T40:50; Set fan 2 value (Duet and Duex fans).It's a bit confusing because in M305 the heater number is the "P" parameter (103 in this case) but in M106 the heater number is the "H" parameter.
Then in DWC under "Extras" there is "MCU" (which is fixed) and under that is "Duet/Duex" (the S parameter in M305 gives it a meaningful name) so I can see what the actual temperature of the chip is.
HTH
-
@phaedrux said in Detect overheated driver:
Many thanks for the info, @Phaedrux! It's certainly good to know about M160 and how it can be utilized.
Moreover, your configuration certainly look in line with the description of M106 in the Duet G-Code wiki, but for me this raises even more questions than before, specifically:
(1) If there are 5 x MCP2660 drivers onboard the Duet, why are there only 2 x Virtual heaters mentioned as related to them (i.e. 101 & 102)? Do these 2 virtual heaters correspond to all 5 physical drivers or just to the first 2?
(2) The existance of the M106 command suggests that on-going temp monitoring of the drivers and CPU does take place, but is it possible to create visual indicators for their temp status in DWC via M305 given that M106 is only used to internally control fan output/s?
-
@deckingman said in Detect overheated driver:
P103
Thank you for the clarifications & info, @deckingman!
It is definitly very confusing
This helps answering my questions to @Phaedrux above to an extent, though not fully.
A couple of follow-up questions if I may:
(1) Where did you connect the bead-thermistor on the Duet?
(2) How did you know you can use P103? (virtual temp channel 3, I assume?) Is this channel something that's left to the user to setup or is it already pre-configured in firmware?
-
I believe I recall @dc42 saying previously that the drivers are monitored for a high temp and overtemp, hence the two virtual heaters. The reason for being combined being that they are intended to be used for thermostatic control of a case fan. The hottest driver would trigger the increase in cooling.
Since the drivers can generally be run passively cooled I don't know the benefit of knowing exactly how hot they are since we can already achieve a cooling strategy with virtual heaters provided.
As Deckingman said, adding a thermistor would get you the exact temp and associated control.
-
@phaedrux said in Detect overheated driver:
I believe I recall @dc42 saying previously that the drivers are monitored for a high temp and overtemp, hence the two virtual heaters. The reason for being combined being that they are intended to be used for thermostatic control of a case fan. The hottest driver would trigger the increase in cooling.
Since the drivers can generally be run passively cooled I don't know the benefit of knowing exactly how hot they are since we can already achieve a cooling strategy with virtual heaters provided.
As Deckingman said, adding a thermistor would get you the exact temp and associated control.
Ahh, now the 2 virtual drivers vs 5 physical drivers make more sense - thanks, @Phaedrux! Shame it's not in the wiki...
Also, as always, you make great points here.
Nevertheless, I can see at least one advantage to being able to monitor the actual temps (or even just the status, i.e. high-temp and over-temp), which is it provides a way to verify that the temp-control fans are indeed operating as intended. Put a different way, atm how do you know that the fan comes on when it needs to?
-
@snowcrash It may be in the release notes from back when the virtual temps were introduced. But yes, it would belong in the wiki.
At the temperature set points I have set I can see and hear that the fans do engage and speed up over the course of a print, but due to the way the command is structured, I can't tell if it's due to the MCU temp ( I believe that it is ) or from the driver temps ( I doubt that they are hitting their limits given that the enclosure is already actively cooled to keep the MCU temp in check. )
I think you can see if there are any over temp warnings by issuing an M122 command to get diagnostic information.
-
@phaedrux said in Detect overheated driver:
H100:101:102
https://forum.duet3d.com/topic/5304/firmware-2-0rc2b-1-21-1-rc2b-released/27
There is some discussion here that might help explain the behaviour of the temp reporting from the drivers. They don't actually report temps, only the temp warning flags, which are internally set. Would need to dig up the driver documentation from TMC to see how temps are monitored.
But the takeaway is that it takes a lot to drive these chips to their maximums, ie running motors at the maximum driver current of 2.4. And that under most circumstances, any cooling is adequate cooling.
-
@snowcrash said in Detect overheated driver:
@deckingman said in Detect overheated driver:
P103
Thank you for the clarifications & info, @deckingman!
It is definitly very confusing
This helps answering my questions to @Phaedrux above to an extent, though not fully.
A couple of follow-up questions if I may:
(1) Where did you connect the bead-thermistor on the Duet?
(2) How did you know you can use P103? (virtual temp channel 3, I assume?) Is this channel something that's left to the user to setup or is it already pre-configured in firmware?
(1). The "stuck on" bead thermistor is connected to E1 thermistor channel. Actually I have 5 other thermistors stuck to stepper motor bodies and these are all connected to thermistors E2 to E6 on the Duex5 expansion board.
(2) The information about heater channels (virtual and otherwise) is all in the wiki related to M305
https://duet3d.dozuki.com/Wiki/GCode#Section_M305_Set_temperature_sensor_parametersHistorically, I'm one of the first adopters of the Duet Wifi and have been monitoring various temperatures since day one. Initially I had to set up dummy tools to be able to do it and wrote a post on my blog which you might find informative (although, now that we have virtual heaters it's a little out of date). https://somei3deas.wordpress.com/2017/04/18/stepper-motor-and-electronics-cooling/. I made a firmware request to have some means of monitoring "heaters" that weren't actual heaters which has been implemented and negates the need to use dummy tools.
HTH
-
@phaedrux said in Detect overheated driver:
@snowcrash It may be in the release notes from back when the virtual temps were introduced. But yes, it would belong in the wiki.....................
You can find it in the Wiki here https://duet3d.dozuki.com/Wiki/GCode#Section_M305_Set_temperature_sensor_parameters
-
@deckingman said in Detect overheated driver:
@snowcrash said in Detect overheated driver:
@deckingman said in Detect overheated driver:
P103
Thank you for the clarifications & info, @deckingman!
It is definitly very confusing
This helps answering my questions to @Phaedrux above to an extent, though not fully.
A couple of follow-up questions if I may:
(1) Where did you connect the bead-thermistor on the Duet?
(2) How did you know you can use P103? (virtual temp channel 3, I assume?) Is this channel something that's left to the user to setup or is it already pre-configured in firmware?
(1). The "stuck on" bead thermistor is connected to E1 thermistor channel. Actually I have 5 other thermistors stuck to stepper motor bodies and these are all connected to thermistors E2 to E6 on the Duex5 expansion board.
(2) The information about heater channels (virtual and otherwise) is all in the wiki related to M305
https://duet3d.dozuki.com/Wiki/GCode#Section_M305_Set_temperature_sensor_parametersHistorically, I'm one of the first adopters of the Duet Wifi and have been monitoring various temperatures since day one. Initially I had to set up dummy tools to be able to do it and wrote a post on my blog which you might find informative (although, now that we have virtual heaters it's a little out of date). https://somei3deas.wordpress.com/2017/04/18/stepper-motor-and-electronics-cooling/. I made a firmware request to have some means of monitoring "heaters" that weren't actual heaters which has been implemented and negates the need to use dummy tools.
HTH
Thanks, @deckingman, I'll certainly check it out
-
@mperdue I think we need to do a bit more investigation, an over heating driver does not necessarily manifest itself in prints slowing down. Can you isolate the suspect driver from the system (i.e. are you using all 5 drivers or could you move whatever is connected to that driver to another spare driver and remap using M584.
Also worth confirming the repeat ability of the slow down. For example if it was temperature related does the slow down happen almost immediately if the printer is printing after slow down, you then cancel and restart the same print from the beginning.
-
@deckingman said in Detect overheated driver:
@phaedrux said in Detect overheated driver:
@snowcrash It may be in the release notes from back when the virtual temps were introduced. But yes, it would belong in the wiki.....................
You can find it in the Wiki here https://duet3d.dozuki.com/Wiki/GCode#Section_M305_Set_temperature_sensor_parameters
Unfortunately, I'm afraid I can't...
To the best of my understanding, this is what the wiki has on virtual heaters:
Pnnn Heater number (0, 1, 2...) or virtual heater number (100, 101, 102...)
Channel 1000 is the on-chip microcontroller temperature sensor
Channel 1001 represents the temperature warning and overheat flags on the TMC2660 drivers on the Duet Wif/Ethernet. It reads 0C when there is no warning, 100C if any driver reports over-temperature warning , and 150C if any driver reports over temperature shutdown.Channel 1002 is as channel 1001 but for drivers on the DueX2 or DueX5.
Virtual heaters 100, 101 and 102 are preconfigured to use temperature sensor channels 1000, 1001 and 1002 respectively. We suggest you use virtual heaters 102 upwards if you want to create additional virtual heaters.
I don't know about other members, but I find this description not only confusing, but lacking in the most important respect, namely: how to set up and use existing/new virtual channels in practice.
To take just 3 examples:
As @Phaedrux's comments' revealed, the functions of virtual channels 101 and 102 (high-temp and over-temp) for the drivers aren't mentioned in the wiki at all (they are only mentioned in relation to the CPU 100 channel.
I assume there's a mistake in at the end where it says '102 upward', as it seems channel 102 is reserved for flagging 'over-heating' of the drivers, no? shouldn't it be '103 upwards'?
Moreover, what are 'temperature sensor channels 1000, 1001 and 1002' mentioned above? where do I find them? are there additional temperature channels I can use/create? how do I utilize them? and, in case I'd like to use create new virtual channels, how to I configure them to work with other those 'other channels'?
Of course, I don't expect you (or anyone else) to write a whole tutorial on how to use virtual channels on the Duet within the confines of this modest thread.
On the other hand, from my perspective as a newbie to the Duet eco-system, the info in the wiki on this subject isn't really comprehensible nor detailed enough to be actually useful.
-
Sorry, just trying to help.
I'd say that yes you are correct in that there seems to be a typo. Yes if channel 102 is reserved for on chip temperatures of the Duex expansion board as stated so use channels 103 upwards and not 102.
Not sure I understand your confusion about temperature sensor channels. At the start of your post you correctly quote from the Wiki that:
"Channel 1000 is the on-chip microcontroller temperature sensor, Channel 1001 represents the temperature warning and overheat flags on the TMC2660 drivers on the Duet Wif/Ethernet. It reads 0C when there is no warning, 100C if any driver reports over-temperature warning , and 150C if any driver reports over temperature shutdown.
Channel 1002 is as channel 1001 but for drivers on the DueX2 or DueX5."But then you ask " what are 'temperature sensor channels 1000, 1001 and 1002' mentioned above?".
The Wiki states that "Virtual heaters 100, 101 and 102 are preconfigured to use temperature sensor channels 1000, 1001 and 1002 respectively". We also know from the Wiki that channel 1001 is for the drivers on the Duet and 1002 is for the drivers on the Dues2 or Duex 5. So virtual heater 101 is for teh drivers on the Duet main board, and virtual heater 102 is for drivers on the Duet2/5.
I've given an example of how to set up and use a virtual channel including where to connect the thermistor and the relevant commands to add to config.g. Is there any other information you need?
-
Yes there was a typo in the wiki, it should have suggested using virtual heater numbers 103 upwards for your own additional temperatures. I have corrected it.
If you send the following command:
M305 P101
you should get the response "Heater 101 uses TMC2660 temperature warnings sensor channel 1001". But as this virtual heater has no name, it doesn't show up in DWC. You can fix that by sending:
M305 P101 S"Drivers"
After that, if you go to the "Extra" tab in DWC (where is says Tools/Heaters/Extra), you will see "Drivers" as an entry. The reading you will get here is as the wiki states:
It reads 0C when there is no warning, 100C if any driver reports over-temperature warning , and 150C if any driver reports over temperature shutdown.
HTH David
-
@deckingman said in Detect overheated driver:
Sorry, just trying to help.... I've given an example of how to set up and use a virtual channel including where to connect the thermistor and the relevant commands to add to config.g. Is there any other information you need?
Please don't apologize, @deckingman! On the contrary, your comments were very much appreciated and you've been very helpful throughout this thread. I'm sorry if my last response made it sound like anything else!
I think I'm slowly getting my head around all this
-
@dc42 said in Detect overheated driver:
Yes there was a typo in the wiki, it should have suggested using virtual heater numbers 103 upwards for your own additional temperatures. I have corrected it.
If you send the following command:
M305 P101
you should get the response "Heater 101 uses TMC2660 temperature warnings sensor channel 1001". But as this virtual heater has no name, it doesn't show up in DWC. You can fix that by sending:
M305 P101 S"Drivers"
After that, if you go to the "Extra" tab in DWC (where is says Tools/Heaters/Extra), you will see "Drivers" as an entry. The reading you will get here is as the wiki states:
It reads 0C when there is no warning, 100C if any driver reports over-temperature warning , and 150C if any driver reports over temperature shutdown.
HTH David
Thank you, @dc42, that was definitely one of the missing pieces for me.
I'll sit down now and re-read everything everyone said and then try out some things