版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于PLC控制的智能小车系统软件设计案例目录TOC\o"1-3"\h\u29835基于PLC控制的智能小车系统软件设计案例 1261531.1keiluVisions5开发环境介绍 1233381.2转向舵机控制 283931.3直流电机控制 370361.1.1电机速度闭环控制 3236481.1.2电机位置闭环控制 429901.4自主循迹控制 6227891.5超声波测距跟随控制 71.1keiluVisions5开发环境介绍2013年10月,Keil公司(ARM公司之一)正式推出KeilMDKv5,该版本使用uVision5IDE集成开发环境,是目前针对ARM微控制器,尤其是ARMCortex-M内核微控制器最佳的一款集成开发工具。MDKv5向后兼容KeilMDK-ARMuVision4,以前的项目同样可以在MDKv5上进行开发,MDKv5同时加强了针对Cortex-M微控制器开发的支持,并且对传统的开发模式和界面进行升级其主要包含五方面特性,具体为∶(1)内置数据库可以实现同时实现多种配置与操作;(2)具备功能强大、性能良好的编译工具;(3)提供在线联调功能;(4)与之相配套的信息资料十分完善。图1.1编译环境1.2转向舵机控制由于伺服舵机本身具有内部的闭环控制结构,所以本文研究同样采用位置式PID控制算法对智能小车的前轮伺服舵机的速度进行闭环控制,位置式PID控制算法定义公式如下∶当位置式PID的积分项到达饱和程度时,误差会继续在积分环节的作用下积累,如果误差开始进行反向变化时,控制系统需要一些时间从积分的饱和区域退出,所以在u(k)达到最大值或最小值时,需要停止积分作用,并且要对积分和输出进行限幅,所以本文伺服舵机在使用位置式PID控制算法时,一般直接使用PD控制,所以位置式PID控制算法也适用于像本文伺服舵机这样不包含积分部件的执行机构。本文伺服舵机位置式PID控制算法的程序如下:速度值可通过舵机的目标位置和舵机的实际位置计算得到,使用累加的方法,赋值给相应的寄存器并作用到舵机。这样就可以把舵机的速度调节转变成对PID参数大小的调节。另外,在接近目标位置的时候还能够实现减速,防止因为惯性而造成舵机齿轮减速箱的损坏。函数功能:舵机PWM以及定时中断初始化arr:自动重装值psc:时钟预分频数返回值:无voidServo_PWM_Init(u16arr,u16psc) { RCC->APB2ENR|=1<<11;//使能TIM1时钟 RCC->APB2ENR|=1<<2;//PORTA时钟使能 GPIOA->CRH&=0XFFFF0FFF;//PORTA11复用输出 GPIOA->CRH|=0X0000B000;//PORTA11复用输出 TIM1->ARR=arr;//设定计数器自动重装值 TIM1->PSC=psc;//预分频器不分频 TIM1->CCMR2|=6<<12;//CH4PWM1模式 TIM1->CCMR2|=1<<11;//CH4预装载使能 TIM1->CCER|=1<<12;//CH4输出使能 TIM1->BDTR|=1<<15;//TIM1输出PWM TIM1->CR1=0x80;//ARPE使能 TIM1->DIER|=1<<0; //允许更新中断 TIM1->CR1|=0x01;//使能定时器1 TIM1->CCR4=1500; MY_NVIC_Init(1,1,TIM1_UP_IRQn,2);}1.3直流电机控制1.1.1电机速度闭环控制图1.2电机速度闭环控制原理根据增量式离散PID公式函数功能:增量PI控制器入口参数:编码器测量值,目标速度返回值:电机PWMe(k)代表本次偏差e(k-1)代表上一次的偏差以此类推pwm代表增量输出速度控制闭环系统使用PI控制intIncremental_PI_A(intEncoder,intTarget){ staticintBias,Pwm,Last_bias; Bias=Target-Encoder;//计算偏差 Last_bias=Bias; //保存上一次偏差 returnPwm;//增量输出}intIncremental_PI_B(intEncoder,intTarget){ staticintBias,Pwm,Last_bias; Bias=Target-Encoder;//计算偏差 Last_bias=Bias; //保存上一次偏差 returnPwm;//增量输出}1.1.2电机位置闭环控制图1.3电机位置闭环控制原理根据位置式离散PID公式函数功能:位置式PID控制器入口参数:编码器测量位置信息,目标位置返回值:电机PWMe(k)代表本次偏差e(k-1)代表上一次的偏差∑e(k)代表e(k)以及之前的偏差的累积和;其中k为1,2,,k;pwm代表输出intPosition_PID(intEncoder,intTarget){ floatPosition_KP=80,Position_KI=0.1,Position_KD=500; staticfloatBias,Pwm,Integral_bias,Last_Bias; //Bias=Encoder-Target;//计算偏差 Bias=Target-Encoder;//计算偏差 Integral_bias+=Bias; //求出偏差的积分 Last_Bias=Bias;//保存上一次偏差 returnPwm;//增量输出}1.4自主循迹控制 TSL1401CL含有128个感官单位,我们可以通过STM32单片机的ADC按照顺序收集每个感官单位的电压值,并且把他们保存在数组中。staticu16i,j,Left,Right; staticu16value1_max,value1_min; value1_max=ADV[0];//动态阈值算法,读取最大值value1_min=ADV[0];//最小值通过提取的最大值和最小值计算阈值:将阈值与左跳变沿和右跳变沿依次比较,计算出中线位置: 若轨迹在小车中心位置,舵机角度不变,小车直线前进;若轨迹偏离小车中心,说明小车此时需要转向,舵机需要转动一定角度,电机转速也要相应改变。图1.4算法控制程序流程图1.5超声波测距跟随控制实现小车间间距的调整,主要通过调整直流电机的转速来完成。超声波测距模块根据接收到的超声波信息可以判断出两车的间距。当间距低于设定值时,速度PI控制器会发送加速指令给直流电机驱动器。直流电机驱动器接收到指令后会向直流电机发送相应的驱动脉冲,直流电机接收到驱动脉冲后减速运行。当间距高于设定值时,具体工作流程与上述过程类似,电机会减速运行,直至距离处于合适的值以内。*@函数名:TIM4_Int_Init*@功能说明:配置记录超声波飞行时间的定时器*@参数:无*@返回值:无voidTIM4_Int_Init(u16arr,u16psc){TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure; NVIC_InitTypeDefNVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//时钟使能//定时器TIM3初始化 TIM_TimeBaseStructure.TIM_Period=arr;//设置在下一个更新事件装入活动的自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Prescaler=psc;//设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//设置时钟分割:TDTS=Tck_tim TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//TIM向上计数模式 TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//根据指定的参数初始化TIMx的时间基数单位 TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);//使能指定的TIM3中断,允许更新中断//中断优先级NVIC设置 NVIC_InitStructure.NVIC_IRQChannel=TIM4_IRQn;//TIM3中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//先占优先级1级 NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//从优先级3级 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道被使能 NVIC_Init(&NVIC_InitStructure);//初始化NVIC寄存器 TIM_Cmd(TIM4,DISABLE);//使能TIMx }图1.5超声波测距流程图在小车向正前方行驶的过程中,超声波传感器向正前方发射超声波,在接收到返回的超声波后可据此判断小车与前车的间距。若大于预设值25cm,车距安全,小车继续前进。若小于预设值,说明车距较危险,小车可直接停下,并继续根据超声波探测到的信息判断车距,车距安全后再启动;若车距继续增大,加速前进。若车距在减小,减速前进。图1.6信号脉冲波形图如图1.6所示为超声波传感器各信号发出的脉冲电平。触发信号为1us的TTL高电平,模块内部发出的信号为8个连续的高频脉冲,回响电平持续时间与检测距离有关,距离越长,持续时间就越长,反之则越短。*@函数名:Dist_PID*@功能说明:根据距离值与小车电机转速构成PID闭环*@参数:Target目标与前车的距离值Kp比例Ki积分Kd微分*@返回值:无voidDist_PID(floatTarget,floatKP,floatKI,floatKD){ staticfloatBias,Last_Bias,Intergal_bias=0; Bias=Target-Dist; Intergal_bias+=Bias; Motor_PWM=KP*Bias+KI*Intergal_bias+KD*(Bias-Last_Bias); Last_Bias=Bias; if(Motor_PWM>7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年民事答辩状答辩状提交与送达规范
- 用户研究方法解析
- 2026届宁德高三下学期五月质检物理试题+答案
- 2026 学龄前自闭症情绪引导课件
- 2026 学龄前自闭症家长资源利用课件
- 2025年严肃游戏在职业教育课程中的研发
- 2025年三维基因组学解析染色质结构与基因表达调控
- 土地承包合同书14篇
- 家长会家长精彩发言稿(15篇)
- 总账会计工作总结2篇
- 新能源汽车商业计划书范本
- 浙江国企招聘2025杭州萧山水务有限公司招聘40人笔试历年常考点试题专练附带答案详解试卷2套
- 农村民法典宣传课件
- 粮库有限空间安全培训课件
- 氯碱电解工艺事故案例分析
- 《C++程序设计及项目实践》 课件 第16章 标准模板库
- 2025版《煤矿安全规程》解读
- 精神科护理安全与风险防范
- 下列属于监理员岗位职责的是
- 武威事业单位笔试真题2025
- GB/T 10454-2025包装非危险货物用柔性中型散装容器
评论
0/150
提交评论