基于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,这里就说明确定一个阈值只能适应你这个跑道,如果想要更好的适应性,能做的一个是动态阈值,根据测得的值来确定,总而言之,在这次课设中学到了很多~

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 2021编程语言排行榜出炉

    2021编程语言排行榜出炉今日,IEEESpectrum发布了2021年度编程语言排行榜,其中Python在总榜单以及其他几个分榜单中依然牢牢占据第一名的位置。另外值得关注的是微软C#语言,它的排行从2020年的第23名跃升至了今年的第6名,称得上是今年的大势语言。2021年度编程语言排行榜依然从8个信息源按照11种指标收集数据,最终得到了数十种编程语言流行度的整体排名。这8个信息源分别为CareerBuilder、GitHub、Google、HackerNews、IEEE、Reddi

  • python中选择排序法对数组进行升序排序_sort函数对字符串数组排序

    python中选择排序法对数组进行升序排序_sort函数对字符串数组排序这三个排序方法应对日常工作基本够用先说一下三者的区别sort,sorted是用在list数据类型中的排序方法argsort是用在numpy数据类型中的排序方法(numpy里也有一个sort方法,下面会讲)sort和sorted的区别如下????先看两个简单的升序排序,分别使用sorted和sort方法#sortednum_list=[1,8,2,3,10,4,5]ordered_list=sorted(num_list)print

  • VRRP协议详解[通俗易懂]

    VRRP协议详解[通俗易懂]1  概述1.1  产生背景随着Internet的发展,人们对网络可靠性的要求越来越高。特别是对于终端用户来说,能够实时与网络其他部分保持联系是非常重要的。一般来说,主机通过设置默认网关来与外部网络联系,如图1所示: 图1 常用局域网组网方案主机将发送给外部网络的报文发送给网关,由网关传递给外部网络,从而实现主机与外部网络的通信。正常的情况下,主机可以完全信赖网关的工作,但…

    2022年10月22日
  • 启动spring时报java.lang.NoClassDefFoundError: org/springframework/boot/Bootstrapper解决办法

    启动spring时报java.lang.NoClassDefFoundError: org/springframework/boot/Bootstrapper解决办法D:\Java\bin\java.exe-XX:TieredStopAtLevel=1-noverify-Dspring.output.ansi.enabled=always-Dcom.sun.management.jmxremote-Dspring.jmx.enabled=true-Dspring.liveBeansView.mbeanDomain-Dspring.application.admin.enabled=true“-javaagent:D:\IDEA\IntelliJIDEA

  • 模拟Hibernate框架的小demo

    模拟Hibernate框架的小demo

  • 凤凰系统(Phoenix OS)PC版安装,电脑上体验功能丰富的安卓系统「建议收藏」

    凤凰系统(Phoenix OS)PC版安装,电脑上体验功能丰富的安卓系统「建议收藏」PC版(X86版)ISO镜像下载地址:http://www.phoenixos.com/download_x86下载完成后,可按照官方给出的安装教程进行安装。凤凰系统帮助中心:http://www

发表回复

您的电子邮箱地址不会被公开。

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