基于单片机无刷直流电机PID调速控制系统设计-毕设课设资料

基于单片机无刷直流电机PID调速控制系统设计

摘要

随着现代控制技术的不断发展,无刷直流电机(BLDC)因其高效率、长寿命和低噪音等优点在多个领域得到广泛应用。本文设计了一种基于C51/52单片机的无刷直流电机PID调速控制系统,实现了通过按键控制电机的正反转、加速减速、暂停开始等功能,并通过LCD1602显示电机速度。本文详细介绍了系统的硬件设计、软件编程以及PID控制算法的实现,并通过实验验证了系统的可行性和有效性。

关键词:单片机;无刷直流电机;PID控制;调速系统;LCD1602显示

第一章 引言

无刷直流电机作为一种高性能的电机类型,在工业、交通、家电等领域得到了广泛应用。为了实现对无刷直流电机的精确控制,需要设计一种可靠的调速控制系统。本文旨在设计一种基于C51/52单片机的无刷直流电机PID调速控制系统,通过按键实现对电机的正反转、加速减速、暂停开始等控制,并通过LCD1602实时显示电机速度。

第二章 系统总体设计

本系统主要由C51/52单片机、无刷直流电机驱动模块、按键输入模块、LCD1602显示模块和电源模块组成。单片机作为系统的核心控制器,负责处理按键输入信号、输出PWM控制信号以及驱动LCD1602显示电机速度。无刷直流电机驱动模块根据单片机的PWM控制信号驱动电机转动。按键输入模块用于实现电机的正反转、加速减速、暂停开始等控制功能。LCD1602显示模块用于实时显示电机速度。电源模块为整个系统提供稳定的工作电压。

第三章 硬件设计

3.1 单片机最小系统电路

单片机最小系统电路包括C51/52单片机芯片、晶振电路、复位电路和电源电路。晶振电路为单片机提供稳定的时钟信号,复位电路用于单片机的复位操作,电源电路为单片机提供稳定的工作电压。

3.2 无刷直流电机驱动模块电路

无刷直流电机驱动模块电路采用专用的无刷直流电机驱动芯片,根据单片机的PWM控制信号驱动电机转动。该驱动芯片具有过流保护、欠压保护等功能,确保电机的安全稳定运行。

3.3 按键输入模块电路

按键输入模块电路由多个按键组成,用于实现电机的正反转、加速减速、暂停开始等控制功能。按键信号经过处理后送入单片机进行处理。

3.4 LCD1602显示模块电路

LCD1602显示模块电路采用标准的LCD1602液晶显示屏,用于实时显示电机速度。单片机通过控制LCD1602的驱动信号,将电机速度信息显示在屏幕上。

3.5 电源模块电路

电源模块电路为整个系统提供稳定的工作电压。本系统采用合适的稳压芯片将输入的直流电压稳压为系统所需的工作电压,确保系统的稳定运行。

第四章 软件设计

本系统的软件设计主要包括主程序、按键处理子程序、PWM控制子程序、LCD显示子程序等。主程序负责初始化系统并循环调用各个子程序实现系统的整体功能。按键处理子程序负责处理按键输入信号,实现电机的正反转、加速减速、暂停开始等控制功能。PWM控制子程序根据PID控制算法输出PWM控制信号,驱动电机转动。LCD显示子程序负责将电机速度信息显示在LCD1602屏幕上。

第五章 PID控制算法实现

PID控制算法是一种经典的控制算法,具有结构简单、易于实现等优点。本系统采用PID控制算法对无刷直流电机进行调速控制。通过设定目标速度和实际速度的偏差,计算PID控制器的输出,从而调整PWM控制信号的占空比,实现对电机速度的精确控制。

第六章 实验结果与分析

通过实验测试,验证了本系统的可行性和有效性。实验结果表明,系统能够准确响应按键输入信号,实现对无刷直流电机的正反转、加速减速、暂停开始等控制功能。同时,LCD1602能够实时显示电机速度信息。PID控制算法能够实现对电机速度的精确控制,具有良好的稳定性和动态性能。

结论与展望

本文设计了一种基于C51/52单片机的无刷直流电机PID调速控制系统,实现了对电机的正反转、加速减速、暂停开始等控制功能,并通过LCD1602实时显示电机速度。实验结果验证了系统的可行性和有效性。未来可以进一步完善和优化系统设计,如提高控制精度、增加远程监控功能等方面进行研究和改进,以满足更高性能的应用需求。

资料下载地址-1100(百度网盘):点击下载icon-default.png?t=N7T8https://docs.qq.com/doc/DTlRSd01BZXNpRUxl

对无刷直流电机进行加减速控制、启动停止控制、正反转控制。

#include "reg51.h"
#include "math.h"
#include "1602.h"

int e=0,e1=0,e2=0;

float uk=0,uk1=0.0,duk=0.0;	//pid输出值
float Kp=5,Ki=1.2,Kd=0.2;	//pid控制系数

int out=0;
/*
float error[3]={0,0,0};
float sum;
int pid(int speed,float result)
{
 float Kp=0.9,Ki=0.75,Kd=0.05,ut=0;
 error[0]=speed-spd;
 sum=sum+(ki*error[0]);
 ut=sum+kp*error[0]+kd*(error[0]-error[1]);
 return ut;

}
*/

extern unsigned int spd;
extern unsigned int speed;
extern unsigned char set;



 
int speed_pid()
{

	e=speed-spd;//设置速度-实际速度,两者的差值 

//	duk=(Kp*(e-e1))/100;//只调节P
	duk=(Kp*(e-e1)+Ki*e)/100;//只调节PI
//	duk=(Kp*(e-e1)+Ki*e+Kd*(e-2*e1+e2))/100;//调节PID
	uk=uk1+duk;//uk=u(k-1)+Δuk

	if(e>20)
	{
	out=250;

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值