欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

寫了一個單片機輸出PWM波控制電調(diào)的程序,但電機無法轉(zhuǎn)動,請問程序哪里不對呢?

查看數(shù): 4131 | 評論數(shù): 3 | 收藏 1
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2021-1-8 10:40

正文摘要:

想用單片機驅(qū)動電調(diào)控制推進器轉(zhuǎn)動,用的電調(diào)不需要設(shè)置行程,但需要進行中位啟動電調(diào)的頻率是50HZ,那周期就是確定的0.02s即20000us吧,中位啟動是指設(shè)置PWM波高電平時間為1500us嗎? 以下為源程 ...

回復(fù)

ID:796670 發(fā)表于 2021-1-8 16:48
glinfei 發(fā)表于 2021-1-8 16:22
首先是:計時時間太短,你的寫法誤差太大,應(yīng)使用自動重裝模式,中斷中只有一句:time++;并將判斷放到主程 ...

這個最大最小油門就是最大最小行程吧?老板給的說明說不需要,只需要設(shè)置中間啟動
ID:844772 發(fā)表于 2021-1-8 16:22
首先是:計時時間太短,你的寫法誤差太大,應(yīng)使用自動重裝模式,中斷中只有一句:time++;并將判斷放到主程序,它到1000自然是一個周期嘛。如果能提高主頻就更好了。
其次是:電調(diào)不是你這么用的啊,電調(diào)驅(qū)動電機轉(zhuǎn)動需要兩個步驟:1先給電調(diào)最大油門,你會聽到“嗶嗶”;2“嗶嗶”后你再給電調(diào)最小油門,會聽到”嗶嗶畢“,然后是一聲較長的”畢“;3這時電調(diào)就準(zhǔn)備好了,給一個1~2ms范圍內(nèi)的油門就可以轉(zhuǎn)動了。你的程序都沒干這些事,轉(zhuǎn)不了啊。
ID:390416 發(fā)表于 2021-1-8 14:35
很多小白不明白PWM怎么回事。只能說明你們看的教程沒講。我們?nèi)巳藢W(xué)會單片機教程就講過。其實很簡單的。特分享CPU定時器模擬PWM輸出給你們
#include "STC89.H"                                        //頭文件包含
#include <intrins.h>                                //頭文件包含
typedef unsigned char u8;                        //重新定義數(shù)據(jù)類型名
typedef unsigned short u16;                        //重新定義數(shù)據(jù)類型名
typedef unsigned long u32;                        //重新定義數(shù)據(jù)類型名
sbit PWM_OUT=P2^1;        
u8 idata PWM_Write_Byte[3]=0;

//****************************祁緒電子 2020年5月***
// 定時器0初始化  晶振11059200,12T,輸出50Hz的PWM,占空比0~255
// 定時器初值為:256-(11059200÷12÷50Hz÷256) = 184 = 0xB8
void PWM_Init(void)
{
        TMOD &= 0xF0;                                        //配置定時器工作模式
        TMOD |= 0x02;                                        //配置定時器工作模式 8位自動重裝模式
    TL0 = 0xB8;;                    //定時器初值
    TH0 = 0xB8;                                //定時器重裝初值
    TR0 = 1;                        //啟動定時器0
    ET0=1;                                                         //允許定時器0申請中斷
        EA=1;                                                        //中斷總閘閉合
}
//****************************祁緒電子 2020年5月***
//定時器0的CPU處理函數(shù),位置任意寫都行
void PWM_Display_timer0() interrupt 1
{
        
        static u8 pwm_t=0;                                 //局部變量,不丟失數(shù)據(jù)
        if(pwm_t<PWM_Write_Byte[0])
        {
                PWM_OUT=1;                                 
        }
        else PWM_OUT=0;
        pwm_t++;
}

//***************************祁緒電子 2020年5月***
// PWM 數(shù)模變換數(shù)據(jù)分配
void PWM_Allot()                                          
{
        static u8 kkk=0;        
        static u8 count=0;
        count++;
        if(count>100)
        {
                count=0;
                kkk++;
                PWM_Write_Byte[0]=kkk;        //kkk為占空比自動增加
                PWM_Write_Byte[1]=10;        
                PWM_Write_Byte[2]=10;
        }
}


void main()                                                        //主函數(shù)
{
        PWM_Init();
        while(1)                                                //主函數(shù)大循環(huán)
        {
                PWM_Allot();        
        }
}

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表