《2022年单片机课程设计.docx》由会员分享,可在线阅读,更多相关《2022年单片机课程设计.docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品学习资源编 号课程设计 的特点,广泛应用于各种开环掌握;欢迎下载精品学习资源第 2 章 设计内容的介绍2.1 步进电机原理步进电机的工作就是步进转动,其功用是将脉冲电信号变换为相应的角位移或是直线位移,就是给一个脉冲信号,电动机转动一个角度或是前进一步;步进电机的角位移量与脉冲数成正比,它的转速与脉冲频率f 成正比,在非超载的情形下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机就转过一个步距角;如下所示的步进电机为一四相步进电机,采纳单极性直流电源供电;只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动;图1 是该四
2、相反应式步进电机工作原理示意图;图 2-1四相步进电机步进示意图开头时,开关 SB接通电源, SA、SC、SD 断开, B 相磁极和转子 0、3 号齿对齐,同时,转子的 1、4 号齿就和 C、D 相绕组磁极产生错齿, 2、5 号齿就和D、A 相绕组磁极产生错齿;当开关 SC接通电源, SB、SA、SD断开时,由于 C 相绕组的磁力线和 1、4 号齿之间磁力线的作用,使转子转动,1、4 号齿和 C 相绕组的磁极对齐;而0、3 号齿和 A、B 相绕组产生错齿, 2、5 号齿就和 A、D 相绕组磁极产生错齿;欢迎下载精品学习资源依次类推, A、B、C、D四相绕组轮番供电,就转子会沿着A、B、C、D
3、方向转动;单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2-2 所示:图 2-2步进电机工作时序波形图2.2 步进电机的分类与挑选现在比较常用的步进电机包括反应式步进电机VR)、永磁式步进电机PM)、混合式步进电机 HB)和单相式步进电机等;反应式步进电动机采纳高导磁材料构成齿状转子和定子,其结构简洁,生产成本低,步距角可以做的相当小,一般为三相,可实现大转矩输出,步进角一般为 1.5度,但噪声和振动都很大;反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩,但动态性能相对较差;永磁式步进电机转子采纳多磁极的圆筒形的永磁铁,在其外侧配置齿状定子;用转
4、子和定子之间的吸引和排斥力产生转动,它的出力大,动态性能好,但步距角一般比较大;一般为两相,转矩和体积较小,步进角一般为7.5 度 或15 度;混合式步进电机是指混合了永磁式和反应式的优点;它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度;这种步进电机的应用最为广泛,它是 PM和 VR的复合产品,其转子采纳齿状的稀土永磁材料, 定子就为齿状的突起结构;此类电机综合了反应式和永磁式两者的优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机,在运算机相关的设备中多用此类电机;欢迎下载精品学习资源步进电机有步距角 涉及到相数)、静转矩、及电流三大要素组成;一旦三大
5、要素确定,步进电机的型号便确定下来了;1、步距角的挑选电机的步距角取决于负载精度的要求,将负载的最小辨论率当量)换算到电机轴上,每个当量电机应走多少角度包括减速);电机的步距角应等于或小于此角度;目前市场上步进电机的步距角一般有0.36度/0.72度五相电机)、 0.9 度/1.8度二、四相电机)、 1.5 度/3 度 三相电机)等;2、静力矩的挑选步进电机的动态力矩一下子很难确定,我们往往先确定电机的静力矩;静力矩挑选的依据是电机工作的负载,而负载可分为惯性负载和摩擦负载二种;单一的惯性负载和单一的摩擦负载是不存在的;直接起动时一般由低速)时二种负载均要考虑,加速起动时主要考虑惯性负载,恒速
6、运行进只要考虑摩擦负载;一般情形下,静力矩应为摩擦负载的2-3倍内好,静力矩一旦选定,电机的机座及长度便能确定下来 几何尺寸);3、电流的挑选静力矩一样的电机,由于电流参数不同,其运行特性差别很大,可依据矩频特性曲线图,判定电机的电流 参考驱动电源、及驱动电压);4、力矩与功率换算步进电机一般在较大范畴内调速使用、其功率是变化的,一般只用力矩来衡量,力矩与功率换算如下:P= .M =2 .n/60 P=2 nM/60其 P 为功率单位为瓦, 为每秒角速度,单位为弧度, n 为每分钟转速, M为力矩单位为牛顿. M P=2fM/400 半步工作)其中 f 为每秒脉冲数 简称 PPS)2.3 设计
7、目标1)一个正反转开关掌握正转和反转;2)一个速度开关掌握高速和低速高速和低速只要有明显差别);3)一个半圈按钮 ,按一下时转半圈 , 一个一圈按钮 , 按一下时转一圈;欢迎下载精品学习资源4)一个连续转动按钮 , 按一下时连续转动,再按一下时停止转动;5)深化懂得步进电机工作原理,设计系统方案;6)用 protel画出系统原理图,要求是一个完整的单片机掌握系统,电源为220V沟通电在单片机试验室调试;第 3 章 设计思路与详细内容3.1 设计思路本系统主要由供电电源模块、单片机最小系统、按键电路、步进电机驱动电路以及步进电机等几部分组成;本系统采纳两个独立开关三个独立按钮,分别进行高低速、正
8、反转、半圈、一圈以及连动的掌握;驱动电路采纳ULN2003A实现步进电机的驱动;步进电机的供电采纳独立12V 供电;3.2 总体设计框图及电路原理图总体设计框图如图 3.1 所示;图 3.1 总体设计框图欢迎下载精品学习资源3.3 单片机最小系统及按键部分最小系统主要是为了单片机的正常工作;51 单片机是一种低功耗 / 低电压、高性能的 8 位单片机,它采纳 CMOS和高密度非易失性储备器技术,而且其 输出引脚和指令系统都与 MCS-51兼容;片内的 Flash ROM答应在系统内改编程序或用常规的非易失性编程器来编程,内部除CPU外,仍包括 256 字节 RAM, 4K 字节的 ROM,4个
9、 8 位并行 I/O 口, 5 个中断源, 2 个中断优先级, 2 个 16 位可编程定时计数器; 89S51 单片机是一种功能强、敏捷性高且价格合理的单片机,且支持在线编程,完全满意本系统设计需要;单片机最小系统包括单片机和复位电路,振荡电路;3.4 按键电路采纳 2 个开关 3 个按键来掌握步进电机,即“高低速切换”、“正反转切换”、“半圈”、“一圈”和“连动切换”;当波动开关或按下其中一个按键 时,电源通过上拉电阻和按键到地势成通路,使相应输入管脚接地,即给单片 机送入一个低电平,此低电平即为有效电平;按键电路及单片机最小系统部分 如图 3.2 所示;欢迎下载精品学习资源图 3.1 最小
10、系统及按键电路3.5 步进电机驱动电路步进电机的驱动电路如图 3.3 所示,驱动芯片采纳 ULN2003A;图 3.2 步进电机的驱动电路第四章 程序设计4.1 程序设计思路依据单片机外围电路的设计,单片机的P2.0、P2.1、P2.2 、P2.3 、P3.2 为欢迎下载精品学习资源按键输入 ,P1.0 、P1.1 、P1.2 、P1.3 与电机驱动 IC 相连;单片机采纳扫描按键方式其中连动切换按键采纳外部中断方式),程序依据键值结果进行相应的操 作;步进电机的正反转利用给步进电机送入与原先相反的脉冲即可,步进电机的加减速掌握是主要掌握步进电机送脉冲的时间;4.2 程序设计程序中第一进行两个
11、切换开关的检测,确定电机转速及方向,然后进行按键扫描,确定点动和电动方式或者连动,其中连动切换用外部中断0 掌握;图 4.1 程序流程图欢迎下载精品学习资源第五章 总结通过此次课程设计,使我更加扎实的把握了有关单片机应用方面的学问, 在设计过程中特别是自己动手编制程序时,遇到了许多困难,但经过一次又一次的摸索,一遍又一遍的检查最终找出了缘由所在,也暴露出了前期我在这方面的学问欠缺和体会不足;实践出真知,通过亲自动手制作,使我把握的学问不再是纸上谈兵,而是学以致用;同时,这次课程设计让我感受到了我对所学习的内容是多么的不娴熟,在设计过程中总是需要翻书,仍总是会显现问题,同时这些问题也提示了我那些
12、地方没学好,加深了对这部分学问的印象;课程设计不仅仅是一门专业课,使我学到许多专业学问以及提升了专业技能上,同时又是一门提升自我综合才能的课程,给了我莫大的进展空间,不仅培育了独立摸索、动手操作的才能,在各种其它才能上也都有了提高;更重要的是,在课程设计中,我们学会了许多学习的方法,而这些都将为日后做准 备,会使我们终身都受益匪浅;面对社会的挑战,只有不断的学习、实践,再学习、再实践,才能在最大程度上挖掘自己;这对于我们的将来也有很大的帮忙;以后,不管有多苦,我想我们都能变苦为乐,找寻好玩的事情,发觉其中宝贵的事情;参考文献1 丁元杰著 . 单片微机原理及应用M . 机械工业出版社, 2021
13、 年 1 月2 李秀霞 PROTEL dxp2004 电路设计与仿真教程M . 北京:北京航空航天高校出版社,2007年 11 月欢迎下载精品学习资源附录电路原理图程序代码:#include /uchar,uint ,宏定义#define uchar unsigned char欢迎下载精品学习资源#define uint unsigned int/开关,位定义sbit Direction = P20 ;/正反转方向切换 sbit Speed = P21;/ 高低速 切换/按键,位定义sbit Half = P22 ; / 转半圈sbit Circle = P23 ;/ 转一圈sbit Swit
14、ch = P32 ;/ 连续转动 / 停止 切换/步进电机连接端口,位定义sbit A1 = P10 ;sbit B1 = P11 ;/B 相,因头文件已定义B,故用 B1sbit C1 = P12 ;sbit D1 = P13 ;/通电方式,宏定义#define Coil_A1 A1=1;B1=0 ;C1=0;D1=0 ;/A 相通电,其他相断电#define Coil_B1 A1=0 ;B1=1;C1=0;D1=0 ;/B 相通电,其他相断电#define Coil_C1 A1=0 ;B1=0;C1=1;D1=0 ;/C 相通电,其他相断电#define Coil_D1 A1=0 ;B1=
15、0 ;C1=0;D1=1 ;/D 相通电,其他相断电#define Coil_OFF A1=0 ;B1=0 ;C1=0;D1=0 ;/全部断电/全局变量定义uint v1 = 10 ; /高速转速uint v2 = 5 ; /低速转速uint i = 512 ; /转动一圈uint j = 8 ; /转动半圈bit Flag = 1 ;/子函数声明void DelayUs2x uchar t ;void DelayMs uchar t ;void Init_Time0 void ;/void Time0_isr void interrupt 1/void Forward uint a ;/正转
16、子函数/void Reverse uint b ;/反转子函数/uS 延时函数,晶振使用12M, 大致延时T = tx2+5 uSvoid DelayUs2x uchar t while -t ;/mS 延时函数,晶振使用12M ,大致延时T = t mSvoid DelayMs uchar t while t- DelayUs2x 245 ;DelayUs2x 245 ;/ 正转 ,a = i 或 j,b = vvoid Forward uint a, uint b Coil_OFF while a- Coil_A1 DelayMs b ;Coil_B1 DelayMs b ;Coil_C1
17、 DelayMs b ;Coil_D1欢迎下载精品学习资源DelayMs b ;/ 连续转动 ,反转b = v1 或 v2 void Con2 uint b 欢迎下载精品学习资源欢迎下载精品学习资源/反转, a = i 或 j,b = v1 或 v2 void Reverse uint a, uint b Coil_OFF while a- Coil_D1 DelayMs b ;Coil_C1 DelayMs b ;Coil_OFF if .Flag Coil_D1 DelayMs b ;Coil_C1 DelayMs b ;Coil_B1 DelayMs b ;欢迎下载精品学习资源欢迎下载精
18、品学习资源Coil_B1 DelayMs b ;Coil_A1 DelayMs b ;Coil_A1 DelayMs b ;欢迎下载精品学习资源void ISR_INT0 void interrupt 0欢迎下载精品学习资源/连续转动,正转b = v1 或 v2 void Con1 uint b Coil_OFF if .Flag Coil_A1 DelayMs b ;Coil_B1 DelayMs b ;if .INT0 DelayMs10 ;if .INT0 while.INT0 ;Flag = .Flag ;欢迎下载精品学习资源Coil_C1/ 主函数DelayMs b ;int mai
19、n void Coil_D1EA = 1 ; /开全局中断DelayMs b ;EX0 = 1 ;/开外部中断 0IT0 = 1 ;/边沿触发while1欢迎下载精品学习资源if Flag & .Half Coil_OFF/ 转半圈if Speed & Direction /高速 v1 ,正转 Forward/开关,故无需消抖环节while .Half ;ifFlag/ 等待按键释放& .Half /转半圈Forward j, v2 ; /半圈,高速else ifFlag欢迎下载精品学习资源while .Half ;/等待按键释放& .Circle /转一圈欢迎下载精品学习资源欢迎下载精品学习
20、资源Forward j, v1 ;/半圈,高速& .Circle /转一圈while .Circle ;Forward i, v1 ;if .Flag /连续转动Con1 v1 ;else if Flagelseelse if Flagwhile .Circle ;Forward i, v2 ;if .Flag /连续转动Con1 v2 ;& Half & Circle Coil_OFFCoil_OFFelseelse if Flagelse欢迎下载精品学习资源& Half & Circle else if Speed &.Direction欢迎下载精品学习资源Coil_OFFCoil_OFF
21、else/ 高速v1 ,反转 Reverse& .Half / 转半圈ifFlag欢迎下载精品学习资源else if .Speed &Direction/低速 v2 ,正转 Forwardwhile .Half ;/ 等待按键释放欢迎下载精品学习资源Reverse j, v1 ;/半圈,高速& .Circle /转一圈while .Circle ;Reverse i, v1 ;if .Flag /连续转动Con2 v1 ;& Half & Circle Coil_OFFelse if Flagelseelse if Flagelsewhile .Half ;/ 等待按键释放Reverse j, v2 ;/ 半圈,高速& .Circle /转一圈while .Circle ;Reverse i, v2 ;if .Flag /连续转动Con1 v2 ;& Half & Circle else if Flagelseelse if Flag欢迎下载精品学习资源欢迎下载精品学习资源Coil_OFFelse if .Speed & .Direction Coil_OFFCoil_OFFelse欢迎下载精品学习资源欢迎下载精品学习资源/低速 v2 ,反转 Reverse& .Half / 转半圈ifFlagelseCoil_OFF欢迎下载
限制150内