4.设计的流程图 4.1 主电路流程 电路流程是根据按键是否按下来判断的,如图4.1 所示。 开始 初始化 键盘 开始? 停止? 开始程序 停止程序 正转结束? 反转结束? 加速 减速 图4.1主程序控制 从键盘开始,判断它是否按下: (1)按下开始,启动开始程序,否则跳到下一步,为停止。 (2)按下停止,不按则跳到正转。 (3)按下正转,正转开始,并且判断加速和减速;不按跳到下一步反转,反转开始, 并且判断加速和减速。 (4)返回初始化。 4.2 控制电路流程图 此设计需要实现的是电机受到最大阻力的时候进行反向运行,如图4.2 所示。 中断EXO1 EXO2 PWM进行 变速 最大转 停当前最大速度 返回中断 A/D检测 电压比较 极限值 电机反转 返回中断 图4.2控制电路流程图 STC12C2052AD 内置中断,所用到2 个内部中断器,EXO1 和EXO2,EXO1 检测转速的 最大值,此最大值为内部程序编写预先设定,当按钮按到最大速度时,电机无法再加速, 即PWM 控制占空比达到最大的比例,此时若没有达到会返回中断继续判断。EXO2 检测电 压最大值,当检测到的电压值和预设的接近时,说明电机受到的力接近极限,进行电机 反转。 5.电机速度的控制 力矩反转是这次课题完成的一个重要环节,本次设计采用的是一个直流电机,额定 电压是十二伏,每分钟为两千转,而调速就用到PWM 控制。 利用PWM 改变一周期内的占空比,电机的速度会相应得变化。当占空比为50%,电机 会停止,当占空比小于 50%,电机反转;占空比大于 50%,电机正转,而且占空比的占 比越大或者越小,电机正转或反转的速度就越大。 虽然可以利用PWM 进行调速,但是电机的最大速度为两千转,而伤员最大承受速度 为每分钟20 转,这个速度远远大于伤员所能承受的最大速度,会导致伤员的再次受伤。 所以考虑到把电机的最大速度限制在伤员所能承受的最大电压之内。 这就利用到限流电阻,起到分压的作用,把分在电机两端的电压降低,从而改变转 速。在直流稳压电源的调试下,额定电压调在12V,在电机一端接不同的电阻,来检测 电机转速的变化,最终选取了 10K 的电阻,转速大概在每分钟 20 转,符合了伤员的最 大承受转速,所以这样就避免了因为调速超速而引发的医疗事故。 6.测试 6.1 测试仪器 万用表1只,示波器1台,砝码 6.2 测试方法 在通电前用万用表检测电路板有没有短路,断路现象,再测测电阻的阻值是否正确, 电容是否正常,再测测二极管,三极管是否接返,基本的问题检查完后可以进行通电检 电路是否正常实现功能,可以使用几个砝码进行测试。据统计,一般骨关节受伤的患者,承受的拉力为20牛,所以把20牛设为电机反转的临界值。测试时准备4个重量为5 牛的砝码,一个一个往拉力带上放,看电机的运转情况,如表格1所示。 表6.1 拉力测试结果 拉力(牛) 电机正转 电机反转 反转由此可以得知可以正确实现电路的功能,到达设置的力矩值可以反转电机。 结论与谢辞参考文献 周杰,张樱枝.单片机C语言及汇编语言实用程序设计[M].中国电力出版社,2009. ThomasL.Floyd;David M.Buchla .模拟电子技术基础(双语版)[M].清华大学出版 社,2007. 附件1.元器件清单序号 物料名称 规格型号 数量 插件电源芯片STC12C2052 整流二极管1N4007 插件陶瓷电容22Pf 插件陶瓷电容100NF 极性电容22uf 电解电容470uF/63V 功率电阻0.5/2W 插件碳膜电阻10K R1,R210 插件电源芯片 L298N U611 插件电源芯片 74LS04 U412 插件碳膜电阻 330R 附件2.硬件原理图R1 10k S5 SW-PB S2 SW-PB S4 SW-PB S6 SW-PB S3 SW-PB C3 22uf Y1 12MHZ C2 20pf C1 20pf +5V VS 10INPUT 12ENABLE 11GND 13OUTPUT 14SENSE 15U6 L298 MOTOR1A- MOTOR 1A+ 12V +12V PWM1 INPUT11 INPUT12 R3 0.5/2W R4 0.5/2W C8 100NF D3 4007 D4 4007 D5 4007 D6 4007 c9 470UF/63V VCC INPUT11 INPUT12 IOPB1 U4A74LS04 +5V rst vcc p3. xtal2p1. xtal1p1. gndp3. U1STC12C2052AD J3CON3 +5V R3 10K +5V +5V IOPB1 PWM1 J1CON2 J8CON2 J9CON2 +12V +5V Rn RES2 dianyajiance dianyajiance 附件3PCB 附件4程序设计 org 00h ajmp start org 30h START: mov p0,#0ffh jnb p1.3,ZHENZHUAN jnb p1.4,FANZHUAN jnb p1.5,JIASU jnb p1.6,JIANSU ajmp start ZHENGZHUAN: LCALL YANSHI ;调用延时子程序,目的:软件消除按键抖动 JNB P0.0,QI LJMP START QI: clr p0.6 setb p0.7 LJMP START FANZHUAN: LCALL YANSHI JNB P0.1,FAN LJMPSTART ;软件消抖后,若p0.0 为1,则认为按键未按下,回到检测按键状态程序 FAN: lcall PANTING clr p0.7 ;接通DIR 端,使电机逆时针转动 LJMP START JIASU: LCALL YANSHI JNB P0.3,JIA LJMP START JIA: mov a,p2 anl a,#07h jz START 中值为0,则速度已经最大,不再加速,回到检测按键状态程序mov r0,p2 dec r0 mov p2,r0 LJMP START PANTING: jnb p2.4,yanshi250ms ajmp PANTING yanshi250ms: clr p2.6 mov p3,#08h setb p2.6 ;计数器开始计数 mov y250:mov r1,#00h inc r1 jb p2.5,PANTING ;若期間Tc 为1,则电机未停,返回PANTING,继续判断 cjne r1,#0ffh,y250 ;延时1ms cjnea,#250,y250 ;延时250ms, ret tab: db 03h,03h,49h,0dh db 03h,03h,03h,0dh db 03h,03h,49h,27h db 03h,03h,03h,27h db 03h,03h,49h,9fh db 03h,03h,03h,9fh db 03h,03h,49h,0ffh db 03h,0ffh,0ffh,0ffh END 附件5实物图