欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    直流电机转速负反馈调节器拖动系统课程设计正文报告大学论文.docx

    • 资源ID:15142891       资源大小:719.35KB        全文页数:33页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    直流电机转速负反馈调节器拖动系统课程设计正文报告大学论文.docx

    1、直流电机转速负反馈调节器拖动系统课程设计正文报告大学论文拖动系统课程设计报告书题目:直流电机转速负反馈调节器专业:自动化 姓名: 学号:指导教师:任务书:设计题目:闭环控制的PWM直流调速系统设计与实现专题题目:直流电机速度闭环调速系统任务下达日期:2015年5月15日设计日期:2015年6月7日-2015年6月17日主要内容:1、测定综合实验中所用控制对象的参数(由实验完成)。2、根据给定指标设计转速调节器,并选择调节器参数和具体实现电路。3、按设计结果组成系统,以满足给定指标。4、研究参数变化对系统性能的影响。5、在变工况(加载)下进行调试。要求:1、能独立设置电机速度(按键设置或滑动变阻

    2、器设置或上位机设置);2、能显示当前电机的实际速度(单位为:r/min);3、能控制电机启动、停止、正反转、软启动和软制动;4、给电机加载后,速度能迅速调节回给定值;摘要本文章介绍了有TIM4C123GH6PM芯片以及带编码器的直流电机、L298电机驱动模块、矩阵键盘,串口四位数码管构成的PID转速闭环控制系统。由芯片的正交编码模块对电机自带的编码器产生的信号进行正交解码得到速度值,并由芯片将其与设定值进行比较的到偏差,再由偏差产生的直接控制作用去消除偏差。本文中不仅介绍了基础TIM4C123GH6PM的转速控制系统的软件设计,还涉及了硬件的设计方法。本文介绍系统不仅可以实现自动调速,还可实现

    3、电机的正反转以及启停控制,以及对电机转向进行标志。关键词:直流电机;PID闭环控制;TM4C123GH6PM;矩阵键盘;串口四位数码管目录1 系统概述12 硬件设计12.1 控制器12.2 按键模块22.3 串口四位数码管22.4 L298电机驱动模块32.5 直流电机42.5.1 直流电机参数42.5.2 编码器参数42.5.3 信号线说明53 软件设计53.1 主函数部分53.2 速度计算模块53.3 速度显示模块53.4 按键检测模块63.5 PID控制模块84 系统调试105 结束语116 参考文献117 附录12正文:1. 系统概述本次设计以数字PID为控制算法,以TIM4C123G

    4、H6PM为控制芯片,运用TIM4的PWM模块产生受PID算法控制的PWM信号驱动L298N电机驱动模块进而驱动电机,并用TIM4的正交编码模块对编码器产生的脉冲进行计数,实现转速闭环控制,达到转速无静差的目的。2. 硬件电路设计硬件连接示意图2.1. 控制器采用TIM4C123GH6PM,TIM4具有高速,低功耗的特点,而且自带PWM模块和正交编码模块,不仅控制性能好而且简便易于实现。并且自带3色LED都灯。可以作为停止,正转,反转的信号标志。其管脚如下:2.2. 按键模块按键为自己焊接的43矩阵键盘,采用扫描式方法,在A2,A3,A 4依次给低电平,B04进行检测,根据组合进行判定数字2.3

    5、. 串口四位数码管2.4. L298电机驱动模块2.5. 直流电机2.5.1. 直流电机参数:电机的电枢电阻11欧。工作电压可从3V至30V。堵转电流=电压 / 电枢电阻。 18v时空转转速9000rpm,其他电压下的转速可大致按比例计算。2.5.2. 编码器参数:共输出两路正交(相位相差90)脉冲信号。分辨率334,意味着电机每旋转一周输出334个周期脉冲。如果把每一路脉冲的上沿和下沿都利用起来,相当于四倍频,分辨率可以达到344=1336。334线AB相编码器,内含整形电路,输出是方波,可直联单片机IO。编码器供电电压为5V,AB相输出,在A相或B相的上升或下降沿时判断对方的电平,就可以判

    6、断电机的转动方向。2.5.3. 信号线说明:A相方波输出,B相方波输出,VCC,GND是编码器电源,必须稳压。电机1,电机2是直流电机的电源。3. 软件设计3.1. 主函数部分该函数先要要设置系统时钟,在函数中系统时钟为50MHz,然后便要对本次课程设计中数码管,按键所需要的GPIO口进行初始化配置。接着要对芯片上的PWM模块、正交编码模块进行初始化配置。然后要设置电机的初始状态。各个部分初始化完毕后,设计主循环部分的函数,速度检测应该放到最前,因为数码管显示和PID控制都需要用到检测的速度,然后便是数码管显示显示实时速度,按键检测检测完毕后,如果按键输入速度,便要通过PID控制达到所设置的速

    7、度。然后往复循环。1. 2. 3. 3.1. 3.2. 速度计算模块由于正交编码模块采用双边沿触发设置,故电机运行一圈的脉冲数为3344。程序如下:speed_signal=QEIVelocityGet(QEI1_BASE);/得到脉冲个数speed=(speed_signal*50*60)/(4*334);/速度计算speedDirectionGet=QEIDirectionGet(QEI1_BASE);/得到电机转速方向3.3. 速度显示函数由于按键输入时要显示出按键值,所以加入输入数字个数检测变量,在无按键按下的情况显示速度,在按键按下时,显示按键值,直到四个数字输完,显示全部的四位数字

    8、,才切换会速度显示。程序如下:if(jianceTime=0) SpeedDisplay();else if(jianceTime=0xFF) for(i=0;i1000;i+) LED4_Display(); jianceTime=0;else LED4_Display();3.4. 按键检测模块由于加入防抖动延时,按键函数分为两部分,一部分为按键按下检测,另一部分为按键值检测按键按下检测程序:GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4,0);if(!(GPIOPinRead(GPIO_PORTB_BASE,GP

    9、IO_PIN_0)&GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_1)&GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_2)&GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_3) SysCtlDelay(SysCtlClockGet()/100); if(!(GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_0)&GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_1)&GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_2)&GPIOPinRea

    10、d(GPIO_PORTB_BASE,GPIO_PIN_3) shaomiao(3-jianceTime); GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4,0);while(!(GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_0)&GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_1)&GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_2)&GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_3)/按键释放检测 按键值检测程

    11、序:GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4,0xFF); GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_2,0); if(!GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_0) LED1i=1; if(!GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_1) LED1i=4; if(!GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_2) LED1i=7; if(!GPIOPinRead(GPIO_POR

    12、TB_BASE,GPIO_PIN_3) jianceTime=0xFF; judge_forward_reverse(); return; GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_2,GPIO_PIN_2); GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3,0); if(!GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_0) LED1i=2; if(!GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_1) LED1i=5; if(!GPIOPinRead(GPIO_PORT

    13、B_BASE,GPIO_PIN_2) LED1i=8; if(!GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_3) LED1i=0; GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3,GPIO_PIN_3); GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4,0); if(!GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_0) LED1i=3; if(!GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_1) LED1i=6; if(!GPIOPinRea

    14、d(GPIO_PORTB_BASE,GPIO_PIN_2) LED1i=9; if(!GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_3) LED0=11;LED1=11;LED2=11;LED3=11; jianceTime=0xFF; stop(); return; GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4,GPIO_PIN_4);3.5. PID控制模块由于电机的机械特性,导致一个PID参数难以对电机转速进行宽范围的调控,经测试尤其200r/min一下,难以正常运转,因此进行分段PID控制if(setspeed5000)

    15、out=5000; if(out=-5000) out=-5000; past_uk=out; e0=e1; e1=e2; PulseWidth=PulseWidth+PulseWidth*(out/5000); if(PulseWidth1) PulseWidth=1; if(setspeed=200) /200r/min以上PID控制 Kp=0.04; Ki=0.000001; Kd=0.00001; e2=setspeed-speed; uk=Kp*(e2-e1)+Ki*e2+Kd*(e2-2*e1+e0); out=uk+past_uk; if(out5000) out=5000; i

    16、f(out=-5000) out=-5000; past_uk=out; e0=e1; e1=e2; PulseWidth=PulseWidth+PulseWidth*(out/5000); if(PulseWidth1) PulseWidth=1; govern_speed();4. 系统调试本次课程设计的程序,我是一个模块一个模块依次编写的,首先是显示模块,显示模块的程序为51程序移植,这个模块唯一难点便是M4的GPIO口操作要比51复杂很多,除了花点时间之外,并没有太多困难。在显示模块之后是按键模块,由于用的矩阵键盘,除了需要配置较多GPIO口之外,便是程序的逻辑问题。刚开始我的键盘扫描

    17、程序编写的是一个较大的子程序,编完程序调试时变出了问题,按了2下1,数码管便显示4个1.经检查是没有加防抖动延时,因为用的矩阵键盘,按下检测比较麻烦,不知道怎么检测哪一个按钮,便起了侥幸心理,没想到就问题。后来经过思考,按下检测不需要知道哪个按键按下,于是便让A1A 3口均输出低电平,让B0B3口进行检测,只要有低电平按下,便进行防抖延时。加入防抖延时后,仍然不能完全解决问题,经过思考,系统时钟较快,如果按下时,系统可以执行两遍扫描程序,那便依然会出现上述问题,于是还要加按键释放检测。加了按键释放检测,上述问题便迎刃而解。所以一个键盘扫描程序用必须要有防抖延时和释放检测这两个环节。第三个模块就

    18、是PWM模块,这个模块是芯片上就有的功能,初始化配置之后便可使用。因为模块这个要配合按键输入占空比进行调速,首先第一个问题便是修改按键程序与之协调,并要添加正转,反转,停止和占空比设置函数。在程序编写完毕后,PWM调速已经没有问题,但是启停正反转无法实现,还有一个问题便是停止后,让电机启动要进入哪个状态。主要问题便是电机的正反转问题,刚开始正反转便是让一路PWM占空比为0,另一路有占空比不为0进行正反转控制,但是经过示波器观察发现,占空比不为0时无任何问题,但是占空比为0时,PWM输出管脚竟然是高电平,与理想中不一样。于是,设想如果PWM为0不能实现高电平,那么关掉PWM发生器,PWM发生器输

    19、出管脚应该就为低电平,可是经过测试后发现,PWM输出管脚依旧为高电平,无奈只能去找资料还有查看M4函数定义以及数据手册,然后经过大量测试发现将PWM输出管脚输出功能关闭之后,PWM输出管脚为低电平,才解决问题。第四部分便是正交编码模块,由于TI的数据手册虽然介绍的正交编码模块,但是没有讲解如何用函数去配置正交编码模块,就连TI的官方例程都没关于正交编码的程序,无奈只能去查找TI的函数库以及用其他厂商的M4芯片正交编码的程序作为参考,但是当程序编写出来后,并不能像想象中一样运行,经测试正交编码输入信号正常,而且由于其他模块在此模块前均正常工作,在加此模块后,除了初始化正交编码模块程序外,就加了用

    20、正交编码模块的速度获取函数以及电机运转反向获取函数然后送与数码管进行显示,所以问题的出现极大可能出现在正交编码的初始配置上,因为正交编码的初始化函数并不是TI提供的,经过查阅大量的TIM4系列类似本芯片的正交编码函数以及TI论坛的大量程序,发现初始化配置中缺少了GPIOPinConfigure(GPIO_PC5_PHA1);这一句GPIO复用功能配置函数。加上此函数后,程序运行正常,模块功能正常。5. 结束语在这次课程设计中,由于用了很多刚接触的东西,我学会了很多,例如在这次我用了刚接触的串口4位数码管,还有矩阵按键的原理虽然原来知道,但也是第一次变为现实。最为重要的我知道了如何自学一种芯片,

    21、原来的我只知道跟着例程做,现在我知道了要去查这个芯片的函数库,我也知道了如何运用一款芯片的数据手册。所以这次课设不仅提高了我对电机拖动的理解,最为重要的是提高了我的自学能力。参考文献:【1】 叶朝辉:TM4C123微处理器原理与实践。北京:清华大学出版社,2014.01.01【2】 XX文库.直流电机PID控制。网址: 【3】 阮毅、陈伯时 电力拖动自动控制系统运动控制系统。机械工业出版社2015.01【4】 Tiva TM4C123FH6PM 微控制器数据手册【5】 德州仪器在线技术支持社区附录课设程序:#include #include #include inc/hw_memmap.h#i

    22、nclude driverlib/sysctl.h#include driverlib/gpio.h#include driverlib/pin_map.h#include driverlib/pwm.h#include driverlib/qei.h#define uchar unsigned char#define PERIOD_TIME SysCtlClockGet()/2000#define DIO GPIO_PIN_1#define RCLK GPIO_PIN_2#define SCLK GPIO_PIN_3int anjianzhi=1;uchar LED8;uchar LED18

    23、;uchar jianceTime=0;double PulseWidth;unsigned long speed_signal=0;uint32_t setspeed=0,speed=0;int speedDirectionGet=0;int e3;double uk,past_uk,out;uchar speedstop=0;/*PWM初始化*/void Init_PWM() PulseWidth=0.3; / 设置PWM时钟和系统时钟一致 SysCtlPWMClockSet(SYSCTL_PWMDIV_1); / 使能PWM外设 SysCtlPeripheralEnable(SYSCTL

    24、_PERIPH_PWM0); / 使能外设端口 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); /设置对应管脚的PWM信号功能 GPIOPinConfigure(GPIO_PB4_M0PWM2); GPIOPinConfigure(GPIO_PB7_M0PWM1); /设置PWM信号端口 GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_4); GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7); /PWM生成器配置 PWMGenConfigure(PWM0_BASE, PWM_GEN

    25、_1, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC); PWMGenConfigure(PWM0_BASE, PWM_GEN_0, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC); /设置PWM信号周期 PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, PERIOD_TIME); PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, PERIOD_TIME); /设置PWM信号占空比 PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2,PulseWidth*PERIOD_TIME); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1,PulseWidth*PERIOD_TIME); / 使能PWM输出端口 PWMOutputState(PWM0_BASE, PWM_OUT_2_BIT, false); PWMOutputState(PWM0_BASE, PWM_OUT_1_BIT, false); / 使能PWM生成器 PWMGenEnable(PWM0_BASE, PWM_GEN_1); PWMGenEnable(PWM0_BASE, PWM_GEN_0); / 使能


    注意事项

    本文(直流电机转速负反馈调节器拖动系统课程设计正文报告大学论文.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开