国产猛男猛女超爽免费视频,国产精品一区二区不卡小说,免费调教小骚货视频,欧美日韩亚洲免费一区

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

2020-02-25 11:47
Marlin固件中需要將從Gcode中獲取的待打印器件的3D模型中的坐標,轉(zhuǎn)換為三角洲3D打印機的三個電機軸上的坐標。
電機軸指的是三個電機對應的線軌。
電機軸坐標指的是滑塊在電機軸上的位置。
笛卡爾空間坐標是指從Gcode中獲取的待打印器件的3D模型中的坐標。
實現(xiàn)坐標轉(zhuǎn)換功能的函數(shù)為calculate_delta()。
Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉(zhuǎn)換詳解 (2).png
變量中的tower指的是電機軸,tower1,tower2和tower3的位置如下圖所示
Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉(zhuǎn)換詳解 (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類似。
這三個電機軸轉(zhuǎn)換到笛卡爾坐標系后的坐標如代碼所示,原理如下圖
Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉(zhuǎn)換詳解 (4).png
這是三角洲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 ,
再來看下代碼是不是這樣的。
Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉(zhuǎn)換詳解.png
回過頭來看看是怎么計算電機軸上滑塊位置的。假設有下圖
Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉(zhuǎn)換詳解 (5).png
點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平面如下所示
Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉(zhuǎn)換詳解 (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];
現(xiàn)在再看看函數(shù)calculate_delta()
友情提示電機軸坐標,三個電機軸平行,并且原點在限位開關處,即原點在上面。如下所示
Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉(zhuǎn)換詳解 (1).png
O1,O2,O3分別為三個電機軸的原點。
所以delta[TOWER_2] 是tower2對應的滑塊在笛卡爾坐標系中z軸值。
聲明:3D打印資源庫(3dzyk)內(nèi)網(wǎng)友所發(fā)表的所有內(nèi)容及言論僅代表其本人,并不代表3D打印資源庫(3dzyk)觀點和立場;如對文章有異議或投訴,請联系kefu@3dzyk.cn。
Marlin中delta結構的笛卡爾空間坐標和電機軸坐標的轉(zhuǎn)換詳解 
快速回復 返回頂部 返回列表
榆中县| 奎屯市| 资中县| 棋牌| 黄平县| 钟祥市| 高平市| 丁青县| 千阳县| 冕宁县| 洪洞县| 镇原县| 肇州县| 洪湖市| 治多县| 九寨沟县| 岱山县| 洪江市| 梧州市| 运城市| 咸丰县| 泰顺县| 蓝田县| 察哈| 江华| 东明县| 平原县| 濮阳县| 聂荣县| 怀柔区| 恭城| 水富县| 泽州县| 浦东新区| 自治县| 宝兴县| 交口县| 阿瓦提县| 通城县| 宜兰县| 繁昌县|