资源简介
基于51单片机PID算法的直流电机测速控速设计,测量精度很高,控制精度也很高,误差在1r/min内,这是经过本人长期调试所得出的成果!程序里的PID参数是在大量实验过程得到的,很具有参考价值!希望对大家有所帮助!

代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
sbit LCD_RS = P2^4; //液晶1602 RS端口
sbit LCD_RW = P2^5;
sbit LCD_EP = P2^6; //液晶1602 EN端口
sbit PWM=P2^2;//p1.1口产生pwm
sbit input2=P2^0;
sbit input1=P2^1;
sbit key1=P1^0; //设置转速
sbit key2=P1^1; // 加
sbit key3=P1^2; // 减
sbit key4=P1^3; // 正反转
//sbit key5=P1^4; // 停
//sbit key6=P1^5; // 启
uchar code table[] = {“SDSD=00000r/s“}; //设定速度初始化
uchar code table1[] = {“speed=00000r/s“}; // 动态显示初始化
uchar n ixtable2[5]table3[5]zhuansugeshibaiqianwanflag1key1ntemp;
unsigned char timer1 timer3n0n1n2;
unsigned int vvaltemp2temp1pidoutv1; //储存电机转速 6
unsigned char count; //储存定时器T0中断次数
bit flagflag2=1; //计满1秒钟标志位
float mm;
void init();
void display_val(unsigned int zhuan);
void keyscan();
/***********延时1MS程序***/
void delay(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
///*
//PID Function
//The PID function is used in mainly
//control applications.PIDCalc performs one iteration of the PED
//algorithm.
//While the PID function worksmain is just a dummy program shouwing
//a typical usage
//*/
//typedef struct PID
//{
// int SetPoint;//设定目标Desired Value
// long SumError;//误差累计
// double Proportion;//比例常数Proportional Const
// double Integral;//积分常数Integral const
// double Derivative;//微分常数Derivative Const
// int LastError;//Error[-1]
// int PrevError;//Error[-2]
//}PID;
//
//static PID sPID;
//static PID *sptr = &sPID;
//
///*
//Initialize PID Structrue PID参数初始化
//*/
//void IncPIDInit(void)
//{
// sptr->SumError = 0;
// sptr->LastError = 0;//Error[-1]
// sptr->PrevError = 0;//Error[-2]
// sptr->Proportion = 0;//比例常数Proportional Const
// sptr->Integral = 0;//积分常数Integral Const
// sptr->Derivative = 0;//微分常数Derivative Const
// sptr->SetPoint = 0;
//}
//
///*
//增量式PID计算部分
//*/
//int IncPIDCalc(int usetint NextPoint)
//{
// register int iErroriIncpid;//当前误差
// sptr->SetPoint = uset;
// iError = sptr->SetPoint-NextPoint;//增量计算
// iIncpid = sptr->Proportion*iError//E[k]项
// -sptr->Integral*sptr->LastError//E[k-1]项
// +sptr->Derivative*sptr->PrevError;//E[k-2]项
// //存储误差,用于下次计算
// sptr->PrevError = sptr->LastError;
// sptr->LastError = iError;
// //返回增量值
// return(iIncpid);
//}
#define kp 0.45 //比例系数
#define ki 0.0115 //积分系数
#define kd 0 //微分系数0.02
float eeeeh; //PID误差
float PIDcontrol(float uset float feedback)
{
float dukDI;
eeh=ee;
ee=uset-feedback;
I = ee + I;
D = ee -eeh;
duk=kp*ee+ki*I-kd*D;
return duk;
}
/******液晶写命令************/
void write_com(uchar com)
{ LCD_RS=0;
LCD_RW=0;
P0=com ;
delay(1);
LCD_EP=1;
delay(1);
LCD_EP=0;
}
/*****************/
/********液晶写数据***********/
void write_data(uchar date)
{ LCD_RS=1;
LCD_RW=0;
P0=date ;
delay(1);
LCD_EP=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 548864 2013-03-04 21:28 电机控速.doc
文件 17639 2013-03-03 12:23 直流电机测速调试V6\motor
文件 6459 2013-03-03 12:23 直流电机测速调试V6\motor.hex
文件 68 2013-03-03 12:23 直流电机测速调试V6\motor.lnp
文件 23742 2013-03-03 12:23 直流电机测速调试V6\motor.M51
文件 6170 2013-03-03 09:11 直流电机测速调试V6\motor.plg
文件 73296 2013-03-02 23:20 直流电机测速调试V6\motor.uvopt
文件 13433 2013-03-02 23:20 直流电机测速调试V6\motor.uvproj
文件 0 2013-03-02 21:13 直流电机测速调试V6\motor_uvproj.bak
文件 6376 2009-05-07 14:37 直流电机测速调试V6\STARTUP.A51
文件 14048 2013-03-03 12:23 直流电机测速调试V6\STARTUP.LST
文件 749 2013-03-03 12:23 直流电机测速调试V6\STARTUP.OBJ
文件 9982 2013-03-03 12:23 直流电机测速调试V6\直流电机PID调速.c
文件 22481 2013-03-03 12:23 直流电机测速调试V6\直流电机PID调速.LST
文件 19624 2013-03-03 12:23 直流电机测速调试V6\直流电机PID调速.OBJ
目录 0 2013-03-03 17:07 直流电机测速调试V6
----------- --------- ---------- ----- ----
762931 16
- 上一篇:哈工大编译原理大作业
- 下一篇:hba
se-1.2.6-bin.tar.gz
相关资源
- FPGA实现PID.v
- DV泵加罗茨泵独立控制系统PID.smart
- F28335无刷直流电机开闭环控制
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 模糊PID控制 c
- 51单片机PWM程序,占空比、周期可调整
- 带有死区延时的H桥直流电机驱动电路
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 永磁直流电机设计软件
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- 直流伺服电机电路原理图(内附单片
- 课程设计蔬菜大棚自动控制系统,包
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
评论
共有 条评论