一、设计思路分析

前置的数据采集装置(眼睛)采集道路信息并送到单片机(大脑)进行分析,根据小车相对黑线的不同位置做出控制策略,再将处理信号后发出的命令输出给小车电机,分别控制小车的两个电机转向和转速,实现根据道路情况而直走、转弯、停车。

采用MSP430F148单片机作为数据采集、处理、控制,系统的总体设计如图1所示,MSP430的开发平台为IAR Embedded Workbench EW430,它界面操作易上手。芯片内部JTAG对外的端口称为JIAG端口,该端口是一个双向串行端口。通过它可以控制MSP430进行在线仿真调试。因此,将JTAG电路集成到CPU内就相当于将仿真器集成到了CPU内部,只需要一个接口电路,将JTAG信号传送到调试终端(PC机)就可以实现在线调试了。

二、硬件设计

系统的组成主要有小车、信号采集模块、控制模块、供电模块和驱动模块,以下将分别介绍。

1. 基础小车

市面上小车多种多样,如有两个电机的四驱小车:适合爬坡、走沙石路等,但是过弯容易卡死;后轮有两个电机的三轮小车,过弯灵活但是重心不稳;两个电机的四轮后驱小车,过弯灵活且稳定。

结合了前面两种车的优势,被我选用。

2. 信号采集模块

选择ST168光电对管来制作路面检测的传感器模块,见图2,当光电对管下方是深色的时候,由于深色吸收光线,接收管不受光照,因此不导通,A端输出电压为3.5V左右,被单片机识别为逻辑“1”,同理,白色的时候接收管导通,输出电压为0V左右,单片机识别为逻辑“0”。也可在信号输出前连接一个比较器以便获得更灵敏的输出。R1限制发射二极管的电流,发射管的电流和发射功率成正比,但受其极限输入正向电流50mA的影响,用R1=150Ω的电阻作为限流电阻,电源电压为5V,测试发现发射功率完满足检测需要。可变电阻R2可限制接收电路的电流,一方面保护光电对管;另一方面可调节检测电路的灵敏度。

3. 控制模块

为了使系统更容易设计和增加系统的稳定性,我们使用在电子器件市场上很方便购买的MSP430系列的最小系统板(见图3)。

4. 各模块供电方案

供电单元是9V直流电池组,根据各个模块对电压的不同需求通过稳压模块分别为其供电。单片机系统、各模块系统以及电机的工作电压不同,我们需要使电压满足各自的要求。

除单片机外其他模块的工作电压均为5V,可用REG1117-5(输入3.8~12V,输出5V)将9V电压降为5V为这些模块供电,MSP430系列单片机具有超低功耗特性,工作电压仅为3.3V,故需要一块REG1117-3.3(输入5V,输出3.3V)为其供电。两个稳压模块电路相同,只是稳压芯片不同,再参见REG1117典型电路便可确定如图4所示的稳压电路。

5. 电机驱动模块

采用常用的H 桥电机驱动芯片L 2 9 8 N 驱动小车电机, L 2 9 8 N 第9 脚为逻辑控制部分的电源(4.5~7V),第4脚为电机驱动电源(此系统中为9V,为46V),第5、7、10、12脚输入标准TTL逻辑电平,用来控制内部H桥的开和关,第6、11脚为使能控制端(我们将两个使能端都接高电平,直接通过PWM波控制电机。若为低电平,驱动桥路上的4个晶体管全部截止,电动机自由停止),第1、15脚用来连接电流检测电阻(见图5)。

通过单片机产生PWM波来调整直流电机电枢绕组两端的电压控制转速。脉冲宽度调制波由一列占空比不同的矩形脉冲构成, PWM波的占空比越大,输出电压越高,利用占空比的变化调整加在电机电枢绕组上的电压,改变电压随即改变电机电流,从而改变电机的转速。图中C1与C2,C3与C4分别并联后接地起滤波作用,防止在开机的时候产生的冲击电流损坏L298N。D1~D8是常用1N4007二极管,可防止电机中电感产生的反电势击穿L298N。根据L298N的输入输出关系,通过输入PWM信号可以控制电机的正反转,输入端IN1为PWM信号,输入端IN2为低电平,电机正转;输入端IN2为PWM信号,输入端IN1为低电平,电机反转。同理,IN3和IN4能共同控制另外一个电机。

三、软件设计

为便于描述,此处将四只光电对管左到右分别编号为1、2、3、4。分为两组置于车前,将黑色引导线“夹”在中间,内侧两个光电对管起主要的定位作用,优势在于外侧的两支管可以有效地解决小车由于惯性略微冲出轨道导致内侧的两支管子检测到白色而冲出去的危险。相比于其他用更多管子的方案,此方案简单有效,避免了很多复杂情况的产生(见图6)。

当小车入弯前(以右转为例),四支光电对管均检测到白色(直走),入弯时,3、4号管将检测到黑色,此时便调用“右转”函数,当四支管子重新检测到白色信号时,调用“直走”函数;当四支对管同时检测到黑色信号时,调用“停车”函数。

在此过程中,使用一个while(1)的死循环使单片机不停地对道路信息进行判断,并时刻纠正小车的前进方向。

转弯策略

变量定义:temp1~temp4为1~4号光电对管采集到的路面逻辑信息,见图7。

为了更好的实现转弯,防止小车在过急弯时冲出路径,设计了强弱不同的两重转弯策略,同样以右转为例:车刚入弯时,必然是3号管先检测到黑色,而其他三个管均检测到白色时,启动重转弯程序;当车转急弯或由于小车略微冲出轨迹使3号管检测到白色时,4号管会检测到黑色,此时将启动第二重转弯程序,此程序能将小车拉回到执行一重转弯程序的位置上。

直线行驶:用PWM对两个电机输出相同的占空比(350/512),使两轮速度相同。

重转弯策略(以右转为例):调整PWM使右轮停止转动,左轮全速(占空比512/512)转动。

第二重转弯策略:调整PWM使右轮反转(占空比300/512),左轮全速转动。

四、制作与调试

具体制作时,条件有限的读者可以根据前面给出的各模块电路图在面包板上分别进行焊接,将芯片的管脚和与其他模块的接口用排针引出。对各模块进行调试时可在各管脚上加需要的电压,测试其输出端的波形。有条件的读者可以将各个模块制作在一块PCB板上,可以大大简化小车的结构。

1.用万用表检查板的焊接情况,确保管脚的引出情况良好,无虚焊、短路。

2.调试供电模块,在输入端加上额定电压,测量输出端的电压是否合格。

3.调试电机驱动模块时,在5、7脚上加5V直流电压,电机能够正向转动,交换两极后能反转(在10、12脚上进行同样的操作)即调试通过。

4.调试信号采集模块,加上5V的直流电压,测试每一个光电对管在面对黑色(3V以上)和白色(0V)时A端的输出电压。ST168的检测距离很小,一般为8~15mm,因为8mm以下是它的检测盲区,而大于15mm则很容易受干扰。

笔者经过多次测试比较,发现把传感器安装在距离检测物表面10mm时,检测效果。将地面监测模块放置在离前轮5cm处效果比较理想。

5.用杜邦线将各模块的输入输出连接起来,形成一个完整的系统。

6.编写、下载程序。首先编写直走程序使小车能动起来,在此基础上再加入转弯功能,进行参数的调整。

7.小车的底盘一定要调平,保证小车始终都是“四脚着地”。电池组的位置将直接影响小车的重心位置,会对小车的转弯性能产生影响,放在靠后的位置效果较佳。检查车轮轴与轮胎的连接严实,以免小车打滑或意外转弯。

8.不同等级的电压一定要共地,注意5V或者9V电压千万不能给单片机供电,会直接将单片机烧坏!

直线行驶的时候占空比为350/512,这样可以避免速度过快小车由于惯性冲出了可识别路径,也可以使小车在转弯时有足够的速度不至于转不过去。当弯道比较平缓的时候重转弯策略能够满足过弯的需求,此时将一边车轮停转一边全速转动(占空比为1),使两边的车轮差生一个比较大的差速使小车转弯。当弯道比较急,仅仅依靠上述的策略小车可能转不过去而卡住,甚至冲出路径。此时使原本停转的那边车轮反转(占空比300/512,经实验得到的优化数据),就能够获得更大的差速,小车产生一个瞬间的摆动。如果小车的路径识别足够灵敏、转弯能力够好,读者可自行取消第二重转弯策略。

简单循迹小车实验心得_简单循迹小车的制作相关推荐

  1. 简单循迹小车实验心得_智能循迹小车总结 智能循迹小车报告.doc

    智能循迹小车总结 智能循迹小车报告 西京学院 自动化1002班 概要 本寻迹小车是以万能板为车架,STC12C5A60S2单片机为控制核心,将各传 感器的信号传至单片机分析处理,从而控制 L293D电 ...

  2. 简单循迹小车实验心得_红外自动循迹小车实验报告

    红外自动循迹小车实验报告 1摘要 本实验完成采用红外反射式传感器的自寻迹小车的设计与实现.采用与白色地面色差很大的黑色 路线引导小车按照既定路线前进,在意外偏离引导线的情况下自动回位,并能显示小车停止 ...

  3. 简单循迹小车实验心得_新人刚刚接触单片机,求教一个简单的循迹小车程序(实在看不懂)...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 程序如下: #include #define uint unsigned int #define uchar unsigned char sbit P10 ...

  4. 关联映射 一对多 实验心得_使用影响映射来帮助您的团队进行实验

    关联映射 一对多 实验心得 影响映射是一种在领导者和项目团队之间建立共识的技术. 影响图以引人入胜的研讨会形式提供,是以鼓励创新的方式启动工作流的理想方式. Gojko Adzic首次在2011年的小 ...

  5. stp实验心得_通信实验心得体会

    通信实验心得体会 [篇一:数据通信实验总结报告] hefei  university 数据通信与计算机网络实验报告 题目: 数据通信与计算机网络实验报告 系别:电子信息与电气工程 专业 班级: 11 ...

  6. c语言简单程序编写实验步骤,实验一编写简单的C语言程序.doc

    实验一编写简单的C语言程序 实验一 编写简单的C语言程序 [实验目的] 1.熟悉C程序设计编程环境 C ++,掌握C程序设计编辑.编译.连接运行.掌握C程序设计的基本框架能够编写简单C程序.. 实验内 ...

  7. 实验心得_大肠杆菌原核表达实验心得(上篇)

    大肠杆菌原核表达实验心得(上篇) 对于大肠杆菌蛋白表达,大部分小伙伴都觉得 so easy! 做大肠杆菌蛋白表达十几年经历的老司机还经常阴沟翻船,被大肠杆菌表达蛋白虐千百遍的惨痛经历,很多小伙伴都有切 ...

  8. 实验五_简单游戏编程

    本项目由多个小游戏组成,运行程序后出现一个菜单,选择数字1,2,--进入相应的游戏程序.游戏完成后,返回本界面,选择数字0,退出程序. 进入程序后菜单如下: 1.彩票. 参考题3.15, to gen ...

  9. python基本语句实验心得_总算领会python语言学习心得

    python虽然好学,但是也要是付出努力之后,学懂了才会觉得好学,如果你没有动力,没有付出时间和精力,那对于你来说就是多好学也是非常的困难的!如何找到学习python的动力呢?以下是小编为你整理的py ...

  10. cisco 模拟器安装及交换机的基本配置实验心得_网络工程师的Python之路 -- 自动监测网络配置变化...

    版权声明:我已加入"维权骑士"(http://rightknights.com)的版权保护计划,所有知乎专栏"网路行者"下的文章均为我本人(知乎ID:弈心)原创 ...

最新文章

  1. g++ 生成C++ .so库文件,并调用示例
  2. linux ksh怎么查找僵尸进程,Unix 进程管理
  3. Struts2配置文件中传递参数的一个小问题
  4. 计算机还是数学竞赛内容吗,除了AMC,数学牛娃还能参加什么高含金量的数学竞赛...
  5. merge into ORA-30926
  6. 分布式环境下,怎么保证线程安全
  7. tensorflow 特征预处理总结
  8. 12、图解横向扩容过程,如何超出扩容极限,以及如何提升容错性
  9. UiModeManager设置夜间模式和行车模式
  10. 队列的实现(二) 链式队列的实现
  11. PYTHON莫名其妙的崩溃
  12. 研发管理系统选型必读
  13. vue学习笔记-6-样式绑定
  14. 人工神经网络 图像分割 matlab,MATLAB图像分割毕业设计开题报告
  15. 人工智能简史�_人工智能简史
  16. 【C语言】如何用C语言画一个哆啦A梦(附源代码)
  17. 程序员与黑客的故事 程序员应有的工作素质
  18. python判断正数负数_python 负数变正数
  19. m分别使用ESN网络,ESN+RBF神经网络以及ESN+Volterra网络进行数据预测对比仿真
  20. html报告致谢,论文致谢优秀范文(精选10篇)

热门文章

  1. gooflow 自定义流程图
  2. python ray定时任务_python定时任务APScheduler
  3. 破解Kindle,轻松自定义字体
  4. Linux C 语言内联汇编
  5. 在线office编辑 iWebOffice系列的交互操作
  6. Linux多线程基础总结
  7. KITTI数据集下载
  8. AE效果:3D 通道
  9. python 拼音 四线格_拼音四线三格中的写法示意及书写注意事项
  10. Turbo码相关学习