Temperature modification during Z movement !
Hello,
I use Repetier Firmware (last version) on pibot v2.0 board and repetier server on Raspberry Pi 3.
When Z probing is activated (classic method in 3 points) and i move Z axis with manual command on Repetier Server, the temperatures (head and bed) are modified ! This modification generate an error and sensor are disconnect.
If i disabled Z probing in firmware, the temperature errors disappear during Z movement.
I'm sure that is a software problem, my hardware is OK, i have checked that.
What is the problem ?
I use Repetier Firmware (last version) on pibot v2.0 board and repetier server on Raspberry Pi 3.
When Z probing is activated (classic method in 3 points) and i move Z axis with manual command on Repetier Server, the temperatures (head and bed) are modified ! This modification generate an error and sensor are disconnect.
If i disabled Z probing in firmware, the temperature errors disappear during Z movement.
I'm sure that is a software problem, my hardware is OK, i have checked that.
What is the problem ?
Comments
The temperature graphic on repetier Server or Repetier host show the temperature problem (ramdom values).
All temperature values are impacted.
The test is very simple, if i desactive "auto leveling" from LCD menu of pibot card and i move Z axis, i have no problem.
If i enable "auto leveling" from LCD menu (not by flashing new firmware), the problem appears directly.
My printer was working well before I activated the auto levelling.
That is very strange.
So would the command
M320
make it fail and
M321
make it work correctly? That would be the equivalent of turning on/off a sI understand it, but might be different from what you mean.
G32 works well the error does not appear during this command but after the auto level enable and only when Z move.
If I never activate the auto level, I never have a probe temperature problem, that is strange.
In file attached, you can see the complete log (with acknowledgement) of the problem, and below the summary without acknowledgement:
I think it's more of a pointer overflow.
My printer is cartesian type.
Question is then why doe sit only overwrite temperatures for you. It may depend a bit on what functions you have as this changes what is stored where. The problem is for your z move the only difference is in this function:
void Printer::transformToPrinter(float x,float y,float z,float &transX,float &transY,float &transZ) {
and as you see no pointers used for writing. So I do not think it depends on this.
What happens if you do only a very small z move? Does it still then cause sensors to fail?
Other strange thing is that it shot 3 heater measurements at once. Just saw that it gets fixed right after the error message. So whatever it is it is only disturbing for a short while.
Does this also happen on x and y moves? That's the same code as for z as all 3 are one package.
Axis X and Y are very fast (400mm/s) than z Axis (40mm/s), when i do a move on X or Y axis, the result as same as a little Z move, all temperature change a little !
Temperature measurement is in interrupt routine or no ?
If temperature only changes a bit it sounds like steps change reading. While z axis has many steps this affects z moves more. So if that would be true moving z very slowly would also cause a drop in temperature but maybe not as much as with fast z move not triggering the defect. On the other side your example had 2 wrong readings and then resumed to normal and I assume you z move was longer then 2 seconds?