1 - wiring. Run some stranded cat 5 or cat 6. You need 5 wires total. 3 for the I2C, and two for power. The connections were pretty straightforward, though I did get the I2C wrong at first, that's easy to correct. Looking at the connector for the board, from the side with the little o on the board denoting pin 1, if you're just using it for the accelerometer it's: empty, 12v, empty, Ground, scl, sda, int, empty. on the rambo board, the SCL goes to ISC1, SDA to I2C 2, and INT goes to Serial pin 2 just above it.
Connector (12v is on the right):
[img]http://i.imgur.com/byIWXbl.jpg[/img]
I2C connections (Purple is the brown wire from the previous pic, because I didn't have a brown jumper wire):
[img]http://i.imgur.com/j6JWoEv.jpg[/img]
Serial connection:
[img]http://i.imgur.com/4FHpbDa.jpg[/img]
2 - Mounting. I use the 723 Maker mount. I used a single 1/2 inch nylon spacer from the hardware store. As long as it's level, and solidly mounted, it'll work. If you run a flying extruder, be wary. And even if not... if your bowden or cables pull *at all* when you probe the edges of your plate, it'll cause your effector to tilt. This will throw the calibration WAY off, and you'll get bad results. I moved away from my flying extruder because of this, actually. I discovered no matter what I did, it could cause some tilt at some angles. Your mileage may vary.
Here's a picture of mine mounted:
[img]http://i.imgur.com/x0B7wfy.jpg[/img]
3 - Firmware. You have to be running the new firmware. https://github.com/seemecnc/Firmware
4 - Probing. The default routine JJ gave me is this:
Code: Select all
; Rostock Max v2 Delta Auotcalibration Script
G69 S2 ;Endstop Calibration
M117 ENDSTOPS CALIBRATED
G68 ;Horizontal Radius Calibration
M117 HORIZONTAL RADIUS CALIBRATED
G30 S2 ;Z height calibration
M117 Z Height Calibrated
G4 S2
M117 SAVING CALIBRATION
[img]http://i.imgur.com/gMZicod.png[/img]
That will give you a nice 4 point probe + horizontal radius & z-height correction. In two runs it could get things fairly level.
5 - Advanced probing. Ok, so I wanted to use this page: http://escher3d.com/pages/wizards/wizarddelta.php
Probem: the new firmware gets rid of the "standard" g30. Solution: put my own custom probing commands in. Try this at your own risk. I changed the g30 stanza in commands.cpp to this:
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;
Code: Select all
G30 S-1 X0.00 Y142.68
G30 S-1 X123.56 Y71.34
G30 S-1 X123.56 Y-71.34
G30 S-1 X0.00 Y-142.68
G30 S-1 X-123.56 Y-71.34
G30 S-1 X-123.56 Y71.34
G30 S-1 X0.00 Y71.34
G30 S-1 X61.78 Y-35.67
G30 S-1 X-61.78 Y-35.67
G30 S-1 X0 Y0
I hope this helps others! It definitely works, and is a great way to calibrate!
Edit: the pdf drawing of the accel board is very helpful: https://github.com/seemecnc/Machine_Ele ... CB_v5d.PDF
One more edit: video of my printer probing custom points: https://youtu.be/tRhgYBRGdhQ