如何實(shí)現(xiàn)旋轉(zhuǎn)編碼器的電路設(shè)計?
旋轉(zhuǎn)編碼器它是一種將旋轉(zhuǎn)位移轉(zhuǎn)換成一串?dāng)?shù)字脈沖信號的旋轉(zhuǎn)式傳感器,這些脈沖能用來控制角位移,如果將編碼器與齒輪條或螺旋絲杠結(jié)合在一起,也能夠用于測量直線位移。
然而按照讀出方式編碼器可以分為接觸式和非接觸式兩種;按照工作原理旋轉(zhuǎn)編碼器可分為式增量式和兩類。式編碼器的每一個位置對應(yīng)一個確定的數(shù)字碼,所以它的示值只能與測量的起始和終止位置有關(guān),而與測量的中間過程沒有關(guān)系。增量式編碼器是將位移轉(zhuǎn)換成周期性的電信號,再把這個電信號轉(zhuǎn)變成計數(shù)脈沖,用脈沖的個數(shù)來表示位移的大小。
旋轉(zhuǎn)編碼器是一種用來測量轉(zhuǎn)速并配合PWM技術(shù)可以實(shí)現(xiàn)快速調(diào)速的裝置,而測量轉(zhuǎn)速的對象是電機(jī)。旋轉(zhuǎn)編碼器是集光機(jī)電技術(shù)于一體的速度位移傳感器。旋轉(zhuǎn)編碼器在進(jìn)行電機(jī)轉(zhuǎn)速的測量以后,旋轉(zhuǎn)編碼器就把相應(yīng)的數(shù)值通過數(shù)字表進(jìn)行反饋,我們就可以直接通過看屏幕上旋轉(zhuǎn)編碼器反饋的數(shù)字,知道電機(jī)的實(shí)時轉(zhuǎn)速到底是有多少。
旋轉(zhuǎn)編碼器對于幾乎所有運(yùn)動-控制應(yīng)用來說都很關(guān)鍵,由于無刷直流電動機(jī)(BLDC)使用增加,使得旋轉(zhuǎn)編碼器的需求進(jìn)一步擴(kuò)大,而且提供了控制、精度和效率等方面的諸多益處。編碼器的任務(wù)很簡單,原則上就是:向系統(tǒng)控制器指示電機(jī)軸的位置.控制器可以利用這信息準(zhǔn)確高效地給電機(jī)繞組轉(zhuǎn)向以及確定速度、方向和加速,這些是運(yùn)動控制回路維持電機(jī)性能要求所需要的參數(shù)。
旋轉(zhuǎn)編碼器是一種機(jī)電換能器,意味著它將機(jī)械運(yùn)動轉(zhuǎn)換為電子脈沖。它由旋鈕組成,當(dāng)旋轉(zhuǎn)時,旋鈕將逐步移動并產(chǎn)生一系列脈沖序列,每個步驟具有預(yù)定義的寬度。有許多類型的編碼器,每個編碼器都有自己的工作機(jī)制,稍后我們將了解這些類型,但現(xiàn)在讓我們只關(guān)注KY040增量編碼器,因?yàn)槲覀儗⑺糜谖覀兊慕坛獭?
編碼器的內(nèi)部機(jī)械結(jié)構(gòu)如下所示。它基本上由圓盤(灰色)和放置在該圓盤頂部的導(dǎo)電墊(銅色)組成。這些導(dǎo)電焊盤以相同的距離放置,如下所示。輸出引腳固定在該圓盤的頂部,這樣當(dāng)旋鈕旋轉(zhuǎn)時,導(dǎo)電墊與輸出引腳接觸。這里有兩個輸出引腳,輸出A和輸出B。
輸出引腳A和輸出B產(chǎn)生的輸出波形分別以藍(lán)色和綠色顯示。當(dāng)導(dǎo)電焊盤直接位于引腳下方時,它會變高,導(dǎo)致導(dǎo)通時間,當(dāng)導(dǎo)電焊盤移開時,引腳變低,導(dǎo)致上面所示波形的關(guān)閉時間?,F(xiàn)在,如果我們計算脈沖數(shù),我們將能夠確定編碼器移動了多少步。
現(xiàn)在可能會出現(xiàn)這樣的問題:當(dāng)一個脈沖信號足以計算旋轉(zhuǎn)旋鈕時所采取的步數(shù)時,為什么我們需要兩個脈沖信號。這是因?yàn)槲覀冃枰_定旋鈕旋轉(zhuǎn)的方向。如果您看一下這兩個脈沖,您會注意到它們都是90°異相。因此,當(dāng)順時針旋轉(zhuǎn)旋鈕時,輸出A將首先變高,當(dāng)旋鈕逆時針旋轉(zhuǎn)時,輸出B將首先變高。
以KY-040增量式旋轉(zhuǎn)編碼器為例,介紹編碼器的電路控制。
旋轉(zhuǎn)編碼器有5個引腳,前兩個引腳是接地和Vcc,它連接到Arduino的地和+ 5V引腳。編碼器的開關(guān)連接到數(shù)字引腳D8,并通過1k電阻拉高。兩個輸出引腳分別連接到D9和D8。
要顯示通過旋轉(zhuǎn)Rotary編碼器增加或減少的變量值,我們需要一個顯示模塊。這里使用的是常用的字符型圖形點(diǎn)陣液晶1602。我們已將連接的顯示屏設(shè)置成4位工作模式,并使用Arduino的+ 5V引腳為其供電。電位計用于調(diào)整LCD顯示屏的對比度。完整的電路可以在面包板上進(jìn)行搭建,一旦完成所有的連接后。
采用單片機(jī)內(nèi)部的上拉輸入可能帶來較大功耗,因?yàn)閱纹瑱C(jī)內(nèi)部電阻較大,arduino實(shí)現(xiàn)的基本原理為已知每圈脈沖數(shù)為2500,則當(dāng)計數(shù)大道2500時,計數(shù)一圈,若為stm32則進(jìn)行溢出中斷。通過A、B相的高低電平關(guān)系,判斷AB相的先后關(guān)系,進(jìn)而判斷轉(zhuǎn)向。
為了區(qū)分正反轉(zhuǎn)及檢測零點(diǎn),通常包括三個部分:A相,B相和Z相,A相與B相相差1/4周期(相位差90度),可以用來區(qū)分正轉(zhuǎn)還是反轉(zhuǎn);Z相為單圈脈沖,碼盤轉(zhuǎn)一圈產(chǎn)生一次,可以用作編碼器的參考零位。這樣我們就可以通過旋轉(zhuǎn)編碼器控制我們的BLDC電機(jī)了。