2016年辽宁省电子设计大赛自动循迹小车制作心得[通俗易懂]

2016年辽宁省电子设计大赛自动循迹小车制作心得[通俗易懂]使用STM32F103的程序在这里:https://download.csdn.net/download/weixin_42089190/10456099这个是报告:https://download.csdn.net/download/weixin_42089190/10456097寄存器的配置其实大同小异,各位看官可以下载下来参考一下转眼间2018年6月3日了,刚刚完…

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

使用STM32F103的程序在这里:https://download.csdn.net/download/weixin_42089190/10456099

这个是报告:https://download.csdn.net/download/weixin_42089190/10456097

寄存器的配置其实大同小异,各位看官可以下载下来参考一下

     转眼间2018年6月3日了,刚刚完成了校级电赛的选拔,完成了全部基本部分与部分发挥部分(校级题目比省级多了进出车库的发挥项,因此实际上对于16年省赛的题目要求是全做出来的)。想想一个多月的努力,不禁想要把自己的制作过程写出来,既是对自己的思路的整理,也希望能给后来人一些启发。今天先写出来,我以后会慢慢整理的。                           

msp430f5529以及msp430g2553,stm32f103用I2C与ldc1314以及ldc2214的代码都整理好了。大家可以到CSDN用积分下载。()

还可以在微信公众号三丰杂货铺后台发送1314获取百度网盘下载链接。

又一转眼,两年过去了。距离这个比赛已经好久。我此时(2020年5月28日)已然大四,马上要念研究生了。现在回头看这篇我刚开始接触CSDN写的文章,还没有学会markdown,而且认识也比较粗浅。大概会等毕业再进行详细更新,手头有的资料也会放上来。现在诸位看管暂且看这浅显的文字吧。文章末尾加了微信公众号,欢迎大家关注。

 

省赛今年推荐芯片加了一个FDC2214,这个芯片和LDC1614的寄存器几乎一模一样,我感觉应该好好练一练I2C,然后用I2C和2214和1614通信一下,肯定会有帮助!

 

因为是回忆,可能略有写散乱,希望诸君见谅。我会慢慢整理,最终版本应该会比较完善。

大家有什么问题,可以在下边评论,博主有时间会回答的。

 

 

目录

 

 

 

题目

车模的选择

 

1314的使用

2214的使用

 

 

路程识别

 

时间计算

硬币检测

 

 

 

 

七、发挥部分

八、其他发挥部分

九、感悟

 

一、题目

 

2016年辽宁省电子设计大赛自动循迹小车制作心得[通俗易懂]

 

2016年辽宁省电子设计大赛自动循迹小车制作心得[通俗易懂]

 

对于整个要求,我们先做了一个大致规划,1314检测线圈,PWM或者PID控制小车行走,12864显示路程,光电门测量路程,外部中断记录时间,MSP430G2553作为核心。蜂鸣器在发现硬币时响。

 

 

 

二、车模的选择

 

 

      其实,车模的选择对于这个比赛很重要。

 

 

     1、选择电机

    尤其是电机,很重要。电机的扭矩不够大的话,程序所要求的最低速度根本达不到。为什么要最低速度,因为速度太快,车就可能跑偏……

 

 

   2、轮胎

 

 

   其次是轮胎,要三个还是要四个?抓地能力要怎么选择?四轮车就意味着你的一侧的轮胎是并联在一起的,三轮的话只需要后轮搞成万向轮,控制前面两个轮子就好。楼主当初查资料,人家说三轮转弯快,四轮直行快,看见就看见了,也没啥直观的认识,因此买了一个四轮的。

喏,像这样:

                   2016年辽宁省电子设计大赛自动循迹小车制作心得[通俗易懂]

 

 

 

 

 

事实证明我还是太naive,因为给的速度过小,四轮车极容易堵转。(为了在缓慢速度下调节车子),最后我们还是把车换成了三轮的。后面加了个万向轮。结果,万向轮也容易被线堵住,我们没办法,车最后就成了这个鸟样儿:

2016年辽宁省电子设计大赛自动循迹小车制作心得[通俗易懂]

 

当然,我们这个车也仍需要改进,因为万向轮的自由度太大,极易跑偏,其实应该加四个小柱子,把它们限定在一前面。(这个是听别人的建议,我们测评时没加限制)。现在回想,我认为,四轮车的话,又使用了好一点儿的电机,那驱动板就不能用L298N了,至少要用大电流的驱动模块,花几十块钱。

 

 

当然,为什么轮胎数量和抓地力有影响,其实归根结底还是电机的问题,电机不听话,给不了我们想要的速度,想让轮胎如臂指使,光靠那样的玩具电机是做不到的。而且,我们测评的时候,有很多同学使用四轮也相当6,(当然,测评时还有用履带的,相当稳)后来者们可以参考一下下面的电机:

2016年辽宁省电子设计大赛自动循迹小车制作心得[通俗易懂]

 

当然,如果你是土豪,或者是玩儿飞思卡尔智能车的人,使用500多600多的车模,那你这一部分就完全不用操心了。

 

 

 

三、LDC1314模块

 

 

   首先,对于土豪,大可以买一个1314的EVM评估模块,或者是1000的模块,大概是100多元,对于我们(露出贫穷的微笑),我们上官网申请了3个1314和1614的样片。而电路板使用了老师给的板子,1314的封装也贼坑,最后在老师的帮助下才焊接好。别看我说只说了一两句,对于没有板子,而且不会焊接鬼畜封装的人来说,这一部分相当难。

        另外,1314想要检测金属,还需要线圈,1314是四通道,可以用四个线圈,离散量来检测。连续量貌似要用PID?(当然,听学长说,用PID也还真不一定有PWM跑得快……)线圈可以自己绕,也可以自己买,要是舍得,还可以自己让PCB工厂打印。

 

      有了四个线圈,就可以将它们并排固定在车轮前面来检测,这是最常用的。还有些同学想法极其巧妙,使用的是1000,只有一个线圈,舵机在前面扫一下,车就前进一点儿,挺稳的,但是速度贼慢~

    1314的主要原理就是连接上外部线圈,然后它会储存线圈送回来的Fsensor/F的频率比,如果检测到金属,这个值就会变大,硬币就会更大,然后这个值就放在寄存器里,我们通过II2C协议实时读取数据就可以了。

 

      还有一件难事,就是对于没玩儿过的人来说,如何初始化1314呢,毕竟它只有英文手册,那我只能说,去啃手册吧。。。。楼主队友当时啃了将近10多天,才真正啃下来,能使用了。

 

      1314的寄存器有R/W的,还有R的,像那种R类型的(比如STATUS),一般没啥用。还有一些没啥用的,比如OFFSETx(求偏差值的),RCOUNT(设置频率),这些需要设置,但设置却不需要太精细,随便写一个可能也没啥大影响。(个人感觉)比较重要的寄存器有DATAx,1314的最终结果就储存在这里,前几位是错误标志,后12位就是结果,如果线圈和1314模块接触不良,II2C读出的值就是4095,是不是很熟悉,就是12位都是1嘛。还有一些寄存器就很重要,比如CONFIG,你要一位一位地去看到底是啥用,可以结合百度文库已有的例程,在它的基础上修改。

 

2016年辽宁省电子设计大赛自动循迹小车制作心得[通俗易懂]

 

 

                                                                                        2214的使用

     有想和我讨论的,可以在 下方留言

 

可以这么说,1614和1314很像,2214和1614几乎一样。我今天用1314的程序仿写了一个2214的程序。明天就去找老师要板子。关于,它的使用,我感觉就是要注意DATA有两个寄存器,要先读高16位的寄存器,再读低16位的。

 

 

今天老师又让我们重读手册,因为2214是高精度嘛。我们根据1314程序改出来的值只有8位能用,但它可是一个28位的传感器呀!所以,还需要吃透2214的各种模式。

数据处理的时间,通道转换的时间,应该尽量短,否则就是浪费精度。

 

对于2214的各种管脚:

 

      SD管脚是关断模式选择,直接悬空就好,毕竟我们需要使用它,而不是关闭,这个引脚没啥用。

 

      INTB是中断引脚,可以配置为通知MCU系统状态的变化。

 

我感觉需要重新做的有:

 

      1.更精确地配置时钟

 

 

      2.多通道与单通道的配置

      3.如何处理采集回来的数据(将long传回到PC)

 

 

 

 

 

问题:

       1传感器的频率如何知道呢?

 

四、路程计算

 

 

怎么计算路程了,有用霍尔传感器的,我们用的是光电门和码盘,原理都一样。就是光电门给光,码盘上有空隙,码盘堵住光和不堵住光的时候,会有脉冲,这时候就可以用一个外部中断,来告诉单片机有一个空隙过去了,那计算空隙,路程就出来了。

 

如图:

 

 

五、时间计算

 

这个,大家尽可以用定时器,G2553有两个定时器,还有一个看门狗,我们就用了看门狗。都不用一进入单片机就关狗了~哈哈

 

六、硬币检测

 

 

硬币其实好检测,因为硬币要比铁丝更明显,会读铁丝,自然会读硬币了。然后用蜂鸣器表示一下就行。

 

七、发挥部分

 

 

大家觉得,对于小车来说,最重要的发挥部分是什么呢?没错,就是速度,速度!!!没有速度,再多的功能都是虚的。速度方面需要大家好好去调节。因为电池的影响,或者是重物的影响,此时调好的程序,到了彼时,就一点用都没有了。所以,大家在比赛之前,一定要预留几个小时,将车调到最佳状态,然后就什么都不要动了,静静地等待测评就好了。

 

这也是我们组所犯的错误,追求完美,想要完成所有功能,结果上台后车没调节好,天知道有多冤枉!而其它组别呢,一个个儿的只调节速度,真的是被坑惨了。

 

八、省赛之外的其他发挥部分

 

 

我们学校在省赛外的其他发挥部分就是识别车库并进入了,这个大家可能并不感兴趣,我今天就先不写了,之后完善。主要是用摄像头,7670和7725都可以。关键是带FIFO,再说一遍,关键是带FIFO。

另外,我们还做了一个语音模块,让小车更智能,这个之后说。

 

九、感悟

感悟
不要怕花钱 想做好比赛,真的是需要花很多钱的,大家不要图省钱。电路板,该打印就打印,博主小组花了70多打印了几十个线圈,一个个测的精度;买摄像头的时候也是先买的不带FIFO的,结果买回来发现根本用不了;
组里某个人要对日程有规划 什么时间干什么事,出什么成果,应该是有规划的,要不然时间就有可能无谓地浪费掉。
   
   
   
   
   
   
   
   

2018年6月3日第一次更新

2018年6月4日第二次更新

2018年6月6日第二次更新,更新1314部分寄存器设置

2018年6月27日第三次更新,更新2214部分寄存器设置

2018年7月3日第四次更新    更新对于2214的理解与难点

2020年5月29号第五次更新,更新个人微信公众号

 

欢迎大家关注我的个人公众号,现阶段主要总结Robomaster相关的计算机视觉知识:Qt,C++,CMake,OpenCV等等
公众号名称:三丰杂货铺

2016年辽宁省电子设计大赛自动循迹小车制作心得[通俗易懂]

 

 

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

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

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

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

(0)


相关推荐

  • MapReduce 编程不可怕,一篇文章搞定它

    MapReduce 编程不可怕,一篇文章搞定它前言本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系正文需求:WordCount,大数据领域的HelloWorld。Mapperpackagecom.shockang.study.bigdata.mapreduce;importjava.io.IOException;importorg.apache.hadoop.io.IntWr

  • curl 要么 file_get_contents 获得授权页面的方法的必要性

    curl 要么 file_get_contents 获得授权页面的方法的必要性

  • ASSERT_VALID和ASSERT宏分析[通俗易懂]

    ASSERT_VALID和ASSERT宏分析[通俗易懂]这个宏都是MFC的调试宏. ASSERT_VALID宏用来在运行时检查一个对象的内部合法性,比如说现在有一个学生对象,我们知道每个学生的年龄一定大于零,若年龄小于零,则该学生对象肯定有问题。事实上,ASSERT_VALID宏就是转化为对象的成员函数Asser

  • java swing图形化界面_javagui界面设计

    java swing图形化界面_javagui界面设计JavaSwingGUI图形界面窗口开发基础教程,本教程将系统性地详细介绍Swing开发中常用的一些组件、布局管理器等相关知识技术,并且每章节都将通过代码实例展示实际应用。Swing是Java为图形界面应用开发提供的一组工具包,是Java基础类的一部分。Swing包含了构建图形界面(GUI)的各种组件,如:窗口、标签、按钮、文本框等。Swing提供了许多比AWT更好的屏幕显示元素,使用纯Java实现,能够更好的兼容跨平台运行。JavaSwing图形界面开发目录

  • python open函数返回值_open函数 · intermediate-python · 看云

    python open函数返回值_open函数 · intermediate-python · 看云#open函数#`open`函数[open](http://docs.python.org/dev/library/functions.html#open)函数可以打开一个文件。超级简单吧?大多数时候,我们看到它这样被使用:~~~f=open(‘photo.jpg’,’r+’)jpgdata=f.read()f.close()~~~我现在写这篇文章的原因,是大部分时间我看到`ope…

  • iptable命令参数详解

    iptable命令参数详解###还不够详细,后期补充###开放某端口:iptables-IINPUT-ptcp–dport9000-jACCEPT关闭某端口:iptables-DINPUT-ptcp–dport80-jACCEPT屏蔽某个IP请求:iptables-IINPUT-s192.168.0.1-jDROP(屏蔽单个IP192.168.0.1…

发表回复

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

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