利用LM629和PIC單片機(jī)構(gòu)建一個(gè)精密電機(jī)控制器
背景與理論
這個(gè)項(xiàng)目的目的是創(chuàng)建一個(gè)系統(tǒng),給速度,加速度和運(yùn)動的電機(jī)精確控制。雖然步進(jìn)電機(jī)可以提供高扭矩,并且與輸入高度同步(因此控制它的微控制器可以跟蹤它們的當(dāng)前位置),但它們在運(yùn)行時(shí)效率不高,這將嚴(yán)重影響電池的使用時(shí)間。此外,如果由于某種原因,步進(jìn)電機(jī)熄火了,控制器無法知道它沒有移動,但它會記錄下來,就好像它已經(jīng)移動了,這將使整個(gè)系統(tǒng)陷入混亂(想象一下,一臺3D打印機(jī)因?yàn)榭ㄗ《^了一步,整個(gè)打印過程將從發(fā)生的事件開始變得混亂)。出于這個(gè)原因,我實(shí)現(xiàn)了一個(gè)系統(tǒng),可以用反饋控制直流電機(jī),以跟蹤電機(jī)所做的事情,而不管PWM周期的數(shù)量,失速等。這要求電機(jī)具有正交編碼器(對于此模擬/電源板,電機(jī)必須為12V-24V), LM629精密電機(jī)控制器和用于設(shè)置LM629 ic的微控制器。例如,有了這個(gè)系統(tǒng),移動機(jī)器人就可以享受馬達(dá)的對稱速度。
LM629內(nèi)部是如何工作的
LM629是一款微控制器外設(shè),在單個(gè)設(shè)備中集成了采樣數(shù)據(jù)運(yùn)動控制系統(tǒng)的所有功能。使用LM629使設(shè)計(jì)快速精確的運(yùn)動控制系統(tǒng)的復(fù)雜任務(wù)變得更加容易。LM629實(shí)現(xiàn)了一個(gè)位置解碼器、一個(gè)求和結(jié)、一個(gè)數(shù)字PID環(huán)路補(bǔ)償濾波器和一個(gè)軌跡輪廓發(fā)生器。LM629提供一個(gè)7位PWM信號和一個(gè)符號位,提供一個(gè)符號幅度輸出端口。在運(yùn)行時(shí),主機(jī)微控制器將加速度、速度和目標(biāo)位置值下載到軌跡生成器中。在每個(gè)樣本間隔,這些值被用來計(jì)算新的需求或“設(shè)定點(diǎn)”位置,這些位置被饋送到求和結(jié)。電機(jī)的實(shí)際位置由光增量編碼器的輸出信號確定。內(nèi)部解碼器將實(shí)際位置發(fā)送到求和結(jié)的另一個(gè)輸入,并從“需求”位置中減去,形成控制回路補(bǔ)償器的誤差信號輸入,該補(bǔ)償器是一個(gè)PID濾波器。
由主微控制器發(fā)送到LM629的軌跡曲線以速度與時(shí)間的關(guān)系繪制。這些被認(rèn)為是速度剖面的原因是每個(gè)樣本間隔都計(jì)算所需的位置。對于勻速,這些期望的位置增量將是相同的每個(gè)樣本間隔,對于加速和減速,期望的位置增量將分別增加和減少每個(gè)樣本間隔。目標(biāo)位置是速度剖面的積分。
主微控制器通過并行通信與LM629通信。LM629有三個(gè)內(nèi)部寄存器:狀態(tài)、高位和低位字節(jié)。這些由RD, WR和PS線(活動低)和使用狀態(tài)字節(jié)的忙位控制。通過將RD和PS調(diào)低來讀取狀態(tài)字節(jié),第0位是忙位。通過將WR和PS調(diào)低來編寫命令。PS高時(shí),WR低,將數(shù)據(jù)寫入LM629, RD低,從LM629讀取數(shù)據(jù)。數(shù)據(jù)傳輸是一個(gè)按最高到最低有效字節(jié)順序?qū)懭氲碾p字節(jié)操作。以上描述假設(shè)CS很低。
用戶命令類型:初始化、過濾控制命令、軌跡控制命令、中斷控制命令和數(shù)據(jù)報(bào)告命令。
LM629與其主機(jī)之間的通信流通過使用狀態(tài)字節(jié)中的忙位0位來控制。在發(fā)出命令和數(shù)據(jù)或讀取數(shù)據(jù)之前,主機(jī)必須檢查忙位是否為邏輯0。這包括具有多個(gè)數(shù)據(jù)字的命令的數(shù)據(jù)字節(jié)對之間。
準(zhǔn)備
為了實(shí)現(xiàn)一個(gè)基于LM629電機(jī)控制器的系統(tǒng),我創(chuàng)建了兩個(gè)pcb。一個(gè)PCB容納數(shù)字元件,如PIC18F46K22和lm629。所有的數(shù)字和鉆文件都包括在內(nèi),以便通過JLCPCB訂購pcb。我還包括了材料清單和示意圖,可以用來把這些放在一起。數(shù)字端可以很容易地構(gòu)建在面包板和前置板上,但模擬/電源板存在一些挑戰(zhàn),因?yàn)镠-Bridge的封裝與前面提到的介質(zhì)上的2.54mm間距不一致。此外,數(shù)字隔離器采用表面安裝形式。
如果您決定在沒有隔離器和不同的h橋的情況下重新創(chuàng)建此項(xiàng)目,則可以在前置板和面包板上進(jìn)行一些修改。
該板上的微控制器分別向每個(gè)LM629發(fā)送命令,系數(shù)和軌跡。這里只顯示了兩個(gè),因?yàn)槟壳笆褂盟鼈兊捻?xiàng)目只包含兩個(gè)電機(jī),可以再增加兩個(gè)來控制總共4個(gè)電機(jī)LM629。LM629發(fā)送PWM和信號通過h橋的2x10引腳連接器發(fā)送到模擬板(第二板)。通過相同的連接器,正交編碼器信號被lm629接收。
在模擬/功率電源板上,來自數(shù)字板的信號通過數(shù)字隔離器連接到h橋。使用數(shù)字隔離器可以實(shí)現(xiàn)兩個(gè)系統(tǒng)之間的通信,而不需要有一個(gè)共同點(diǎn)。電動機(jī)產(chǎn)生大量的電氣噪聲,這些電壓的下降和尖峰會導(dǎo)致數(shù)字元件(如微控制器、微處理器或其他具有低電氣噪聲閾值的數(shù)字系統(tǒng))發(fā)生故障,這就是為什么該電動機(jī)控制器方案設(shè)計(jì)使用數(shù)字隔離器。
模擬/電源板通過上面提到的2x10連接器接收信號幅度信號,以及5V和數(shù)字地為正交編碼器和隔離器的數(shù)字端供電。
為了實(shí)現(xiàn)完全隔離,必須使用兩種不同的電源,在我的項(xiàng)目中,我使用了兩個(gè)單獨(dú)的電池。
編譯微控制器的代碼
要為MCU編譯代碼,請遵循以下步驟:
?下載上面提到的存儲庫
?將ZIP文件的內(nèi)容解壓縮到路徑名不包含太多字符的地方,例如C:驅(qū)動器的根目錄
?打開MPLABX(如果必須安裝,請確保也安裝了XC8編譯器)
?在工具欄上,單擊File-> Open Project
?導(dǎo)航到解壓zip文件內(nèi)容的位置
?打開文件夾,點(diǎn)擊項(xiàng)目,點(diǎn)擊“打開項(xiàng)目”
?一旦項(xiàng)目打開,您可以瀏覽源代碼并根據(jù)您的需要修改它。
?在工具欄上轉(zhuǎn)到Production->Clean and Build Project
編譯器應(yīng)該生成一個(gè)"。十六進(jìn)制”文件。可以用來對單片機(jī)進(jìn)行編程。
單片機(jī)編程
要對微控制器進(jìn)行編程,請確保微控制器以5V通電,并且Pickit 3編程器連接到“編程器”頭引腳。
?在工具欄中,轉(zhuǎn)到生產(chǎn)->制作和程序設(shè)備
?將彈出一個(gè)MPLABX警告窗口,提醒您確保連接的芯片與項(xiàng)目中選擇的芯片相同,并且電壓為推薦的電壓。單擊OK。
結(jié)論
這個(gè)項(xiàng)目可以適應(yīng)任何需要高精度電機(jī)控制的項(xiàng)目,步進(jìn)電機(jī)不是一個(gè)選擇。它還使用現(xiàn)成的部件來完成此目的,因此已經(jīng)完成了大部分測試和調(diào)試。如果解決方案是在另一個(gè)MCU的軟件中實(shí)現(xiàn)PID或在FPGA的硬件中實(shí)現(xiàn)PID,則仍然需要進(jìn)行大量的測試和調(diào)試。
我編寫的庫很容易移植到其他體系結(jié)構(gòu)中。
本文編譯自hackster.io





