高瑶ATMEGA直流电机测速系统设计方案.docx
- 文档编号:18127197
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:33
- 大小:387.53KB
高瑶ATMEGA直流电机测速系统设计方案.docx
《高瑶ATMEGA直流电机测速系统设计方案.docx》由会员分享,可在线阅读,更多相关《高瑶ATMEGA直流电机测速系统设计方案.docx(33页珍藏版)》请在冰点文库上搜索。
高瑶ATMEGA直流电机测速系统设计方案
南通纺织职业技术学院毕业论文设计
基于ATMEGA8直流电机测速系统设计
高瑶
班级:
09电子信息
专业:
电子信息工程技术
教学系:
机电系
指导老师:
邱宏
完成时间2018年9月至2018年12月
目录
摘要………………………………………………………………………2
一引言…………………………………………………………………..3
1、直流电机的应用与特点…………………………………………..4
2、文章的选题意义…………………………………………………..4
3、文章的主要内容…………………………………………………..4
二任务分析与方案确定……………………………………....5
1、设计的目标任务…………………………………………………..5
2、设计的总体方案…………………………………………………..5三硬件电路设计……………………………………………...6
1、电源电路…………………………………………………………..6
2、单片机电路………………………………………………………..7
3、显示电路…………………………………………………………...9
4、整体电路………………………………………………………….11
四软件设计………………………………………………......13
1、软件设计方案……………………………………………………13
2、功能模块子程序…………………………………………………14
五软硬件系统调试………………………………………......21
1、硬件调试………………………………………………………....21
2、软件调试………………………………………………………....22
小结……………………………………………………………24
六参考文献..............................................................................26
基于ATMEGA8的直流电机调速系统的设计
摘要:
文章介绍了一种直流电机测速系统的设计过程,首先明确设计任务、提出了电路设计的总体方案,接着介绍硬件电路主要功能模块的作用、电路结构原理、及关键元件的选型与参数;然后是系统的软件设计,分析了软件所要实现的功能、并画出软件的方案流程图,给出了几个软件功能模块的子程序;最后是系统的调试部分,包括硬件软件调试的一般过程,并且结合本设计的具体,对开发过程中出现的一些问题现象及调试解决的过程进行了阐述。
关键词:
直流电机测速ATMEGA8MAX7219
一引言
1.直流电机的应用与特点
直流伺服电机常常用于实现精密调速和位置控制随动系统中,在工业、国防和民用等领域内到广泛应用,特别是火炮稳定系统、舰载平台、雷达天线、机器人控制等场合。
直流电机由于具有速度控制容易,启动、制动性能良好,平滑调速范围宽等特点,在冶金、机械制造、轻工等工业部门中得到广泛应用。
早期直流电动机的控制均以模拟电路为基础,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难,阻碍了直流电动机控制技术的发展和应用范围的推广。
随着单片机技术的日新月异,使许多控制功能及算法可以采用软件技术来完成,不但为直流电动机的控制提供了更大的灵活性,而且使系统能达到更高的性能,从而大大降低了系统成本,有效地提高了工作效率。
无刷直流电动机具有控制简单、动态响应好、可靠性高等优点,作为伺服电机有很好的应用和研究价值。
伺服电机为实现位置定位要求能频繁地启动和制动,并且有很快的动态响应。
2.文章的选题意义
本文的课题意义在于:
1、本文设计的测速系统中采用现代流行的智能化元件,相对于传统的模拟电路控制直流伺服电机,不仅电路结构更加简单,而且可以非常方便地实现功能的升级。
文章中的直流伺服电机的测速系统,完全实现智能,传感器采集信号送与单片机处理显示,无需人工操作,同时对驱动显示的实时监控,信号的采集处理上,以单片机代替了模拟电路,避免了实现控制逻辑时需要的许多电子元件,而采用单片机后,绝大多数控制逻辑可通过软件实现。
例如:
可以实现较复杂的控制。
单片机具有更强的逻辑功能,运算速度快、精度高、存储容量大,因此有能力实现复杂的控制。
提高控制的灵活性和适应性。
单片机的控制方式是由软件完成的,如果需要修改控制规律,一般不必改变系统的硬件电路,只须修改程序即可。
在系统调试和升级时,可以不断尝试,选择最优参数。
无零点漂移,控制精度高。
数值控制不会出现模拟电路中经常遇到的零点漂移问题,无论被控制量是大还是小,都可保证足够的控制精度。
因此,本文的设计为闭环的控制应用场合也具有重要的借鉴参考意义。
2、本文采用模块化的设计理念,顺应产品设计的流行趋势,使得产品无论在设计分工、生产、调试售后服务上,都提供了极大的便利,同时采用了先进的控制功能模块,对这些模块的应用提供了一种成功的案例。
例如,对于主控芯片采用的是ATMEGA8单片机,它是目前性价比较高的单片机。
显示管理芯片采用的是PS7219,PS7219是一种高性价比的多位LED显示管理芯片,其内部具有15×8RAM功能控制寄存器,可方便寻址、对每位数字可单独控制、刷新。
显示亮度可数字控制,每位都具有闪烁使能控制。
3.文章的主要内容
本次设计的是一个直流伺服电机的测速系统,
第一部分介绍了硬件电路的设计:
首先明确了设计任务,提出了电路总体结构方案,接着分别叙述了硬件主要功能模块在本设计中的作用、电路结构原理、及关键元件的选型与参数;
第二部分是系统的软件设计,首先分析了软件所要实现的功能、并画出软件的方案流程图,然后给出了几个软件功能模块的子程序,由于涉及到知识产权的保护,未能给出完整的程序清单。
第三部分是系统的调试部分,分别介绍了硬件软件调试的一般过程,并且结合本设计的具体内容,对开发过程中出现的一些问题现象及调试解决的过程进行了阐述。
二任务分析与方案确定
1.设计目标任务
本文设计的直流伺服测速系统要具有如下的功能:
1转速的范围在0-6000转/分进行测速。
2实时显示转速的数值,误差小于5%。
2.设计的总体方案
采用模块化设计的理念,在硬件设计方面,电源部分采用直流稳压电源,220V交流电经过,变压,整流,滤波后输出稳定的5V直流电对单片机进行供电。
显示部分需要4位数据,采用LED数码管,可靠稳定,对数码管的驱动采用专用芯片PS7219,芯片与单片机连接仅需要3根线,芯片与数码管之间采用动态扫描,单片机的选择采用atmega8,内部自带ROM,RAM,无需扩展,而且可在线下载,方便了软件的调试,提高效率。
在软件设计方面,如果采用1秒钟刷新的方案,则由于脉冲数量足够多,精度满足,但是显示的实时性不够;采用0.2秒刷新一次的方法,实时性满足,但是由于脉冲数量太少,例如,由于每转传感器发出的脉冲是18次,因此在3000转/分时,在0.2秒的时间内,精度是3000/180转/脉冲,如果在0.4秒的时间内,精度是3000/360转/脉,在1秒内精度是3000/900转/脉,因此采用分级修正的方法来满足显示的精度与显示实时性的要求,即0.2秒刷新一次数据,如果每相邻的脉冲数相同,则修正一次显示的数据,如果转速稳定,速度的显示可以修正到4转/分的精度,满足要求。
系统结构图如图1连接一个直流稳压电源向单片机提供0-5V的电压信号,传感器采集电机信号送到单片机处理计算。
单片机把传感器送来的信号处理后通过驱动电路送到显示,通过LED显示出来。
图1系统总体结构
三硬件电路设计
1、电源电路
<1)电源电路作用
1.将220V的交流电稳压到电压为5V电流大于100mA的直流电。
2.为单片机,显示驱动,数码管显示提供稳定的5V电压。
(2>电路结构
如图3所示,此电路可把市用220V电源变压,整流变为稳定的5V电压。
为单片机和驱动提供稳定的电源。
当220V电压过来后先经过电容进行滤波,然后经过共模扼流圈到达变压器,但是220V的电压并不是稳定的电压,一般在180V-220V之间波动,由于稳压器稳压范围在6.5V-24V之间,所以经过推算出变压器的变压倍数需要11倍,但是为了根精确我选用22倍的变压器。
因此变压过后的电压在8.1V-11.4V之间,经过电桥后电压变为原先的1.2倍后为9.7V-13.7V,此时在稳压器的稳压范围之内,通过稳压器变为5V的电压。
一般变压器稳压倍数不要选太小这样变压过来的电压值会比较大,比较大的电压经过稳压器稳压,这样稳压器的消耗功率会增大,同时发热量也比较大,会造成不必要的消耗,而且对稳压器也有影响,减少寿命。
因此要选用适中的电压范围。
图2电源电路
(3>主要元件选型及参数
这是一个输出正5V直流电压的稳压电源电路。
220V通过电容滤波后,经过共模扼流圈再次滤过高频电压后通过变压器变为10V左右的电压。
电容C5起到一个中转作用,把变压后的电能储存起来,防止不稳定的电压影响稳压器。
采用集成稳压器7805,C7、C8分别为输入端和输出端滤波电容,R1为负载电阻。
当输出电较大时,7805应配上散热器。
D3是输出保护二极管,一旦输出电压低于稳压值时,D3导通,将输出电流旁路,保护7805稳压器输出级不被损坏。
L1,L2起到稳压作用,阻止频率较高的不稳定电压通过,也可以用电感替代,但是磁珠有很高的电阻率和磁导率,等效于电阻和电感串联,同时磁珠的电阻值和电感值不会随频率变化,因此优先用磁珠。
2、单片机电路
<1)单片机电路作用
传感器把电机转速以脉冲形式反馈给单片机电路,单片机根据所接收到的脉冲信号将电机转速换算出来发送到显示电路。
<2)电路结构
单片机单元电路如图3所示。
图3单片机电路
(3>主要元件选型及参数
ATmega8是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。
由于其先进的指令集以及单时钟周期指令执行时间,ATmega8的数据吞吐率高1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
主要引脚作用:
(1>1引脚连接的是复位电路,电源上电时,C9充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C9充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。
工作期间,按下S1,C9放电。
S1松手,C9又充电,在10K电阻上出现电压,使得单片机复位。
几个毫秒后,单片机进入工作状态。
(2>11引脚为传感器输入引脚,接收传感器送来的脉冲信号。
(3>9、10引脚接的是晶振电路。
(4>13、14、15引脚连接显示电路,为7219发送处理后的显示数据。
3、显示电路
<1)显示电路的作用。
本系统设计中需要四位数码管显示,因此一般采用动态显示的方法,但动态扫描占用的端口多,且编程复杂,所以本文显示电路采用专用PS7219串行显示管理芯片,该芯片本身只需3根线就可与单片机实现接口,其接口采用流行的同步串行外设接口 态地扫描管理显示。 硬件连接简便,软件编程容易。 尤其用在单片机担负繁忙数据处理任务的系统中,节省单片机用于显示扫描的时间,更显出其优越性。 <2)电路结构 电路结构如图4所示,单片机将要显示的数据以串口的形式按指令格式发送到PS7219数据控制寄存器中,PS7219将每位数据对应的共阴极断码以及每一位的位控制端在内部自带时钟的触发下动态逐位的输出,实现四位数据的依次动态扫描。 图4显示电路 <3)元件的选择及主要参数 PS7219是一种高性价比的多位LED显示管理芯片,广泛地应用于智能仪表当中,其接口采用流行的同步串行外设接口 其内部具有15×8RAM功能控制寄存器,可方便寻址、对每位数字可单独控制、刷新。 显示亮度可数字控制,每位都具有闪烁使能控制。 内部自带时钟电路,无需任何外部元件便可多路复用自动扫描。 N个PS7219级联,可实现N×8位LED的显示。 适于各种智能仪表的显示。 PS7219具有以下主要特点: 表17219引脚介绍 18 RST 复位引脚 12 LOAD 装载数据输入,当LOAD为高电平,串行输入数据的最后16位被锁定 1 DIN 串行输入,在CLK的下降沿,数据被加载到内部16位移位寄存器中 13 CLK 时钟输入,最高频率为500,在CLK的下降沿,数据被移入到内部移位寄存器中。 5-8,3,10,11 BIG1-BIG8 8位数字驱动线,它从显示器吸入电流 13 CON 显示控制端,低电平选通,高电平显示无效 14-17,20-23 A-G,DP 七段驱动器和小数点线,它供给显示器源电流 24 DOUT 串行数据输出,输入到DIN的数据在16.5个时钟周期后在DOUT端有效 19 V+ 电源电压,工作电压为5V 9 GND 地 主要引脚作用: 1.SEGA-SEGG为断码输出,分别接在四位数码管上,从单片机过来的数据经过驱动加载在数码管上。 2.BIG1-BIG4为位码输出,分别接在数码管位码引脚上,通过单片机控制逐个点亮。 3.LOAD,DIN,CLK连接在单片机上,单片机处理的数据输入过来,7219接收并保存,然后送与数码管动态显示。 单片机每0.2秒发送一次数据,当数据与上次相同时,单片机不动作;不同时,新数据刷新老数据。 4.V+为5V电源供电,ISET为复位电路,GND接地。 4、整体电路 图5电路原理图 图6PCB板PCB排版时的注意事项: 1、元器件的封装选择: 元器件的封装选择要依据元器件的功能而选用,功能不同封装也不同,比如,电容C5,C6,电容C5是有极性的电解电容,容量可能要大一点,所以封装就不能用预设的封装而要自己绘制,同时C5的元器件是圆柱体,因此封装一定要和事物相一致,这样才能为以后元器件的焊接带来方便,另外一定要注意有极性电容的正负极。 2、元器件位置的摆放: 元器件位置的放置非常重要,位置的摆放会影响电路功能的好坏,不同的摆放电路的功能效果就会不一样。 一般数字电路和模拟电路要分开摆放,模拟电路的敏感度强,比较容易受到干扰,同时数字电路的频率较高,干扰性较大,所以最好分开摆放。 有些元器件属于大功率元器件,耗能、发热都比较大,因此其周围的元器件不能摆放太密集,特别是电解电容受热会影响其功能,最好与大功率元件保持一定的距离。 大功率元器件一般摆放在板子边缘有利于散热。 3、布线: 电源、地线的考虑不周到而引起的干扰,会使产品的性能下降,有时甚至影响到产品的成功率,所以对电、地线的布线要认真对待,一般数字电路和模拟电路的地线要分别接地,同时地线、电源线要适当的加粗。 数字电路的频率高,对信号线来说,高频的信号线尽可能远离敏感的模拟电路器件,宁可绕远线也要避免干扰。 低频信号线采用一点接地而高频信号线最好多点接地。 三软件设计 1.软件设计方案流程图 1、主程序设计方案流程图 图7主程序设计方案流程图 主程序设计方案流程图如图7所示,程序开始后,先进行参数的初始化: 堆栈SP初始化、功能寄存器初始化、参数初始化。 然后进行数码显示自检,自检完成后中断开启,等待中断。 当累计计时到200ms时,读取脉冲计数并清零,然后与前几次相同的脉冲数进行比较,根据相同的次数n分别计算出当前的速度值,然后刷新显示缓冲,并将显示标志置位,为显示输出做准备,再中断返回。 若不到200ms,则2ms查看一次显示标志是否置位,若置位则发送一位显示数据,直到显示缓冲数据发送完毕,清零显示标志并退出,否则直接退出。 2、功能模块子程序 #include #include #include #include #include /***************端口定义******************/ #defineDIN0//PB0,PIN14 #defineCLK1//PB1,PIN15 #defineL_DINPORTB&=~(1< #defineH_DINPORTB|=(1< #defineH_CLKPORTB|=(1< #defineL_CLKPORTB&=~(1< #defineH_LOADPORTD|=(1<<7>//PD7,PIN13 #defineL_LOADPORTD&=~(1<<7> #defineSTEP_DIR_LPORTB|=(1<<2> #defineSTEP_DIR_RPORTB&=~(1<<2>//PIN16,POS-2//默认,进位 #defineSTEP_P_HPORTC|=(1<<4>//PD2,PIN4 #defineSTEP_P_LPORTC&=~(1<<4> #defineUP_KEY0//PC0,PIN23,s1 #defineDWN_KEY1//PC1,PIN24,s2 #defineSET_RUN2//PC2,PIN25,s3 #definePAUSE3//PC3,PIN26,s4 #defineL_limit5//PC5,PIN17,POS-1,jinxianwei #defineR_limit6//PD6,PIN18,POS-3,tuixianwei #defineround_p10/3//==60/18//每圈产生18个脉冲 /******************************************变量定义 图8脉冲采集子程序流程图 *****************************/ //unsignedchark。 unsignedcharsend_address。 //寄存器地址 unsignedcharsend_date。 //发送的数据 uint16_tdc_m_p[5]={0,0,0,0,0}。 //直流电机脉冲 uint8_tdc_m_dspbuf[4]={1,2,3,4}。 uint8_tstep_dspbuf[4]={5,6,6,8}。 uint16_tstep_v_value[101]={0,12,13,13,13,13,14,14,14,15,15,15,16,16,16,17,17,18,18,19,19, 20,21,21,22,22,23,24,24,25,25,26,26,27,28,29,29,30,31,32,33,//160 34,35,37,38,39,41,43,44,46,48,51,53,56,59,63,66,71,76,82,88, 97,106,118,133,136,140,144,148,152,156,161,166,172,177,183,190,197,205,213,222,231,242,254,266, 281,296,313,333,355,380,410,444,485,533,592,666,761,889,1066,1333}。 uint8_tinttime0=0,inttime2=0。 //200ms的定时计数 uint16_tstep_ctl=0。 //25ms为单位的控制脉冲计数 uint8_twork_p_time=0。 //脉冲变化次数0 uint8_twork_p_flag=0。 //发出一个脉冲的标志 uint8_tupkeyflag=0,keyflag=0。 //连续按键的时间清零 uint8_tdwnkeypress=0,upkeypress=1,setflag=0。 uint8_toldsetflag=1。 uint8_tlightlednum3=0。 uint8_tlightlednum2=0。 uint8_tlightlednum0=0,step_dspflag=0,dc_m_dspflag=0。 uint8_tlightlednum1=0,runflag=0,fast_dir=0。 uint16_tdc_m_sum=0,dc_m_sp=0,dc_m_sp_old=0。 uint8_toldpauseflag=1,pauseflag=0x55,flashtime=0。 uint8_twdtflag=0xaa。 /****************************************函数定义******************************/ voidmodel(void>。 uint8_treadportstate(uint8_tportnum> { uint8_tpcount=0,fuzzystate=1,i=0。 while(fuzzystate> { pcount=0。 fuzzystate=0。 for(i=0。 i<10。 i++>//直到3次读取的数据完全相同,否则继续读取 { if(_BV(portnum>&PINC>pcount++。 } if(pcount<=2>return0。 elseif(pcount>=8>return1。 elsefuzzystate=1。 } } voidsystem_init(void> { DDRC=0x10。 PORTC=0xff。 DDRB=0xff。 PORTB=0xff。 DDRD=0xDF。 PORTD=0xff。 TCCR0=0x05。 //fosc*1/1024normalmodel TIMSK=(1< TCCR1B=0。 TCCR1A=0。 TCCR1B=(1< //外部脉冲上升沿触发计数 TCNT1=0x00。 } voiddisplayfloatnum(uint16_tfloatnum>//获取要显示的4位数据的数值 { lightlednum0=(uint8_t>(floatnum%10>。 lightlednum1=(uint8_t>((floatnum/10>%10>。 lightlednum3=(uint8_t>(floatnum/1000>。 lightlednum2=(uint8_t>((floatnum/100>%10>。 } //callthisroutinetoinitializeallperipherals /******************************************************** 图9显示子程序流程图 ********************************************************/ voidDi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ATMEGA 直流电机 测速 系统 设计方案