




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#in clude #in clude #in clude /void PIDI nit(PID *PP);/*定义结构体和公用体*/#defi ne N 8typedef struct PIDun sig ned int setpo int;/*设定值*/un sig ned int proporti on;/*比例系数*/un sig ned int in tegral;/*积分系数*/un sig ned int derivative;/*微分系数*/un sig ned in t lasterror;/*前一拍误差*/un sig ned int preerror;/*前两拍误差*/P
2、ID;union stuun sig nedint value;un sig ned char nu m2;laser;union datun sig ned char dd2;un sig ned int nu mber;collect;/*函数声明部分*/un sig ned int PIDcal(PID *pp,i nt thiserror);void PIDI nit(PID *PP);void Port In it(void);un sig ned int get_ad(void);un sig ned int filter_valve(void);void Delayms(void
3、);/*主函数部分*/void mai n(void)PID vPID;/*定义结构体变量名*/un sig nedint verror;un sig nedint Error;un sig nedint tempi;unsignedchar LASERH,LASERL; /* 误差的高低字节变量 */WDTCN=Oxde;WDTCN=Oxad;/port in it();PIDI nit(&vPID);vPID.proportion=10;/* 设置 PID 比例系数为 10*/vPID.integral=10;/*设定 PID 积分系数 为 10*/vPID.derivative=10;
4、/* 设定 PID 微分系数为 10*/ vPID.setpoi nt=50;/*根据实际情况设定*/IE= 0x80;while(1)verror=filter_valve(); /* 得到 AD 的滤波输出值 */Error=vPID.setpoint-verror; /* 得到误差值 */ tempi=PIDcal(&vPID,Error); /* 调用PID算法函数得到误差增量*/ laser.value+=tempi;LASERH=laser.num0; /*value 与 num2为共同体,变量名为laser*/LASERL=laser.num1; /* 存放高低字节 */*PID
5、算法函数,返回误差增量*/un sig ned int PIDcal(PID *pp, int thisError)un sig ned int pError,dError,iError;un sig ned int templ;pError=thisError-pp-lasterror;iError=thisError;/*增量计算*/dError=thisError-2*(pp-lasterror)+pp-preerror;templ=pp-proporti on *pError+pp-in tegral*iError+pp-derivative*dError; pp-preerror=p
6、p-lasterror;/* 存放误差用于下次运算 */pp-lasterror=thisError;return (i nt)(templ8);/*测量值*/*float measure(void)/* COSA=1/7/*long float value;已知A B角为锐角SIN(A+B)=14分之5倍根号3 */* 求 COSB*/ /*float A,B;A=acos(1/7);B=asi n( (5/14)*sqrt(3)-A;if(0Api/2)&(0Bpi/2) return cos(B); */*得到ADC转换值*/un sig ned int get_ad(void)whil
7、e(AD0INT=0);AD0INT=0;collect.dd1=ADC0H;collect.dd0=ADC0L;return (collect .nu mber);void Timer3_ISR(void) in terrupt 14TMR3CN=0x7f;AMUX0SL=0x00;AD0BUSY=1;void Timer3_ In it( un sig ned char Highco un ts, un sig ned char Lowco un ts)TMR3CN=0x01;/*禁止定时器3;清TF3,采用SYSCLK为时基*/TMR3RLH=-Highcounts; /* 初始化重装载
8、值 */TMR3RLL=-Lowcou nts;TMR3L=0xff; /*设置为立即重装在*/TMR3H=0xff;EIE2|= 0x01;/*允许定时3中断*/TMR3CN|=0x06;/* 启动定时器 3*/void ADCI ni t(void)ADC0CF=0x00;/*选择ADC0的转换始终为系统时钟,增益为 1*/ADC0CN=0xc0; /*允许ADC0准备转换,定义低功耗跟踪方式,置AD0BUSY 位为1启动ADC,寄存器数据右对齐*/AMX0CF=0x01;/*选择AIN0和AIN!为通道0差分输入的正负端*/*PID初始化*/void PIDI nit(PID *PP)m
9、emset(PP,0,sizeof(PID);/*数字算术滤波子程序*/un sig ned int filter_valve(void)un sig ned char i,j,temp;un sig ned char count;un sig ned int valve_bufN;un sig ned int sum=0;for(co un t=0;co un tN;co un t+)valve_bufco un t=get_ad();Delayms();for(j=0;jN-1;j+) for(i=0;ivalve_bufi+1)temp=valve_bufi; valve_bufi=valve_bufi+1; valve_bufi+1=temp;for(co un t=1;co un tN-1;co un t+)sum+=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西榆林府谷能源投资集团有限公司选聘考试真题2024
- 2025广西柳州市柳江中学参加广西师范大学2025届研究生毕业生春季专场双选会招聘11人模拟试卷附答案详解(完整版)
- 2024年忻州市大学生乡村医生专项计划招聘真题
- 2025杭州市上城区采荷街道办事处编外招聘14人考前自测高频考点模拟试题及完整答案详解一套
- 2025河南郑州惠济区迎宾路社区卫生服务中心招聘2人模拟试卷及一套参考答案详解
- 2025年宝鸡先行电力(集团)有限责任公司招聘(4人)模拟试卷及答案详解参考
- 2025年4月广东实验中学深圳学校面向2025年应届毕业生招聘教师5人考前自测高频考点模拟试题完整答案详解
- 2025福建厦门市集美区实验小学顶岗教师招聘1人模拟试卷及答案详解(易错题)
- 2025辽宁沈阳市浑南区森工林业集团有限公司招聘56人模拟试卷及答案详解(各地真题)
- 2025安徽芜湖经济技术开发区公办幼儿园招聘26人模拟试卷完整答案详解
- (2025年标准)清理乱账服务协议书
- 2025年五粮液笔试考试题及答案
- 2025年4月自考00155中级财务会计试题及答案含评分标准
- 道路工程培训课件
- DGTJ08-2004B-2020 建筑太阳能光伏发电应用技术标准
- 国庆假期大学生安全教育
- 呼吸内科出科汇报
- JJF 2267-2025场磨式大气电场仪校准规范
- 2024-2025学年安徽合肥七年级上册数学第一次月考试卷及答案
- 荣耀机试题库及答案
- 云南省云南师大附中2026届高考适应性月考卷地理及答案(一)
评论
0/150
提交评论