<track id="p3wpd"><delect id="p3wpd"></delect></track>
  • <track id="p3wpd"></track>
    <tr id="p3wpd"><code id="p3wpd"><form id="p3wpd"></form></code></tr>
    1. <acronym id="p3wpd"></acronym>

      Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉換詳解 

      發布時間: 2020-02-25 11:47
      Marlin固件中需要將從Gcode中獲取的待打印器件的3D模型中的坐標,轉換為三角洲3D打印機的三個電機軸上的坐標。
      電機軸指的是三個電機對應的線軌。
      電機軸坐標指的是滑塊在電機軸上的位置。
      笛卡爾空間坐標是指從Gcode中獲取的待打印器件的3D模型中的坐標。
      實現坐標轉換功能的函數為calculate_delta()。
      Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉換詳解 (2).png
      變量中的tower指的是電機軸,tower1,tower2和tower3的位置如下圖所示
      Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉換詳解 (3).png
      變量delta_tower1_x為電機軸tower1在笛卡爾坐標系中坐標x的值,
      變量delta_tower1_y為電機軸tower1在笛卡爾坐標系中坐標y的值,
      變量delta_tower2_x為電機軸tower2在笛卡爾坐標系中坐標x的值,
      變量delta_tower2_y,delta_tower3_x,delta_tower3_y類似。
      這三個電機軸轉換到笛卡爾坐標系后的坐標如代碼所示,原理如下圖
      Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉換詳解 (4).png
      這是三角洲3D打印機抽象的俯視圖。點tower1,tower2和tower3分別為三個電機軸(因為是俯視圖,所以在圖中表示為一個點),這三個點構成一個等邊三角形,內切圓的圓心為點z,內切圓的半徑為delta_radius。
      笛卡爾坐標系的原點為等邊三角形內切圓的圓心,即點z;x軸穿過原點,并且與tower1和toweer2組成的線段平行;y軸經過tower3和原點;z軸經過原點并且與tower3平行。
      電機軸tower1轉換到笛卡爾坐標系的坐標x為點M,坐標y為點N。
      電機軸tower2轉換到笛卡爾坐標系的坐標x為點P,坐標y為點N。
      電機軸tower3轉換到笛卡爾坐標系的坐標x為0,坐標y為tower3本身。
      M的坐標為(-sin60 * delta_radius, 0),
      N的坐標為(0, -cos60 * delta_radius),
      P的坐標為(sin60 * delta_radius, 0)
      所以,tower1在笛卡爾空間坐標系中的x坐標delta_tower1_x= -sin60 * delta_radius,依次類推
      delta_tower1_y =-cos60 * delta_radius ,
      delta_tower2_x =sin60 * delta_radius ,
      delta_tower2_y =-cos60 * delta_radius ,
      delta_tower3_x =0 ,
      delta_tower3_y =delta_radius ,
      再來看下代碼是不是這樣的。
      Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉換詳解.png
      回過頭來看看是怎么計算電機軸上滑塊位置的。假設有下圖
      Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉換詳解 (5).png
      點A為噴頭的位置,
      點B為點A投影到電機軸tower2(也是平行于笛卡爾坐標系的Z軸),
      點C為滑塊的位置,
      點D為點A投影到笛卡爾坐標系的xy平面的點,
      點E為電機軸tower2與笛卡爾坐標系的xy平面相交的點。
      其中BE就是打印物品笛卡爾坐標系的z值,AC為推桿長度,AB垂直于BC,根據直角三角形斜邊平方等于兩直角邊平方之和,即
      AC*AC = AB *AB +BC*BC
      其中AC已知,為推桿長度,AB可以通過噴頭在笛卡爾坐標系的X坐標和Y坐標算出來,所以BC也就可以算出來了。
      AB = DE
      XY平面如下所示
      Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉換詳解 (6).png
      點D為前一個圖點A的投影,點E為點B的投影,點A為噴頭的坐標,那么點D的xy坐標也是噴頭的xy坐標,是已知的。點E電機軸tower2在XY平面的點,坐標也是已知的,點K和I分別為點E在X和Y軸的投影。
      那么DH = OK - OG ,即E的x坐標 - 噴頭的x坐標
      EH = FI = OI -OF , 即E的y坐標 - 噴頭的y坐標
      DE*DE = EH*EH +DH*DH
      綜上所述,滑塊的z軸坐標
      = BE + BC
      =噴頭的z坐標 + BC
      =噴頭的z坐標 + sqrt(推桿長度*推桿長度 -  AB*AB)
      =噴頭的z坐標 + sqrt(推桿長度*推桿長度 -  (EH*EH + DH*DH))
      =噴頭的z坐標 + sqrt(推桿長度*推桿長度 -  ((tower2的y坐標 - 噴頭的y坐標) * (tower2的y坐標 - 噴頭的y坐標) + (tower2的x坐標 - 噴頭的x坐標) * (tower2的x坐標 - 噴頭的x坐標)))
      對應代碼為
      delta[TOWER_2] =sqrt(delta_diagonal_rod_2_tower_2
                                - sq(delta_tower2_x -cartesian[X_AXIS])
                                - sq(delta_tower2_y -cartesian[Y_AXIS])
                               ) + cartesian[Z_AXIS];
      現在再看看函數calculate_delta()
      友情提示電機軸坐標,三個電機軸平行,并且原點在限位開關處,即原點在上面。如下所示
      Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉換詳解 (1).png
      O1,O2,O3分別為三個電機軸的原點。
      所以delta[TOWER_2] 是tower2對應的滑塊在笛卡爾坐標系中z軸值。

      聲明:本文是 3D打印資源庫網 轉載文章,內容為作者獨立觀點,不代表3D打印資源庫立場,轉載請联系原作者。如對文章有異議或投訴,請联系kefu@3dzyk.cn。

      作者其他文章

      Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉換詳解 
      快速回復 返回頂部 返回列表
      欧美黄色网占
      <track id="p3wpd"><delect id="p3wpd"></delect></track>
    2. <track id="p3wpd"></track>
      <tr id="p3wpd"><code id="p3wpd"><form id="p3wpd"></form></code></tr>
      1. <acronym id="p3wpd"></acronym>