當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]一、實(shí)驗(yàn)?zāi)康暮鸵蟆 ≌莆彰}寬調(diào)制調(diào)速的原理與方法,學(xué)習(xí)頻率/周期測(cè)量的方法,了解閉環(huán)控制的原理。二、實(shí)驗(yàn)設(shè)備  單片機(jī)測(cè)控實(shí)驗(yàn)系統(tǒng)  直流電機(jī)調(diào)速實(shí)驗(yàn)?zāi)K  Keil開(kāi)發(fā)環(huán)境  STC-ISP程序下載工具三、實(shí)

一、實(shí)驗(yàn)?zāi)康暮鸵?br/>

  掌握脈寬調(diào)制調(diào)速的原理與方法,學(xué)習(xí)頻率/周期測(cè)量的方法,了解閉環(huán)控制的原理。

二、實(shí)驗(yàn)設(shè)備

  單片機(jī)測(cè)控實(shí)驗(yàn)系統(tǒng)
  直流電機(jī)調(diào)速實(shí)驗(yàn)?zāi)K
  Keil開(kāi)發(fā)環(huán)境
  STC-ISP程序下載工具

三、實(shí)驗(yàn)內(nèi)容  

  1. 編寫程序,能夠在數(shù)碼管上顯示一個(gè)數(shù)值。
  2. 固定向P1.1輸出0,然后測(cè)量每秒鐘電機(jī)轉(zhuǎn)動(dòng)的轉(zhuǎn)數(shù),將其顯示在數(shù)碼管,每秒刷新一次即可。
  3. 使用脈寬調(diào)制的方法,動(dòng)態(tài)調(diào)整向P1.1輸出的內(nèi)容,使得電機(jī)轉(zhuǎn)速能夠穩(wěn)定在一個(gè)預(yù)定值附近,同時(shí)實(shí)時(shí)顯示當(dāng)前轉(zhuǎn)速。
  4. 根據(jù)輸入修改電機(jī)轉(zhuǎn)速目標(biāo)值,設(shè)置兩個(gè)轉(zhuǎn)速目標(biāo)值:低轉(zhuǎn)速和高轉(zhuǎn)速。
  5. 每隔一秒鐘讀取兩個(gè)開(kāi)關(guān)的狀態(tài),如果S1按下,動(dòng)態(tài)調(diào)整輸出,使得電機(jī)轉(zhuǎn)速能夠穩(wěn)定到低轉(zhuǎn)速目標(biāo)值附近,如果S2按下,動(dòng)態(tài)調(diào)整輸出,使得電機(jī)轉(zhuǎn)速能夠穩(wěn)定到高轉(zhuǎn)速目標(biāo)值附近。交替顯示目標(biāo)值和當(dāng)前轉(zhuǎn)速值。

四、實(shí)驗(yàn)步驟

1. 建立工程,實(shí)現(xiàn)實(shí)驗(yàn)內(nèi)容1

  參考輔助材料,學(xué)習(xí)8031匯編語(yǔ)言使用和直流電機(jī)原理?! ?/p>

2. 編寫中斷程序,測(cè)量電機(jī)轉(zhuǎn)速

  本程序需要使用定時(shí)器定時(shí),并使用中斷來(lái)同步。中斷程序的典型例子如下: 

ORG 0000H
LJMP START
ORG 000BH
LJMP T0IN ;中斷向量表
ORG 0040H
START: ...;初始化
...
T0IN: ...;中斷程序
...
RETI ;中斷返回
END

3. 完成控制轉(zhuǎn)速程序

  按照脈寬調(diào)制的原理,再添加一個(gè)快速的定時(shí)中斷(0.1ms左右),在這個(gè)中斷里面動(dòng)態(tài)改變P1.1的輸出,宏觀上輸出有效(0)的比例就是預(yù)定的控制變量。這個(gè)控制變量增大,電機(jī)轉(zhuǎn)速就應(yīng)該提高,但由于各種內(nèi)部和外部因素,它們之間不存在簡(jiǎn)單的函數(shù)關(guān)系,因此必須根據(jù)測(cè)量出來(lái)的實(shí)際轉(zhuǎn)速進(jìn)行動(dòng)態(tài)調(diào)整。

  首先將電機(jī)轉(zhuǎn)速控制在一個(gè)預(yù)定數(shù)值附近,在每一個(gè)1秒鐘中斷測(cè)量出當(dāng)前轉(zhuǎn)速之后,將其與目標(biāo)值相對(duì)比,如果不夠則增加控制變量,否則減少之,這樣就能逐步達(dá)到穩(wěn)定轉(zhuǎn)速的目的。同時(shí)將速度顯示出來(lái)。

4. 完成整體實(shí)驗(yàn)內(nèi)容

  在上面程序的基礎(chǔ)上,再加上根據(jù)開(kāi)關(guān)狀態(tài)改變預(yù)定轉(zhuǎn)速的代碼。同時(shí),在主程序中交替顯示目標(biāo)值和當(dāng)前轉(zhuǎn)速值,顯示一個(gè)內(nèi)容之后等待一段時(shí)間(可以由延時(shí)代碼實(shí)現(xiàn)),然后再顯示另一個(gè)并延時(shí)。要顯示的內(nèi)容都是在中斷中被修改的。

五、實(shí)驗(yàn)原理

本實(shí)驗(yàn)示意電路原理圖(圖中的P1.3應(yīng)改為P1.1):

  對(duì)于直流電機(jī)來(lái)說(shuō),其轉(zhuǎn)速由輸入電壓決定,因此具有平滑調(diào)速的效果;相比而言,交流電機(jī)的轉(zhuǎn)速由交流電頻率和電機(jī)結(jié)構(gòu)決定,難以改變速度。當(dāng)然,交流電機(jī)構(gòu)造簡(jiǎn)單,沒(méi)有換向器,所以容易制造高轉(zhuǎn)速、高電壓、大電流、大容量的電機(jī);而直流電機(jī)一般用在負(fù)荷小,但要求轉(zhuǎn)速連續(xù)可調(diào)的場(chǎng)合,如伺服電機(jī)。

  脈寬調(diào)制(Pulse Width Modulation,PWM)是一種能夠通過(guò)開(kāi)關(guān)量輸出達(dá)到模擬量輸出效果的方法。使用PWM可以實(shí)現(xiàn)頻率調(diào)制、電壓調(diào)制等效果,并且需要的外圍器件較少,特別適合于單片機(jī)控制領(lǐng)域。這里只關(guān)心通過(guò)PWM實(shí)現(xiàn)電壓調(diào)制,從而控制直流電機(jī)轉(zhuǎn)速的效果。也稱作脈寬調(diào)制調(diào)速。

  PWM的基本原理是通過(guò)輸出一個(gè)很高頻率的0/1信號(hào),其中1的比例為δ(也叫做占空比),在外圍積分元件的作用下,使得總的效果相當(dāng)于輸出δ×A(A為高電平電壓)的電壓。通過(guò)改變占空比就可以調(diào)整輸出電壓,從而達(dá)到模擬輸出并控制電機(jī)轉(zhuǎn)速的效果。

  使用單片機(jī)實(shí)現(xiàn)PWM,就是根據(jù)預(yù)定的占空比δ來(lái)輸出0和1,這里δ就是控制變量。最簡(jiǎn)單的辦法就是以某個(gè)時(shí)間單位(如0.1ms,相當(dāng)于10kHz)為基準(zhǔn),在前N段輸出1,后M-N段輸出0,總體的占空比就是N/M。這種方法由于0和1分布不均勻,所以要求基準(zhǔn)頻率要足夠高,否則會(huì)出現(xiàn)顛簸現(xiàn)象。

  要達(dá)到更穩(wěn)定的效果,可以采用累加進(jìn)位法如果將總的周期內(nèi)的0和1均勻分散開(kāi)。設(shè)置一個(gè)累加變量x,每次加N,若結(jié)果大于M,則輸出1,并減去M;否則輸出0。這樣整體的占空比也是N/M。在實(shí)驗(yàn)中取M=256可以使程序更加簡(jiǎn)單。

  另外,由于本實(shí)驗(yàn)板的設(shè)計(jì),輸出0使電機(jī)工作。因此對(duì)于本實(shí)驗(yàn),上面所說(shuō)的0和1要翻轉(zhuǎn)過(guò)來(lái)用。

  在本實(shí)驗(yàn)板中,電機(jī)每轉(zhuǎn)動(dòng)一次,與之相連的偏心輪將遮擋光電對(duì)管一次,因此會(huì)產(chǎn)生一個(gè)脈沖,送到INT0。要測(cè)量轉(zhuǎn)速,既可以測(cè)量相鄰兩次中斷之間的時(shí)間;也可以測(cè)量一秒種之內(nèi)發(fā)生的中斷次數(shù)。顯然,后一種方法更加簡(jiǎn)單。

  進(jìn)行轉(zhuǎn)速控制時(shí),涉及到三個(gè)變量:預(yù)期轉(zhuǎn)速,實(shí)際轉(zhuǎn)速和控制變量。這里控制變量就是占空比。我們并不能夠預(yù)先精確知道某個(gè)控制變量的值會(huì)導(dǎo)致多少的實(shí)際轉(zhuǎn)速,因?yàn)檫@里有很多內(nèi)部和外部因素起作用(如摩擦力,慣性等),但可以確定就是隨著控制變量的增加,實(shí)際轉(zhuǎn)速會(huì)增加。

  反饋控制的基本原理就是根據(jù)實(shí)際結(jié)果與預(yù)期結(jié)果之間的差值,來(lái)調(diào)節(jié)控制變量的值。當(dāng)實(shí)際轉(zhuǎn)速高于預(yù)期轉(zhuǎn)速時(shí),我們需要減少控制變量,以降低速度;反之則需要調(diào)高控制變量。

  本實(shí)驗(yàn)的轉(zhuǎn)速控制可以使用簡(jiǎn)單的比例控制算法,也就是當(dāng)轉(zhuǎn)速S大于預(yù)定值時(shí),將輸出0的個(gè)數(shù)減少;當(dāng)轉(zhuǎn)速小于預(yù)定值時(shí),將輸出0的個(gè)數(shù)增加。改變值正比于測(cè)量出的差值。也可自行使用其他更加復(fù)雜的算法。

  實(shí)驗(yàn)中采用的電機(jī)最大轉(zhuǎn)速在200轉(zhuǎn)/s左右,轉(zhuǎn)速小于40轉(zhuǎn)/s左右將不穩(wěn)定,可能會(huì)停轉(zhuǎn)。

六、實(shí)驗(yàn)代碼

ORG 0000H
LJMPSTART
ORG0003H
LJMPOUTINT
ORG000BH
LJMPTIME0
ORG001BH
LJMPTIME1
ORG 0030H

P4SW EQU 0BBH
P4 EQU 0C0H
CLKEQUP4.4
DATEQUP4.5
S1EQUP3.6
S2 EQU P3.7
MOT EQU P1.1
START:
;對(duì)P4口進(jìn)行初始化設(shè)置
MOVDPTR,#TAB
MOVP4SW,#70H

MOVR0,#0;計(jì)轉(zhuǎn)速
MOVR1,#0;產(chǎn)生1s定時(shí)用

;R6、R5、R4數(shù)碼管顯示控制
MOV R6,#0;數(shù)碼管個(gè)位
MOV R5,#0;數(shù)碼管十位
MOV R4,#0;數(shù)碼管百位

MOVR7,#0;交替顯示時(shí)用
MOV60H,#100;存高電平
MOV61H,#100;存低電平

MOVR2,61H;R2用于快速定時(shí)中斷中給MOT送值時(shí)計(jì)數(shù),賦初值為低電平的個(gè)數(shù)

MOV62H,#200;按下s1時(shí)的目標(biāo)值(最大值)
MOV63H,#100;按下s2時(shí)的目標(biāo)值(最小值)
MOV64H,#150;不按鍵時(shí)的轉(zhuǎn)速

MOV R3,64H ;計(jì)目標(biāo)值(初始值為不按鍵時(shí)的轉(zhuǎn)速)
;---------------------------------------------------------------------
;TMOD說(shuō)明、T1/T0初值計(jì)算:
;---------------------------------------------------------------------
;T1"T0
;TMOD D7D6D5D4D3D2D1D0
;(89H)GATEC/TM1M0GATEC/TM1M0
;00010010
;|定時(shí)模式| 方式1 |由軟件啟動(dòng)|| 方式2
;---------------------------------------------------------------------
MOVTMOD,#12H
;---------------------------------------------------------------------
;T0初值計(jì)算(快速定時(shí)中斷,動(dòng)態(tài)改變MOT的輸出,0.1ms,方式2),Tosc=12MHz
;X=(2^8-(0.1ms)/12*Tosc)=256-100=156=9CH
;---------------------------------------------------------------------
MOVTH0,#9CH
MOVTL0,#9CH
;---------------------------------------------------------------------
;T1初值計(jì)算(定時(shí)中斷,數(shù)碼管顯示控制,1s,方式1),Tosc=12MHz
;X=(2^16-(1s)/12*Tosc)=65536-1000000<0
;折中方法:每20次產(chǎn)生1s定時(shí)初值,一次間隔50ms
;X=(2^16-(50ms)/12*Tosc)=65536-50000=15536=3CB0H
;---------------------------------------------------------------------
MOVTH1,#3CH
MOVTL1,#0B0H

;中斷開(kāi)關(guān)
SETBEA
SETBEX0
SETBIT0
SETBET0
SETBTR0
SETBET1
SETBTR1

CLRMOT;電機(jī)初始狀態(tài)設(shè)置為低電平

L1:
SJMPL1;死循環(huán),用于查詢

;---------------------------------------------------------------------
;每個(gè)1ms調(diào)整MOT口輸出一次,一次調(diào)整一個(gè)脈沖
;60H存高電平輸出次數(shù),61H存低電平輸出次數(shù)
;每隔1s調(diào)整60H,61H的值一次,來(lái)動(dòng)態(tài)調(diào)整電機(jī)轉(zhuǎn)速
;---------------------------------------------------------------------
TIME0:
;保存程序狀態(tài)
PUSHACC
PUSHPSW
DJNZ R2,RETURN0;R2用于快速定時(shí)中斷中給MOT送值時(shí)計(jì)數(shù)

CPLMOT;取反MOT
JNBMOT,LP0;判斷MOT電平高低
MOVR2,60H;若MOT=1,給R2賦高電平計(jì)數(shù)值
LJMPRETURN0
LP0:
MOV R2,61H;若MOT=0,給R2賦低電平計(jì)數(shù)值

RETURN0:
POPPSW
POPACC
RETI

TIME1:
;保存程序狀態(tài)
PUSHACC
PUSHPSW
INCR1;R1自增
CJNER1,#20,RETURN1;不等于20(小于20)直接return1,TIME1執(zhí)行20次,產(chǎn)生1秒中斷
MOVR1,#0
MOVR3,64H

;在1s中斷中應(yīng)該執(zhí)行的操作
JNBS1,MAX;s1按下,R3置為MAX
JNBS2,MIN;s2按下,R3置為MIN
SJMPLOOP
MAX:
MOVR3,62H
SJMPLOOP
MIN:
MOVR3,63H
SJMPLOOP

;轉(zhuǎn)速調(diào)整
LOOP:
MOVA,R0;R0計(jì)轉(zhuǎn)速
SUBBA,R3;A-R3影響Cy
JCZENG;R0JNCJIAN;R0>R3,跳轉(zhuǎn)JIAN
SJMPSHOW;跳轉(zhuǎn)交替顯示

ZENG:
INC61H;增加低電平
DEC60H;減少高電平
SJMPSHOW

JIAN:
INC60H;增加高電平
DEC61H;減少低電平
SJMPSHOW

;交替顯示
SHOW:
INCR7
CJNER7,#2,LP1;R7=1顯示當(dāng)前轉(zhuǎn)速,R7=2顯示目標(biāo)轉(zhuǎn)速
MOVR7,#0

;顯示目標(biāo)轉(zhuǎn)速
MOV A,R3
MOV B,#100
DIV AB ;商A,余數(shù)B
MOV65H,A;百位
MOVA,B
MOV B,#10
DIV AB
MOV 66H,A;十位
MOV 67H,B;個(gè)位
MOV R6,67H;目標(biāo)轉(zhuǎn)速
MOVR5,66H
MOV R4,65H

LP1:
LCALLDSL

MOVR6,#0
MOVR5,#0
MOVR4,#0
MOVR0,#0

RETURN1:
POPPSW
POPACC
RETI

OUTINT:
INCR0
INCR6
CJNER6,#10,COUNT_EXIT

INCR5
MOVR6,#0
CJNER5,#10,COUNT_EXIT

INCR4
MOVR5,#0
CJNER4,#10,COUNT_EXIT
MOVR4,#0
COUNT_EXIT:
RETI

DSL:
MOVA,R6
MOVC A,@A+DPTR
LCALL DISPLAY
MOVA,R5
MOVC A,@A+DPTR
LCALL DISPLAY
MOVA,R4
MOVC A,@A+DPTR
LCALL DISPLAY
RET;中斷函數(shù)內(nèi),此處必須是RET,RETI結(jié)束中斷

DISPLAY:
MOVR0,#8
DS_L:
CLRCLK
RLCA
MOV DAT,C
SETB CLK
DJNZ R0,DS_L
RET

TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END


七、一點(diǎn)想法

在本次實(shí)驗(yàn)中,PWM脈寬調(diào)制是通過(guò)改變低電平(0,存在61

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉