總覽
在這篇文章中,我們將看到如何實(shí)現(xiàn)直流電機(jī)的非常精確的位置控制。我們使用Arduino和PID計(jì)算來(lái)實(shí)現(xiàn)簡(jiǎn)單直流電機(jī)的精確位置控制。
這樣的小項(xiàng)目非常有趣,您可以通過(guò)構(gòu)建該項(xiàng)目來(lái)學(xué)習(xí)許多概念,例如PID,閉環(huán)系統(tǒng)和編碼器基礎(chǔ)。
首先,我想向您簡(jiǎn)要介紹什么是PID,因?yàn)檫@將幫助您進(jìn)一步了解這些內(nèi)容。
PID
PID代表比例微分和積分計(jì)算
PID是編程的一部分,在該部分上,控制器將執(zhí)行復(fù)雜的計(jì)算,并根據(jù)過(guò)程的反饋來(lái)操縱輸出。
PID有4個(gè)關(guān)鍵值:
1. PV(過(guò)程值)或反饋
2. SV(設(shè)定值)
3.錯(cuò)誤
4.輸出
PID圖
PID的基本工作如下,我不想進(jìn)行復(fù)雜的算術(shù)公式,因?yàn)槲蚁氡3趾?jiǎn)單。
PID嘗試使PV盡可能接近SV。
誤差= SV-PV誤差是設(shè)定值與過(guò)程值之間的差值,
而輸出直接是誤差的先決條件,換句話說(shuō),如果誤差為正,則誤差為正,如果誤差為負(fù),則輸出與正的差越大,輸出就越大。輸出為負(fù)。隨著PV越來(lái)越接近SV,誤差變得越來(lái)越小,因此輸出也越來(lái)越小,因此,我們獲得了干凈而精確的輸出。
這是一個(gè)真實(shí)的例子。
假設(shè)我告訴您,在直路上行駛1公里以下的不中斷汽車(chē),因?yàn)槟鷽](méi)有間斷,因此油門(mén)就可以用來(lái)控制汽車(chē),因此您上車(chē)時(shí)按住油門(mén)并加速一會(huì)兒,然后釋放油門(mén)減速并逐漸停在1公里處。
這就是您所做的全部,我們可以稱其為PID控制。PID知道如何在到達(dá)SP之前操縱輸出。
Kp,Ki,Kd是可以微調(diào)PID控制器的參數(shù),這些參數(shù)可以控制過(guò)沖下沖振蕩。
假設(shè)一個(gè)微控制器在沒(méi)有PID的情況下驅(qū)動(dòng)汽車(chē),它將啟動(dòng)汽車(chē)并繼續(xù)加速直至到達(dá)1公里。
然后放開(kāi)油門(mén),使動(dòng)車(chē)?yán)^續(xù)行駛并逐漸停止,直至超過(guò)我們?cè)O(shè)定的1公里。
然后,微控制器再次使汽車(chē)反轉(zhuǎn),并在他回到1公里點(diǎn)時(shí)加速,再次釋放油門(mén),同樣的事情由于動(dòng)量而繼續(xù)向后移動(dòng),這樣的循環(huán)一次又一次地重復(fù)。
您可以想像,現(xiàn)在幾乎沒(méi)有控制器可以在沒(méi)有PID的情況下將汽車(chē)停在固定點(diǎn)
以下是了解PID平滑運(yùn)動(dòng)外觀的視覺(jué)效果。
這個(gè)怎么運(yùn)作?
雙軸簡(jiǎn)單直流齒輪電動(dòng)機(jī)的一側(cè)與編碼器的軸連接,另一側(cè)與指針連接,該指針指向量角器上標(biāo)記的角度,編碼器與中斷引腳上的arduino連接,并通過(guò)L293D電動(dòng)機(jī)IC驅(qū)動(dòng)直流電動(dòng)機(jī), HC-05模塊用于將我們的系統(tǒng)與android設(shè)備連接
當(dāng)我們從android設(shè)備arduino發(fā)送角度設(shè)定值接收數(shù)據(jù)并運(yùn)行電機(jī)時(shí),編碼器將脈沖與要求匹配時(shí),編碼器會(huì)按照預(yù)定義的計(jì)算將實(shí)時(shí)位置反饋發(fā)送到arduino,這意味著指針到達(dá)所需位置arduinuo在這種情況下停止直流電機(jī)。所有過(guò)程均由PID控制,以實(shí)現(xiàn)平穩(wěn),干凈的運(yùn)動(dòng)。
例如,在這里我們使用了一個(gè)光學(xué)編碼器,該編碼器可以提供1600躍遷脈沖以進(jìn)行360度旋轉(zhuǎn),因此,如果我們想將指針旋轉(zhuǎn)到90度,那么來(lái)自編碼器的1600/360 x 90 = 400脈沖將告訴我們它移動(dòng)了90度。
組件
我使用了一個(gè)簡(jiǎn)單的BO電機(jī),將光編碼器連接到其軸上,將360度量角器用作秤HC-05 bt模塊,用于連接arduino和android設(shè)備,并使用android手機(jī)運(yùn)行android app發(fā)送角度設(shè)置指向arduino
以下是產(chǎn)品鏈接,以防萬(wàn)一您需要購(gòu)買(mǎi)
Arduino的
直流電動(dòng)機(jī)
量角器
L293d IC
光學(xué)編碼器
我3d打印了一些土墩電機(jī)和編碼器零件,我也3d打印了指針,您可以在下面的鏈接中找到3D文件。
https://www.thingiverse.com/thing:3221695
光學(xué)編碼器
我在這里使用了一個(gè)400 ppr 2相增量式光學(xué)編碼器,該編碼器可以為每個(gè)演進(jìn)提供1600平移的參考,意味著每個(gè)相位800個(gè)過(guò)渡,我們需要連接連接到A相和B相的上拉電阻,因?yàn)槲覀儾荒苁挂_懸空以避免任何問(wèn)題。干擾,在我們的案例中,我們使用的是arduino,它具有內(nèi)置的上拉電阻器功能,只需要從代碼中激活即可。
pinMode (encoderPin1,INPUT_PULLUP );
pinMode (encoderPin2,INPUT_PULLUP );
要了解有關(guān)編碼器的更多信息,請(qǐng)閱讀上期推文
電路圖
進(jìn)行上圖所示的接線,編碼器綠色和白色導(dǎo)線必須連接到arduino的中斷引腳,即數(shù)字引腳2和3。
在這里,我使用了L293D H橋式電動(dòng)機(jī)控制IC,它可以控制直流電動(dòng)機(jī)。工作在5V至36V的電壓范圍內(nèi),它可以處理每個(gè)通道1A的電流,每個(gè)通道2A的峰值,必須將HC-05 BT模塊連接到arduino的串行引腳(TX,RX)引腳0和1。
我用了9V電池為電動(dòng)機(jī)供電。
源代碼
在開(kāi)始編碼之前,您必須先安裝一個(gè)PID庫(kù)(https://github.com/br3ttb/Arduino-PID-Library/archive/master.zip ),
該庫(kù)由br3ttb提供(https://github.com/br3ttb/Arduino-PID-Library),是一個(gè)出色的庫(kù),它非常易于使用,并且可以使用。
如上面的視頻和圖像所示,首先我借助3D打印的聯(lián)軸器和3D打印的安裝支架連接編碼器和直流電動(dòng)機(jī),然后借助M3 X 10螺栓將安裝支架固定在編碼器上。
在支架I的另一側(cè)上,通過(guò)這種方式將直流電動(dòng)機(jī)粘到直流編碼器軸上,直流編碼器軸與直流編碼器軸一起移動(dòng),并繼續(xù)向arduino提供位置參考
現(xiàn)在,我?guī)Я艘粋€(gè)大的360度保護(hù)器,并在中心鉆了一個(gè)孔,以便可以將其安裝在直流電動(dòng)機(jī)軸上?,F(xiàn)在,我在電動(dòng)機(jī)的另一軸上連接了3D打印指針,該指針指出了直流電動(dòng)機(jī)軸的運(yùn)動(dòng)角度。
我有一塊可用的PCB,可以連接直流電動(dòng)機(jī),L293d IC和HC-05模塊,該P(yáng)CB可以用作arduino uno屏蔽,可以直接安裝在Arduino UNO上。
一旦我們完成了所有組件的組裝,就可以運(yùn)行該項(xiàng)目,因此我們需要一個(gè)android設(shè)備和android應(yīng)用,您可以從下面的鏈接下載android應(yīng)用和可編輯的.aia文件
always
-
編碼器
+關(guān)注
關(guān)注
45文章
3673瀏覽量
135302 -
直流電機(jī)
+關(guān)注
關(guān)注
36文章
1710瀏覽量
70425 -
PID
+關(guān)注
關(guān)注
35文章
1473瀏覽量
85857
原文標(biāo)題:Arduino用PID控制直流電機(jī)定位旋轉(zhuǎn) - 【單片機(jī)教程-Arduino-PID】
文章出處:【微信號(hào):aidanpianji,微信公眾號(hào):?jiǎn)纹瑱C(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
使用單片機(jī)實(shí)現(xiàn)直流電機(jī)的PWM調(diào)速控制原理圖
如何使用MOS管進(jìn)行直流電機(jī)控制
無(wú)刷直流電機(jī)是什么?它有什么特點(diǎn)?
有刷直流電機(jī)是什么?有刷直流電機(jī)的工作原理是什么?
直流電機(jī)的應(yīng)用原理及控制原理是什么?
直流電機(jī)有哪些型號(hào)?如何分類(lèi)的?
直流電機(jī)是什么?具有什么特點(diǎn)?
直流電機(jī)是什么 直流電機(jī)介紹及其工作原理
直流電機(jī)的轉(zhuǎn)速與線圈的關(guān)系
直流電機(jī)速度控制器的組成和類(lèi)型
![<b class='flag-5'>直流電機(jī)</b>速度<b class='flag-5'>控制</b>器的組成和類(lèi)型](https://file1.elecfans.com/web2/M00/F2/6C/wKgaomZ1QPuACC75AAE8THLRC7I646.png)
PWM如何調(diào)節(jié)直流電機(jī)轉(zhuǎn)速
直流電機(jī)的速度控制方法介紹
![<b class='flag-5'>直流電機(jī)</b>的速度<b class='flag-5'>控制</b>方法介紹](https://file1.elecfans.com/web2/M00/EC/87/wKgaomZe25-AUiM9AAB88N4PtzI206.png)
評(píng)論