基于LDC1000的自动循迹小车

基于LDC1000的自动循迹小车大三上学期课程设计的题目选了做小车,需要使用的是TI公司的LDC1000或者LDC1314,题目如下:首先选择做这道题是因为之前做小车比较熟悉,仔细分析一下其实也就是缺个传感器,其他的该有的都有了只需要稍作修改,于是乎开始了这一段有意思的旅途。将整个系统分为采集、处理、控制三部分。第一部分为采集模块,采用LDC1000采集赛道信息并转化为数字信号传输给数据处理模块。

大家好,又见面了,我是你们的朋友全栈君。

大三上学期课程设计的题目选了做小车,需要使用的是TI公司的LDC1000或者LDC1314,题目如下:
这里写图片描述

这里写图片描述

这里写图片描述

首先选择做这道题是因为之前做小车比较熟悉,仔细分析一下其实也就是缺个传感器,其他的该有的都有了只需要稍作修改,于是乎开始了这一段有意思的旅途。

将整个系统分为采集、处理、控制三部分。
第一部分为采集模块,采用LDC1000采集赛道信息并转化为数字信号传输给数据处理模块。
第二部分为以MK60DN512ZVLQ为主控芯片的处理模块,根据预先写好的算法处理输入数据,输出不同的PWM以控制小车行驶状态。
第三部分为控制模块,被控制部件状态包含舵机转向和电机转速两部分。
系统工作框图如图1 所示:
这里写图片描述

然后传感器的选择有LDC1000LDC1314

LDC1314为四通道12位电感数字转换器,支持的传感器频率范围1KHZ至10MHZ。由于支持的传感器频率范围较宽,因此还支持使用非常小的PCB线圈,从而进一步降低感测解决方案的成本和尺寸。

LDC1000是主要针对近距离金属探测应用,系统体积小,成本低。能实现感测系数可调,自定义导体感测范围,还可以近距离感测特定的金属导体。采用了SPI接口编程,占用硬件资源少,只需要外接一个PCB线圈或者自制线圈就可以实现非接触式电感检测。但LDC1000仅支持单通道。

从上面的介绍来看似乎选个LDC1314就完美了,没错我的想法也是这样的,题目一出找了几天资料后发现1314的资料太少了,感觉很难做不做从何入手,相比而言1000的资料多一些,于是果断申请了TI的一片LDC1314和一片LDC1000,几天后到了,才发现我的天这封装。。。
这里写图片描述

好吧我服了,封装没现成的,那么花了几个小时自个画了个,折腾一下午然后把它刷出来,发现焊不上,网上的一个教程是先在焊盘上先加一层锡,然后用热风机吹,鼓捣了一下发现好像焊上了,下图只是将LDC1000的典型电路花了出来,然后再把引脚引出来,接下来就面临一个更大的问题,线圈???

1、自己绕,可是不知道参数啊,绕多大多啊圈。。。
2、买现成的,这样参数确定了,但是是多大。。。
3、PCB线圈,按照一份文档里面的设计了几个PCB线圈
可是实验室条件很难做到很细的走线,最后以失败告终,
这里写图片描述

就这样过去好几天没有进展,便打开某宝,搜了搜找到个现成的模块看上去还ok就买了回来,如下图
这里写图片描述

回想一下,这个真的要自己设计的话难度挺大的,主要是线圈的设计吧,找到一份比较好的文档:
这里写图片描述

机械结构上的设计
在一开始时选用飞思卡尔的B车模改装一下,其实就是把底盘换了个短一点的,因为题目对于车长有要求,接着发现单电机配合舵机转弯时不大顺利,于是偷天换日将后面的两只轮子改成E车模的。。。于是诞生了下面的奇葩车。

金属检测理论分析
LDC1000的电感检测原理是利用电磁感应原理。在PCB线圈或自制线圈中加上一个交变电流,线圈周围就会产生交变电磁场,这时若有金属物体进入此电磁场就会在金属物体表面产生涡流(感应电流)。涡流电流跟线圈电流方向相反,涡流产生的反向磁场跟线圈耦合形成一个变压器。由于变压器的互感作用,在初级线圈可检测到次级线圈(金属物体的涡流效应)的参数。
LDC1000是依靠检测等效并联电阻来测定金属物体是靠近还是远离线圈,所以当有金属物体接近时,就会使传感器的数值发生变化,对这一变化进行判断便可得知小车是否在正确的轨道上。

线圈扫描理论分析
LDC1000采集的信号有两个:传导目标(金属物体)接近时导致的线圈涡流损耗Rp,以及线圈的电感值L。根据线圈的不同,这个传感回路的震荡频率范围为5kHz~5MHz,涡流损耗Rp的分辨率是16 位,电感测量L的分辨率为24 位。Rp 可推算出金属的距离,利用Rp值的变化完成金属物的定位。
设计使用LCD1000 配合单线圈摆动扫描,增大扫描赛道面积,将线圈固定在一个舵机上,使线圈在铁丝上面水平扇形摆动。在一个摆动周期内取不同位置的读数,相当于有多个线圈在检测赛道。这样可大大降低整体设计的成本。
该方案在程序中实现方法是:K60不断监测LDC1000传感器送回的数据。一次完整的采样周期是:舵机从右往左扫描——采集数据保存至数组——舵机从左往右回到初始位置。通过设置一个阈值,当大于阈值时则为检测到铁线,小于阈值时则没有,并计算当前检测到铁线的值在数组中的相对位置,以此作为前轮舵机转向和后轮驱动的依据,达到循迹的目的。

检测硬币
当传感器检测铁线时,由于铁线的表面积较小,产生的涡流较小,K60读出LDC1000采集回来的数据较小;当检测的硬币时,由于硬币的表面积较大,产生的涡流大,K60读出LDC1000采集回来的数据将比之前大很多。因此,我们可通过设定阈值来区分铁线与硬币的
最重要的就是找到一个阈值~

测行驶距离
我们采用欧姆龙500 线的光电编码器。电机每转一圈,编码器输出500个脉冲,则车轮走过了75mm。
单片机通过FTM模块的正交解码功能实现对脉冲的计数,从而实现对小车行驶距离的计算

程序设计
程序上移植了浮点科技电轨传感器LDC1000驱动的例程,非常感谢。
这里写图片描述

接下来电源等其他的都是以前的了
这里写图片描述

最后的小车:
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述
总结
首先是赛道与电感传感器的问题。我们在前期测试的时候,由于赛道本身有个别地方存在转角过大,小车转向不足的问题。此种情况时会造成无法识别的情况,从而使小车冲出赛道。后来通过利用前轮舵机转向,后轮双电机差速能较好地解决此问题。
其次是传感器模块线圈限制,导致其感应距离较小,只能将LDC1000模块尽可能靠近铁线,并且使用了热熔胶对其进行了固定,但仍不能完全使其在每个摆脚下与铁线的高度保持一致。另外,由于电感传感器通过杜邦线与车身底部的线圈相连,偶尔会出现数据波动的情况,对小车的正常行驶有很大的影响,后来换用质量较好的灰色排线情况有所改善。
还有,测距不是很准确。究其原因,与车身机械结构有很大的关系。改进方向为:多次获取记录赛道距离数据,使用matlab建模(编码器脉冲数与实际距离的函数关系模型)拟合曲线。
最后,小车整体的稳定性与电池供电电压有着很大关系,电池电压在7.2伏左右时系统最为稳定。当小车供电电压低于6V时甚至更低时,可能会引起很多意想不到的情况,例如LDC1000检测出的值错误,感应不到金属,小车转向异常,驱动力不足等。在我们起初遇到此情况时,以为是电感传感器的问题,在多次调试无效后,换了个电池,才偶然发现问题的起因,为此耽误了很多的时间。

测试答辩后
答辩的时候很有意思的就是老师要求我们将赛道反过来(因为赛道上面是直接将铁线贴上去的),然后测试能不能跑完,然而在一开始还行,第一个弯就gg,这里就说明确定一个阈值只能适应你这个跑道,如果想要更好的适应性,能做的一个是动态阈值,根据测得的值来确定,总而言之,在这次课设中学到了很多~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133836.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 海思35xx实现GT911触摸屏功能「建议收藏」

    海思35xx实现GT911触摸屏功能「建议收藏」海思35xx通过gpio模拟i2c实现GT911触摸功能1.遇到的问题地址选配后一直不对,首先检测硬件问题,然后通过调试驱动部分,打印调试从设备给的ack(没有逻辑分析仪);发现寄存器地址一直为FF或00,检查发现GT911地址均为16bit,而读写i2c接口是8位的;成功后点击触摸板点击位置与实际不一致;可以进行坐标转换;2.网上下载GT91xx编程指南文件电容触摸芯片GT911Datasheet文件3.Datasheet分析(1)gpio模拟时,可能需要注意这个延时时间;

    2022年6月22日
    57
  • java中|与||,&与&&到底有什么区别呢?

    java中|与||,&与&&到底有什么区别呢?在java中,很多人都不知道&与&&,|与||的区别。&,&&:(与,短路与):一样的地方就是二者执行最后的结果是一样的,但是执行的过程有区别,对于&:无论&左边是否为false,他都会继续检验右边的boolean值。对于&&:只要检测到左边Boolean值为false时,就会直接判断结果,不会在检验右边的值(因为”与”有一个false最后结果就是false了)所以&&的执行效率更

    2022年7月7日
    26
  • php openssl 怎么升级,OpenSSL升级和php加扩展模板openssl

    php openssl 怎么升级,OpenSSL升级和php加扩展模板openssl升级 openssl 版本 以版本 1 0 2l 为例子方法如下 1 下载最新版本的 openssl 源码包 wgetftp ftp openssl org source openssl 1 0 2l tar gzhttps www openssl org source 2 安装 openssl1 tar xzvfopenssl 1 0 2l tar gz2 cdopenssl 1 0 2l

    2025年7月1日
    2
  • c语言入门教程–-2基本语法

    c语言入门教程–-2基本语法

    2021年3月12日
    250
  • 伏地魔

    伏地魔

    2021年7月7日
    83
  • arm架构的安卓模拟器_armv8.3

    arm架构的安卓模拟器_armv8.3Android设备的CPU类型通常称为ABIs问题描述解决方法1解决之前的截图2解决后的截图3解决方法4建议为什么你需要重点关注so文件App中可能出错的地方其他地方也可能出错使用android-21平台版本编译的so文件运行在android-15的设备上混合使用不同C运行时编译的so文件没有为每个支持的CPU架构提供对应的so文件将so文件放在错误的地方只提供arme…

    2022年9月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号