kraegar wrote:Hopefully Brian doesn't mind me tagging in here. Since I've been updating regularly for a while now, to keep up with the changes as they release them, here's what I change for my particular setup (rostock max v2, e3d v6, e3d titan) - your changes may vary.
Configuration.h:Code: Select all
42: #define MOTHERBOARD 301 //RAMBO AJA 50: #define PRINTER 2 //Rostock Max v2 AJA 118: #define EXT0_TEMPSENSOR_TYPE 8 //changed to 8 for e3d v6 from default 97 AJA 123: #define EXT0_INVERSE 0 //changed to 0 from default 1 for titan AJA 258: #define MAXTEMP 290 // this is the max allowable temp the hotend can be set at, any higher will trigger safety's // Changed to 290 from default 245 for e3d v6 AJA
To add probing any arbitrary point, I use the following for "case 30" (the bulk of the changes other than a closing brace are at the top) in commands.cpp:Those are the only changes I need to make before I upload my firmware and start calibrating / printing.Code: Select all
case 30: // G30 single probe set Z0 { #if DISTORTION_CORRECTION float oldFeedrate = Printer::feedrate; Printer::measureDistortion(); Printer::feedrate = oldFeedrate; #else float sum = 0, sum1 = 0,last,oldFeedrate = Printer::feedrate, offsetmm = 0; //add ofsetmm = 0 AJA bool oldAutolevel = Printer::isAutolevelActive(); if((com->hasS() && com->S == -1) && (com->hasX() && com->hasY())){ Printer::homeAxis(true,true,true); GCode::executeFString(Com::tZProbeStartScript); Printer::setAutolevelActive(false); Printer::moveTo(com->X,com->Y,IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); sum1 = Printer::runZProbe(true,false,Z_PROBE_REPETITIONS,false); //First tap Y tower sum = Printer::runZProbe(true,false,Z_PROBE_REPETITIONS,false); //Second tap Y tower if ((sum1 - sum) > .1 || (sum1 - sum) < - 0.1){ Com::printErrorFLN(Com::tZProbeFailed); //output to terminal Z probe failure sum = -1; // fail flag to stop probe }else{ offsetmm = sum - Z_PROBE_BED_DISTANCE; Com::printFLN(PSTR("Probed offset in mm "),offsetmm); Printer::homeAxis(true,true,true); } }else{ //Back to normal seemecnc g30 AJA do{ if(com->hasS() && com->S == 2){ // only reset eeprom if saving new value Printer::zLength = Z_MAX_LENGTH; // set Z height to firmware default EEPROM::storeDataIntoEEPROM(); // store default before calibration EEPROM::readDataFromEEPROM(); // would not take effect unless read! } Printer::homeAxis(true,true,true); GCode::executeFString(Com::tZProbeStartScript); Printer::setAutolevelActive(false); Printer::moveTo(0,0,IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); sum1 = Printer::runZProbe(true,false,Z_PROBE_REPETITIONS,false); // First tap sum = Printer::runZProbe(true,false,Z_PROBE_REPETITIONS,false); // Second tap if ((sum1 - sum) > .1 || (sum1 - sum) < - 0.1){ //tap reports distance, if more or less than .1mm, it will re-run Com::printErrorFLN(Com::tZProbeFailed); sum = -1; } }while(sum < 1); if(com->hasS() && com->S) { #if MAX_HARDWARE_ENDSTOP_Z #if DRIVE_SYSTEM==DELTA //Printer::updateCurrentPosition(); Printer::zLength += sum - Printer::currentPosition[Z_AXIS]; Printer::updateDerivedParameter(); //Printer::homeAxis(true,true,true); #else Printer::currentPositionSteps[Z_AXIS] = sum * Printer::axisStepsPerMM[Z_AXIS]; Printer::zLength = Printer::runZMaxProbe() + sum-ENDSTOP_Z_BACK_ON_HOME; #endif Com::printInfoFLN(Com::tZProbeZReset); Com::printFLN(Com::tZProbePrinterHeight,Printer::zLength); #else Printer::currentPositionSteps[Z_AXIS] = sum * Printer::axisStepsPerMM[Z_AXIS]; Com::printFLN(PSTR("Adjusted z origin")); #endif } Printer::feedrate = oldFeedrate; Printer::setAutolevelActive(oldAutolevel); if(com->hasS() && com->S == 2) EEPROM::storeDataIntoEEPROM(); Printer::updateCurrentPosition(true); printCurrentPosition(PSTR("G30 ")); GCode::executeFString(Com::tZProbeEndScript); Printer::feedrate = oldFeedrate; Printer::homeAxis(true,true,true); #endif } } //close my if AJA break;
Edit: to probe an arbitrary point, then, you have to send a G30 S-1 X0 Y0.... the S-1 is what triggers my bits to run, otherwise it's just the standard seemecnc implemented bits. I did that so I didn't break any instructions they provide. Here's my 10 probe points to use with the Delta Least Squares page here: http://escher3d.com/pages/wizards/wizarddelta.php (use a printable radius of 142.68, you want the tower probe hitting nearly straight down, or it's going to be way off).
Code: Select all
G30 S-1 X0.0 Y142.68 G30 S-1 X123.56 Y71.34 G30 S-1 X123.56 Y-71.34 G30 S-1 X0.0 Y-142.68 G30 S-1 X-123.56 Y-71.34 G30 S-1 X-123.56 Y71.34 G30 S-1 X0.0 Y71.34 G30 S-1 X61.78 Y-35.67 G30 S-1 X-61.78 Y-35.67 G30 S-1 X0.0 Y0.0
May be better to take this to PM, not sure, but may help others to have it here.
Completely new to this so excuse the ignorance. I'm confused by your use of the website. From watching videos of other machine auto calibrating, I thought this would run a routine, hitting several points and store the needed settings and calibrate without further interaction.
By using the website, are you saying the probing is storing the nozzle height error for you to manually enter or you were just using it for the suggested probe points?
Thanks.