一、簡介
本篇文章將介紹如何使用FPGA實現(xiàn)一個直流有刷電機控制器,主要包括 速度控制 和 角度控制(好像在無刷電機控制中,習慣將其稱為環(huán),即速度環(huán) 和 角度環(huán)(位置環(huán)))。因此這是一個閉環(huán)系統(tǒng),需要得到系統(tǒng)的反饋,實時得到電機的轉速和角度,所以需要上篇中編碼器模塊的輸出,作為控制器的反饋,通過PID進行調(diào)節(jié)。
二、控制器框圖設計
在做設計之前,最好先將功能明確下來,然后繪制簡單的流程框圖,當然這里先將程序實現(xiàn)完了之后,再繪制的流程框圖 ̄□ ̄||,框圖如下,主要由三大模塊組成(控制姿態(tài)就不包括在里面了),角度、速度和PID模塊,下面將一一介紹各個模塊的具體細節(jié)。
三、PID模塊
PID的原理在之前的文章中有提到過,就不再繼續(xù)提起了,本次實現(xiàn)的方式方式和之前實現(xiàn)的方式一樣,將PID系數(shù)擴大100倍取整,然后相乘,將得到的結果再右移7位 加速 右移 9位,約等于除以了100。
四、速度控制器
速度控制器里面主要做期望速度的輸出和電機運動方向切換的控制。期望速度主要由外部輸入和方向切換來控制,如果說需要進行方向切換的話,為了保護電機,不能立馬進行電機的轉向,而要等待速度降低到安全速度后,再進行方向切換。
所以如果電機不需要轉向,那么期望速度就是外部設置的速度。
如果需要轉向的話,先將期望速度設置為0,待速度降低到安全速度后,例如5RPM,就切換方向 和 將期望速度設置為外部設置的速度。
module controller_Speed_loop( input sys_clk_i , //時鐘輸入 input sys_rst_n_i , //復位輸入 input c_speed_loop_en_i , //速度環(huán)使能信號 input motor_spin_dir_i , //設置旋轉方向 input[15:0] motor_rpm_set_i , //設置速度 input encoder_direction_i , //電機實際的運動方向 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輸出 );
五、角度控制器
控制過程和速度控制過程一樣,將當前角度值和期望角度值輸入角度PID進行計算,然后將計算后的結果輸入到速度PID進行計算,得到PWM的變化值。
這一控制回路是比較簡單的,如果說需要在角度旋轉的時候,還需要對速度進行控制的話,就會復雜一點點(串級),等后面有需求了再進行實現(xiàn)。
六、小結
本次實現(xiàn)的控制器 和 上次實現(xiàn)的 編碼器,共同組成了一個簡單的電機控制器,可用于對電機的速度 和 角度進行控制。
top層的控制信號如下,在速度模式下,只需要設置rmp的值,電機就可以進行轉動,而在角度模式下,需要先設置旋轉的角度值,然后在使能角度旋轉,電機就會旋轉對應的角度后,停止。
//控制信號 .motor_mode_set_i ( motor_mode_set ), //設置電機模式 2'b00 = 速度模式 2'b01 = 角度模式 .motor_spin_dir_i ( motor_spin_dir ), //電機運動方向控制 1'b0 正向 1'b1 反向 .motor_rpm_set_i ( motor_rpm_set ), //設置電機轉速 RPM .motor_acc_set_i ( motor_acc_set ), //設置電機加速度 .motor_angle_en_i ( motor_angle_en ), //角度旋轉使能 .motor_angle_ack_o ( motor_angle_ack ), //角度旋轉應答 .motor_angle_set_i ( motor_angle_set ), //設置電機旋轉角度
本文轉載自FPGA之旅
審核編輯:湯梓紅
-
FPGA
+關注
關注
1643文章
21956瀏覽量
614004 -
控制器
+關注
關注
114文章
16960瀏覽量
182873 -
PID
+關注
關注
37文章
1480瀏覽量
87332 -
無刷電機
+關注
關注
60文章
876瀏覽量
47075 -
直流有刷電機
+關注
關注
0文章
55瀏覽量
1649
原文標題:FPGA實現(xiàn)直流電機驅動(速度位置控制)
文章出處:【微信號:FPGA研究院,微信公眾號:FPGA研究院】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
基于LabVIEW設計一個直流有刷電機PID調(diào)試及控制助手
一文解析無刷直流電機與直流有刷電機的區(qū)別
使用dsPIC數(shù)字信號控制器實現(xiàn)無刷直流電機控制技術的資料說明

使用FPGA實現(xiàn)直流伺服電機控制器的設計資料說明

基于FPGA的直流電機控制器的研究與實現(xiàn)

基于FPGA的直流電機控制器的硬件設計

評論