馬達(dá)控制實(shí)習(xí)課件_第1頁(yè)
馬達(dá)控制實(shí)習(xí)課件_第2頁(yè)
馬達(dá)控制實(shí)習(xí)課件_第3頁(yè)
馬達(dá)控制實(shí)習(xí)課件_第4頁(yè)
馬達(dá)控制實(shí)習(xí)課件_第5頁(yè)
已閱讀5頁(yè),還剩129頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

步進(jìn)馬達(dá)控制實(shí)習(xí)VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)文魁資訊-UE301陳慶逸、林柏辰編著---文魁資訊1VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)步進(jìn)馬達(dá)控制實(shí)習(xí)VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)陳慶逸、林柏辰內(nèi)容大綱單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)單元9-7步進(jìn)馬達(dá)步進(jìn)數(shù)控制實(shí)習(xí)陳慶逸、林柏辰編著---文魁資訊2VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)內(nèi)容大綱單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)陳慶單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)相關(guān)知識(shí)四相式步進(jìn)馬達(dá)驅(qū)動(dòng)示意圖4相6線式步進(jìn)馬達(dá)陳慶逸、林柏辰編著---文魁資訊3VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)相關(guān)知識(shí)4相6單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)相關(guān)知識(shí)(續(xù))一個(gè)四相步進(jìn)馬達(dá)的工作方式如下圖所示;其中線圈接點(diǎn)所連接的開(kāi)關(guān)是以脈波控制電晶體的飽和或截止加以實(shí)現(xiàn)。陳慶逸、林柏辰編著---文魁資訊4VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)相關(guān)知識(shí)(續(xù))陳單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)相關(guān)知識(shí)(續(xù))而在一般的實(shí)驗(yàn)中,我們常常拿內(nèi)含四組NPN達(dá)靈頓電晶體的FT5754元件來(lái)驅(qū)動(dòng)步進(jìn)馬達(dá),達(dá)靈頓電晶體在B極輸入正電壓而導(dǎo)通飽和時(shí),可以放大C極端從線圈往下流通的電流,電源能否提供足夠的電流來(lái)驅(qū)動(dòng)步進(jìn)馬達(dá)會(huì)影響到步進(jìn)馬達(dá)的轉(zhuǎn)速與力矩。FT5754外觀及內(nèi)部結(jié)構(gòu)如下所示:

陳慶逸、林柏辰編著---文魁資訊5VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)相關(guān)知識(shí)(續(xù))陳單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)相關(guān)知識(shí)(續(xù))當(dāng)採(cǎi)用FT5754的達(dá)靈頓對(duì)電晶體來(lái)作為連接步進(jìn)馬達(dá)的開(kāi)關(guān)時(shí),其電路的結(jié)構(gòu)如下所示:陳慶逸、林柏辰編著---文魁資訊6VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)相關(guān)知識(shí)(續(xù))陳單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)相關(guān)知識(shí)(續(xù))一相激磁的作法是控制每次只有一個(gè)線圈有電流通過(guò),當(dāng)四個(gè)線圈輪流動(dòng)作時(shí),步進(jìn)馬達(dá)便能開(kāi)始轉(zhuǎn)動(dòng)。一相激磁的控制順序如下表所列:

線圈控制狀態(tài)轉(zhuǎn)動(dòng)方向順時(shí)針逆時(shí)針11000201003001040001陳慶逸、林柏辰編著---文魁資訊7VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)相關(guān)知識(shí)(續(xù))

單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)實(shí)驗(yàn)電路圖陳慶逸、林柏辰編著---文魁資訊8VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)實(shí)驗(yàn)電路圖陳慶單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)

程式與說(shuō)明步進(jìn)馬達(dá)全步控制(一相激磁)程式碼

11entitystepmotor_fullais12port(13clk:instd_logic;14step:outstd_logic_vector(3downto0)15);16endstepmotor_fulla;1718architecturearchofstepmotor_fullais19signalcnt:std_logic_vector(1downto0);20begin2122----------process---------23process(clk)24begin25ifclk'eventandclk='1'then26cnt<=cnt+1;27endif;28endprocess;

29step<="1000"whencnt=0else30"0100"whencnt=1else31"0010"whencnt=2else32"0001";33endarch;

陳慶逸、林柏辰編著---文魁資訊9VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)

程式與說(shuō)明11單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)程式與說(shuō)明除頻器程式碼(將1.8432MHz除頻產(chǎn)生50Hz輸出):13entityclk_div_stepis14generic(divisor:integer:=36864);15port(16clk_in:instd_logic;17clk_out:outstd_logic18);19endclk_div_step;2021architecturearchofclk_div_stepis22signalcnt2:std_logic;23begin24----------clkdivider----------25process(clk_in)26variablecnt1,divisor2:integerrange0todivisor;27begin28divisor2:=divisor/2;29-----upcounter-----30if(clk_in'eventandclk_in='1')then31ifcnt1=divisorthen32cnt1:=1;33else34cnt1:=cnt1+1;35endif;

36endif;37-----clk_outregisterclkgenerator-----38if(clk_in'eventandclk_in='1')then39if((cnt1=divisor2)or(cnt1=divisor))then40cnt2<=notcnt2;41endif;42endif;43clk_out<=cnt2;44endprocess;45endarch;46陳慶逸、林柏辰編著---文魁資訊10VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)程式與說(shuō)明13

單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)程式與說(shuō)明主程式之電路連線圖:陳慶逸、林柏辰編著---文魁資訊11VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)

單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)程式與說(shuō)明陳慶單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證

燒錄於力浦電子FPT-3實(shí)驗(yàn)板

輸入clock

腳位43

輸出Step(3)Step(2)Step(1)Step(0)腳位4568調(diào)整JumperJ2的位置由IO0~IO3拉出激磁信號(hào)線接上5V

直流電源進(jìn)行步進(jìn)馬達(dá)實(shí)驗(yàn)時(shí),我們需要把CPLD的I/O延伸出來(lái)以外接FT5754和步進(jìn)馬達(dá)等周邊元件,因此我們可以將FPT-3實(shí)驗(yàn)板上的jumperJ2由原本的1、2PIN腳(InternalI/OON)改套到2、3PIN腳上(ExternalI/OON),再?gòu)膶?shí)驗(yàn)板右邊CON1上將IO0~IO3這幾個(gè)PIN腳跳線到麵包板上即可得到所需的激磁信號(hào)。另外FT5754和步進(jìn)馬達(dá)線圈共同點(diǎn)所需的電源必須與實(shí)驗(yàn)板上接出來(lái)的信號(hào)具有共同的地電位,這也是實(shí)驗(yàn)中要留意的地方。陳慶逸、林柏辰編著---文魁資訊12VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)功能模擬與CPL單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板欲將程式檔案燒錄於力浦電子LP-2900實(shí)驗(yàn)板時(shí),我們必須由實(shí)驗(yàn)板上拉出FT5754和步進(jìn)馬達(dá)所需的正、負(fù)電源,並由CPLD-EPF10K10CHIP-BOARD上預(yù)留的焊孔以單心線拉出激磁信號(hào)(step(3)~setp(0)):陳慶逸、林柏辰編著---文魁資訊13VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)功能模擬與CPL單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板(續(xù))此外,LP-2900實(shí)驗(yàn)板上所提供的振盪時(shí)脈為10MHz,我們想要除頻產(chǎn)生50Hz的計(jì)數(shù)時(shí)脈信號(hào)就必需將除頻器程式碼(clk_div_step.vhd)中的divisor設(shè)定為200000(100000000Hz/200000=50Hz)-------------------------------------------------------------------entityclk_div_stepisgeneric(divisor:integer:=200000);--將divisor設(shè)定為200000

port(clk_in:instd_logic;clk_out:outstd_logic);endclk_div_step;----------------------------------------------------------------------------

輸入clock

腳位55

輸出Step(3)Step(2)Step(1)Step(0)腳位37383941陳慶逸、林柏辰編著---文魁資訊14VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-1步進(jìn)馬達(dá)全步控制(一相激磁)實(shí)習(xí)功能模擬與CPL單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)相關(guān)知識(shí)二相激磁的控制方法是每次都讓兩個(gè)線圈通過(guò)電流,每一個(gè)步驟可以移動(dòng)一個(gè)步進(jìn)角:

線圈控制狀態(tài)轉(zhuǎn)動(dòng)方向順時(shí)針逆時(shí)針11100201103001141001陳慶逸、林柏辰編著---文魁資訊15VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)相關(guān)知識(shí)

線圈控單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)實(shí)驗(yàn)電路圖陳慶逸、林柏辰編著---文魁資訊16VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)實(shí)驗(yàn)電路圖陳慶單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)

程式與說(shuō)明步進(jìn)馬達(dá)全步控制(二相激磁)程式碼

12entitystepmotor_fullbis13port(14clk:instd_logic;15step:outstd_logic_vector(3downto0)16);17endstepmotor_fullb;1819architecturearchofstepmotor_fullbis20signalcnt:std_logic_vector(1downto0);21begin2223----------process---------24process(clk)25begin26ifclk'eventandclk='1'then27cnt<=cnt+1;28endif;29endprocess;3031step<="1100"whencnt=0else32"0110"whencnt=1else33"0011"whencnt=2else34"1001";35endarch;陳慶逸、林柏辰編著---文魁資訊17VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)

程式與說(shuō)明12單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)程式與說(shuō)明除頻器程式碼(將1.8432MHz除頻產(chǎn)生50Hz輸出):13entityclk_div_stepis14generic(divisor:integer:=36864);15port(16clk_in:instd_logic;17clk_out:outstd_logic18);19endclk_div_step;2021architecturearchofclk_div_stepis22signalcnt2:std_logic;23begin24----------clkdivider----------25process(clk_in)26variablecnt1,divisor2:integerrange0todivisor;27begin28divisor2:=divisor/2;29-----upcounter-----30if(clk_in'eventandclk_in='1')then31ifcnt1=divisorthen32cnt1:=1;33else34cnt1:=cnt1+1;35endif;

36endif;37-----clk_outregisterclkgenerator-----38if(clk_in'eventandclk_in='1')then39if((cnt1=divisor2)or(cnt1=divisor))then40cnt2<=notcnt2;41endif;42endif;43clk_out<=cnt2;44endprocess;45endarch;46陳慶逸、林柏辰編著---文魁資訊18VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)程式與說(shuō)明13

單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)程式與說(shuō)明主程式之電路連線圖:陳慶逸、林柏辰編著---文魁資訊19VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)

單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)程式與說(shuō)明陳慶單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證

燒錄於力浦電子FPT-3實(shí)驗(yàn)板

輸入clock

腳位43

輸出Step(3)Step(2)Step(1)Step(0)腳位4568調(diào)整JumperJ2的位置由IO0~IO3拉出激磁信號(hào)線接上5V

直流電源進(jìn)行步進(jìn)馬達(dá)實(shí)驗(yàn)時(shí),我們需要把CPLD的I/O延伸出來(lái)以外接FT5754和步進(jìn)馬達(dá)等周邊元件,因此我們可以將FPT-3實(shí)驗(yàn)板上的jumperJ2由原本的1、2PIN腳(InternalI/OON)改套到2、3PIN腳上(ExternalI/OON),再?gòu)膶?shí)驗(yàn)板右邊CON1上將IO0~IO3這幾個(gè)PIN腳跳線到麵包板上即可得到所需的激磁信號(hào)。另外FT5754和步進(jìn)馬達(dá)線圈共同點(diǎn)所需的電源必須與實(shí)驗(yàn)板上接出來(lái)的信號(hào)具有共同的地電位,這也是實(shí)驗(yàn)中要留意的地方。陳慶逸、林柏辰編著---文魁資訊20VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)功能模擬與CPL單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板欲將程式檔案燒錄於力浦電子LP-2900實(shí)驗(yàn)板時(shí),我們必須由實(shí)驗(yàn)板上拉出FT5754和步進(jìn)馬達(dá)所需的正、負(fù)電源,並由CPLD-EPF10K10CHIP-BOARD上預(yù)留的焊孔以單心線拉出激磁信號(hào)(step(3)~setp(0)):陳慶逸、林柏辰編著---文魁資訊21VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)功能模擬與CPL單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板(續(xù))此外,LP-2900實(shí)驗(yàn)板上所提供的振盪時(shí)脈為10MHz,我們想要除頻產(chǎn)生50Hz的計(jì)數(shù)時(shí)脈信號(hào)就必需將除頻器程式碼(clk_div_step.vhd)中的divisor設(shè)定為200000(100000000Hz/200000=50Hz)-------------------------------------------------------------------entityclk_div_stepisgeneric(divisor:integer:=200000);--將divisor設(shè)定為200000

port(clk_in:instd_logic;clk_out:outstd_logic);endclk_div_step;----------------------------------------------------------------------------

輸入clock

腳位55

輸出Step(3)Step(2)Step(1)Step(0)腳位37383941陳慶逸、林柏辰編著---文魁資訊22VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-2步進(jìn)馬達(dá)全步控制(二相激磁)實(shí)習(xí)功能模擬與CPL單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)相關(guān)知識(shí)一二相激磁的作法是以一相激磁和二相激磁來(lái)交替控制,在定子繞組切換激磁線圈電壓時(shí),仍有一個(gè)線圈上有電流通過(guò),可保持一定的力矩以維持運(yùn)轉(zhuǎn)上的平穩(wěn),而其耗電量又比二相激磁來(lái)得節(jié)省。一二相激磁每次可以移動(dòng)半個(gè)步進(jìn)角,其激磁的控制順序如下:

線圈控制狀態(tài)轉(zhuǎn)動(dòng)方向順時(shí)針逆時(shí)針1100021100301004011050010600117000181001陳慶逸、林柏辰編著---文魁資訊23VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)相關(guān)知識(shí)

線單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)實(shí)驗(yàn)電路圖陳慶逸、林柏辰編著---文魁資訊24VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)實(shí)驗(yàn)電路圖陳單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)

程式與說(shuō)明步進(jìn)馬達(dá)半步控制(一二相激磁)程式碼

12entitystepmotor_halfis13port(14clk:instd_logic;15step:outstd_logic_vector(3downto0)16);17endstepmotor_half;1819architecturearchofstepmotor_halfis20signalcnt:std_logic_vector(2downto0);21begin2223----------process---------24process(clk)25begin26ifclk'eventandclk='1'then27cnt<=cnt+1;28endif;29endprocess;3031step<="1000"whencnt=0else32"1100"whencnt=1else33"0100"whencnt=2else34"0110"whencnt=3else35"0010"whencnt=4else36"0011"whencnt=5else37"0001"whencnt=6else38"1001";39endarch;

陳慶逸、林柏辰編著---文魁資訊25VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)

程式與說(shuō)明1單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)程式與說(shuō)明除頻器程式碼(將1.8432MHz除頻產(chǎn)生50Hz輸出):13entityclk_div_stepis14generic(divisor:integer:=36864);15port(16clk_in:instd_logic;17clk_out:outstd_logic18);19endclk_div_step;2021architecturearchofclk_div_stepis22signalcnt2:std_logic;23begin24----------clkdivider----------25process(clk_in)26variablecnt1,divisor2:integerrange0todivisor;27begin28divisor2:=divisor/2;29-----upcounter-----30if(clk_in'eventandclk_in='1')then31ifcnt1=divisorthen32cnt1:=1;33else34cnt1:=cnt1+1;35endif;

36endif;37-----clk_outregisterclkgenerator-----38if(clk_in'eventandclk_in='1')then39if((cnt1=divisor2)or(cnt1=divisor))then40cnt2<=notcnt2;41endif;42endif;43clk_out<=cnt2;44endprocess;45endarch;46陳慶逸、林柏辰編著---文魁資訊26VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)程式與說(shuō)明13

單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)程式與說(shuō)明主程式之電路連線圖:陳慶逸、林柏辰編著---文魁資訊27VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)

單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)程式與說(shuō)明陳單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證

燒錄於力浦電子FPT-3實(shí)驗(yàn)板

輸入clock

腳位43

輸出Step(3)Step(2)Step(1)Step(0)腳位4568調(diào)整JumperJ2的位置由IO0~IO3拉出激磁信號(hào)線接上5V

直流電源進(jìn)行步進(jìn)馬達(dá)實(shí)驗(yàn)時(shí),我們需要把CPLD的I/O延伸出來(lái)以外接FT5754和步進(jìn)馬達(dá)等周邊元件,因此我們可以將FPT-3實(shí)驗(yàn)板上的jumperJ2由原本的1、2PIN腳(InternalI/OON)改套到2、3PIN腳上(ExternalI/OON),再?gòu)膶?shí)驗(yàn)板右邊CON1上將IO0~IO3這幾個(gè)PIN腳跳線到麵包板上即可得到所需的激磁信號(hào)。另外FT5754和步進(jìn)馬達(dá)線圈共同點(diǎn)所需的電源必須與實(shí)驗(yàn)板上接出來(lái)的信號(hào)具有共同的地電位,這也是實(shí)驗(yàn)中要留意的地方。陳慶逸、林柏辰編著---文魁資訊28VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)功能模擬與CP單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板欲將程式檔案燒錄於力浦電子LP-2900實(shí)驗(yàn)板時(shí),我們必須由實(shí)驗(yàn)板上拉出FT5754和步進(jìn)馬達(dá)所需的正、負(fù)電源,並由CPLD-EPF10K10CHIP-BOARD上預(yù)留的焊孔以單心線拉出激磁信號(hào)(step(3)~setp(0)):陳慶逸、林柏辰編著---文魁資訊29VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)功能模擬與CP單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板(續(xù))此外,LP-2900實(shí)驗(yàn)板上所提供的振盪時(shí)脈為10MHz,我們想要除頻產(chǎn)生50Hz的計(jì)數(shù)時(shí)脈信號(hào)就必需將除頻器程式碼(clk_div_step.vhd)中的divisor設(shè)定為200000(100000000Hz/200000=50Hz)-------------------------------------------------------------------entityclk_div_stepisgeneric(divisor:integer:=200000);--將divisor設(shè)定為200000

port(clk_in:instd_logic;clk_out:outstd_logic);endclk_div_step;----------------------------------------------------------------------------

輸入clock

腳位55

輸出Step(3)Step(2)Step(1)Step(0)腳位37383941陳慶逸、林柏辰編著---文魁資訊30VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-3步進(jìn)馬達(dá)半步控制(一二相激磁)實(shí)習(xí)功能模擬與CP單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)相關(guān)知識(shí)本實(shí)驗(yàn)中,我們將設(shè)計(jì)一個(gè)可以控制上、下數(shù)計(jì)數(shù)功能的DIR鍵來(lái)控制步進(jìn)馬達(dá)一相激磁之正反轉(zhuǎn)上、下數(shù)動(dòng)作之控制程式碼的寫(xiě)法如下:

ifclk'eventandclk='1'thenifdir='1'thencnt<=cnt+1;elsecnt<=cnt-1;endif;endif;

陳慶逸、林柏辰編著---文魁資訊31VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)相關(guān)知識(shí)ifcl單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)實(shí)驗(yàn)電路圖陳慶逸、林柏辰編著---文魁資訊32VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)實(shí)驗(yàn)電路圖陳慶逸、林柏辰編單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)

程式與說(shuō)明步進(jìn)馬達(dá)轉(zhuǎn)向控制程式碼

11entitystepmotor_diris12port(13clk:instd_logic;14dir:instd_logic;15step:outstd_logic_vector(3downto0)16);17endstepmotor_dir;1819architecturearchofstepmotor_diris20signalcnt:std_logic_vector(1downto0);21begin2223----------process---------24process(clk)25begin26ifclk'eventandclk='1'then27ifdir='1'then28cnt<=cnt+1;29else30cnt<=cnt-1;31endif;32endif;33endprocess;3435step<="1000"whencnt=0else36"0100"whencnt=1else37"0010"whencnt=2else38"0001";39endarch;

陳慶逸、林柏辰編著---文魁資訊33VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)

程式與說(shuō)明11entit單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)程式與說(shuō)明除頻器程式碼(將1.8432MHz除頻產(chǎn)生50Hz輸出):13entityclk_div_stepis14generic(divisor:integer:=36864);15port(16clk_in:instd_logic;17clk_out:outstd_logic18);19endclk_div_step;2021architecturearchofclk_div_stepis22signalcnt2:std_logic;23begin24----------clkdivider----------25process(clk_in)26variablecnt1,divisor2:integerrange0todivisor;27begin28divisor2:=divisor/2;29-----upcounter-----30if(clk_in'eventandclk_in='1')then31ifcnt1=divisorthen32cnt1:=1;33else34cnt1:=cnt1+1;35endif;

36endif;37-----clk_outregisterclkgenerator-----38if(clk_in'eventandclk_in='1')then39if((cnt1=divisor2)or(cnt1=divisor))then40cnt2<=notcnt2;41endif;42endif;43clk_out<=cnt2;44endprocess;45endarch;46陳慶逸、林柏辰編著---文魁資訊34VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)程式與說(shuō)明13entit

單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)程式與說(shuō)明主程式之電路連線圖:陳慶逸、林柏辰編著---文魁資訊35VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)

單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)程式與說(shuō)明陳慶逸、林柏辰編單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證

燒錄於力浦電子FPT-3實(shí)驗(yàn)板

輸入clockdir

腳位4337

輸出Step(3)Step(2)Step(1)Step(0)腳位4568進(jìn)行步進(jìn)馬達(dá)實(shí)驗(yàn)時(shí),我們需要把CPLD的I/O延伸出來(lái)以外接FT5754和步進(jìn)馬達(dá)等周邊元件,因此我們可以將FPT-3實(shí)驗(yàn)板上的jumperJ2由原本的1、2PIN腳(InternalI/OON)改套到2、3PIN腳上(ExternalI/OON),再?gòu)膶?shí)驗(yàn)板右邊CON1上將IO0~IO3這幾個(gè)PIN腳跳線到麵包板上即可得到所需的激磁信號(hào)。另外FT5754和步進(jìn)馬達(dá)線圈共同點(diǎn)所需的電源必須與實(shí)驗(yàn)板上接出來(lái)的信號(hào)具有共同的地電位,這也是實(shí)驗(yàn)中要留意的地方。調(diào)整JumperJ2的位置由IO0~IO3拉出激磁信號(hào)線接上5V

直流電源正反轉(zhuǎn)控制

陳慶逸、林柏辰編著---文魁資訊36VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板

陳慶逸、林柏辰編著---文魁資訊37VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證陳單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板(續(xù))此外,LP-2900實(shí)驗(yàn)板上所提供的振盪時(shí)脈為10MHz,我們想要除頻產(chǎn)生50Hz的計(jì)數(shù)時(shí)脈信號(hào)就必需將除頻器程式碼(clk_div_step.vhd)中的divisor設(shè)定為200000(100000000Hz/200000=50Hz)-------------------------------------------------------------------entityclk_div_stepisgeneric(divisor:integer:=200000);--將divisor設(shè)定為200000

port(clk_in:instd_logic;clk_out:outstd_logic);endclk_div_step;----------------------------------------------------------------------------

輸入clock

dir

腳位5547

輸出Step(3)Step(2)Step(1)Step(0)腳位37383941陳慶逸、林柏辰編著---文魁資訊38VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-4步進(jìn)馬達(dá)轉(zhuǎn)向控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)相關(guān)知識(shí)本實(shí)驗(yàn)中,我們以DIR鍵來(lái)控制步進(jìn)馬達(dá)之正反轉(zhuǎn)動(dòng)作;另外再利用sel鍵來(lái)作步進(jìn)馬達(dá)全步控制或半步控制的選擇。實(shí)驗(yàn)功能DIR=‘1’時(shí),步進(jìn)馬達(dá)正轉(zhuǎn);DIR=‘0’時(shí),步進(jìn)馬達(dá)反轉(zhuǎn)。Sel=‘1’時(shí),執(zhí)行全步控制(二相激磁);Sel=‘0’時(shí),執(zhí)行半步控制(一二相激磁)。陳慶逸、林柏辰編著---文魁資訊39VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)相關(guān)知識(shí)實(shí)驗(yàn)單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)實(shí)驗(yàn)電路圖陳慶逸、林柏辰編著---文魁資訊40VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)實(shí)驗(yàn)電路圖陳單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)

程式與說(shuō)明步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制程式碼12entitystepmotor_dirselis13port(14clk:instd_logic;15dir:instd_logic;16sel:instd_logic;17step:outstd_logic_vector(3downto0)18);19endstepmotor_dirsel;2021architecturearchofstepmotor_dirselis22signalcnt:std_logic_vector(2downto0);23begin2425process(clk)26begin27ifclk'eventandclk='1'then28ifdir='1'then29cnt<=cnt+1;30else31cnt<=cnt-1;32endif;endif;34endprocess;3536process(cnt,sel)37begin38ifsel='1'then39casecntis40when"000"=>step<="1100";41when"001"=>step<="0110";42when"010"=>step<="0011";43when"011"=>step<="1001";44when"100"=>step<="1100";45when"101"=>step<="0110";46when"110"=>step<="0011";47when"111"=>step<="1001";48whenothers=>null;49endcase;50else陳慶逸、林柏辰編著---文魁資訊41VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)

程式與說(shuō)明1單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)程式與說(shuō)明步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制程式碼(續(xù))51casecntis52when"000"=>step<="1000";53when"001"=>step<="1100";54when"010"=>step<="0100";55when"011"=>step<="0110";56when"100"=>step<="0010";57when"101"=>step<="0011";58when"110"=>step<="0001";59when"111"=>step<="1001";60whenothers=>null;61endcase;62endif;63endprocess;64endarch;

陳慶逸、林柏辰編著---文魁資訊42VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)程式與說(shuō)明51單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)程式與說(shuō)明除頻器程式碼(將1.8432MHz除頻產(chǎn)生50Hz輸出):13entityclk_div_stepis14generic(divisor:integer:=36864);15port(16clk_in:instd_logic;17clk_out:outstd_logic18);19endclk_div_step;2021architecturearchofclk_div_stepis22signalcnt2:std_logic;23begin24----------clkdivider----------25process(clk_in)26variablecnt1,divisor2:integerrange0todivisor;27begin28divisor2:=divisor/2;29-----upcounter-----30if(clk_in'eventandclk_in='1')then31ifcnt1=divisorthen32cnt1:=1;33else34cnt1:=cnt1+1;35endif;

36endif;37-----clk_outregisterclkgenerator-----38if(clk_in'eventandclk_in='1')then39if((cnt1=divisor2)or(cnt1=divisor))then40cnt2<=notcnt2;41endif;42endif;43clk_out<=cnt2;44endprocess;45endarch;46陳慶逸、林柏辰編著---文魁資訊43VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)程式與說(shuō)明13

單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)程式與說(shuō)明主程式之電路連線圖:陳慶逸、林柏辰編著---文魁資訊44VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)

單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)程式與說(shuō)明陳單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證

燒錄於力浦電子FPT-3實(shí)驗(yàn)板

輸入clockdir

sel

腳位433738

輸出Step(3)Step(2)Step(1)Step(0)腳位4568調(diào)整JumperJ2的位置由IO0~IO3拉出激磁信號(hào)線接上5V

直流電源正反轉(zhuǎn)控制

全半步控制

陳慶逸、林柏辰編著---文魁資訊45VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)功能模擬與CP單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板

陳慶逸、林柏辰編著---文魁資訊46VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)功能模擬與CP單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板(續(xù))此外,LP-2900實(shí)驗(yàn)板上所提供的振盪時(shí)脈為10MHz,我們想要除頻產(chǎn)生50Hz的計(jì)數(shù)時(shí)脈信號(hào)就必需將除頻器程式碼(clk_div_step.vhd)中的divisor設(shè)定為200000(100000000Hz/200000=50Hz)-------------------------------------------------------------------entityclk_div_stepisgeneric(divisor:integer:=200000);--將divisor設(shè)定為200000

port(clk_in:instd_logic;clk_out:outstd_logic);endclk_div_step;----------------------------------------------------------------------------

輸入clock

dir

sel

腳位5547

48

輸出Step(3)Step(2)Step(1)Step(0)腳位37383941陳慶逸、林柏辰編著---文魁資訊47VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-5步進(jìn)馬達(dá)轉(zhuǎn)向與全步半步選擇控制實(shí)習(xí)功能模擬與CP單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)相關(guān)知識(shí)以一般的計(jì)數(shù)器除N之除頻電路來(lái)說(shuō),1KHz(1000Hz)的頻率除一所得到的頻率為1000Hz、除二得到500Hz、除三得到333Hz、除四得到250Hz、除五得到200Hz、…,除八得到125Hz,我們可以很清楚的發(fā)現(xiàn)除N的除頻電路所得到的頻率切割結(jié)果並非是均勻分布的。陳慶逸、林柏辰編著---文魁資訊48VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)相關(guān)知識(shí)陳慶逸、林柏辰編著單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)積分除頻電路若改以連續(xù)累加某一數(shù)值的方式來(lái)執(zhí)行積分計(jì)算時(shí),每當(dāng)計(jì)數(shù)器的最高位元發(fā)生變化時(shí)(0變1或1變0),就送出一個(gè)CLK信號(hào),便可使得不同除頻器之間所分割的頻率變成較為均勻的分布。首先,我們先實(shí)現(xiàn)下面的積分除頻電路,並從分析幾個(gè)例子的時(shí)序圖來(lái)分析與理解積分除頻電路的原理:6entitystepmotor_speedisport(clk:instd_logic;--輸入週期時(shí)脈spd:instd_logic_vector(2downto0);--輸入連續(xù)累加值clk_new:outstd_logic);--輸出CLK信號(hào)10endstepmotor_speed;1112architecturearchofstepmotor_speedissignalbuf:std_logic_vector(3downto0);--四位元積分器14signaldly:std_logic;15begin16----------process---------17process(clk)18begin19ifclk'eventandclk='1'then20dly<=buf(3);--延遲電路buf<=buf+('0'&spd);--積分器加上預(yù)設(shè)之輸入累加值22endif;23endprocess;24clk_new<=(buf(3)xordly)andnotclk;--輸出微分電路2627endarch;陳慶逸、林柏辰編著---文魁資訊49VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)積分除頻電路6ent單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)積分除頻電路(續(xù))Buf3在8個(gè)時(shí)脈週期中總共發(fā)生了4次的0->1或1->0的變化。利用微分的原理,讓Buf3的值每發(fā)生一次0、1的變化時(shí)就送出一個(gè)CLK。8個(gè)時(shí)脈中共送出4個(gè)CLK。0110011001011010Buf3在8個(gè)時(shí)脈週期中總共發(fā)生了6次的0->1或1->0的變化。利用微分的原理,讓Buf3的值每發(fā)生一次0、1的變化時(shí)就送出一個(gè)CLK。8個(gè)時(shí)脈中共送出6個(gè)CLK。積分除頻電路動(dòng)作原理(累加值為4)積分除頻電路動(dòng)作原理(累加值為6)陳慶逸、林柏辰編著---文魁資訊50VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)積分除頻電路(續(xù))Buf3在單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)積分除頻電路(續(xù))積分除頻電路所得到的頻率分割曲線陳慶逸、林柏辰編著---文魁資訊51VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)積分除頻電路(續(xù))陳慶逸、林單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)實(shí)驗(yàn)電路圖陳慶逸、林柏辰編著---文魁資訊52VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)實(shí)驗(yàn)電路圖陳慶逸、林柏辰編單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)

程式與說(shuō)明步進(jìn)馬達(dá)轉(zhuǎn)速控制程式碼12entitystepmotor_speedis13port(14clk:instd_logic;15spd:instd_logic_vector(3downto0);16step:outstd_logic_vector(3downto0)17);18endstepmotor_speed;1920architecturearchofstepmotor_speedis21signalbuf:std_logic_vector(4downto0);22signaldly:std_logic;23signalclk_new:std_logic;24signalcnt:std_logic_vector(1downto0);25begin26----------process---------27process(clk)28begin29ifclk'eventandclk='1'then30dly<=buf(4);31buf<=buf+('0'&spd);32endif;33endprocess;34clk_new<=(buf(4)xordly)andnotclk;

35process(clk_new)36begin37ifclk_new'eventandclk_new='1'then38cnt<=cnt+1;39endif;40endprocess;41step<="1000"whencnt=0else42"0100"whencnt=1else43"0010"whencnt=2else44"0001";45endarch;

陳慶逸、林柏辰編著---文魁資訊53VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)

程式與說(shuō)明12entit單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)程式與說(shuō)明除頻器程式碼(將1.8432MHz除頻產(chǎn)生50Hz輸出):13entityclk_div_stepis14generic(divisor:integer:=36864);15port(16clk_in:instd_logic;17clk_out:outstd_logic18);19endclk_div_step;2021architecturearchofclk_div_stepis22signalcnt2:std_logic;23begin24----------clkdivider----------25process(clk_in)26variablecnt1,divisor2:integerrange0todivisor;27begin28divisor2:=divisor/2;29-----upcounter-----30if(clk_in'eventandclk_in='1')then31ifcnt1=divisorthen32cnt1:=1;33else34cnt1:=cnt1+1;35endif;

36endif;37-----clk_outregisterclkgenerator-----38if(clk_in'eventandclk_in='1')then39if((cnt1=divisor2)or(cnt1=divisor))then40cnt2<=notcnt2;41endif;42endif;43clk_out<=cnt2;44endprocess;45endarch;46陳慶逸、林柏辰編著---文魁資訊54VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)程式與說(shuō)明13entit

單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)程式與說(shuō)明主程式之電路連線圖:陳慶逸、林柏辰編著---文魁資訊55VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)

單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)程式與說(shuō)明陳慶逸、林柏辰編單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證

燒錄於力浦電子FPT-3實(shí)驗(yàn)板

輸入clockSpd(3)Spd(2)Spd(1)Spd(0)腳位4336(DIP5)1(DIP6)44(DIP7)2(DIP8)輸出Step(3)Step(2)Step(1)Step(0)

腳位4568

轉(zhuǎn)速控制調(diào)整JumperJ2的位置由IO0~IO3拉出激磁信號(hào)線陳慶逸、林柏辰編著---文魁資訊56VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板

陳慶逸、林柏辰編著---文魁資訊57VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證陳單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板(續(xù))此外,LP-2900實(shí)驗(yàn)板上所提供的振盪時(shí)脈為10MHz,我們想要除頻產(chǎn)生50Hz的計(jì)數(shù)時(shí)脈信號(hào)就必需將除頻器程式碼(clk_div_step.vhd)中的divisor設(shè)定為200000(100000000Hz/200000=50Hz)-------------------------------------------------------------------entityclk_div_stepisgeneric(divisor:integer:=200000);--將divisor設(shè)定為200000

port(clk_in:instd_logic;clk_out:outstd_logic);endclk_div_step;----------------------------------------------------------------------------

輸入clockSpd(3)Spd(2)Spd(1)Spd(0)腳位5547(SW1)48(SW2)49(SW3)51(SW4)輸出Step(3)Step(2)Step(1)Step(0)

腳位37383941

陳慶逸、林柏辰編著---文魁資訊58VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-6步進(jìn)馬達(dá)轉(zhuǎn)速控制實(shí)習(xí)功能模擬與CPLD下載驗(yàn)證單元9-7步進(jìn)馬達(dá)步進(jìn)數(shù)控制實(shí)習(xí)相關(guān)知識(shí)由於其輸入的激磁脈波與輸出的角度成正比關(guān)係,因此只要決定步進(jìn)馬達(dá)的步進(jìn)數(shù)就能將之應(yīng)用在定位控制上程式中之步進(jìn)馬達(dá)使用一相激磁的全步控制,我們?cè)O(shè)定pos為一個(gè)四位元大小的輸入值,它可決定步進(jìn)馬達(dá)一相激磁的循環(huán)(->->->)次數(shù)。例如當(dāng)pos=8時(shí),步進(jìn)馬達(dá)應(yīng)可移動(dòng)8x4(一個(gè)循環(huán)為四個(gè)激磁脈波)=32個(gè)步進(jìn)數(shù)。cnt_p在程式中記錄著步進(jìn)馬達(dá)全步控制的循環(huán)次數(shù),每當(dāng)完成一個(gè)循環(huán)的激磁動(dòng)作之後其值就累加1,直到cnt_p<pos這個(gè)條件不成立時(shí)即便停止動(dòng)作。陳慶逸、林柏辰編著---文魁資訊59VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-7步進(jìn)馬達(dá)步進(jìn)數(shù)控制實(shí)習(xí)相關(guān)知識(shí)陳慶逸、林柏辰編單元9-7步進(jìn)馬達(dá)步進(jìn)數(shù)控制實(shí)習(xí)實(shí)驗(yàn)功能設(shè)定不同的pos輸入值(四位元),步進(jìn)馬達(dá)便會(huì)在執(zhí)行完pos數(shù)值大小的激磁循環(huán)週期後停止。實(shí)驗(yàn)電路圖陳慶逸、林柏辰編著---文魁資訊60VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-7步進(jìn)馬達(dá)步進(jìn)數(shù)控制實(shí)習(xí)實(shí)驗(yàn)功能實(shí)驗(yàn)電路圖陳慶單元9-7步進(jìn)馬達(dá)步進(jìn)數(shù)控制實(shí)習(xí)

程式與說(shuō)明步進(jìn)馬達(dá)轉(zhuǎn)速控制程式碼12entitystepmotor_positionis13port(14clk:instd_logic;15pos:instd_logic_vector(3downto0);16step:outstd_logic_vector(3downto0)17);18endstepmotor_position;1920architecturearchofstepmotor_positionis21signalcnt:std_logic_vector(1downto0);22signalcnt_p:std_logic_vector(3downto0);23begin24----------process---------

25process(clk)26begin27ifclk'eventandclk='1'then28ifcnt_p<posthen29ifcnt=3then30cnt_p<=cnt_p+1;31cnt<="00";32else33cnt<=cnt+1;34endif;35endif;36endif;37endprocess;38step<="1000"whencnt=0else39"0100"whencnt=1else40"0010"whencnt=2else41"0001";42endarch;

陳慶逸、林柏辰編著---文魁資訊61VHDL數(shù)位電路實(shí)習(xí)與專(zhuān)題設(shè)計(jì)單元9-7步進(jìn)馬達(dá)步進(jìn)數(shù)控制實(shí)習(xí)

程式與說(shuō)明12enti單元9-7步進(jìn)馬達(dá)步進(jìn)數(shù)控制實(shí)習(xí)程式與說(shuō)明除頻器程式碼(將1.8432MHz除頻產(chǎn)生50Hz輸出):13entityclk_div_stepis14generic(divisor:integer:=36864);15port(16clk_in:instd_logic;17clk_out:outstd_logic18);19endclk_div_step;2021architecturearchofclk_div_stepis22signalcnt2:std_logic;23begin24----------clkdivider----------25process(clk_in)26variablecnt1,divisor2:integerrange0todivisor;27begin28divisor2:=divisor/2;29-----

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論