首页 科技创新报告

科技创新报告

举报
开通vip

科技创新报告指导教师:冯维杰徐东霞王玮大学生科技创新活动报告项目名称:基于AT89s52单片机的四浆飞行器的自动巡航设计项目成员:吴科(20090417225)宁季国(20090417217)熊先勇(20090417226)所在院系:自动控制与机械工程系专业班级:09电气(2)班PAGE\*MERGEFORMAT#基于AT89S52单片机的四浆飞行器的自动巡航设计摘要本课题主要通过利用已有的相关技术,初步设计四桨碟形飞行器的自动巡航。目前大多数四浆飞行器都是遥控型的,还未有自动巡航的出现。该产品可用于航模比赛,商业用于高...

科技创新报告
指导教师:冯维杰徐东霞王玮大学生科技创新活动报告项目名称:基于AT89s52单片机的四浆飞行器的自动巡航设计项目成员:吴科(20090417225)宁季国(20090417217)熊先勇(20090417226)所在院系:自动控制与机械 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 系专业班级:09电气(2)班PAGE\*MERGEFORMAT#基于AT89S52单片机的四浆飞行器的自动巡航设计摘要本课题主要通过利用已有的相关技术,初步设计四桨碟形飞行器的自动巡航。目前大多数四浆飞行器都是遥控型的,还未有自动巡航的出现。该产品可用于航模比赛,商业用于高端玩具生产等。本文基于四桨碟形飞行器用AT89S52微处理器使其具有自动巡航能。首先,介绍了目前国内外对碟形飞行器的发展状况和本课题的研究内容;其次介绍微处理器怎样控制飞行器的姿态实现自动巡航。最后对本项目做了简要的总结和展望。本飞行器采用51系列单片机进行控制,采用C语言编程。整个控制系统包括电源模块、超声波测距模块、电机驱动模块及微处理器模块等本课题基于四浆已有的相关技术来实现自动巡航。引言背景飞行控制方式主要有:遥控飞行、自主飞行、半自主飞行三种方式。为自主飞行控制系统的研究打下基础。美国Sikorsky公司研制的Cypher无人共轴式碟形飞行器可以垂直起降,能够悬停,既可以按照地面的指示飞行,又可以脱离地面的指令自主飞行,它综合了一系列先进技术。目前最常见的是遥控的四浆飞行器。美、日等国对四桨碟形飞行器的研究相对比较成熟。意义自动巡航飞行器是通过写程序到微控制器里面。四桨按照你的程序飞行。在这样的前提下我们就能实现一些我们无法轻松做到的地方的信号采集,在太空就可以无需我们亲自去查看。如果我们在商业上也有很好的前途。可以更好的替代原来的遥控四桨飞行器。也许就需我们启动开关飞行器就能完成我们想要的动作或需求。3目的通过前人的经验及自己的实践、思考设计出自动巡航的模型飞行器。由于四浆自动巡航飞行器飞行稳定且飞行初步自动化,所以具有较高的研究和应用价值,可用于侦察监视、通信中继及太空探测等。一科技创新思路,方法,原理及技术路线(一)硬件简述该飞行器分三大块组成:一电源块;二飞行器框架;三微控电路板;1电源块由于飞行器可以用电池解决。所以可以选用12v电机供电和5v单片机和传感器供电。2飞行器框架这个框架可以在淘宝上网购,也可以自己制作。如果自己制作可以用木材做飞行底板。四轴支架。微控电路板第3块也是最重要的一部分。该控制器相当于人体大脑中枢。它接收传感器信号经处理来控制电机。使飞行器左转,右转,上升,下降。(二)飞行器姿态控制技术1垂直升降与悬停当飞行器的四个桨翼等速度旋转,各桨产生的升力相等,总升力大于或者小于自身重力时,飞行器实现垂直升降;等于自身重力时,实现悬停。2左右侧移与俯仰运动推力左右侧移与俯仰运动右边两桨翼转速低于左边两个桨翼转速时,右边两桨翼产生的总升力小于左边两桨翼产生的总升力,机体向右侧移;同理,可以使机体向左侧移及俯仰动作。侧移、俯仰运动。3机体旋转同一对角线上的一组桨翼转速相同,不同对角线上的桨翼转速不同时,由于反扭矩不能相互抵消,从而可以实现飞行器的转向。(三)微控电路1.各子系统1)总体框图:2)电机驱动电路.H桥电路构成。用2个pnp和2个npn三极管构成,当三极管交叉导通时电机的转向改变。具体原理如下:图中所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电路”是因为它的形状酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:图及随后的两个图都只是示意图,而不是完整的电路图,其中三极管的驱动电路没有画出来)。如图所示,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。要使电机运转,必须使对角线上的一对三极管导通。例如,如图4.13所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和Q4导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动本实验采用的是L298电机驱动电路其中内部原理为H桥驱动电路;94U2VCCVSIN15~7~IN20UT1IN3IN4OUT2ENAENBOUT3~2~~10~123611131SENSAOUT4SENSB14~15~L2983).LCD1602液晶模块功能液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 和低功耗应用系统中得到越来越广泛的应用。在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、文字、图形等[4]。1602可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。缺点:不能使用中文,不能显示图形oPCB尺寸:81*37mm液晶尺寸:69*26mm。现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。LCD1602主要参数介绍表3-1LCD1602主要技术参数显示容量16X2个字符芯片工作电压4.5〜5.5V工作电流2.0mA(5.0V)模块最佳工作电压5.0V字符尺寸2.95X4.35(WXH)mmLCD1602基本操作程序读状态:此时输入端RS=L,RW=H,E=H,输出端D0~D7=状态字。读数据:此时输入端RS=H,RW=H,E=H输出端:无。写指令:此时输入端RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:D0~D7=数据输入[12]。表3-2寄存器选择功能RSR/W操作00指令寄存器(IR)写入01忙标志和地址计数器读出10数据寄存器(DR)写入11数据寄存器读出1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”[13]。LCD1602引脚在设计中如何应用VSS为地电源。VDD接5V正电源;为LCD1602提供驱动。V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器;按编程原理接到AT89S52的P2.0脚。RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据;按编程原理接到AT89S52的P2.1脚。E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令;按编程原理接到AT89S52的P2.2脚。D0〜D7为8位双向数据线;依次接到AT89S52的P0口,作为输入和输出使用,三态双向。BLA:LED背光正极。需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右。LCD1602指令系统1602液晶模块内部的控制器共有11条控制指令。它的读写操作、屏幕和光标的操作都是通过指令编程来实现[10]。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置;指令2:光标复位,光标返回到地址00H;指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效;指令4:显示开关控制D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁;指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标;指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符;(有些模块是DL:高电平时为8位总线,低电平时为4位总线)指令7:字符发生器RAM地址设置;指令8:DDRAM地址设置;指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙;指令10:写数据;指令11:读数据;液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符[8]。LCD1602液晶显示特性由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新亮点。因此,液晶显示器画质高且不会闪烁。液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多[7]。假设LCD显示屏有64行,每行有128歹U,每8列对应1字节的8位,即每行由16字节,共16x8=128个点组成,屏上64x16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。1602LCD的RAM地址映射和复位(初始化)过程LCD16字吃行000102030405060708090A0B0C0D0EOF10274042434445464748494A4B4C4D4Ei4F5067图3-61602LCD内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该:01000000B(40H)+10000000B(80H)=11000000B(C0H)。第一次延时15ms时,等待LCD电源稳定,前几次延时,读写数据之前不需要忙检测,以后每次读写数据之前都必须要进行LCD忙检测。4)主芯片AT89S52介绍AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供咼灵活、有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz〜33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工PAGE\*MERGEFORMAT#PAGE\*MERGEFORMAT#UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符[15]。引脚功能特性描述AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写T”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,pl输出缓冲器能驱动4个TTL逻辑电平。对P1端口写T”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下所示。在flash编程和校验时,Pl口接收低8位地址字节。引脚号第二功能:P1.0T2定时器/计数器T2的外部计数输入,时钟输出;P1.1T2EX定时器/计数器T2的捕捉/重载触发信号和方向控制;P1.5MOSI在系统编程用;P1.6MISO在系统编程用;P1.7SCK在系统编程用;P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写T”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器,P2口送出高八位地址。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写T”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用。在flash编程和校验时,P3口也接收一些控制信号。端口引脚的第二功能:P3.0RXD串行输入口;P3.1TXD串行输出口;P3.2INTO外中断0;P3.3INT1外中断1;P3.4TO定时/计数器0;P3.5T1定时/计数器1;P3.6WR外部数据存储器写选通;P3.7RD外部数据存储器读选通;此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号[6]。ALE/PROG——当访问外部存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必需保持低电平(接地)。RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。VCC:电源。GND:接地。AT89S52的引脚图F2j匚140(T2EX)P1J匚239P1.2C3P1.3E137P1.4E-.MOSIjP1.£.Le35(Miiso)pi.ec734(SCKiP1.7CS3RSTC口32(RXD)P3.0匚1031(TXD)P3.1i匚I■30llETTO)P3.2匚12|lETT7iP3.SC1i3(TO)P3.4匚1427(T1)P3.£-L1:.胡(WTT)r1£25|TfL)P:<7C1124XTAL2匚1323XTALIi匚1922GND匚3021VCCPO.O(ADO)PO.1(AD1)R0.2(AD2)PO.3(AD3)R0.4(AD4)F10.5(AD5)PO.6(AD6)PO.7(AD7)EXVPP□負LE;FRCSI^SERP2.7(A15Jre.e(Ai4:iP2.5(A13>R2.4(A12J|R2.3(A11JR2.2(A10)ra.1(AS)F2.O(AB)图3-1AT89S52芯片引脚图(四)传感器控制技术该飞行器用超声波测距来控制飞行器的高度,当低于设定高度时,控制电机加速,所以使其飞行器上升,当高于设定高度时就会使其电机减速使其下降。(五)PWM脉冲产生技术PWM即Pulse-WidthModulation(脉冲宽度调制),通过调节脉冲的宽度,可以改变输出波形的平均电压,常用于闭环反馈和控制。四桨碟形飞行器的四个直流电机就是通过调节输入PWM的占空比,来调节电机电枢两端的平均电压,从而改变各旋翼的转速及所产生的升力,调整飞行器姿态。下面是软件参数思想:关于频率和占空比的确定,对于12M晶振,假定PWM输出频率为1KHZ,这样定时中断次数设定为C=10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样可以设定占空比可从1T00变化。即0.01ms*100=1msTH0和TL0是计数器0的高8位和低8位计数器,计算 办法 鲁班奖评选办法下载鲁班奖评选办法下载鲁班奖评选办法下载企业年金办法下载企业年金办法下载 :TL0=(65536-C)%256;TH0=(65536-C)/256,其中C为所要计数的次数即多长时间产生一次中断;TMOD是计数器工作模式选择,0X01表示选用模式1,它有16位计数器,最大计数脉冲为65536,最长时间为1ms*65536=65.536msPID调控技术1系统构成模拟PID控制原理模拟控制系统控制器最常用的控制规律是PID控制。为了说明控制器的工作原理,先看举一个例子。一个小功率直流电机的调速。给定速度与实际转速进行比较,其差值,经过PID控制器调整后输出电压控制信号,经过功率放大后,驱动直流电动机改变其转速。1)、比例部分在模拟PID控制器中,比例环节的作用是对偏差瞬间作出反应。偏差一旦产生控制器立即产生控制作用,使控制量向减少偏差的方向变化。控制作用的强弱取决于比例系数,比例系数越大,控制作用越强,则过渡过程越快,控制过程的静态偏差也就越小;但是越大,也越容易产生振荡,破坏系统的稳定性。故而,比例系数选择必须恰当,才能过渡时间少,静差小而又稳定的效果。2)、积分部分从积分部分的数学表达式可以知道,只要存在偏差,则它的控制作用就不断的增加;只有在偏差时,它的积分才能是一个常数,控制作用才是一个不会增加的常数。可见,积分部分可以消除系统的偏差。积分环节的调节作用虽然会消除静态误差,但也会降低系统的响应速度,增加系统的超调量。积分常数越大,积分的积累作用越弱,这时系统在过渡时不会产生振荡;但是增大积分常数会减慢静态误差的消除过程,消除偏差所需的时间也较长,但可以减少超调量,提高系统的稳定性。当Ti较小时,则积分的作用较强,这时系统过渡时间中有可能产生振荡,不过消除偏差所需的时间较短。所以必须根据实际控制的具体要求来确定。3)、微分部分实际的控制系统除了希望消除静态误差外,还要求加快调节过程。在偏差出现的瞬间,或在偏差变化的瞬间,不但要对偏差量做出立即响应(比例环节的作用),而且要根据偏差的变化趋势预先给出适当的纠正。为了实现这一作用,可在PI控制器的基础上加入微分环节,形成PID控制器。微分环节的作用使阻止偏差的变化。它是根据偏差的变化趋势(变化速度)进行控制。偏差变化的越快,微分控制器的输出就越大,并能在偏差值变大之前进行修正。微分作用的引入,将有助于减小超调量,克服振荡,使系统趋于稳定,特别对髙阶系统非常有利,它加快了系统的跟踪速度。但微分的作用对输入信号的噪声很敏感,对那些噪声较大的系统一般不用微分,或在微分起作用之前先对输入信号进行滤波。微分部分的作用由微分时间常数Td决定。Td越大时,则它抑制偏差变化的作用越强;Td越小时,则它反抗偏差变化的作用越弱。微分部分显然对系统稳定有很大的作用。适当地选择微分常数Td,可以使微分作用达到最优。(七)软件设计思想程序 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 本系统采用中断产生PWM脉冲进而控制电机的转速,电机转速达到恒定值时起飞。当大于恒定值时加速起飞。但低于恒定值时就下降。所以控制电机就控制飞行器的飞行姿态。基本系统框图:实验计和结果预测设实验结果:完成本课题的电机驱动部分仿真,仿真中能实现按预算的速度执行。图见附录。结果预测:由于实验设备有限不能做出实物。根据设计能实现在一定高度完成基本动作实现左转,右转上升与下降。循环的按8字航线飞行在此过程中不需要人为干涉。基本实现自动飞行。总结与展望总结:初步设计四桨碟形飞行器的自动巡航。通过微控制器控制基本能实现自动巡航,由于时间仓促,水平有限,对飞行器动力学特性了解不够深入,国内外对碟形飞行器的研究相对比较晚,技术还不成熟,各方面资料比较少,许多工作只能借鉴常规飞行器并做一些改进,还不能确立一个有效的方法对该飞行器建立合理的动力学模型,本控制系统未必能达到很理想的效果,许多方面还有待进一步的研究和改进。从此次的科技活动我了解到我们所学的知识还很少。我们要加紧时间学习。此次的科技活动也让我熟悉资料的查找。希望能为以后的工作中积累经验。展望:初步设计四桨碟形飞行器的自动巡航。如果在飞行器上加摄像头可以实现实时监控,图像采集等。在自主飞行的领域可以进行更高的研究。参考文献【1】姚国林.单片机原理与应用技术。北京:清华大学出版社,2009【2】吴亦锋.单片机原理与接口技术。北京:电子工业出版社,2010【3】杨素行.模拟电子技术基础。北京:高等教育出版社,2010,.【4】邱晓红.无人机发展趋势.航空科学技术,2000年1月.5】国外无人机大全.北京:航空工业出版社.1994年【6】JohannBorenstein.TheHoverBotC--AnElectricallyPoweredFlyingRobot.UnpublishedWhitepaper【7】CygnallntegratedProducts,INC.著,潘琢金,孙德龙,夏秀峰译.C8051F单片机应用解析.北京:北京航空航天大学出版社.2002【8】王晓明.电动机的单片机控制.北京:北京航空航天大学出版社.【9】康华光.电子技术基础.北京:高等教育出版社1997.【10】张明廉飞行控制系统.北京:航空工业出版社.1994.【11】J.奥马利.基本电路分析,科学出版补.2002.【12】葛长虹.工业测控系统的干扰技术.北京:冶金工业出版社.【13】李全利.单片机原理与接口技术.北京:高等教育出版社.附录1.电机控制图:U1XTAL1PAO/ADCOPA1/ADC1PA2/ADC2XTAL2P0PA3/ADC3PA4/ADC4PA5/ADC5PA6/ADC6RESETPA7/ADC7P2PCO/SCLPC1/SDAPC2/TCKAREFPC3/TMSPC4/TDOAVCCPC5/TDIPC6/TOSC1PC7/TOSC2P1P3PBO/TO/XCKPDO/RXDPB1/T1PD1/TXDPB2/AIN0/INT2PD2/INTOPB3/AIN1/OC0PD3/INT1PB4/SSPD4/OC1BPB5/MOSIPD5/OC1APB6/MISOPD6/ICP1T4—15—165-7TO—171218PWMLcmm.c6112.PID程序代码#include#include"PubDefine.h"#include"MotorCtrl.h"sbitP17=PM7;codeintKP=Kp;//比例常数codeintKD=Kd;//微分常数codeintKI=Ki;//积分常数voidIni_T0(void)//T0:16位计数器{TMOD&=0xF0;TMOD|=0x05;//计数方式1TL0=0;TH0=0;PT0=0;//低优先级//T0中断禁止//P3A4=1}16位计数器//计数方式1//低优先级//T0中断禁止//P3A5=1}定时器16重装时间初值方式//接收时钟禁止//发送时钟禁止//T2EN端外部信号无效//定时器//重装时间初值ET0=0;TR0=1;T0=1;voidIni_T1(void)//T1{TMOD&=0x0F;TMOD|=0x50;TL1=0;TH1=0;PT1=0;ET1=0;TR1=1;T1=1;voidIni_T2(void)//T2{RCLK=0;TCLK=0;EXEN2=0;C_T2=0;CP_RL2=0;RCAP2H=c16TimeH;RCAP2L=c16TimeL;PT2=1;ET2=1;//T2中断开TR2=1;}voidIni_ExInt(void)//INT0,INT1下降沿触发0=1;//下降沿触发EX0=1;//中断开启PX0=0;//高优先级IT1=1;//下降沿触发EX1=1;//中断开启PX1=0;//高优先级}voidExInt0(void)interrupt0{sLrpm=sLrpm+10;if(sLrpm=140){sLrpm=0;}}voidExInt1(void)interrupt2{sRrpm=sRrpm+10;if(sRrpm=140){sRrpm=0;}}voidtimer2(void)interrupt5using3{bitflag;TR2=0;CS++;if(CS>=c350ms){CS=0;flag=1;s++;if(s>=999){s=0;}}if((PwmCyc++)==cPwmCyc){PwmCyc=0;}PWML=!(PwmCyc>=PwmValL);PWMR=!(PwmCyc>=PwmValR);ExTimer++;if(ExTimer>=c250ms){GetCountVal(cLMotor,Lrpm);GetCountVal(cRMotor,Rrpm);mLrpm=filter(Lrpm);mRrpm=filter(Rrpm);ExTimer=0;}ExSec++;if(ExSec>=c250ms){P17=!P17;ExSec=0;SpeedToPWM(&PwmValL,PID(&LPID,sLrpm-mLrpm));SpeedToPWM(&PwmValR,PID(&RPID,sRrpm-mRrpm));}TR2=1;TF2=0;}voidGetCountVal(ucharpChanl,uint*pArray){union_CharInttCount;switch(pChanl){casecLMotor:TR0=0;tCount.Char[0]=TH0;tCount.Char[1]=TL0;TH0=0;TL0=0;TR0=1;break;casecRMotor:TR1=0;tCount.Char[0]=TH1;tCount.Char[1]=TL1;TH1=0;TL1=0;TR1=1;break;default:break;}if((pArray[0]++)==(Array-1)){pArray[0]=1;}pArray[pArray[0]]=tCount.Int;}intfilter(uint*pfval){uchari;longsignedinttmp;tmp=0;for(i=1;i<(Array);i++){tmp=tmp+pfval[i];}tmp=tmp/(Array-1);//平均值tmp=tmp*c1000ms;//转换为每秒个数tmp=tmp/c250ms;//转换为每秒个数tmp=tmp*(600/12);//转换为输出轴rpmtmp=tmp/469;//转换为输出轴rpmreturntmp;}voiddelay_1ms(uchardelay){uchari,j,tmp;tmp=(uchar)((100*cMHz)/12+23);for(i=0;iError[0]=pPID->Error[1];//e(k-2)pPID->Error[1]=pPID->Error[2];//e(k-1)pPID->Error[2]=pErr;//e(k)pPID->PP=(KP*(pPID->Error[2]-pPID->Error[1]))/100;tmp=((longint)pPID->Error[2]);tmp=(tmp*KI)/1000;pPID->PI=(int)tmp;pPID->PD=(KD*(pPID->Error[2]-2*pPID->Error[1]+pPID->Error[0]))/100;pPID->DP=pPID->PP+pPID->PI+pPID->PD;if(pPID->DP>=PIDMAX){pPID->DP=PIDMAX;}if(pPID->DP<=PIDMIN){pPID->DP=PIDMIN;}returnpPID->DP;voidSpeedToPWM(int*pPWM,intpDeta){*pPWM=*pPWM+pDeta;if(*pPWM>cPwmCyc){*pPWM=cPwmCyc;}if(*pPWM<0){*pPWM=0;}}voidMotorCtrl(union_MCBytepMotoComm){ML_D1=pMotoComm.MCBit.MLD1;〃控制电机A转向ML_D2=pMotoComm.MCBit.MLD2;switch(pMotoComm.MCBit.MLS){case0:PwmValL=cStop;break;case1:PwmValL=PwmValL-low;break;case2:PwmValL=cMid;break;case3:PwmValL=PwmValL-hig;break;MR_D1=pMotoComm.MCBit.MRD1;MR_D2=pMotoComm.MCBit.MRD2;〃控制电机B转switch(pMotoComm.MCBit.MRS){case0:PwmValR=cStop;break;case1:PwmValR=PwmValR-low;break;case2:PwmValR=cMid;break;case3:PwmValR=PwmValR-hig;break;}}
本文档为【科技创新报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
青青子衿
暂无简介~
格式:doc
大小:193KB
软件:Word
页数:31
分类:高中语文
上传时间:2022-07-05
浏览量:0