基于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Hibernate进阶之如何使用Hql内连接,外连接以及自连接

    Hibernate进阶之如何使用Hql内连接,外连接以及自连接

    2021年9月26日
    53
  • Android双端队列——ArrayDeque的实现&源码分析[通俗易懂]

    Android双端队列——ArrayDeque的实现&源码分析[通俗易懂]本文将分析Android双端队列ArrayDeque的特性、实现及源码分析。讨论ArrayDeque的实现原理以及Android中的使用。

    2022年9月20日
    5
  • 博弈论分析题_博弈论

    博弈论分析题_博弈论问题描述小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买10颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。输入格式两个正整数,表示每种

    2022年10月15日
    2
  • Java回顾之序列化

    Java回顾之序列化

    2021年8月23日
    53
  • 运维面试题(面前准备)

    运维面试题(面前准备)前段时间一直在面试,也没怎么写博客,现在找到实习工作了,也有时间去写了。在这里分享一下我面试之前做的一些准备。(以下内容是我从网上查找整理得到的…红色标注为面试提及的,但不一定是我整理的内容)TCP/IP简述TCP三次握手的过程?答:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器…

    2022年6月14日
    39
  • 大公司里怎样开发和部署前端代码[通俗易懂]

    大公司里怎样开发和部署前端代码[通俗易懂]这是一个非常有趣的非主流前端领域,这个领域要探索的是如何用工程手段解决前端开发和部署优化的综合问题,入行到现在一直在学习和实践中。在我的印象中,facebook是这个领域的鼻祖,有兴趣、有梯子的同学可以去看看facebook的页面源代码,体会一下什么叫工程化。接下来,我想从原理展开讲述,多图,较长,希望能有耐心看完。原文https://github.com/fouber/blog

    2022年8月31日
    3

发表回复

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

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