请问如何用PWM波控制直流电机,C程序是什么样的?

 我来答
shengmancheste
推荐于2017-10-03 · TA获得超过175个赞
知道答主
回答量:28
采纳率:0%
帮助的人:44.2万
展开全部
我这个也不算是正规的PWM了,你看下,原理是一样的,都是控制占空比

#include<reg51.h>

/*定义按键和L298N引脚*/
sbit BZ1=P0^0; sbit IN1=P2^0;
sbit BZ2=P0^1; sbit IN2=P2^1;
sbit BF1=P0^2; sbit IN3=P2^2;
sbit BF2=P0^3; sbit IN4=P2^3;
sbit BJIA1=P0^4;
sbit BJIA2=P0^5;
sbit BJIAN1=P0^6;
sbit BJIAN2=P0^7;
/*函数声明*/
void delay(t);
void Z1();
void Z2();
void F1();
void F2();
void JIA1();
void JIA2();
void JIAN1();
void JIAN2();
void change();

int t1=80,t2=80;

/*延时函数*/
void delay(int t)
{while(t--);}
/*正转函数1*/
void Z1()
{IN1=1;IN2=0;}
/*正转函数2*/
void Z2()
{IN3=1;IN4=0;}
/*反转函数1*/
void F1()
{IN1=0;IN2=1;}
/*反转函数2*/
void F2()
{IN3=0;IN4=1;}
/*加速函数1*/
void JIA1()
{t1+=10;}
/*加速函数2*/
void JIA2()
{t2+=10;}
/*减速函数1*/
void JIAN1()
{t1-=10;}
/*减速函数2*/
void JIAN2()
{t2-=10;}
/*停止*/
void TING()
{IN1=IN2=IN3=IN4=0;}
/*制动函数*/
void ZHI()
{IN1=IN2=IN3=IN4=1;}
/*按键信号*/
void change()
{
if(BZ1==0){Z1();delay(t1);TING();delay(255-t1);}
if(BZ2==0){Z2();delay(t2);TING();delay(255-t2);}
if(BF1==0){F1();delay(t1);TING();delay(255-t1);}
if(BF2==0){F2();delay(t2);TING();delay(255-t2);}
if(BJIA1==0&&t1<235){delay(5);JIA1();}
if(BJIA2==0&&t2<235){delay(5);JIA2();}
if(BJIAN1==0&&t1>80){delay(5);JIAN1();}
if(BJIAN2==0&&t2>80){delay(5);JIAN2();}

if(BZ1==0&&(BZ2!=0&&BF1!=0&&BF2!=0)){delay(255);}
if(BZ2==0&&(BZ1!=0&&BF1!=0&&BF2!=0)){delay(255);}
if(BF1==0&&(BZ1!=0&&BZ2!=0&&BF2!=0)){delay(255);}
if(BF2==0&&(BZ1!=0&&BZ2!=0&&BF1!=0)){delay(255);}

}
/*主程序*/
void main()
{
P0=0xff;
while(1)
{change();}
}
瘦成一导闪电呀
高粉答主

推荐于2017-09-06 · 每天分享健身知识,希望每位小仙女走路带风
瘦成一导闪电呀
采纳数:1266 获赞数:52261

向TA提问 私信TA
展开全部
程序如下:
//*********初始化模块**********//
void initial(void){
TMOD=0x15;
TH0=0;
TL0=0;
TH1= (65536-500)/256
TL1= 65536-500)%256;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=0;
}

//*********定时中断服务程序1**********//
void t1(void) interrupt 3 using 0
{
TH1= (65536-500)/256
TL1= 65536-500)%256;

output = ~output;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanfu310
2011-09-02 · TA获得超过1308个赞
知道答主
回答量:600
采纳率:0%
帮助的人:379万
展开全部
伺服电机工作原理——伺服电机内部的转子是永磁铁,驱动器控制的U/V/W三相电控制芯片通过这三相电压指令,经过反向、延时后,得到6 路PWM 波输出到功率
追问
谢谢 ,但我还不大理解。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
从零学电子技术
2021-01-14 · 贡献了超过132个回答
知道答主
回答量:132
采纳率:100%
帮助的人:7.3万
展开全部

如何利用Arduino通过PWM引脚进行直流电机的调速控制?

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式