永发信息网

关于pwm控制直流马达转速的问题。

答案:3  悬赏:0  手机版
解决时间 2021-11-28 13:00
  • 提问者网友:感性作祟
  • 2021-11-28 06:40
关于pwm控制直流马达转速的问题。
最佳答案
  • 五星知识达人网友:执傲
  • 2021-11-28 07:03
PWM的频率一般选在25Khz左右,低于20Khz会产生人耳可辨的电磁音,在1K左右时噪音会非常大,这个你可以试验感受一下;另一方面,频率过高会导致驱动电路的动态功耗的上升,在大电流应用下,寿命、效率、可靠性都会有影响,要综合考虑;一般来说绝大多数小型直流电机的PWM频率都在25K附近。
全部回答
  • 1楼网友:北方的南先生
  • 2021-11-28 09:14
我暂时保留我的看法!
  • 2楼网友:渡鹤影
  • 2021-11-28 08:03

#include"reg51.h"
unsigned char c=-50;//这里可以设置起始速度--- c=-50为最大起始速度即PWM=100%;c=-25则PWM=75%;c=0则PWM=50%;c=25则PWM=25%;c=50则PWM=0%
void delay(unsigned char a);//调整占空比PWM的延时函数
void delayA(unsigned char a);//去抖延时函数
sbit P1_0=P1^0;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
void main()
{ unsigned char a,b;
EA=1;
IT0=1;
EX0=1;
IT1=1;
EX1=1;
while(1)
{if(c!=50)
{
a=50+c;//设置比例参数
b=50-c;//设置比例参数
P1_0=1;
delay(a);//停止时间比例
P1_0=0;
delay(b);//工作时间比例
}
else
P1_0=1;
}
}
void int_0() interrupt 0//增加速度
{
delayA(100);//防抖延时函数
if(P3_2==0)
{
if(c!=-50)
{
EA=0;
c=c-25;//减少c的值以增加占空比
EA=1;
delay(200);
}
}
}
void int_1() interrupt 2//减少速度
{
delayA(100);//防抖延时函数
if(P3_3==0)
{
if(c!=50)
{
EA=0;
c=c+25;//增加c的值以减少占空比
EA=1;
delay(200);
}
}
}
void delay(unsigned char a)//调整占空比PWM的延时函数
{
unsigned char i;
TMOD=0x20;
TL1=0xB0;
TH1=0xB0;
for(i=0;i {
TR1=1;
while(!TF1);
TF1=0;
}
}
void delayA(unsigned char a)//去抖延时函数
{
unsigned char i;
TMOD=0x20;
TL1=0x38;
TH1=0x38;
for(i=0;i {
TR1=1;
while(!TF1);
TF1=0;
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯