|
本帖最后由 明日香 于 2021-1-5 21:01 編輯
我用電調(diào),不需要設(shè)置行程,店家說(shuō)頻率是50HZ,那周期就是20ms也就是20000us了,但2000us的脈寬占空比只有10%,為什么會(huì)這么小,這還速度范圍還能調(diào)節(jié)嗎?下圖是店家給的說(shuō)明:需要一個(gè)1500us的中位啟動(dòng)
請(qǐng)問(wèn)這個(gè)中位確認(rèn)是什么意思,把脈寬調(diào)為1500us,占空比調(diào)到7.5%嗎?這也太小了吧,
以下為PWM波源程序,無(wú)法驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng),請(qǐng)大家?guī)兔纯茨睦锊粚?duì)呢?
#include <stc12c5a.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
/*用定時(shí)器T0來(lái)控制頻率,定時(shí)器T1來(lái)控制占空比*/
/*T0中斷讓一個(gè)IO口輸出高電平,T1讓IO口輸出低電平*/
/*改變T0初值就可以改變頻率,改變T1初值就可以改變占空比*/
/*機(jī)器周期為1us,設(shè)定頻率為50HZ,則周期為20ms
要定時(shí)20ms,設(shè)置中斷基準(zhǔn)為0.02ms,中斷1000次為一個(gè)周期
0.02ms/1us=20,初始值65535-20+1=FFEC*/
sbit PWM=P2^1; //P21輸出PWM波
uchar time; //占空比
void main()
{
TMOD=0x01;//打開定時(shí)器0,工作方式1:16位定時(shí)器
TH0=0xff; //
TL0=0xec;
EA=1;//開總中斷
ET0=1;//開定時(shí)器0中斷
TR0=1;//啟動(dòng)定時(shí)器0
while(1)
{
}
}
void time0() interrupt 1
{
TR0=0;//定時(shí)器關(guān)閉
TH0=0xff; //
TL0=0xec;
TR0=1;//打開定時(shí)器
time++;
if(time>=1000)
time=0;
if(time<=75)//占空比為7.5%,高電平時(shí)間1500us PWM=1;
else PWM=0;
}
|
|