End Stop 限位開關(guān),3d打印機(jī)限位器開關(guān)End Stop 電路介紹對(duì)許多不熟悉電子電路的同好還說,是一團(tuán)難以摸透的迷霧。控制板上明明有三個(gè)腳位,為什麼接兩隻腳就可以用?微動(dòng)開關(guān)上,接點(diǎn)有分NC、NO,是什麼意思。靠刂瓢迳系腟腳位是作什麼用的?S腳位直接跟 "-" 腳位短接在一起,為什麼不會(huì)燒毀?Marlin設(shè)定裡面,X_MIN_ENDSTOP_INVERTING 到底要設(shè)成 "true",還是"false"?
RAMPS控制板上的限位開關(guān)腳位
先來解釋RAMPS控制板上,關(guān)於限位開關(guān)的腳位?偣灿辛M限位開關(guān)腳位,分別定義給XYZ三軸的MAX/MIN位置。每組腳位各自有 "S"腳位、"-"腳位、"+"腳位。"+"腳位連結(jié)到RAMPS系統(tǒng)裡的5V電源供應(yīng)系統(tǒng);"-"腳位連結(jié)到接地線路;"S"腳位連結(jié)到Arduino的數(shù)位輸出/入腳位(IO),在Arduino+Marlin系統(tǒng)內(nèi),是設(shè)定成以一根電阻拉到高電位的"數(shù)位輸入"腳位。
電路I/O腳位的秘密
Pull high 電路示意圖
上圖中,PIN12是CPU偵測(cè)電位高低的IO腳位。透過一支10K毆母的電阻,接到系統(tǒng)的電源供應(yīng)線路(5V)。所以當(dāng)S1按鈕放開的時(shí)候,PIN12腳位偵測(cè)的的電壓會(huì)非常接近5V,軟體系統(tǒng)偵測(cè)這支腳位的狀態(tài)時(shí),會(huì)讀取到"1"的結(jié)果。這個(gè)狀態(tài)下,軟體系統(tǒng)會(huì)定義為"Triggered"。當(dāng)S1按鈕被按下,這時(shí)PIN12會(huì)直接接地,軟體系統(tǒng)偵測(cè)這支腳位的狀態(tài)時(shí),會(huì)讀取到"0"的結(jié)果,判定為"Open"。這時(shí)5V的電源,會(huì)透過10K的電阻再接到接地點(diǎn),所以并不會(huì)發(fā)生電源直接短路到接地線而燒毀電源供應(yīng)系統(tǒng)(5V穩(wěn)壓IC)。註1
微動(dòng)開關(guān)腳位的定義
微動(dòng)開關(guān)一般有三支接腳,分別為 "C"共同接腳、"NO" Normal Open 通常開路接腳、"NC" Normal Close 通常短路接腳。顧名思義,"通常開路接腳",在微動(dòng)開關(guān)被放開的時(shí)候,跟"C"接腳是斷開的,被按壓后,跟"C"接腳才短路接在一起;"通常短路接腳"則是在放開時(shí),跟"C"接腳短路接在一起,被按壓后才跟"C"接腳斷開不通電。所以透過不同的接線方法,可以選擇被按壓時(shí),是要讓線路通電、或是要斷電。
Marlin內(nèi)與限位器相關(guān)的設(shè)定
再來要了解Marlin Configuration.h裡,對(duì)於End-Stop腳位狀態(tài)的定義,要怎麼設(shè)定。一般軟體設(shè)計(jì),都會(huì)定義IO腳位讀取值為1時(shí),是為腳位驅(qū)動(dòng)(Triggered)。Marlin裡也是這麼設(shè)計(jì)的。所以當(dāng)RAMPS的S腳位浮接(不接任合線路)時(shí),會(huì)視為Triggered。但是如果硬體線路必須要定義成S腳位為低電位時(shí)當(dāng)作Triggered,這時(shí)可透過"ENDSTOP_INVERTING"的設(shè)定,改變Marlin對(duì)S腳位的定義。當(dāng)設(shè)定值為"true",S腳位接地會(huì)變成"Triggered"。
另外還有 "DISABLE_MAX_ENDSTOPS" 跟 "DISABLE_MIN_ENDSTOPS" 兩個(gè)設(shè)定值,是用來告訴Marlin,是否有接 "MAX_ENDSTOPS" 跟 "MIN_ENDSTOPS"。例如沒有接MAX End-Stop的話,可以把 "http://#define DISABLE_MAX_ENDSTOPS" 最前面的 "http://" 刪掉,這樣Marlin就不會(huì)去讀取MAX End-Stop的狀態(tài)了。
融會(huì)貫通
綜合上述的所有設(shè)計(jì)細(xì)節(jié),就可以融會(huì)貫通的解答END STOP相關(guān)的問題了。
如果單純使用微動(dòng)開關(guān)當(dāng)作限位器,那一定要接RAMPS上的 "S" 跟 "-" 腳位。因?yàn)?S"腳位在控制板CPU內(nèi)部已經(jīng)被Pull-up到高電位了,所以想要讓"S"腳位的狀態(tài)改變,只有把他拉去接地一途。"S"接到"+"是沒有作用的。
"S"腳位在CPU內(nèi)部已經(jīng)內(nèi)見Pull-up電阻了,所以直接連接到"-"接地腳位,是不會(huì)燒毀的。
"ENDSTOP_INVERTING"設(shè)定值要看End-stop硬體線路的接法而定,如果希望"S"腳位為高電位或浮接時(shí),定義為"Triggered",則"ENDSTOP_INVERTING"要設(shè)定成"false";反之如果希望"S"腳位為低電位或接地時(shí),定義為"Triggered",則"ENDSTOP_INVERTING"要設(shè)定成"true"。
整個(gè)系統(tǒng)上有好幾個(gè)會(huì)改變狀態(tài)的變數(shù),要全部融會(huì)貫通,才能設(shè)計(jì)出讓限位器正常工作的設(shè)定。如果不太確定自己能設(shè)計(jì)出對(duì)的設(shè)定,建議還是先依照i3組裝筆記內(nèi)的說明進(jìn)行安裝。而且務(wù)必檢查有沒有接錯(cuò),再開始做馬達(dá)的測(cè)試。
最后,祝大家列印愉快~
註1:ATmega-2560 的IO pin 有內(nèi)建 Pull-Up 電阻在IC內(nèi)部,不需要在外部電路另外安排 Pull-Up 電阻。Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf
游客,如果您要查看本帖隱藏內(nèi)容請(qǐng) 回復(fù)
|