【arduino】三路pid循迹小车 |
您所在的位置:网站首页 › 循迹小车arduino › 【arduino】三路pid循迹小车 |
这是个很久之前的项目,没有保存照片,故使用文字+图片说明 先提前说明,想用pid就需要足够的精度,数字信号很难满足,故选用模拟信号,51系列建议放弃,没有自带模拟接口,只能外接转换器,非常麻烦 pid的好处就是跑的非常稳 以下是正文 首先是传感器部分,使用三个带模拟信号的红外传感器(大部分都是带的,d引脚输出数字,a引脚输出模拟),并排放置,如图差不多就行了,传感器之间可以留有一定间隙,根据个人调整。 每个传感器都是模拟量,也就是越黑值就越大, 然后我们把最左边的值减去最右边的值,就能得到另一个函数图像,大概这样,画的有点丑 再融入中间的传感器,把左右偏转,得出这样一个图像,可能传感器本身误差比较大,跟图像有所区别 直接贴代码,这部分是难点,主要是对数据的处理,实际环境变化传感器出现的误差会很难受,可以选择较好的红外传感器或者灰度传感器 int GetTraceDate() { int Data_Out;//定义数据输出变量 int Left_AD,Right_AD,Mid_AD;//定义左右中传感器AD值变量 Left_AD=analogRead(A0); Mid_AD=analogRead(A1); Right_AD=analogRead(A2); //左值减去右值 Data_Out=(Left_AD-Right_AD+D_AD_VALUE);//D_AD_VALUE表示居中时误差,把车放在最中间显示的值 //底下这段是对图像进行处理,使得更接近理论以及运行过程的bug,自行调整即可 if(Left_AD > _H && Mid_AD > _H && Right_AD > _H) stop = 1; else stop = 0; if(Mid_AD>200) { flag = 0; } if((Mid_AD _H && Right_AD > _H) stop = 1; else stop = 0; if(Mid_AD>200) { flag = 0; } if((Mid_AD |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |