【Proteus仿真】【51单片机】直流电机PID调速系统设计

这篇具有很好参考价值的文章主要介绍了【Proteus仿真】【51单片机】直流电机PID调速系统设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、功能简介

本项目使用Proteus8仿真51单片机控制器,使用L298N电机模块、数码管模块、按键模块、LED指示灯模块等。

主要功能:
系统运行后,可通过按键K4启动系统,数码管显示实际速度和目标速度,再次按下K4键停止系统;按键K1加速、按键K2减速,按键K3换向;速度范围为0-150;通过PID将实际速度调节到目标速度。
最终可实现:
1、具有加速/减速/正转/反转/启动和停止
2、数码管显示速度
3、LED指示电机正转、反转
4、霍尔传感器实现电机测速
5、目标速度设定


二、软件设计

/*
作者:嗨小易(QQ:3443792007)
*/





//系统参数设定
void sys_parm_set(void)
{
	u8 key=0;
	
	key=key_scan(0);
	//开启/停止
	if(key==KEY4_PRESS)	
	{
		sys_ctrl.run=!sys_ctrl.run;
		if(sys_ctrl.run)
		{
			TR1=1;EX0=1;
			if(sys_ctrl.dir==0){ZZ_LED=0;FZ_LED=1;}
			else {ZZ_LED=1;FZ_LED=0;}	
		}
		else 
		{	
			TR1=0;EX0=0;
			ZZ_LED=1;FZ_LED=1;	
		}
		dc_motor_dir_ctrl(sys_ctrl.dir);
		dc_motor_sta(sys_ctrl.run);
	}
	//当处于运行状态时才能调速、切换方向
	if(sys_ctrl.run==1)
	{
		//加速
		if(key==KEY1_PRESS)
		{
			pid.target_val+=10;
			if(pid.target_val>150)pid.target_val=150;				
		}
		//减速
		else if(key==KEY2_PRESS)
		{
			pid.target_val-=10;
			if(pid.target_val<10)pid.target_val=0;				
		}
		//换向
		else if(key==KEY3_PRESS)
		{
			sys_ctrl.dir=!sys_ctrl.dir;
			if(sys_ctrl.dir==0){ZZ_LED=0;FZ_LED=1;}
			else {ZZ_LED=1;FZ_LED=0;}
			dc_motor_dir_ctrl(sys_ctrl.dir);
		}	
	}
}

//采集数据显示
void sys_data_show(void)
{
	u8 buf[8];
	u8 tag_val=pid.target_val;

	while(sys_ctrl.run==1)
	{
		//测速完成
		if(sys_ctrl.sta==1)
		{
			sys_ctrl.sta=0;
			sys_ctrl.cnt=0;
			EX0=1;//打开计数	
		}
		//实际速度
		buf[0]=0;
		buf[1]=gsmg_code[sys_ctrl.speed/100];
		buf[2]=gsmg_code[sys_ctrl.speed%100/10];
		buf[3]=gsmg_code[sys_ctrl.speed%100%10];
		//目标速度
		buf[4]=0;
		buf[5]=gsmg_code[tag_val/100];
		buf[6]=gsmg_code[tag_val%100/10];
		buf[7]=gsmg_code[tag_val%100%10];
		smg_display(buf,1);

		break;				
	}
}

//系统功能控制
void sys_fun_ctrl(void)
{
	static u8 i=0;

	while(sys_ctrl.run==1)
	{
		i++;
		if(i%1==0)
		{
			//PID调节
			sys_ctrl.rate=pid_realize(sys_ctrl.speed);
			if(sys_ctrl.rate>100)sys_ctrl.rate=100;
			else if(sys_ctrl.rate<0)sys_ctrl.rate=-sys_ctrl.rate;
			pwm_set_duty_cycle(sys_ctrl.rate);//占空比	
		}

		break;	
	}
} 


//应用控制系统
void appdemo_show(void)
{
	ENA=0;
	SMG_A_DP_PORT=0;
	sys_parm_init();//系统参数初始化
	exti0_init();
	time1_init();
	pwm_init(0XFF,0XD1,100,0);//初始时,PWM占空比为0
	dc_motor_dir_ctrl(sys_ctrl.dir);//默认正转
	pwm_set_duty_cycle(sys_ctrl.rate);//占空比

	pid_parm_init();//PID参数初始化

	while(1)
	{
		sys_parm_set();//系统参数设定
		sys_data_show();//采集数据显示
		sys_fun_ctrl();//系统功能控制		
	}
}


三、实验现象

protues直流电机测速,【Proteus仿真】【51单片机】趣味项目设计,proteus,51单片机,单片机
protues直流电机测速,【Proteus仿真】【51单片机】趣味项目设计,proteus,51单片机,单片机
protues直流电机测速,【Proteus仿真】【51单片机】趣味项目设计,proteus,51单片机,单片机


联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。文章来源地址https://www.toymoban.com/news/detail-515957.html

到了这里,关于【Proteus仿真】【51单片机】直流电机PID调速系统设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【【51单片机直流电机调速】】

    PWM的生成方法 先用户设定一个比较值,然后计数器定时自增。 当计数器比较值,输出0 当计数器比较值,输出1

    2024年02月15日
    浏览(50)
  • 51单片机-直流电机学习

    51单片机采用的是5V的直流电机 轴长:8mm 轴径:2mm 电压:1-6V 参考电流:0.35-0.4A 3V 转速:17000-18000 转每分钟 直流电机的结构应由 定子 和 转子 两大部分组成。 直流电机运行时静止不动的 部分称为定子 定子的主要作用是产生磁场,由机座、主磁极、 换向极、 端盖、 轴承和

    2024年02月09日
    浏览(47)
  • 205、仿真-51单片机直流数字电流表多档位切换Proteus仿真设计(程序+Proteus仿真+原理图+流程图+元器件清单+配套资料等)

    目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、原理图 五、程序源码 资料包括: 方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ,在存储器的01等等待周期仿真时可

    2024年02月12日
    浏览(44)
  • 通过51单片机实现直流电机调速

    随着各种工业生产设备和机械设备的广泛使用,直流电机调速技术的研究和应用越来越受到人们的重视,具有广泛的应用前景。本项目通过51单片机实现直流电机调速功能,为实际工程应用提供一个可靠和有效的调速方案。 如果需要下载项目工程,可以去这里: https://blog.c

    2024年02月14日
    浏览(48)
  • 【Proteus】单片机H桥驱动24V直流有刷电机

    一般有关直流有刷电机的仿真都是直接高低电平驱动,或者ULN2003,这种电路是只能驱动小电压小功率的电机的,如果碰到电压稍高一些,电流大一些的电机,2003驱动是驱动不起来的,这时候对于大电流的电机,一般就是MOS管或者IGBT,相对来说,NMOS是经济实用之选,本节就带

    2024年02月06日
    浏览(41)
  • 【51单片机】直流电机驱动(PWM)(江科大)

    · 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 · 直流电机主要由永磁体(定子)、线圈(转子)和换向器组成 · 除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等 电机的驱动无法

    2024年02月20日
    浏览(50)
  • 【51单片机】直流电机的驱动和PWM调速

    51单片机驱动直流电机与 PWM 调速是通过使用 51 单片机来控制直流电机的转速和方向。51 单片机通过控制电机的电流来实现驱动,并通过生成 PWM 信号来调节电机的转速。使用 PWM 调速可以使得直流电机的转速精确可控,并且减少了电机的功率损耗。在 51 单片机的控制系统中,

    2023年04月09日
    浏览(42)
  • 51单片机-PWM调速(直流电机,智能小车的电机调速)

    这次来对PWM做一个总结 最近学习时,发现PWM控制在很多地方都会用到,比如使用PWM来控制电机的速度,使用PWM来生成想要的波形。 那么到底什么是PWM呢? PWM即 脉冲宽度调制 ,在具有惯性的系统中,可以通过对 一系列脉冲的宽度进行调制 ,来等效的获得所需要的模拟参量。

    2024年02月02日
    浏览(52)
  • 基于51单片机的直流电机转速显示+加速减速启停

    做了一个实战项目,这个实战项目主要是实现对直流电机转速的控制,可以实现电机加速,减速,报警、启停以及显示转速。在本电路的基础上也可以进行一些拓展改变电机正反转的状态,只需要外加一个按键和修改部分程序即可,在文章的最后会对拓展进行一个说明。基础

    2023年04月27日
    浏览(53)
  • 基于51单片机直流电机PWM调速液晶1602显示设计

    一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形等均作了详细的

    2024年02月11日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包