一、簡(jiǎn)介
本篇文章將介紹如何使用FPGA實(shí)現(xiàn)一個(gè)直流有刷電機(jī)控制器,主要包括 速度控制 和 角度控制(好像在無(wú)刷電機(jī)控制中,習(xí)慣將其稱為環(huán),即速度環(huán) 和 角度環(huán)(位置環(huán)))。因此這是一個(gè)閉環(huán)系統(tǒng),需要得到系統(tǒng)的反饋,實(shí)時(shí)得到電機(jī)的轉(zhuǎn)速和角度,所以需要上篇中編碼器模塊的輸出,作為控制器的反饋,通過(guò)PID進(jìn)行調(diào)節(jié)。
二、控制器框圖設(shè)計(jì)
在做設(shè)計(jì)之前,最好先將功能明確下來(lái),然后繪制簡(jiǎn)單的流程框圖,當(dāng)然這里先將程序?qū)崿F(xiàn)完了之后,再繪制的流程框圖 ̄□ ̄||,框圖如下,主要由三大模塊組成(控制姿態(tài)就不包括在里面了),角度、速度和PID模塊,下面將一一介紹各個(gè)模塊的具體細(xì)節(jié)。
三、PID模塊
PID的原理在之前的文章中有提到過(guò),就不再繼續(xù)提起了,本次實(shí)現(xiàn)的方式方式和之前實(shí)現(xiàn)的方式一樣,將PID系數(shù)擴(kuò)大100倍取整,然后相乘,將得到的結(jié)果再右移7位 加速 右移 9位,約等于除以了100。
四、速度控制器
速度控制器里面主要做期望速度的輸出和電機(jī)運(yùn)動(dòng)方向切換的控制。期望速度主要由外部輸入和方向切換來(lái)控制,如果說(shuō)需要進(jìn)行方向切換的話,為了保護(hù)電機(jī),不能立馬進(jìn)行電機(jī)的轉(zhuǎn)向,而要等待速度降低到安全速度后,再進(jìn)行方向切換。
所以如果電機(jī)不需要轉(zhuǎn)向,那么期望速度就是外部設(shè)置的速度。
如果需要轉(zhuǎn)向的話,先將期望速度設(shè)置為0,待速度降低到安全速度后,例如5RPM,就切換方向 和 將期望速度設(shè)置為外部設(shè)置的速度。
module controller_Speed_loop( input sys_clk_i , //時(shí)鐘輸入 input sys_rst_n_i , //復(fù)位輸入 input c_speed_loop_en_i , //速度環(huán)使能信號(hào) input motor_spin_dir_i , //設(shè)置旋轉(zhuǎn)方向 input[15:0] motor_rpm_set_i , //設(shè)置速度 input encoder_direction_i , //電機(jī)實(shí)際的運(yùn)動(dòng)方向 input[15:0] encoder_speed_i , //編碼器速度 output reg c_speed_loop_dir_o , //速度環(huán)方向輸出 output reg[15:0] c_speed_loop_rmp_o //速度環(huán)RPM輸出 );
五、角度控制器
控制過(guò)程和速度控制過(guò)程一樣,將當(dāng)前角度值和期望角度值輸入角度PID進(jìn)行計(jì)算,然后將計(jì)算后的結(jié)果輸入到速度PID進(jìn)行計(jì)算,得到PWM的變化值。
這一控制回路是比較簡(jiǎn)單的,如果說(shuō)需要在角度旋轉(zhuǎn)的時(shí)候,還需要對(duì)速度進(jìn)行控制的話,就會(huì)復(fù)雜一點(diǎn)點(diǎn)(串級(jí)),等后面有需求了再進(jìn)行實(shí)現(xiàn)。
六、小結(jié)
本次實(shí)現(xiàn)的控制器 和 上次實(shí)現(xiàn)的 編碼器,共同組成了一個(gè)簡(jiǎn)單的電機(jī)控制器,可用于對(duì)電機(jī)的速度 和 角度進(jìn)行控制。
top層的控制信號(hào)如下,在速度模式下,只需要設(shè)置rmp的值,電機(jī)就可以進(jìn)行轉(zhuǎn)動(dòng),而在角度模式下,需要先設(shè)置旋轉(zhuǎn)的角度值,然后在使能角度旋轉(zhuǎn),電機(jī)就會(huì)旋轉(zhuǎn)對(duì)應(yīng)的角度后,停止。
//控制信號(hào) .motor_mode_set_i ( motor_mode_set ), //設(shè)置電機(jī)模式 2'b00 = 速度模式 2'b01 = 角度模式 .motor_spin_dir_i ( motor_spin_dir ), //電機(jī)運(yùn)動(dòng)方向控制 1'b0 正向 1'b1 反向 .motor_rpm_set_i ( motor_rpm_set ), //設(shè)置電機(jī)轉(zhuǎn)速 RPM .motor_acc_set_i ( motor_acc_set ), //設(shè)置電機(jī)加速度 .motor_angle_en_i ( motor_angle_en ), //角度旋轉(zhuǎn)使能 .motor_angle_ack_o ( motor_angle_ack ), //角度旋轉(zhuǎn)應(yīng)答 .motor_angle_set_i ( motor_angle_set ), //設(shè)置電機(jī)旋轉(zhuǎn)角度
本文轉(zhuǎn)載自FPGA之旅
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1630文章
21801瀏覽量
606360 -
控制器
+關(guān)注
關(guān)注
112文章
16465瀏覽量
179615 -
PID
+關(guān)注
關(guān)注
35文章
1473瀏覽量
85875 -
無(wú)刷電機(jī)
+關(guān)注
關(guān)注
58文章
847瀏覽量
46066 -
直流有刷電機(jī)
+關(guān)注
關(guān)注
0文章
46瀏覽量
1523
原文標(biāo)題:FPGA實(shí)現(xiàn)直流電機(jī)驅(qū)動(dòng)(速度位置控制)
文章出處:【微信號(hào):FPGA研究院,微信公眾號(hào):FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
我的電機(jī)是一個(gè)直流有刷電機(jī),配有AQMD2410NS的驅(qū)動(dòng)器,求推薦一塊控制器或控制板
如何去實(shí)現(xiàn)直流編碼有刷電機(jī)的驅(qū)動(dòng)狀態(tài)控制
A4962三無(wú)刷直流(BLDC)電機(jī)控制器有哪些應(yīng)用
基于LabVIEW設(shè)計(jì)一個(gè)直流有刷電機(jī)PID調(diào)試及控制助手
使用dsPIC數(shù)字信號(hào)控制器實(shí)現(xiàn)無(wú)刷直流電機(jī)控制技術(shù)的資料說(shuō)明
![使用dsPIC數(shù)字信號(hào)<b class='flag-5'>控制器</b><b class='flag-5'>實(shí)現(xiàn)</b>無(wú)<b class='flag-5'>刷</b><b class='flag-5'>直流電機(jī)</b><b class='flag-5'>控制</b>技術(shù)的資料說(shuō)明](https://file.elecfans.com/web1/M00/BB/23/o4YBAF6nfrCASkomAANdstg2PA4677.png)
使用FPGA實(shí)現(xiàn)直流伺服電機(jī)控制器的設(shè)計(jì)資料說(shuō)明
![使用<b class='flag-5'>FPGA</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>直流</b>伺服<b class='flag-5'>電機(jī)</b><b class='flag-5'>控制器</b>的設(shè)計(jì)資料說(shuō)明](https://file.elecfans.com/web1/M00/BC/68/pIYBAF65HreAFNxsAAFPzc6ebcU722.png)
基于FPGA的直流電機(jī)控制器的研究與實(shí)現(xiàn)
![基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>直流電機(jī)</b><b class='flag-5'>控制器</b>的研究與<b class='flag-5'>實(shí)現(xiàn)</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
基于FPGA的直流電機(jī)控制器的硬件設(shè)計(jì)
![基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>直流電機(jī)</b><b class='flag-5'>控制器</b>的硬件設(shè)計(jì)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
直流電機(jī)控制器:有刷與無(wú)刷
![<b class='flag-5'>直流電機(jī)</b><b class='flag-5'>控制器</b>:<b class='flag-5'>有</b><b class='flag-5'>刷</b>與無(wú)<b class='flag-5'>刷</b>](https://file.elecfans.com/web2/M00/7C/C1/poYBAGN7KXSAZ04OAAG8W5ChKQk442.png)
直流有刷電機(jī)驅(qū)動(dòng)電路
用于驅(qū)動(dòng)無(wú)刷和有刷電機(jī)的新型 2 A 峰值電流嵌入式電機(jī)控制器
![用于驅(qū)動(dòng)無(wú)<b class='flag-5'>刷</b>和<b class='flag-5'>有</b><b class='flag-5'>刷</b><b class='flag-5'>電機(jī)</b>的新型 2 A 峰值電流嵌入式<b class='flag-5'>電機(jī)</b><b class='flag-5'>控制器</b>](https://file1.elecfans.com//web2/M00/F3/19/wKgaomZ4mdaASecKAAJPE_av1zk231.png)
評(píng)論