基于fpga的無刷直流電機控制軟件篇之霍爾信號_第1頁
基于fpga的無刷直流電機控制軟件篇之霍爾信號_第2頁
基于fpga的無刷直流電機控制軟件篇之霍爾信號_第3頁
基于fpga的無刷直流電機控制軟件篇之霍爾信號_第4頁
基于fpga的無刷直流電機控制軟件篇之霍爾信號_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

霍爾信號根據(jù)在電機安裝位置的不同,有2種不同的時序圖,分別是60度和120度。這個要根據(jù)電機的廠家提供的資料。

我這次選型的電機是60度。

時序圖如下:

s1-s6分別對應(yīng)6個狀態(tài),每一個狀態(tài)的電氣角度是60度。

霍爾信號在這里不僅要用來換向。還要用測速,提高電機控制系統(tǒng)的測速反饋。

先來說換向。s1-s6代表6個狀態(tài),每個狀態(tài)對應(yīng)6個開關(guān)管的開啟和關(guān)閉。

上圖為6個狀態(tài)對應(yīng)霍爾信號邏輯電平和對應(yīng)6個開關(guān)管的開關(guān)邏輯狀態(tài)。

軟件部分這里很好處理,簡單的狀態(tài)機就可以實現(xiàn)了。

但是,不要忘記我們的集成模塊是dvr8312,它的控制接口為pwm_apwm_b,pwm_crst_a,rst_b,rst_c,并不是對應(yīng)6個開關(guān)管。

這是dvr8312手冊上給出的用常規(guī)6個開關(guān)管信號的邏輯圖。我們就按手冊的來。

程序如下:

`timescale1ns/1ps

modulePWM_ctrl(clk,rst_n,

pwm_ah,pwm_bh,pwm_ch,

rst_an,rst_bn,rst_cn,

hall_a,hall_b,hall_c

);

inputclk;

inputrst_n;

inputhall_a;

//三相霍爾信號

inputhall_b;

inputhall_c;

outputpwm_ah;

//a相輸出

outputpwm_bh;

//b相輸出

outputpwm_ch;

//c相輸出

outputrst_an;

//rst_a輸出

outputrst_bn;

//rst_b輸出

outputrst_cn;

//rst_c輸出

//---------------------------------------------------------------------

//霍爾換相分為6狀態(tài)每狀態(tài)只有2相通電

//

s1

s2

s3

s4

s5

s6

//hall_a

1

1

1

0

0

0

//hall_b

0

0

1

1

1

0

//hall_c

1

0

0

0

1

1

//pwm_ah

1

1

0

0

0

0

//pwm_al

0

0

0

1

1

0

//pwm_bh

0

0

1

1

0

0

//pwm_bl

1

0

0

0

0

1

//pwm_ch

0

0

0

0

1

1

//pwm_cl

0

1

1

0

0

0

//----------------------------------------------------------------------

reg[2:0]hall1;

reg[2:0]hall2;

regpwm_ahr;

regpwm_bhr;

regpwm_chr;

regpwm_alr;

regpwm_blr;

regpwm_clr;

//reg

[9:0]ctrl_reg;

reg

pwm_reg;

reg[9:0]cnt;

parameterctrl_reg=200;

always@(posedge

clkornegedgerst_n)

if(!rst_n)begin

pwm_reg<=

1'b0;

cnt<=10'b0;

end

elsebegin

if(cnt<=ctrl_reg)

pwm_reg<=1'b1;

elsepwm_reg<=1'b0;

end

always@(posedgeclkornegedgerst_n)

if(!rst_n)cnt<=10'b0;

elsecnt<=cnt+1'b1;

always@(posedgeclkornegedgerst_n)

if(!rst_n)begin

hall1<=3'b0;

hall2<=3'b0;

end

elsebegin

hall1<={hall_a,hall_b,hall_c};

hall2<=hall1;

end

//------------------------------------------------------------------------

always@(posedgeclkornegedgerst_n)

if(!rst_n)begin

pwm_ahr<=1'b0;

pwm_bhr<=1'b0;

pwm_chr<=1'b0;

pwm_alr<=1'b0;

pwm_blr<=1'b0;

pwm_clr<=1'b0;

end

elsebegin

case(hall2)

3'b101:begin

pwm_ahr<=pwm_reg;

pwm_bhr<=1'b0;

pwm_chr<=1'b0;

pwm_alr<=1'b0;

pwm_blr<=pwm_reg;

pwm_clr<=1'b0;

end

3'b100:begin

pwm_ahr<=pwm_reg;

pwm_bhr<=1'b0;

pwm_chr<=1'b0;

pwm_alr<=1'b0;

pwm_blr<=1'b0;

pwm_clr<=pwm_reg;

end

3'b110:begin

pwm_ahr<=1'b0;

pwm_bhr<=pwm_reg;

pwm_chr<=1'b0;

pwm_alr<=1'b0;

pwm_blr<=1'b0;

pwm_clr<=pwm_reg;

end

3'b010:begin

pwm_ahr<=1'b0;

pwm_bhr<=pwm_reg;

pwm_chr<=1'b0;

pwm_alr<=pwm_reg;

pwm_blr<=1'b0;

pwm_clr<=1'b0;

end

3'b011:begin

pwm_ahr<=1'b0;

pwm_bhr<=1'b0;

pwm_chr<=pwm_reg;

pwm_alr<=pwm_reg;

pwm_blr<=1'b0;

pwm_clr<=1'b0;

end

3'b001:begin

pwm_ahr<=1'b0;

pwm_bhr<=1'b0;

pwm_chr<=pwm_reg;

pwm_alr<=1'b0;

pwm_blr<=pwm_reg;

pwm_clr<=1'b0;

end

default:;

endcase

end

assignrst_an=pwm_ahr|pwm_alr;

assignrst_bn=pwm_bhr|pwm_blr;

assignrst_cn=pwm_chr|pwm_clr;

assignpwm_ah=pwm_ahr;

assignpwm_bh=pwm_bhr;

assignpwm_ch=pwm_chr;

//-----------------------------------------------------------------------------

endmodule

如果要換向的話,只需要改變狀態(tài)切換順序就可以。這里就不詳細(xì)說了。簡要說明,軟件思路,計數(shù)器計數(shù),pwm_reg為經(jīng)過控制算法處理后的控制量,和計數(shù)器進行比較,如果小于輸出高電平,大于輸出低電平。

仿真圖如下:

占空比為50%時??梢悦黠@看到每個換向狀態(tài)只有2個管開,而且分別對應(yīng)一上一下。

具體計數(shù)器的位數(shù)選擇我會在以后的系統(tǒng)連接中作說明。

沒有整個系統(tǒng)的聯(lián)系這個位數(shù)是無法確定的。位數(shù)也同樣決定了時鐘頻率。作為電機控制的2個環(huán)路之一速度環(huán)。

這里采用霍爾信號進行測速。

再來看霍爾的時序圖

一次高電平對應(yīng)180度的電氣角度。如果對高電平進行計數(shù),計數(shù)值就對應(yīng)180度的電氣角度。計數(shù)時間就是時鐘周期與計數(shù)值的積,這就得到電氣速度。相對應(yīng)機械角度要查看電機的磁極對數(shù),電氣速度/磁極對數(shù)就是相應(yīng)的機械速度。

利用霍爾信號測速的方法有分兩種。一種就是如我之前說的對高電平計數(shù),還有一種就是固定一個時間內(nèi)對霍爾信號的高電平計數(shù)。同樣也可得到速度。

這部分我參考了很多資料。最后選用一種對2相霍爾信號取與非,得到一個一個霍爾開關(guān)狀態(tài)下的高電平,用計數(shù)器對這個高電平計數(shù)的方法。

這部分具體效果如果只能等實際測定后才能下結(jié)論。

程序如下:

odulespeed_get(clk,rst_n,hall_a,hall_b,speed

);

inputclk;

inputrst_n;

inputhall_a;

inputhall_b;

//inputhall_c;

output[15:0]speed;

reghall_ar1,hall_ar2;

reghall_br1,hall_br2;

//reghall_cr1,hall_cr2;

always@(posedgeclkornegedgerst_n)

if(!rst_n)begin

hall_ar1<=1'b0;

hall_ar2<=1'b0;

hall_br1<=1'b0;

hall_br2<=1'b0;

end

elsebegin

hall_ar1<=hall_a;

hall_ar2<=hall_ar1;

hall_br1<=hall_b;

hall_br2<=hall_br1;

end

wirehall_speed=hall_ar2&&(~hall_br2);

reghall_speed1;

always@(posedgeclkornegedgerst_n)

if(!rst_n)begin

hall_speed1<=1'b0;

end

elsebegin

hall_speed1<=hall_speed;

end

wirehall_neg=hall_speed1&&~hall_speed;

wirehall_pos=~hall_speed1&&hall_speed;

reg[15:0]cnt_speed;

reg[15:0]speed_reg;

reg[1:0]state;

always@(posedgeclkornegedgerst_n)

if(!rst_n)begin

cnt_speed<=16'b0;

state<=2'b00;

end

elsebegin

case(state)

2'b00:begin

if(hall_pos)state<=2'b1;

elsestate<=1'b0;

end

2'b01:begin

cnt_speed<=cnt_speed+1'b1;

if(hall_neg)

state<=2'b11;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論