资源简介
基于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
相关资源
- MSP430直流电机调试霍尔
- 51单片机 GSM模块防火防盗
- 51单片机程序
- STC51单片机控制SIM900A数据发送与接收
- 51单片机 红外寻迹 + 蓝牙 + 超声避障
- 51单片机与蓝牙模块的串口通信C程序
- 51单片机蜂鸣器播放音乐、暂停音乐以
- 51单片机自制游戏机内置四款
- 模块最全的51单片机开发板原理图
- 基于51单片机的电子秤设计
- 第四届模拟题--自动售水机.rar
- 基于proteus的电子秤设计及仿真+51单片
- 基于51单片机和DS18B20的温度控制器带
- 51单片机串行通信程序
- 基于51单片机的DHT11温湿度测量报警系
- 基于STM32室内温度报警控制系统设计报
- 基于51单片机的温度报警器
- 51单片机题库含答案
- C51单片机八段LED静态显示电子时钟M
- 基于51单片机的家庭防火防盗设计
- 基于51单片机LCD1602显示时钟温度报警
- stm32开源飞控MPU6050
- 基于51单片机电子密码锁的设计 C程序
- 基于51单片机的温度报警器程序和原理
- 51单片机音调发生器程序
- 基于51单片机的智能家居监测系统硬件
- 51单片机烟雾报警器制作程序
- 单片机串行口与PC机通讯课程设计论文
- 基于51单片机的汽车防撞系统设计
- 基于51单片的恒温箱
评论
共有 条评论