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