单片机的直流电机调速控制系统

  • Post author:
  • Post category:其他

   设计功能

(1)系统采用霍尔传感器非接触式对电机转速进行测速。
(2)LCD1602液晶显示当前的转速,转速单位为转/分(RPM)。和显示当前的pwm占空比0~100%。
(3)电机的速度可以通过按键调整,也可以开始暂停,正转和反转。
(4)液晶屏第一行显示电机转速,第二行显示占空比,占空比数值越大,电机转速越快。
(5)系统一共有6个按键,单片机附近的独立按键是系统的复位按键,按下单片机会复位。其余5个按键分别为:

  • 按键1:加速键,可以短按,占空比加1,也可长按,占空比连续加;
  • 按键2:减速键,可以短按,占空比减1,也可长按,占空比连续减;
  • 按键3:正转切换键,按下后电机正转;
  • 按键4:反转切换键,按下后电机反转;
  • 按键5:开始暂停键,按一下开始,再按一下暂停。

原理图:

原理图绘制软件采用AD2013。主要由51单片机+最小系统+LCD1602显示屏+电机驱动电路+直流电机+霍尔传感器+独立按键等构成;

其总体硬件原理图如图所示。电机驱动电路主要是通过NPN、PNP两种三极管搭建而成的H桥驱动电路。当P34为高电平、P37引脚为低电平时,Q3、Q5三极管导通,Q4、Q6三极管截止,电机正转;当P34为低电平、P37引脚为高电平时,Q3、Q5三极管截止,Q4、Q6三极管导通,电机反转;其中,D1、D2、D3、D4作为续流二极管使用,能有效地保护三极管。

 元器件封装可通过PCB导出来。

仿真设计

仿真软件采用Protues7.8。

 

程序设计

程序采用C作为编程语言,使用Keil5作为编程软件,仅展示一部分;

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;

	}
}

关注公众号-单片机实例设计,发送“直流电机”获取资料;

下载地址


版权声明:本文为m0_60790717原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。