A little prog to create an "autocalibration" of a rotary

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • A little prog to create an "autocalibration" of a rotary

    I wrote this prog to calibrate the rotary, without using the rotary calibration window, so it can be used as an "autocalibration".
    It uses 2 spheres, the "sph_rotary_disable" is fixed on the rotary, but sphere fixed on a rotary" isn't selected.
    The origin of thermal compensation is fixed at the previous location of the rotary, IGNOREROTAB is ON.
    Temp comp is setted on axes only.
    By this way, the thermal expansion of the granit has a very few effect on the rotary center.

    Code:
    IGNOREROTAB/ON
                LOADPROBE/LSPX1_L50_D5
                TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0
                ASSIGN/V7=GETROTABDATA("center")
                TEMPCOMP/ORIGIN=V7.X,V7.Y,V7.Z,CTE=0.0000115,Reference Temp=20
                  ,Hi Threshold=40,Lo Threshold=10
                  ,PART SENSOR NUM=9
                  ,X AXIS TEMP=20.3561,Y AXIS TEMP=20.7799,Z AXIS TEMP=20.4879,PART TEMP=20.7451
                MOVE/ROTAB,0,SHORTEST,
                AUTOCALIBRATE/PROBE, PARAMETER_SET=A0B0, QUALTOOL_MOVED=NO,
                              SHOW_SUMMARY=NO, OVERWRITE_RESULTSFILE=NO
                AUTOCALIBRATE/PROBE, PARAMETER_SET=A0B0_sph_rotary_disable, QUALTOOL_MOVED=YES_DCC,
                              SHOW_SUMMARY=NO, OVERWRITE_RESULTSFILE=NO
                ASSIGN/V1=QUALTOOLDATA("xyz","sph_rotary_disable")-V7
    C1         =COMMENT/INPUT,NO,FULL SCREEN=NO,
                Enter the number of positions
                ASSIGN/V8=360/(C1.INPUT)
    REF1       =ALIGNMENT/START,RECALL:STARTUP,LIST=YES
                  ALIGNMENT/TRANS_OFFSET,XAXIS,V7.X
                  ALIGNMENT/TRANS_OFFSET,YAXIS,V7.Y
                  ALIGNMENT/TRANS_OFFSET,ZAXIS,V7.Z
                ALIGNMENT/END
                MODE/DCC
                MOVE/POINT,NORMAL,<V1.X,V1.Y,V1.Z+200>
                CLEARP/ZPLUS,200,ZPLUS,0,ON
                ASSIGN/V3=SQRT(DOT(V1.XYZ,V1.XYZ))
                ASSIGN/ANG_R=RAD2DEG(ATAN(V1.Y/V1.X))
                IF/V1.X<0
                  ASSIGN/ANG_R=180+ANG_R
                END_IF/
                ASSIGN/V6=0
                MOVE/ROTAB,0,SHORTEST,
    V2         =LOOP/START,ID=YES,NUMBER=C1.INPUT,START=1,SKIP=,
                  OFFSET:XAXIS=0,YAXIS=0,ZAXIS=0,ANGLE=0
                  MOVE/CLEARPLANE
                  ASSIGN/V4=COS(DEG2RAD(ANG_R))
                  ASSIGN/V5=SIN(DEG2RAD(ANG_R))
    SPH1         =FEAT/CONTACT/SPHERE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
                  THEO/<V3*V4,V3*V5,V1.Z>,<0,0,1>,20.0001
                  ACTL/<-169.2387,43.7966,0.0122>,<0,0,1>,20.0002
                  TARG/<V3*V4,V3*V5,V1.Z>,<0,0,1>
                  START ANGLE 1=0,END ANG 1=360
                  START ANGLE 2=0,END ANG 2=90
                  ANGLE VEC=<1,0,0>
                  SHOW FEATURE PARAMETERS=NO
                  SHOW CONTACT PARAMETERS=NO
                  ASSIGN/ANG_R=ANG_R+V8
                  ASSIGN/V6=V6+V8
                  MOVE/CLEARPLANE
                  MOVE/ROTAB,V6,SHORTEST,
                LOOP/END
    SCN1       =FEAT/SET,CARTESIAN
                THEO/<0,0,0.0047>,<0,0,1>
                ACTL/<0.0015,-0.0083,0.0028>,<0,0,1>
                CONSTR/SET,BASIC,SPH1[1..C1.INPUT],,
    PL1        =FEAT/PLANE,CARTESIAN,TRIANGLE,NO
                THEO/<0,0,0.0047>,<0,0,1>
                ACTL/<0.0015,-0.0083,0.0028>,<0.0000261,-0.0000881,1>
                CONSTR/PLANE,BF,SCN1,,
                OUTLIER_REMOVAL/OFF,3
                FILTER/OFF,WAVELENGTH=0
    CE1        =FEAT/CIRCLE,CARTESIAN,OUT,LEAST_SQR,NO
                THEO/<0,0,0.0047>,<0,0,1>,349.6367
                ACTL/<0.0018,-0.0085,0.0028>,<0.0000261,-0.0000881,1>,349.6343
                CONSTR/CIRCLE,BF,3D,SCN1,,
                OUTLIER_REMOVAL/OFF,3
                FILTER/OFF,UPR=0
                CALIBRATEROTAB/PLANE=PL1, CIRCLE=CE1,
                MEAS/XYZ=<490.0105,1690.0224,-797.695>, MEAS/IJK=<0.0000261,-0.0000881,1>

    If you wonder why it's necessary to often calibrate the rotary, just imagine that the center "moves" after each homing, or after each time when you answer "Yes, the sphere moved"...
    Last edited by JEFMAN; 06-04-2018, 07:44 AM. Reason: add the reasons of calibration

  • #2
    Definitely going to play with this.

    Comment


    • #3
      Originally posted by InspectorJester View Post
      Definitely going to play with this.
      Be carefull, my rotary is along Z, yours is on Y, there are some values to be changed...

      Comment


      • #4
        Originally posted by InspectorJester View Post
        Definitely going to play with this.
        I would change in the sphere SPH1 :
        THEO/<V3*V4,V1.Y,V3*V5>,<0,1,0>,20.0001 and the same in targets... But I can't check it for you

        Comment


        • #5
          Originally posted by JEFMAN View Post

          Be carefull, my rotary is along Z, yours is on Y, there are some values to be changed...
          I probably would have forgotten by the time I got around to it

          I don't have thermal compensation (I don't think? I have 2013MR1 and was under the impression that was introduced in a later version).
          Do you believe this will make a difference?

          I don't find it necessary, as you've stated, and I don't think adding/removing it from my own antics would harm the program.
          I've been working on an autocalibration program as of late, and I would love to include the rotary in that.

          It's in its infancy, however. Maybe some day when my laptop finally arrives

          Comment


          • #6
            Originally posted by InspectorJester View Post


            I don't have thermal compensation (I don't think? I have 2013MR1 and was under the impression that was introduced in a later version).
            Do you believe this will make a difference?
            I don't think that tempcomp is linked to a version, but to a cmm.
            And the temp comp is less important on a "little" cmm than on a large one.
            If the rotary is far from zero, the dilated length is important, so the expansion of the granite gives a kind of displacement of the rotary axis.
            The compensation calculates it to reduce the defect.

            I don't know about an Optiv thermal compensation, maybe some guys here could answer ?

            Comment


            • #7
              Professor JEFMAN, this sort of endeavour is way above my head, but in my case, thermal expansion would have nothing to do with granite, since the rotary is bolted to an aluminum extrude.
              I think I shall try your offering (keeping in mind mine is a Y- table like the Inspector's.
              Your homing observation is spot-on. Mine has shown to change by .0003 with each machine start. Probably not much in Rotab-land, but with a longer part......who knows?

              Comment

              Working...
              X