计算机控制系统单片机课设,计算机控制课程设计报告--基于单片机的直流伺服电机速度控制系统.doc...

课程设计题目

《计算机控制技术》

课程设计报告

题 目: 基于单片机的直流伺服电机速度控制系统

姓 名:

学 号:

专 业: 自动化

年 级:

指导教师:

2012年 12月 7日

目录

任务书………………………………………………………………………………………..….2

参考资料…………………………………………………………………………………..……3

设计步骤与内容………………………………………………………………………………7

设计总结…………………………………………………………………………………..…...12

任务书

一、设计题目

基于单片机的直流伺服电机速度控制系统

二、设计目的

1.加深理解和掌握计算机控制系统的组成结构和原理。

2.学习并掌握基于状态空间的状态控制器的原理和设计方法。

3.学习并掌握数字控制器的仿真和实验研究方法。

三、设计任务

1.设计任务:

基于单片机设计一个直流伺服电机闭环调速系统,利用电机上光电编码器所提供的转速脉冲信号,通过选择合适的数字控制算法,实现对给定的直流伺服电机的速度调节,要求在选定的目标转速范围(60—1800RPM)内,调速系统都具有较为快速、平稳和准确的响应性能。提交一份课程设计报告,其中包含的主要内容:总体设计思路,测速算法的设计,控制算法的选择,系统工作流程,实验测试结果,分析讨论,程序源代码。

2.实验设备:

参考资料

Copal直流伺服电机:

L298N直流电机\步进电机两用驱动模块:

具体设计内容步骤与程序等:

步骤:

程序:

#include "main.h"

#define Kp 0.05

#define Ki 0.05

#define Kd 0.03

#define Kt 0

uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar code LED_W[8] = {0,1,2,3,4,5,6,7};

uchar code smd[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xff};

uchar code number[]={0,1,2,3,4,5,6,7,8,9};

uchar code smgm[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

uchar code smgw[]={0,0,1,2,3,4,5,6,7};

uint pulse,jj;

float pre_err=0,last_err=0;

float Up=0,Ui=0,Ud=0,Uout=0;

uchar P2state,control_out;

float speed_set=500,speed_measure;

uint value1,value2,value3,value4;

void Delay1(uint i)

{

uchar x,j;

for(j=0;j=255)Uout=255;

if(Uout<=0)Uout=0;

control_out=(uchar)(Uout);

value3=(uint)(control_out);

}

void delay(uint i)

{

uint j,k;

for(j=i;j>0;j--)

{for(k=255;k>0;k--)PWM_out(control_out);}

}

/*void keyscan()

{

P2state=P2;

if((P2state&0x01)==0)

{delay(250);P2state=P2;if((P2state&0x01)==0){speed_set+=10;}}

if((P2state&0x02)==0)

{delay(250);P2state=P2;if((P2state&0x02)==0){speed_set+=50;}}

if((P2state&0x04)==0)

{delay(250);P2state=P2;if((P2state&0x04)==0){speed_set+=100;}}

if((P2state&0x08)==0)

{delay(250);P2state=P2;if((P2state&0x08)==0){speed_set+=500;}}

if((P2state&0x10)==0)

{delay(250);P2state=P2;if((P2state&0x10)==0){speed_set-=10;}}

if((P2state&0x20)==0)

{delay(250);P2state=P2;if((P2state&0x20)==0){speed_set-=50;}}

if((P2state&0x40)==0)

{delay(250);P2state=P2;if((P2state&0x40)==0){speed_set-=100;}}

if((P2state&0x80)==0)

{delay(250);P2state=P2;if((P2state&0x80)==0){speed_set-=500;}}

}*/

void main()

{

ECT_init();

PWM_init();

SCI_init();

motor_H=1;

motor_L=0;

while(1)

{

//keyscan();

value1=(uint)(speed_set);

PWM_out(control_out);

//send_scope(value1,value2,value3,value4);

//P0=0X00;

xianshi();

}

}

void int0() interrupt 0

{

pulse++;

}

void time0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

speed_measure=pulse*15/2;//pulse/160/0.01*60

jj=speed_measure;

value2=(uint)(speed_measure);

pid();

pulse=0;

}

设计总结:

这是一次关于xxx同学跟xxx同学一起合作的计控课程设计,我们是这样分工的:xxx主要是负责硬件调试这一块,xxx主要是负责软件与程序这一块,经过我们的通力合作,终于完成了这次课设,但是其中也遇到种种挫折,比如xxx同学的程序有些小问题,但是经过与同学们的对比跟互相讨论,我们也得到了修正,又比如xxx同学在调试过程中遇到电机在旋转,但是数码管显示的是乱码等情况,经验证程序跟接线都无问题,我们猜测是实验室提供的数码管有问题,于是我们找人换了个板,最终在规定时间内完成了这次课设。

经过这次课程设计,我们不仅加深了对计算机控制系统的组成结构和原理的理解和掌握,学习并掌握了基于状态空间的状态控制器的原理和设计方法,还学习并掌握了数字控制器的仿真和实验研究方法;而且大大的提高了我们的实践能力,与同学交流的交际能力,和提升了我们互帮互助,团结友爱的精神以及我们实践操作水平的自信心。

展开阅读全文

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值