已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及系统课程设计报告基于ATMEGA16的直流电机调速1 设计题目本次单片机原理与系统课程设计题目是基于ATMEGA16单片机的直流电机调速系统,基本要求是调节电机转速使之达到指定速度;主要使用了ATMEGA16三个定时器(计数器)分别用来定时,脉冲计数,PWM波产生。利用ATMEGA16自带的160位A/D转换采集电位器电压从而得到目标速度,用pid控制器调节输出pwm波占空比,调节直流电机的电枢电压,并用1602液晶显示器显示当前的速度和目标速度,实现负反馈电机调速。 2 设计目的直流电机具有良好的启动性能和调速特性,对直流电机的调速在现实中有广泛的应用。这次课程设计也是对本学期学习的单片机原理,电机学,自动控制原理等知识的应用。3 设计方案及原理3.1 总体设计方案本设计是基于ATMEGA16单片机的直流电机调速,通过采集电位器上的电压得到目标速度,通过定时器定时采集脉冲计数器采集的个数得到当前速度,然后通过pid控制器计算出需要输出的占空比,通过MEGA16的16位PWM发生器产生PWM方波,输入到电机驱动模块,改变电机的电枢电压,从而控制电机的运行。3.2 系统组成框图本系统主要包括10位A/D转换,定时器,脉冲计数模块,PWM发生器,LCD液晶显示模块,电机驱动模块等。系统组成框图如图1所示。图1 系统组成框图4 硬件设计4.1 驱动电路直流电机的驱动采用L298驱动芯片来驱动电机。L298N是ST公司生产的一种高电压、大电流电机驱动芯片。主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。内含两个H桥的高电压大电流全桥式驱动器。图2 l298驱动电路4.2 LCD液晶显示设计液晶显示模块:本系统设计的显示电路由液晶显示器LCD1602取代普通的数码管完成密码显示,并伴有提示信息,方便操作。液晶显示模块如图3所示。图3 LCD液晶显示模块4.3 速度给定(电位器位移传感器)用A/D采集电位器电压的方式来判断电位器的位移量百分比。这样就可以随意调节电机转速的给定量,较键盘输入的给定方式,这样更方便调节给定速度,也更容易实现。此模块如图4所示:图4 速度给定模块5 软件设计这个系统是基于Atmel 公司的AVR MAGA16单片机实现的。ATmega16是8位AVR微控制器具有16KB系统内可编程Flash的8位AVR微控制器,基于增强的AVR RISC结构的低功耗CMOS微控制器。系统集成两个具有独立预分频器和比较器功能的8 位定时器/ 计数器,一个具有预分频器、比较功能和捕捉功能的16 位定时器 /计数器,四通道PWM,8路 10 位ADC等模块,正好符合本次课程设计的要求。5.1 液晶显示程序部分对LCD1602进行初始化。并同步显示当前速度和目标速度。5.2 定时模块初始化采用T/C2定时器模块的CTC模式,产生基准定时时间,作为定时对脉冲数读取和定时更新PWM占空比的控制周期。5.3 PWM发生模块采用16位T/C1定时器模块的相位修正PWM模式。这是一种双斜波操作,其对称性十分适合于电机控制。5.4 脉冲计数模块采用T/C0计数器模块,通过设置T/C0控制寄存器,使得时钟由TO引脚引入,上升沿触发。5.5 A/D模块采用10位A/D转换来获取电位器的电压,从而求出其位移量,得到给定的目标速度。5.6 PID控制模块采用增量式PID控制方法。以实现电机能快速响应并能尽量结束静差。其实现代码为:change=(Kp*(error0-error1)+Ki*error0+Kd*(error0-2*error1+error2);speed_control=(speed_control+ change);程序流程图如图5所示: 图5 程序流程图6 系统仿真及实际调试此系统软件由IAR编译完成,然后在仿真软件proteus上进行仿真。当改变电位器的位移时,目标速度发生改变,在大约1s的调整时间后,速度达到稳定,静态误差在1左右。仿真结果如图6所示。图6 仿真电路图7 总结通过这次课程设计,我得到了一次用电子技术知识、单片机知识、C语言知识等知识的一次综合应用的机会,尤其对于软硬件的综合系统控制让我对电子世界的研究建立了浓厚的兴趣,同时我也对这些方面的知识有了更深的理解。本次课程设计我是独立完成,这使我们能锻炼自己各方面的能力,并在以后的生活中加以改善。在课程设计中碰到了很多的问题,感谢老师的精心指导,使我能够顺利地解决问题,少走了很多弯路,最终让系统趋于完善。同时,在后续的学习过程中我会继续努力争取解决上述问题。当然,通过这次课程设计,我也发现了自身的很多不足,在以后的学习中,我会不断的完善自我,让自己的水平更上一层楼。参考文献1 王思明,张金敏.单片机原理及应用系统设计M.北京:科学出版社,2012.2 彭伟.单片机C语言程序设计实训100例M.北京:电子工业出版社,1996. 3 谭浩强.C程序设计M.北京:清华大学出版社,2004.附录程序清单:/* Include I/O definition file */#include #include #define uchar unsigned char#define uint unsigned int#define lcd_rs PORTA_PORTA5 #define lcd_rw PORTA_PORTA6#define lcd_en PORTA_PORTA7 uchar table016=You Set is;uchar table116=Now Speed is;uchar table216=Course Design;uchar table316=Made by huqay;uint i,count;uchar bm_count;uint adc_data;float set_speed;float speed_control;struct /电机pid int error0; int error1; int error2; float change; float Kp,Kd,Ki;SpeedPid;void delay(uint k) unsigned int m,n; for(m=0;mk;m+) for(n=0;n114;n+); void write_com(uchar com) lcd_rs=0; PORTC=com; delay(5); lcd_en=1; delay(5); lcd_en=0;void write_data(uchar data) lcd_rs=1; PORTC=data; delay(5); lcd_en=1; delay(5); lcd_en=0;void lcd_init() lcd_en=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01);void lcd_write(uchar a,uchar b,uchar c,uchar d,uchar e) uchar num=0; if(e=1) table012=a+0; table013=b+0; table014=c+0; table015=d+0; write_com(0x80); for(num=0;num16;num+) write_data(table0num); delay(5); else table112=a+0; table113=b+0; table114=c+0; table115=d+0; write_com(0x80+0x40); for(num=0;num16;num+) write_data(table1num); delay(5); void data_in(int data,uchar e) uchar a,b,c,d; a=data/1000; b=(data/100)%10; c=(data/10)%10; d=data%10; lcd_write(a,b,c,d,e);void first_lcd() uchar num=0; for(num=0;num16;num+) write_data(table2num); delay(5); write_com(0x80+0x40); for(num=0;num16;num+) write_data(table3num); delay(5); for(num=0;num20;num+) delay(100); void speed_pid() SpeedPid.error2=SpeedPid.error1; SpeedPid.error1=SpeedPid.error0; SpeedPid.error0=(int)(set_speed-bm_count); SpeedPid.Kp=10.7; SpeedPid.Ki=0.95; SpeedPid.Kd=0; SpeedPid.change=(SpeedPid.Kp*(SpeedPid.error0-SpeedPid.error1)+SpeedPid.Ki*SpeedPid.error0+SpeedPid.Kd*(SpeedPid.error0-2*SpeedPid.error1+SpeedPid.error2); speed_control=(speed_control+SpeedPid.change); if(speed_control1023) speed_control=1023; void port_init() DDRA=0XFE; PORTA=0X00; DDRB=0XFE; PORTB=0X00; DDRC=0XFF; PORTC=0XFF; DDRD=0XFF; PORTD=0X00;void adc_init() ADMUX=0X40;/ SFIOR=0X00;/连续转换 ADCSRA=0XEE;/单次转换void timer() TCCR2=0X1D;/1024分频,ctc模式 TCNT0=0X00; OCR2=0XFF;/4ms定时 TIMSK=0X80;/比较中断打开void pwm_init() TCCR1A=0X83; TCCR1B=0X03;void counter_init() TCCR0=0X07;/t0引脚引入,上升沿触发 TCNT0=0X00; TIMSK|=0X01;void main() port_init(); lcd_init(); adc_init(); timer(); pwm_init(); counter_init(); first_lcd(); SREG=0X80;/开全局中断 while(1) ; #pragma vector = TIMER2_COMP_vect_interrupt void T2_CTC( void ) count+; if(count2) count=0; bm_count=TCNT0; TCNT0=0; speed_pid(); OCR1A=adc_data; da
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省温州实验中学2027届化学九年级第一学期期末质量检测试题含解析
- 2026年银行从业《银行业法律法规与综合能力》培训试卷
- 初中七年级生物(苏教版)《环境对生物行为的影响-蚯蚓对地表介质选择性的探究》教学设计
- 客运公司管理制度
- 幼儿园食堂责任书
- 红星闪闪歌词
- 九年级化学上《4.1燃烧与灭火》教学设计1沪教版
- 带有山的诗句集锦
- 2025年治未病科研治护士长工作总结及提升计划
- 湖北省武汉市武昌区C组联盟2027届九年级化学第一学期期末学业质量监测试题含解析
- 个体诊所药物管理制度
- 山东宜和纺织服饰有限公司高端新材料纺织品项目环境影响报告书
- GB/T 5709-2025纺织品非织造布术语
- T-CEIA ESD1007-2024 锂离子电池生产静电防护要求
- 安防行业智能安防监控系统建设方案
- DL-T5153-2014火力发电厂厂用电设计技术规程
- 冯谖客孟尝君二
- 重大群体性突发事件应急专项预案
- 2024年泸州市兴泸水务(集团)股份有限公司招聘笔试冲刺题(带答案解析)
- (正式版)JBT 7122-2024 交流真空接触器 基本要求
- 饲料和饲料添加剂生产企业从业人员法规考核试题
评论
0/150
提交评论