找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5940|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

無感無刷直流電機(jī)之電調(diào)設(shè)計(jì)全攻略(共97頁pdf下載)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
在參考一些關(guān)于無刷電機(jī)驅(qū)動(dòng)的書籍和帖子的時(shí)候,發(fā)現(xiàn)高手或是大師好像都比較惜字如金,一些問題往往點(diǎn)到為止或者一筆帶過,有些看似簡(jiǎn)單的問題會(huì)讓像我這樣的電調(diào)DIYer困惑很久。所以在本文行文時(shí),筆者力圖把問題以大白話的形式說明白,如果各位有覺得哪里看得不明不白的,可以回帖提出(時(shí)限一個(gè)月,呵呵),我會(huì)修改文檔以試圖將問題講清楚。如果有些問題我無法回答,我會(huì)老老實(shí)實(shí)跟你說我也沒搞清楚,還要請(qǐng)高手來解惑啊。如果發(fā)現(xiàn)我哪些內(nèi)容講錯(cuò)了,也請(qǐng)不吝指正。


完整的pdf格式文檔51黑下載地址(共97頁):
http://www.torrancerestoration.com/bbs/dpj-116510-1.html


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:29667 發(fā)表于 2019-10-26 18:14 | 只看該作者
好資料,感謝分享
回復(fù)

使用道具 舉報(bào)

板凳
ID:120823 發(fā)表于 2019-10-27 06:45 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

地板
ID:303467 發(fā)表于 2021-9-16 08:56 | 只看該作者
非常好的直流電機(jī)設(shè)計(jì)資料
回復(fù)

使用道具 舉報(bào)

5#
ID:992213 發(fā)表于 2021-12-14 14:53 | 只看該作者
資料非常好,值得推薦
回復(fù)

使用道具 舉報(bào)

6#
ID:156777 發(fā)表于 2021-12-25 13:04 | 只看該作者
剛好需要學(xué)習(xí)電調(diào)DIY,非常感謝你的資料,我將竭盡所能學(xué)習(xí),不浪費(fèi)你的心血
回復(fù)

使用道具 舉報(bào)

7#
ID:335252 發(fā)表于 2023-4-7 19:25 | 只看該作者
非常感謝你的資料
回復(fù)

使用道具 舉報(bào)

8#
ID:598932 發(fā)表于 2023-6-8 13:15 | 只看該作者
非常感謝 我也整段示例代碼吧 直接源碼
#include <reg51.h>
#define FOSC 11059200L
#define BAUD 9600
#define TIMER_CLOCK 921600L

sbit IN1 = P1^0;  //引腳定義
sbit IN2 = P1^1;
sbit IN3 = P1^2;
sbit IN4 = P1^3;

unsigned char code PWM_HL[8] = {0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x3F}; //PWM占空比

void delay_us(unsigned char i)
{
    while(i--);
}

void delay_ms(unsigned char i)
{
    unsigned char j;
    while(i--)
        for(j = 0; j < 110; j++);
}

void Timer0Init()
{
    TMOD &= 0xF0;
    TMOD |= 0x01; //16位計(jì)數(shù)器模式
    TH0 = 0x3C;
    TL0 = 0xB0;
    ET0 = 1;
    TR0 = 1;
    EA = 1;
}

void SerialInit()
{
    PCON = 0x00;
    SCON = 0x50;
    TMOD |= 0x20; //Timer1為8位自動(dòng)重載定時(shí)器模式
    TH1 = 256-((FOSC/12/32)/BAUD);
    TL1 = TH1;
    TR1 = 1;
}

void PWM(unsigned char speed)
{
    unsigned char i;

    if(speed > 7)
        speed = 7;

    for(i = 0; i < 500; i++)
    {
        if(speed > i >> 8)
            IN1 = 1;
        else
            IN1 = 0;
        if(speed > i >> 6)
            IN2 = 1;
        else
            IN2 = 0;
        if(speed > i >> 4)
            IN3 = 1;
        else
            IN3 = 0;
        if(speed > i >> 2)
            IN4 = 1;
        else
            IN4 = 0;

        delay_us(1);
    }
}

void main()
{
    SerialInit();
    Timer0Init();
    while(1)
    {
        PWM(5);
        delay_ms(2000);
        PWM(2);
        delay_ms(2000);
    }
}

void Timer0_ISR() interrupt 1
{
    static unsigned char count = 0;
    static unsigned char speed = 0;
    TH0 = 0x3C;
    TL0 = 0xB0;
    count ++;
    if(count >= 10)
    {
        count = 0;
        if(SBUF > 10)
            speed = SBUF - 10;
        else
            speed = 0;
    }
    PWM(speed);
    TF0 = 0;
}
```

在此示例中,我們使用了定時(shí)計(jì)數(shù)器Timer0來產(chǎn)生控制無刷電機(jī)(4相)的PWM信號(hào)。通過修改定時(shí)器的計(jì)數(shù)方式和TH0、TL0寄存器的值,可以實(shí)現(xiàn)不同的PWM頻率和占空比。具體實(shí)現(xiàn)步驟為:

1. 根據(jù)控制要求,定義引腳和占空比常量
2. 初始化定時(shí)器Timer0,并編寫相應(yīng)的定時(shí)器中斷服務(wù)函數(shù)Timer0_ISR()
3. 初始化串口通信,并在主函數(shù)中調(diào)用PWM()函數(shù)來控制無刷電機(jī)的速度和方向
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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