标题:
无感无刷直流电机之电调设计全攻略(共97页pdf下载)
[打印本页]
作者:
cashjing
时间:
2019-7-19 09:21
标题:
无感无刷直流电机之电调设计全攻略(共97页pdf下载)
在参考一些关于无刷电机驱动的书籍和帖子的时候,发现高手或是大师好像都比较惜字如金,一些问题往往点到为止或者一笔带过,有些看似简单的问题会让像我这样的电调DIYer困惑很久。所以在本文行文时,笔者力图把问题以大白话的形式说明白,如果各位有觉得哪里看得不明不白的,可以回帖提出(时限一个月,呵呵),我会修改文档以试图将问题讲清楚。如果有些问题我无法回答,我会老老实实跟你说我也没搞清楚,还要请高手来解惑啊。如果发现我哪些内容讲错了,也请不吝指正。
0.png
(177.72 KB, 下载次数: 402)
下载附件
2019-7-19 15:54 上传
完整的pdf格式文档51黑下载地址(共97页):
http://www.51hei.com/bbs/dpj-116510-1.html
作者:
grarrow
时间:
2019-10-26 18:14
好资料,感谢分享
作者:
IT排头兵
时间:
2019-10-27 06:45
感谢分享
作者:
游神暴风
时间:
2021-9-16 08:56
非常好的直流电机设计资料
作者:
shuishi123
时间:
2021-12-14 14:53
资料非常好,值得推荐
作者:
链影骑士
时间:
2021-12-25 13:04
刚好需要学习电调DIY,非常感谢你的资料,我将竭尽所能学习,不浪费你的心血
作者:
_风云无忌_
时间:
2023-4-7 19:25
非常感谢你的资料
作者:
fsyczxyy
时间:
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位计数器模式
TH0 = 0x3C;
TL0 = 0xB0;
ET0 = 1;
TR0 = 1;
EA = 1;
}
void SerialInit()
{
PCON = 0x00;
SCON = 0x50;
TMOD |= 0x20; //Timer1为8位自动重载定时器模式
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;
}
```
在此示例中,我们使用了定时计数器Timer0来产生控制无刷电机(4相)的PWM信号。通过修改定时器的计数方式和TH0、TL0寄存器的值,可以实现不同的PWM频率和占空比。具体实现步骤为:
1. 根据控制要求,定义引脚和占空比常量
2. 初始化定时器Timer0,并编写相应的定时器中断服务函数Timer0_ISR()
3. 初始化串口通信,并在主函数中调用PWM()函数来控制无刷电机的速度和方向
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1