Added new request code rr_data for file uploading, and made other
changes to improve file upload speed.
Implemented S parameter to M208 command, to allow the negative limits of
axes to be set. Also reports current limits of no X/Y/Z parameter.
Reduced max reported free buffer size to 950 bytes to avoid problems
with file upload from Windows 8.1.
Fixed bug introduced at version 057o-dc42 that broke the G32 bed
compensation. Added the Z heights of the bed compensation points to the
information displayed by M111 S2. Simplified the code that does
Z-probing in fast and slow stages. Added function sncatf and used it to
simplify the code in several places.
1. Fixed bug whereby the first XY move after a Z move would often be at
a speed much higher than requested.
2. Added support for direct-mode ultrasonic sensor using command M558
P3. Command M558 P4 selects differential-mode ultrasonic sensor.
3. Changed temperature parameter in G31 command from T to S.
Tidied up axis homing tracking.
When checking endstops, wait for move to complete before accepting
further moves, otherwise subsequent moves use the wrong coordinates.
Temperatures and Z probes are now monitored continuously using a tick
interrupt to kick off ADC conversions. ADC is now run in 12-bit mode.
Thermistor readings are passed through averaging filters. Thermistors
are monitored for overheat conditions and bad readings in the tick ISR
and the appropriate heater is turned off (useful because the main loop
sometimes gets suspended while trying to do USB communication).
Use watchdog timer to monitor the tick interrupt - needs patch to
Arduino Due core library. Add facility to test watchdog timer (M111
S1001). Added an error status word to record that errors have occurred
(e.g. over-temperature).
M111 command changes so that S0 turns debug off, S1 turns debug on, S2
reports free memory - also now reports the type of the last restart and
the error status word. Fixed problem whereby M111 debug reports were not
sent to the web interface.
Implemented M999 command, which resets the Duet.
Removed an unused variable.
Changed some more "char*" to "const char*".
Changed extruder PID parameters and added more explanation for them.
Fixed a random hang after z-homing in the previous release. Also make Z
probe temperature coefficient default to zero always, and Z probe
calibration temperature default to current bed temperature always.
1. Z-probing is now done in two stages: a fast stage at the configured
home feed rate until within 10% of the target value, then a slow stage
at 20% of that feed rate.
2. Provisional support for ultrasonic Z-probe.
3. Added calibration temperature and height temperature coefficient to Z
probe parameters.
4. Z-probe parameters and Z-probe type are now saved to flash memory so
that they survive power-off and reset cycles. Separate parameters are
retained for IR and ultrasonic probes in case both are fitted.
5. Fixed issue with doing slow Z-moves immediately after Z-homing or
probing.
1. G92 with a Z value now sets exactly that Z value even if bed
compensation is in effect.
2. If G32 is run before the Z axis is homed, the first bed probe in the
G32 sequence homes the Z axiws.
track up the low-precision slope of the IR probe before measuring down
the high-precision slope near 0 mm. But this means that the probe has to
be set only a fraction of a mm higher than the nozzle itself. Also (at
the moment for safety) the code thinks Z = 0 occurs when it is actually
0.2mm. This is easy to fix when the rest is reliable.
is A0 on the Arduino. The signal seems quite noisy. I have put a 10uF
capacitor across its supply. Maybe add an 0.1uF across its signal?
Two values need to be set in Platform.h:
If v is the value from the A->D on A0, then:
z = v*Z_PROBE_GRADIENT + Z_PROBE_CONSTANT (mm)
Z_PROBE_GRADIENT is dependent on the IR proximity device (though they may
be consistent enough all to have the same value) and Z_PROBE_CONSTANT depends
on how high it is mounted relative to the nozzle.
To generate these values, uncomment the bits of code in and around Platform::Spin()
zero the Z axis by eye, run the program, and raise Z by 0.1mm increments. Put
the raw A->D values in the spreadsheet in the Data directory, and it will
give you the values of Z_PROBE_GRADIENT and Z_PROBE_CONSTANT.