運(yùn)動控制器2:GRBL的核心結(jié)構(gòu)體block_t和BRESENHAM算法

typedef struct {

? 第一部分:bresenham算法需要的入口條件宝磨,包括運(yùn)動方向盅安,X,Y,Z各需要運(yùn)動多少步,以及完成這個(gè)BLOCK需要運(yùn)動多少步窿祥。

? uint8_t? direction_bits;? ? ? ? ? ? //

? uint32_t steps_x, steps_y, steps_z; //

? int32_t? step_event_count;? ? ? ? ? //

Bresenham直線算法是用來描繪由兩點(diǎn)所決定的直線的算法壁肋,它會算出一條線段在 n 維光柵上最接近的點(diǎn)籽慢。這個(gè)算法只會用到較為快速的整數(shù)加法猫胁、減法和位元移位,常用于繪制電腦畫面中的直線届惋。是計(jì)算機(jī)圖形學(xué)中最先發(fā)展出來的算法脑豹。

GRBL中衡查,圓弧是用直線段來接近描述的,所以不需要考慮俱饿,直接的畫法通過下面的判斷器拍埠,X先走。


BRESENHAM算法對于直接的處理

把縱軸的一個(gè)方格的一半作為基準(zhǔn)嬉探,如果在基準(zhǔn)點(diǎn)以上甲馋,則Y軸走一步迄损,如果在下面,則X繼續(xù)走一步痊远。而step_event_count為最終走的總步數(shù)碧聪,為X+Y總步數(shù)。


BRESENHAM算法的框架

第二部分:

調(diào)度器用于計(jì)算加速度的內(nèi)容逞姿,也就是說捆等,BRESENHEM用到的是梯形加速度栋烤,我們需要計(jì)算梯形的各個(gè)表征值。

? float nominal_speed;? ? ? ? ? ? ? // 勻速運(yùn)動速度

? float entry_speed;? ? ? ? ? ? ? ? // 從一個(gè)BLOCK進(jìn)入到這個(gè)BLOCK的速度

? float max_entry_speed;? ? ? ? ? ? // 最大的進(jìn)入速度

? float millimeters;? ? ? ? ? ? ? ? // BLOCK運(yùn)動的實(shí)際mm距離

? uint8_t recalculate_flag;? ? ? ? ? // 重新計(jì)算梯度的FLAG

? uint8_t nominal_length_flag;? ? ? ? // 是否進(jìn)入了勻速的FLAG

? 第三部分:

實(shí)際梯形的各個(gè)參數(shù)計(jì)算

? uint32_t initial_rate;? ? ? ? ? ? ? // 梯形運(yùn)動初始值?

? uint32_t final_rate;? ? ? ? ? ? ? ? // 梯形運(yùn)動結(jié)束

? int32_t rate_delta;? ? ? ? ? ? ? ? //計(jì)算加速度

? uint32_t accelerate_until;? ? ? ? ? // 加速度階段運(yùn)動的距離

? uint32_t decelerate_after;? ? ? ? ? // 減速度階段運(yùn)行的距離

? uint32_t nominal_rate;? ? ? ? ? ? ? // 勻速階段運(yùn)行的距離

} block_t;

實(shí)際上,BLOCK的執(zhí)行需要一定的時(shí)間始绍,所以沒有執(zhí)行完成的BLOCK需要列隊(duì)進(jìn)行等待话侄,所以需要用到調(diào)度器苛败。

目前罢屈,3D打印機(jī)做開源的主要用到了Marlin固件缠捌,其實(shí)核心算法就是GRBL,加入了兩軸材料擠出的步進(jìn)電機(jī)軸曼月,另外還用到了一個(gè)開源的溫控PID算法,這個(gè)我們暫時(shí)用不上柔昼,不再考慮哑芹。

在找Marlin固件時(shí)發(fā)現(xiàn)了一個(gè)好的芯片,TC2100這顆IC賣出的價(jià)格在20元以上捕透,而市面上用的1.5A電流的芯片大部分只賣到了4元左右聪姿,這顆IC的核心優(yōu)勢就是細(xì)分?jǐn)?shù),看了一下資料乙嘀,也用到了他們的專利算法:一種新型的PWM算法末购,淘寶上賣出的模塊價(jià)格在37元左右,其實(shí)還有不少的利潤空間虎谢,可惜拿貨估計(jì)有點(diǎn)麻煩盟榴,訂單小了估計(jì)都不好拿貨。

另外需要注意的是婴噩,初始化的參數(shù)是存放在EEPROM中的擎场,GRBL也有一個(gè)EEPROM的函數(shù),但是實(shí)際上我們定義了我們新的EEPROM函數(shù)几莽,用到的是W24512,至于這一塊如何移植迅办,后文再介紹银觅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洒忧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖驶忌,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件几苍,死亡現(xiàn)場離奇詭異,居然都是意外死亡惠勒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人哥攘,你說我怎么就攤上這事。” “怎么了欣簇?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我氏身,道長,這世上最難降的妖魔是什么陷虎? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任楣富,我火速辦了婚禮,結(jié)果婚禮上糠涛,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好绕娘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布挨下。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茵乱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天次询,我揣著相機(jī)與錄音送巡,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播挑童,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撞牢,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年缅阳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站般眉,受9級特大地震影響埠对,放射性物質(zhì)發(fā)生泄漏襟沮。R本人自食惡果不足惜遭商,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一座哩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悴务。三九已至别洪,卻和暖如春痢毒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背敏释。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工靠汁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奶浦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像遥椿,于是被迫代替她去往敵國和親冠场。 傳聞我的和親對象是個(gè)殘疾皇子灌具,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351