基于Arduino的PID测距控制_第1页
基于Arduino的PID测距控制_第2页
基于Arduino的PID测距控制_第3页
基于Arduino的PID测距控制_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Arduino的PID测距控制KevinzhangArduino作为现在最火的开源硬件平台之一,已经在世界上掀起众多电子爱好者学习的浪潮。笔者作为学生,初了拿它实现简单的IO口控制外,还想加入更多的元素,这次计划加入一个PID控制算法来实现位置跟随运动,以求追求更加高大上的应用体验。实验初步硬件平台如下:位置检测元件使用的是一个夏普红外传感器,其技术规格如下所示 信号类型:模拟输出 探测距离:4-30cm 工作电压:4.55.5V 标准电流:33mA 接口类型:PH2.0-3P 最大尺寸:40x20x13.5 mm由于位置传感器输出的是模拟量,需要在通过Arduino接收后再转化为数字量,使用的Arduino UNO如下图所示,传感器的输出量的参考转换代码如下void loop ()uint16_t value = analogRead (pin);if (value 16)value = 16;distance= 2076.0 / (value - 11.0);其中pin为模拟量输入引脚号(A0-A5),distance为转换成的数字量。PID算法也许学过控制课程的童鞋都知道PID算法,它有什么作用呢?作为改变世界的十大算法之一,当然有必要自己尝试一下咯,也许只有你自己接触后,才会有更深的体会。笔者认为,PID算法能够使闭环控制系统能够更快更好的实现我们的预期功能,先介绍下我们的算法原型:上面所示的是PID控制原理框图,我们需要将其在程序中离散化这样看似高深的东西可以简化为每次采样完成后的计算输出,我们计划采用u作为控制器的控制量,控制电机的转动,电机的输出速度与输入电压成正比例关系,拟采用电机转动的位置来模拟最终的调节量,如果传感器检测到目标位置,电机将停止转动。基于Arduino的PID测距控制(二)在上期的blogger中,笔者讲述了如何使用Arduino和夏普红外传感器来检测距离。并就PID的基本理论进行阐述。在本期blogger中,笔者将以电机的控制电压量变化演示如何实现PID反馈闭环控制。下图是控制原理框图由于不知道控制对象具体的理论传递函数,我们在进行PID参数的选取时进行了若干次的尝试,直到相对满意时为止。如何定义一个ms采样周期?Arduino的millis()函数能够获取arduino从开始运行到现在的程序之后的毫秒数,返回值为unsignd long型。通过设置一个timechang=now-lasttime,阈值设为100时,即表示100ms的时间间隔。定义采样周期计算Arduino的输出值那么如何将PID计算输出呢? up=Kp*error; ud=Kd*(error-error_1)/Ts; ui=ui_1+Ki*error*Ts;输出u=up+ud+ui,Ts表示采样周期,error为当前检测到距离距离目标位移的差值,而error_1为上一次采样的差值,这样既可以将上期bloggger中的离散控制算法转换为C语言。监控Ar

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论