Page 2 of 2

Re: Delta Calibration Wizard now online

Posted: Wed Jan 10, 2018 4:23 pm
by grat
Yeah I contacted support over lunch and Ryan suggested the same and to try it again basically. So I went through the wizard for the 4th time and of course that time it worked as expected.

The results also fixed my bottom layer problems too!

fj..

Re: Delta Calibration Wizard now online

Posted: Fri Mar 16, 2018 11:57 am
by Tonkabot
I have a Max V2 with upgraded arms from Brian. What would I have to do to add this capability to my machine?

I assume I would need the accelerometer board and newer software in my Rambo... And then mount my head in that new board?

Brynn

Re: Delta Calibration Wizard now online

Posted: Mon Mar 19, 2018 8:17 am
by Jimustanguitar
Tonkabot wrote:I have a Max V2 with upgraded arms from Brian. What would I have to do to add this capability to my machine?

I assume I would need the accelerometer board and newer software in my Rambo... And then mount my head in that new board?

Brynn


The accel board and newer firmware are the bare minimums for this all to work.

If your TrickLaser arms are a different length than stock though, know that the octoprint plugin won't work for you.

Re: Delta Calibration Wizard now online

Posted: Tue Mar 20, 2018 2:29 pm
by Tonkabot
My tricklaser arms are whatever the standard length they come as, I assume that is same as the original arms... I don't know.

What is the Octoprint plugin? what software does it plug into? I thought the Octoprint stuff had something to do with a raspberry Pi.

Brynn

Re: Delta Calibration Wizard now online

Posted: Sat Nov 10, 2018 5:07 am
by avigeilpro
Hi guys,
It was a long time that i didn't came here and just see this.
I worked on a similar project few times ago and did my own full automatic calibration, based on the esher3d calibration wizard (wich look exactly the same as this wizard).
I'va add a g135 command that do all 10 point probing, 2 times probing on each point then average of this 2. After the 10 points are probed it send back the result in the console. Here a plugin in Octoprint read the result and calculate the modifications, send back the result to the printer. All this loop as long as all value zprobe are over a defined value (0.03 for me) with a maximum of 10 passes.

If anybody is interested by my work, let me know, i will try show exactly all what i made (if i all remember because i did it in december 2016)

Here is a video of a calibration on 3 passes :

https://www.youtube.com/watch?v=m80Zn_BZKsg

Re: Delta Calibration Wizard now online

Posted: Fri Aug 30, 2019 7:33 am
by hcdbey
Please tell me more about your work. How to run the G135 for example.

Re: Delta Calibration Wizard now online

Posted: Fri Aug 30, 2019 7:47 am
by geneb
I'd be curious to see how it compares to the delta calibration plugin that I wrote based on dc42's original javascript calculator.

Was your code in the firmware?

tnx!

g.

Re: Delta Calibration Wizard now online

Posted: Tue Sep 03, 2019 4:58 am
by avigeilpro
Based on the G29 command i have created a new function named "tapZProbe" like this :

Code: Select all

float tapZProbe(float x,float y)
{
  Com::printF(PSTR("Probing x: "),x);
  Com::printFLN(PSTR(" | y: "),y);
  float sum1 = 0, sum = 0, last,oldFeedrate = Printer::feedrate;
  int32_t probeSensitivity = Z_PROBE_SENSITIVITY;
  bool failedProbe = false;

  do {
    Printer::moveTo(x,y,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) > Z_PROBE_TOLERANCE || (sum1 - sum) < - Z_PROBE_TOLERANCE){ //tap reports distance, if more or less than .1mm, it will re-run
      Com::printFLN(PSTR("Z probe failed on sensitivity: "), probeSensitivity );
      if(probeSensitivity < Z_PROBE_MAX_SENSITIVITY){
        accelerometer_recv(0x32);
        probeSensitivity+=2;
        Com::printFLN(PSTR("Setting Probe Sensitivity To:"), probeSensitivity );
        accelerometer_write(0x32,uint8_t(probeSensitivity)); //INT1 THRESHOLD
        accelerometer_write(0x3A,uint8_t(probeSensitivity)); //CLICK THRESHOLD
        accelerometer_recv(0x32);
      }
      sum = -1; failedProbe = true;
      continue;
    }else{
      sum = (sum + sum1) / 2; failedProbe = false;
    }
  }while(failedProbe);
  return (sum - Z_PROBE_BED_DISTANCE);
}
This function make 2 "tap" at the position given in argument and give back the average of this 2 taps results.
After this i have created the new G135 command, this command will do all the 10 positions probing, then write the result as a block of text in the console, with all the parameter needed for the calculation (rod length, towers offset etc...).

Code: Select all

    case 135: // G135 3 points, build average or distortion compensation
        float results[10];
        Com::printFLN(PSTR("auto bed level"));

        if(com->hasI()){
          // Parameter I initialize all to défault parameters
          EEPROM::setDeltaTowerXOffsetSteps(0); // set X offset to 0
          EEPROM::setDeltaTowerYOffsetSteps(0); // set Y offset to 0
          EEPROM::setDeltaTowerZOffsetSteps(0); // set Z offset to 0
          Printer::radius0 = 144;
          Printer::zLength = 365;
          EEPROM::setdeltaAlphaA(210);
          EEPROM::setdeltaAlphaB(330);
          EEPROM::setdeltaAlphaC(90);
          EEPROM::setdeltaDiagonalRodLength(290.8);
          EEPROM::storeDataIntoEEPROM(); // store offsets to 0 before doing anything
          EEPROM::readDataFromEEPROM();
        }

        Printer::homeAxis(true,true,true);
        GCode::executeFString(Com::tZProbeStartScript);
        Printer::setAutolevelActive(false);


        //Plateau réduit cage plexi, rayon 130
        results[0]=tapZProbe(0,130);
        results[1]=tapZProbe(112.58,65);
        results[2]=tapZProbe(112.58,-65);
        results[3]=tapZProbe(0,-130);
        results[4]=tapZProbe(-112.58,-65);
        results[5]=tapZProbe(-112.58,65);
        results[6]=tapZProbe(0,65);
        results[7]=tapZProbe(56.29,-32.5);
        results[8]=tapZProbe(-56.29,-32.5);
        results[9]=tapZProbe(0,0);

        Com::printF(PSTR("IP: "),Printer::zLength);
        Com::printF(PSTR(" "),Printer::radius0);
        Com::printFLN(PSTR(" "),EEPROM::deltaDiagonalRodLength());

        Com::printF(PSTR("ES: "),EEPROM::deltaTowerXOffsetSteps());
        Com::printF(PSTR(" "),EEPROM::deltaTowerYOffsetSteps());
        Com::printFLN(PSTR(" "),EEPROM::deltaTowerZOffsetSteps());

        Com::printF(PSTR("AN: "),EEPROM::deltaAlphaA()-210);
        Com::printF(PSTR(" "),EEPROM::deltaAlphaB()-330);
        Com::printFLN(PSTR(" "),EEPROM::deltaAlphaC()-90);

        Com::printFLN(PSTR("P0: "),results[0]);
        Com::printFLN(PSTR("P1: "),results[1]);
        Com::printFLN(PSTR("P2: "),results[2]);
        Com::printFLN(PSTR("P3: "),results[3]);
        Com::printFLN(PSTR("P4: "),results[4]);
        Com::printFLN(PSTR("P5: "),results[5]);
        Com::printFLN(PSTR("P6: "),results[6]);
        Com::printFLN(PSTR("P7: "),results[7]);
        Com::printFLN(PSTR("P8: "),results[8]);
        Com::printFLN(PSTR("P9: "),results[9]);

        GCode::executeFString(Com::tZProbeEndScript);
        Printer::homeAxis(true,true,true);

    break;
after this I have first modify the form of the wizard that i don't need to put every value one after one, i had just to put the block of text and the javascript split all to find the needed values, but after few weeks i decided to make an octoprint plugin to replace this wizard.

ps : sorry if my english is a little bit weird, this is not my natural language :?

Re: Delta Calibration Wizard now online

Posted: Tue Sep 03, 2019 5:38 am
by avigeilpro
Here is how look my modified wizard :
Image
After calculation, the wizard generate a gcode file with new parameters and send it to octoprint.

Re: Delta Calibration Wizard now online

Posted: Tue Sep 03, 2019 8:14 am
by geneb
That's really slick! (and your English is just fine! :D )

Have you thought about packaging that up so others could use it?

tnx!

g.

Re: Delta Calibration Wizard now online

Posted: Tue Sep 03, 2019 8:18 pm
by avigeilpro
To be honest i never did any package, and i even don't know how to do it. This code is free to take, i've done this fast and i'm sure that it can be improved. If anybody want try package this to do something better that's ok for me.
I will try to share the octoprint plugin as well, and the code of the wizard that i had modify, but for this last one i think i should give it to the admin who build the wizard here on seemecnc in private as mine came from esher (i'm not sure if i have the right to share it in public).
I've built the octoprint plugin to send the command g135 as long as all values are not under a defined range (0.04 in my case), with a limit of 10 (to avoid infinite loop).
I forgot to say that i had to build the M663 M664 and M665 command too as they didn't exist in the original firmware, these commands are to store the new values in the eeprom :

Code: Select all

    case 663: //M663 set X Y Z endstop
          if(com->hasX()){
            EEPROM::setDeltaTowerXOffsetSteps((float)com->X);
            Com::printFLN(PSTR("Xstop changed to "),(int16_t)com->X);
          }
          if(com->hasY()){
            EEPROM::setDeltaTowerYOffsetSteps((float)com->Y);
            Com::printFLN(PSTR("Ystop changed to "),(int16_t)com->Y);
          }

          if(com->hasZ()){
            EEPROM::setDeltaTowerZOffsetSteps((float)com->Z);
            Com::printFLN(PSTR("Zstop changed to "),(int16_t)com->Z);
          }

          EEPROM::storeDataIntoEEPROM();
          EEPROM::readDataFromEEPROM();
          break;
    case 664: //M664 set X Y Z Towers alpha
        if(com->hasX()){
          EEPROM::setdeltaAlphaA(210+(float)com->X);
          Com::printFLN(PSTR("X Tower Alpha changed to "),210+(float)com->X);
        }
        if(com->hasY()){
          EEPROM::setdeltaAlphaB(330+(float)com->Y);
          Com::printFLN(PSTR("Y Tower Alpha changed to "),330+(float)com->Y);
        }

        if(com->hasZ()){
          EEPROM::setdeltaAlphaC(90+(float)com->Z);
          Com::printFLN(PSTR("Z Tower Alpha changed to "),90+(float)com->Z);
        }

        EEPROM::storeDataIntoEEPROM();
        EEPROM::readDataFromEEPROM();
        break;
    case 665: //M665 set radius, rod lenght and home height
        if(com->hasR()){
          Printer::radius0 = (float)com->R;
          Com::printFLN(PSTR("Radius changed to "),Printer::radius0);
        }
        if(com->hasZ()){
          Printer::zLength = (float)com->Z;
          Com::printFLN(PSTR("Home Height changed to "),Printer::zLength);
        }

        if(com->hasD()){
          EEPROM::setdeltaDiagonalRodLength((float)com->D);
          Com::printFLN(PSTR("Rod Lenght changed to "),(float)com->D);
        }
        if (com->hasR() || com->hasH()){
          EEPROM::storeDataIntoEEPROM();
        }
        EEPROM::readDataFromEEPROM();

        break;

Re: Delta Calibration Wizard now online

Posted: Wed Sep 04, 2019 7:37 am
by geneb
The delta calibration wizard on dc42's site (http://www.escher3d.com/pages/wizards/wizarddelta.php) is open source as far as I know. That's what my Octoprint plugin is based on as well as the SeeMeCNC calibration page. If you're concerned about it, you can send him a pm here. He lurks here, so may show up. (I don't think he's the Beetlejuice type, we don't need to say "dc42!" three times.. ;) )

g.

Re: Delta Calibration Wizard now online

Posted: Sun Sep 08, 2019 8:04 am
by avigeilpro
Hi,
I have upload my version of the calculator on Github if you want see how it was made.
https://github.com/avigeilpro/Delta_calibration

There are some few things to ajust :
  • In delta_calibration_wizard.js:
    • the 10 probing points positions
    • the bed radius
    • the number of factors (numFactors)
  • In upload.php
    • the Octoprint IP
    • the Octoprint API Key (defined in Octoprint settings)
This code was made to be hosted on a local server, after the calculation, upload.php is called to upload the result on my octoprint. I had a first version that proposed to download the gcode file, but i didn't do any backup before modifying it for the direct upload version :oops:

I still work on the octoprint plugin to clean it before upload on github.

Re: Delta Calibration Wizard now online

Posted: Sun Sep 08, 2019 9:27 am
by geneb
Thanks for posting that!

g.