Marlin固件中需要將從Gcode中獲取的待打印器件的3D模型中的坐標,轉(zhuǎn)換為三角洲3D打印機的三個電機軸上的坐標。 電機軸指的是三個電機對應的線軌。 電機軸坐標指的是滑塊在電機軸上的位置。 笛卡爾空間坐標是指從Gcode中獲取的待打印器件的3D模型中的坐標。 實現(xiàn)坐標轉(zhuǎn)換功能的函數(shù)為calculate_delta()。 變量中的tower指的是電機軸,tower1,tower2和tower3的位置如下圖所示 變量delta_tower1_x為電機軸tower1在笛卡爾坐標系中坐標x的值, 變量delta_tower1_y為電機軸tower1在笛卡爾坐標系中坐標y的值, 變量delta_tower2_x為電機軸tower2在笛卡爾坐標系中坐標x的值, 變量delta_tower2_y,delta_tower3_x,delta_tower3_y類似。 這三個電機軸轉(zhuǎn)換到笛卡爾坐標系后的坐標如代碼所示,原理如下圖 這是三角洲3D打印機抽象的俯視圖。點tower1,tower2和tower3分別為三個電機軸(因為是俯視圖,所以在圖中表示為一個點),這三個點構成一個等邊三角形,內(nèi)切圓的圓心為點z,內(nèi)切圓的半徑為delta_radius。 笛卡爾坐標系的原點為等邊三角形內(nèi)切圓的圓心,即點z;x軸穿過原點,并且與tower1和toweer2組成的線段平行;y軸經(jīng)過tower3和原點;z軸經(jīng)過原點并且與tower3平行。 電機軸tower1轉(zhuǎn)換到笛卡爾坐標系的坐標x為點M,坐標y為點N。 電機軸tower2轉(zhuǎn)換到笛卡爾坐標系的坐標x為點P,坐標y為點N。 電機軸tower3轉(zhuǎn)換到笛卡爾坐標系的坐標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 , 再來看下代碼是不是這樣的。 回過頭來看看是怎么計算電機軸上滑塊位置的。假設有下圖 點A為噴頭的位置, 點B為點A投影到電機軸tower2(也是平行于笛卡爾坐標系的Z軸), 點C為滑塊的位置, 點D為點A投影到笛卡爾坐標系的xy平面的點, 點E為電機軸tower2與笛卡爾坐標系的xy平面相交的點。 其中BE就是打印物品笛卡爾坐標系的z值,AC為推桿長度,AB垂直于BC,根據(jù)直角三角形斜邊平方等于兩直角邊平方之和,即 AC*AC = AB *AB +BC*BC 其中AC已知,為推桿長度,AB可以通過噴頭在笛卡爾坐標系的X坐標和Y坐標算出來,所以BC也就可以算出來了。 AB = DE XY平面如下所示 點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]; 現(xiàn)在再看看函數(shù)calculate_delta() 友情提示電機軸坐標,三個電機軸平行,并且原點在限位開關處,即原點在上面。如下所示 O1,O2,O3分別為三個電機軸的原點。 所以delta[TOWER_2] 是tower2對應的滑塊在笛卡爾坐標系中z軸值。
|
你可能喜歡
開源3D建模軟件FreeCAD 1.0正式發(fā)布,支持W
人工智能與3D打印技術結合,實現(xiàn)小型核反應
最新《Nature》:動態(tài)界面3D打印
石墨烯增強混凝土能否推動可持續(xù)建筑? UVA
推薦課程
神奇的3D打印
SLA3D打印工藝全套培訓課程 - 軟件篇
3D打印月球燈視頻教程 包括完整貼圖建模流
【原創(chuàng)發(fā)布】Cura軟件修改二次開發(fā)定制視頻