51单片机的电机调速测速系统

功能:
本实例是基于51单片机的直流电机调速测速系统,主要硬件由51单片机最小系统,LCD1602液晶屏电路,霍尔测速模块,直流电机控制电路,按键电路构成。
1.本设计采用霍尔传感器的非接触方式来测量直流电机的转速;
2.显示屏采用LCD1602显示屏,其中第一行显示当前电机的转速(转速单位为转/分),第二行显示当前电机的控制占空比0-100%。
3.电机转速可以通过按键进行调整,可以设置电机转动或者暂停,也可以通过按键设置电机正转或者反转。
4.系统共设有6个按键,功能分别为加速、减速、正转、反转、开始/暂停、单独的是复位按键。
原理图:
在这里插入图片描述

Protues仿真:
在这里插入图片描述

程序:

void main()
{
    flag_1=0;
	m=100;							 //占空比为100
	zhuansu=0;					   //转速初值0
	flag=0;
	zheng=1;				  //初始化电机正转动
	fan=0;
    init();              //初始化
	while(1)
	{
	keyscan();				//键盘扫描程序  
	}

}
void int1()interrupt 2				//外部中断1脉冲技术记录电机的转速 电机转一圈zhuansu加一
{
  zhuansu++;
}
void int2()interrupt 3				  //定时器0显示转速
{ 
  TH0=0xdc;
  TL0=0x00;//定时10ms
  flag++;
  	
  if(flag==200)				   //计时到达2s
    {
	display();					//显示转速
	zhuansu=0;					  //转速置0
	flag=0;
	}
}
void int3()interrupt 1					 //产生PWM
{  
  TH1=0xff;
  TL1=0x00;//定时100us 
  	flag_1++;
	if(flag_1>199)
	flag_1=1;
	if(kai==1)		  //如果kai==1电机启动
	{
	if(zheng==1)				//电机正转
	{
	if(flag_1<m)				  	//小于占空比m输出PWM=0输出电压为1
     {out=0;
	 out1=1;}
	 else
	 {
	   out=1;
	   out1=1;
	 }
	 }
	 	if(fan==1)			   //电机反转
	{
	if(flag_1<m)				//小于占空比m输出PWM=0输出电压为1
	  {
	    out=1;
		out1=0;
	  }
	 else									 //大于m输出PWM=1输出电压为0
	  {
	    out=1;
		out1=1;
	  }
	 }
	 }
	 if(kai==0)			  //kai=0电机停止转动
	 {
	   out=1;
	   out1=1;
	 }
}

关注公众号-电子应用学习馆,首页回复电机调速获取。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值