總覽
在這篇文章中,我們將看到如何實現直流電機的非常精確的位置控制。我們使用Arduino和PID計算來實現簡單直流電機的精確位置控制。
這樣的小項目非常有趣,您可以通過構建該項目來學習許多概念,例如PID,閉環系統和編碼器基礎。
首先,我想向您簡要介紹什么是PID,因為這將幫助您進一步了解這些內容。
PID
PID代表比例微分和積分計算
PID是編程的一部分,在該部分上,控制器將執行復雜的計算,并根據過程的反饋來操縱輸出。
PID有4個關鍵值:
1. PV(過程值)或反饋
2. SV(設定值)
3.錯誤
4.輸出
PID圖
PID的基本工作如下,我不想進行復雜的算術公式,因為我想保持簡單。
PID嘗試使PV盡可能接近SV。
誤差= SV-PV誤差是設定值與過程值之間的差值,
而輸出直接是誤差的先決條件,換句話說,如果誤差為正,則誤差為正,如果誤差為負,則輸出與正的差越大,輸出就越大。輸出為負。隨著PV越來越接近SV,誤差變得越來越小,因此輸出也越來越小,因此,我們獲得了干凈而精確的輸出。
這是一個真實的例子。
假設我告訴您,在直路上行駛1公里以下的不中斷汽車,因為您沒有間斷,因此油門就可以用來控制汽車,因此您上車時按住油門并加速一會兒,然后釋放油門減速并逐漸停在1公里處。
這就是您所做的全部,我們可以稱其為PID控制。PID知道如何在到達SP之前操縱輸出。
Kp,Ki,Kd是可以微調PID控制器的參數,這些參數可以控制過沖下沖振蕩。
假設一個微控制器在沒有PID的情況下驅動汽車,它將啟動汽車并繼續加速直至到達1公里。
然后放開油門,使動車繼續行駛并逐漸停止,直至超過我們設定的1公里。
然后,微控制器再次使汽車反轉,并在他回到1公里點時加速,再次釋放油門,同樣的事情由于動量而繼續向后移動,這樣的循環一次又一次地重復。
您可以想像,現在幾乎沒有控制器可以在沒有PID的情況下將汽車停在固定點
以下是了解PID平滑運動外觀的視覺效果。
這個怎么運作?
雙軸簡單直流齒輪電動機的一側與編碼器的軸連接,另一側與指針連接,該指針指向量角器上標記的角度,編碼器與中斷引腳上的arduino連接,并通過L293D電動機IC驅動直流電動機, HC-05模塊用于將我們的系統與android設備連接
當我們從android設備arduino發送角度設定值接收數據并運行電機時,編碼器將脈沖與要求匹配時,編碼器會按照預定義的計算將實時位置反饋發送到arduino,這意味著指針到達所需位置arduinuo在這種情況下停止直流電機。所有過程均由PID控制,以實現平穩,干凈的運動。
例如,在這里我們使用了一個光學編碼器,該編碼器可以提供1600躍遷脈沖以進行360度旋轉,因此,如果我們想將指針旋轉到90度,那么來自編碼器的1600/360 x 90 = 400脈沖將告訴我們它移動了90度。
組件
我使用了一個簡單的BO電機,將光編碼器連接到其軸上,將360度量角器用作秤HC-05 bt模塊,用于連接arduino和android設備,并使用android手機運行android app發送角度設置指向arduino
以下是產品鏈接,以防萬一您需要購買
Arduino的
直流電動機
量角器
L293d IC
光學編碼器
我3d打印了一些土墩電機和編碼器零件,我也3d打印了指針,您可以在下面的鏈接中找到3D文件。
https://www.thingiverse.com/thing:3221695
光學編碼器
我在這里使用了一個400 ppr 2相增量式光學編碼器,該編碼器可以為每個演進提供1600平移的參考,意味著每個相位800個過渡,我們需要連接連接到A相和B相的上拉電阻,因為我們不能使引腳懸空以避免任何問題。干擾,在我們的案例中,我們使用的是arduino,它具有內置的上拉電阻器功能,只需要從代碼中激活即可。
pinMode (encoderPin1,INPUT_PULLUP );
pinMode (encoderPin2,INPUT_PULLUP );
要了解有關編碼器的更多信息,請閱讀上期推文
電路圖
進行上圖所示的接線,編碼器綠色和白色導線必須連接到arduino的中斷引腳,即數字引腳2和3。
在這里,我使用了L293D H橋式電動機控制IC,它可以控制直流電動機。工作在5V至36V的電壓范圍內,它可以處理每個通道1A的電流,每個通道2A的峰值,必須將HC-05 BT模塊連接到arduino的串行引腳(TX,RX)引腳0和1。
我用了9V電池為電動機供電。
源代碼
在開始編碼之前,您必須先安裝一個PID庫(https://github.com/br3ttb/Arduino-PID-Library/archive/master.zip ),
該庫由br3ttb提供(https://github.com/br3ttb/Arduino-PID-Library),是一個出色的庫,它非常易于使用,并且可以使用。
如上面的視頻和圖像所示,首先我借助3D打印的聯軸器和3D打印的安裝支架連接編碼器和直流電動機,然后借助M3 X 10螺栓將安裝支架固定在編碼器上。
在支架I的另一側上,通過這種方式將直流電動機粘到直流編碼器軸上,直流編碼器軸與直流編碼器軸一起移動,并繼續向arduino提供位置參考
現在,我帶了一個大的360度保護器,并在中心鉆了一個孔,以便可以將其安裝在直流電動機軸上。現在,我在電動機的另一軸上連接了3D打印指針,該指針指出了直流電動機軸的運動角度。
我有一塊可用的PCB,可以連接直流電動機,L293d IC和HC-05模塊,該PCB可以用作arduino uno屏蔽,可以直接安裝在Arduino UNO上。
一旦我們完成了所有組件的組裝,就可以運行該項目,因此我們需要一個android設備和android應用,您可以從下面的鏈接下載android應用和可編輯的.aia文件
always
-
編碼器
+關注
關注
45文章
3601瀏覽量
134203 -
直流電機
+關注
關注
36文章
1708瀏覽量
70087 -
PID
+關注
關注
35文章
1471瀏覽量
85306
原文標題:Arduino用PID控制直流電機定位旋轉 - 【單片機教程-Arduino-PID】
文章出處:【微信號:aidanpianji,微信公眾號:單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論