From 618304c021a869b94bc1334a3f83756130a78285 Mon Sep 17 00:00:00 2001 From: David Crocker Date: Tue, 14 Jan 2014 19:03:42 +0000 Subject: [PATCH] Support for modulated IR sensor Add code to support sensors that allow the IR output to be modulated, to reduce the sensitivity to ambient IR. Use M558 P2 command to enable sensor modulation. Also changed the sensor reading averaging code to give more consistent z-height seeking. --- GCodes.cpp | 16 +++++- Platform.cpp | 76 ++++++++++++++++----------- Platform.h | 90 ++++++++++++++++++++++---------- Release/RepRapFirmware-dc42.bin | Bin 168732 -> 168892 bytes 4 files changed, 120 insertions(+), 62 deletions(-) diff --git a/GCodes.cpp b/GCodes.cpp index f07508a..3a588e5 100644 --- a/GCodes.cpp +++ b/GCodes.cpp @@ -174,7 +174,7 @@ void GCodes::Spin() if(platform->GetLine()->Status() & byteAvailable) { - // Read several bytes instead of just one. This is mainly to speed up file uploading. + // Read several bytes instead of just one. This approximately doubles the speed of file uploading. int8_t i = 0; do { @@ -815,8 +815,14 @@ bool GCodes::SetPrintZProbe(GCodeBuffer* gb, char* reply) { platform->SetZProbe(gb->GetIValue()); } - } else + } else if (platform->GetZProbeType() == 2) + { + snprintf(reply, STRING_LENGTH, "%d (%d)", platform->ZProbe(), platform->ZProbeOnVal()); + } + else + { snprintf(reply, STRING_LENGTH, "%d", platform->ZProbe()); + } return true; } @@ -1621,7 +1627,13 @@ bool GCodes::ActOnGcode(GCodeBuffer *gb) case 558: // Set Z probe type if(gb->Seen('P')) + { platform->SetZProbeType(gb->GetIValue()); + } + else + { + snprintf(reply, STRING_LENGTH, "%d", platform->GetZProbeType()); + } break; case 559: // Upload config.g diff --git a/Platform.cpp b/Platform.cpp index e4012d5..9eec2e8 100644 --- a/Platform.cpp +++ b/Platform.cpp @@ -97,12 +97,15 @@ void Platform::Init() potWipes = POT_WIPES; senseResistor = SENSE_RESISTOR; maxStepperDigipotVoltage = MAX_STEPPER_DIGIPOT_VOLTAGE; - zProbePin = -1; // Default is to use the switch - zProbeCount = 0; - zProbeSum = 0; - zProbeValue = 0; + + // Z PROBE + + zProbePin = Z_PROBE_PIN; + zProbeModulationPin = Z_PROBE_MOD_PIN; + zProbeType = 0; // Default is to use the switch zProbeADValue = Z_PROBE_AD_VALUE; zProbeStopHeight = Z_PROBE_STOP_HEIGHT; + InitZProbe(); // AXES @@ -188,9 +191,6 @@ void Platform::Init() thermistorInfRs[i] = ( thermistorInfRs[i]*exp(-thermistorBetas[i]/(25.0 - ABS_ZERO)) ); } - if(zProbePin >= 0) - pinMode(zProbePin, INPUT); - if(coolingFanPin >= 0) { pinMode(coolingFanPin, OUTPUT); @@ -207,13 +207,28 @@ void Platform::Init() active = true; } +void Platform::InitZProbe() +{ + zProbeCount = 0; + zProbeOnSum = 0; + zProbeOffSum = 0; + for (uint8_t i = 0; i < NumZProbeReadingsAveraged; ++i) + { + zProbeReadings[i] = 0; + } + + if (zProbeType != 0) + { + pinMode(zProbeModulationPin, OUTPUT); + digitalWrite(zProbeModulationPin, HIGH); // enable the IR LED + } +} + void Platform::StartNetwork() { network->Init(); } - - void Platform::Spin() { if(!active) @@ -345,7 +360,7 @@ void Platform::SetHeater(int8_t heater, const float& power) EndStopHit Platform::Stopped(int8_t drive) { - if(zProbePin >= 0) + if(zProbeType > 0) { // Z probe is used for both X and Z. if(drive != Y_AXIS) { @@ -841,6 +856,26 @@ void Line::Init() //while (!SerialUSB.available()); } +void Line::Spin() +{ + // Read the serial data in blocks to avoid excessive flow control + if (numChars <= lineBufsize/2) + { + int16_t target = SerialUSB.available() + (int16_t)numChars; + if (target > lineBufsize) + { + target = lineBufsize; + } + while ((int16_t)numChars < target) + { + int incomingByte = SerialUSB.read(); + if (incomingByte < 0) break; + buffer[(getIndex + numChars) % lineBufsize] = (char)incomingByte; + ++numChars; + } + } +} + //*************************************************************************************************** // Network/Ethernet class @@ -1232,27 +1267,6 @@ void NetRing::ReleaseHs() hs = 0; } -void Line::Spin() -{ - // Read the serial data in blocks to avoid excessive flow control - if (numChars <= lineBufsize/2) - { - int16_t target = SerialUSB.available() + (int16_t)numChars; - if (target > lineBufsize) - { - target = lineBufsize; - } - while ((int16_t)numChars < target) - { - int incomingByte = SerialUSB.read(); - if (incomingByte < 0) break; - buffer[(getIndex + numChars) % lineBufsize] = (char)incomingByte; - ++numChars; - } - } -} - - diff --git a/Platform.h b/Platform.h index e8d2572..a274225 100644 --- a/Platform.h +++ b/Platform.h @@ -91,9 +91,10 @@ Licence: GPL #define POT_WIPES {1, 3, 2, 0} // Indices for motor current digipots (if any) #define SENSE_RESISTOR 0.1 // Stepper motor current sense resistor #define MAX_STEPPER_DIGIPOT_VOLTAGE ( 3.3*2.5/(2.7+2.5) ) // Stepper motor current reference voltage -#define Z_PROBE_AD_VALUE 400 -#define Z_PROBE_STOP_HEIGHT 0.7 // mm -#define Z_PROBE_PIN 0 // Analogue pin number +#define Z_PROBE_AD_VALUE (400) +#define Z_PROBE_STOP_HEIGHT (0.7) // mm +#define Z_PROBE_PIN (0) // Analogue pin number +#define Z_PROBE_MOD_PIN (61) // Digital pin number to turn the IR LED on (high) or off (low) #define MAX_FEEDRATES {50.0, 50.0, 3.0, 16.0} // mm/sec #define ACCELERATIONS {800.0, 800.0, 10.0, 250.0} // mm/sec^2 #define DRIVE_STEPS_PER_UNIT {87.4890, 87.4890, 4000.0, 420.0} @@ -183,7 +184,8 @@ Licence: GPL #define BAUD_RATE 115200 // Communication speed of the USB if needed. -const uint16_t lineBufsize = 256; // use a power of 2 for good performance +const uint16_t lineBufsize = 256; // use a power of 2 for good performance +const uint16_t NumZProbeReadingsAveraged = 8; // must be an even number, preferably a power of 2 for performance, and no greater than 64 /****************************************************************************************************/ @@ -326,6 +328,8 @@ protected: void Spin(); private: + // Although the sam3x usb interface code already has a 512-byte buffer, adding this extra 256-byte buffer + // increases the speed of uploading to the SD card by 10% char buffer[lineBufsize]; uint16_t getIndex; uint16_t numChars; @@ -481,10 +485,12 @@ class Platform float ZProbeStopHeight(); void SetZProbeStopHeight(float z); - long ZProbe(); + int ZProbe() const; + int ZProbeOnVal() const; void SetZProbe(int iZ); void SetZProbeType(int iZ); - + int GetZProbeType() const; + // Heat and temperature float GetTemperature(int8_t heater); // Result is in degrees celsius @@ -539,15 +545,19 @@ class Platform float maxStepperDigipotVoltage; // float zProbeGradient; // float zProbeConstant; - long zProbeValue; int8_t zProbePin; - int8_t zProbeCount; - long zProbeSum; + int8_t zProbeModulationPin; + int8_t zProbeType; + uint8_t zProbeCount; + long zProbeOnSum; // sum of readings taken when IR led is on + long zProbeOffSum; // sum of readings taken when IR led is on + uint16_t zProbeReadings[NumZProbeReadingsAveraged]; int zProbeADValue; float zProbeStopHeight; // AXES + void InitZProbe(); void PollZHeight(); float axisLengths[AXES]; @@ -804,14 +814,25 @@ inline void Platform::SetMaxFeedrate(int8_t drive, float value) inline int Platform::GetRawZHeight() { - if(zProbePin >= 0) - return analogRead(zProbePin); - return 0; + return (zProbeType != 0) ? analogRead(zProbePin) : 0; } -inline long Platform::ZProbe() +inline int Platform::ZProbe() const { - return zProbeValue; + return (zProbeType == 1) + ? (zProbeOnSum + zProbeOffSum)/NumZProbeReadingsAveraged // non-modulated mode + : (zProbeType == 2) + ? (zProbeOnSum - zProbeOffSum)/(NumZProbeReadingsAveraged/2) // modulated mode + : 0; // z-probe disabled +} + +inline int Platform::ZProbeOnVal() const +{ + return (zProbeType == 1) + ? (zProbeOnSum + zProbeOffSum)/NumZProbeReadingsAveraged + : (zProbeType == 2) + ? zProbeOnSum/(NumZProbeReadingsAveraged/2) + : 0; } inline float Platform::ZProbeStopHeight() @@ -831,22 +852,33 @@ inline void Platform::SetZProbe(int iZ) inline void Platform::SetZProbeType(int pt) { - if(pt != 0) - zProbePin = Z_PROBE_PIN; - else - zProbePin = -1; + zProbeType = (pt >= 0 && pt <= 2) ? pt : 0; + InitZProbe(); +} + +inline int Platform::GetZProbeType() const +{ + return zProbeType; } inline void Platform::PollZHeight() { - if(zProbeCount >= 5) + uint16_t currentReading = GetRawZHeight(); + if (zProbeType == 2) { - zProbeValue = zProbeSum/5; - zProbeSum = 0; - zProbeCount = 0; + // Reverse the modulation, ready for next time + digitalWrite(zProbeModulationPin, (zProbeCount & 1) ? HIGH : LOW); } - zProbeSum += GetRawZHeight(); - zProbeCount++; + if (zProbeCount & 1) + { + zProbeOffSum = zProbeOffSum - zProbeReadings[zProbeCount] + currentReading; + } + else + { + zProbeOnSum = zProbeOnSum - zProbeReadings[zProbeCount] + currentReading; + } + zProbeReadings[zProbeCount] = currentReading; + zProbeCount = (zProbeCount + 1) % NumZProbeReadingsAveraged; } @@ -996,11 +1028,11 @@ inline int Line::Read(char& b) // if(alternateInput != NULL) // return alternateInput->Read(b); - if (numChars == 0) return 0; - b = buffer[getIndex]; - getIndex = (getIndex + 1) % lineBufsize; - --numChars; - return 1; + if (numChars == 0) return 0; + b = buffer[getIndex]; + getIndex = (getIndex + 1) % lineBufsize; + --numChars; + return 1; } inline void Line::Write(char b) diff --git a/Release/RepRapFirmware-dc42.bin b/Release/RepRapFirmware-dc42.bin index 0c2e4d7ccbb0d9a8665b488785f2d76d07e98fe7..ee97e1f0f9f9a57a7c93f691cc45aa1cefb97bfd 100644 GIT binary patch delta 28200 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 delta 28149 zcmb?^30PER`}cXy3^2?LG6*QE&M=~bh=PiOrVcKL0W`oRHJ1k0!6k9m-gE%5EVImG zjxCmDrj-?lhLngU_Sz0*WvMkTy;^4P0hc+mf4}FwwSyFFOBer%WEOOLY$G!y^+<|Kd`q<{Zu_~a!8voR#V|4-h%@zm}C2Nvi4C2Q=sJmKSx zFj>NyXMJj-;ZU>J zXW%*s=e$}N`qZc8LWHM0)+VO;DI~Lg3eU>Nv)8=*1M>TdH#IT(Omkgj{nFlb8tCkV zPKdD2pTlKwen+uiUXa5zT@~^|h1N!<`2h4kl`9w~MRB-#Y4s)SJ0VtT z0lE!h*XRVZ1|@XIO2uJ0*DBU9QNq8R+r>?pA)GwDN1H~_MCw{Ky3-Qpx|4>++xpTd zA&hSf+YoW`9?C0xfkIDo{9;8ud6Pe^7%=BmXOD5vFo)O&EQr2YY3<%dh9$Ssvg+Yv z3^!Z5+God8i@Z2M6D6#1l5E5(y51jRA1cW!+Q{(G)*Q&IC3(h9Qn!l}GIx!wtr7$*)5bo~^+@GQmru$-m9XzNJ7W+B_(+G2X zM6VF#nVlp$Eg2zCBh2I`XIYCyZ()cz7g!1 z?E3E$x`oj2cK3O#@>I5xxe92@uAi6kh>X%NrtV;grGBlUOcvI|*Gt<;(A8f^*Ap^> z56LJd%j+j)oRx=e8l+@iA5=f6eVQ4zMy%a0s-lq{?F4{akP zjc*$kOV;yOhLw?=`hwwalZY;Y=r?d(gmtbi0?!lU7FT>>FzutYj(xZos>M z&N)gZmEU5VI;zsoXuAj@P)T&gb0fJUNnM4Tt}I|-?Fy!=@TW_m|8TitsC)UIayqc= z%r_oHu~sq76|g~VnfSE4RP|WNPMfofa7E-F%)6iL;@`~c7k=oj(1pBPs!*4On+nri z1;Sq#S*C7v>XPLtC5V6S}GE1dHeKrpnuGkiGYl(+X%()fOO_l~m^ zmKX#@W87e@_ZuXy={(S4_V?KPozCc^pxe;6#5 za`N^#rZ=>WNFjwO;3z)RwL7VM0mZUmUk>}lf?P@C8IbD6gk4jT@rde*o6Z3)7y>seice6k*Re`JA!CRY#mub(kksm{4Ce zb~2Ite+ROS09t~f{BPs>sji6BrA6*op_L}(Oxt`{zHCC8x-Z&StWXd6PyPIk37O<+{+|<;ru~39df%0A5)&$=xw(oK;u$Dj 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 OoAb%kTOaY*N&E|5cX;Xm