首页 附2:小车寻迹.pdf

附2:小车寻迹.pdf

附2:小车寻迹.pdf

上传者: 李义_7667 2013-12-10 评分1 评论0 下载0 收藏0 阅读量583 暂无简介 简介 举报

简介:本文档为《附2:小车寻迹pdf》,可适用于硬件技术领域,主题内容包含圆梦小车StepbyStep之五wwwmcucom第页共页圆梦小车StepbyStep之五让小车在“路”上走前一篇讲述了如何使小车“走路”本篇教小车符等。

圆梦小车StepbyStep之五wwwmcucom第页共页圆梦小车StepbyStep之五让小车在“路”上走前一篇讲述了如何使小车“走路”本篇教小车在如何在“路”上行走!在多数情况下车是在路上跑的我们的圆梦小车也不例外只是它能认识的“路”与现实世界不同因为它的眼睛与人不同只能分辨颜色的深浅所以它的路只能是在浅底色上的深色道路或者反之我们通常称之为“轨迹”。为了能辨别出轨迹必须给小车配上能检测出深、浅颜色的“眼睛”轨迹传感器首先分析一下圆梦小车的轨迹传感器是如何构成的又是如何工作的。一、识别“路”的眼睛轨迹传感器圆梦小车所用的轨迹传感器由反射式光电采样器、信号缓冲、背景光消除电路组成将处理后红外光反射强弱模拟信号送入单片机由单片机的AD转换为数字信号后再由软件来判断是否在轨迹上。之所以没有直接使用比较器得出逻辑值一是为了增加灵活性可以通过软件方便的改变判断阈值二是可以增加用途如作为地面灰度检测。同时也增加学习的内容如AD的使用、逻辑值的转换还可以用软件构成“施密特触发器”增加采样的可靠性。首先分析信号的预处理部分。因为反射式光电采样最大的干扰就是环境光的变化小车在行走时会有时顺光、有时逆光虽可以通过遮光方式来改善之但是如果能在电路上加以处理会更加可靠。所以在设计时考虑了这个需求。也许有人会问:既然已经将模拟量直接送到单片机中了为何不通过软件处理来消除SKY铅笔圆梦小车StepbyStep之五wwwmcucom第页共页呢?原因有二:其一不知道何时是顺光、何时是逆光?所以无法通过修正判断阈值来消除之其二放大器的信号范围有限有可能会饱和。所以使用模拟电路来实现此功能目前所用的电路如下:图中S为反射式光电采样器Sample端为单片机输出的控制信号LIGHT端为反射光强弱模拟信号输出。第一级运放构成同相缓冲器一方面隔离后级电路对输入信号的影响另一方面增加驱动能力使电容C能够快速跟踪输入信号达到记忆背景光强度的目的此电容可称之谓记忆电容。第二级为减法器实现对(总输入信号–背景光信号)的放大。从图中可以看出Sample端控制着两个三极管其中T()控制反射采样器的红外发射管T()控制第一级缓冲器输出给记忆电容C的充电。当Sample为低电平时T截止采样器的红外发射管熄灭此时采样器输出的为背景光信号此时T导通使记忆电容的电压等于背景光信号。第二级减法器的输入此时相等LIGHT输出为“”。SKY铅笔SKY铅笔SKY铅笔圆梦小车StepbyStep之五wwwmcucom第页共页当Sample为高电平时T导通点亮红外发射管此时采样器输出的为(背景光反射光)信号但是此时T截止将第一级输出与记忆电容隔开记忆电容上仍保持着原来背景光的信号。第二级减法器的输入则为:(反射光背景光)背景光=反射光从而达到消除背景光的目的此时LIGHT输出为放大后的反射光信号。电路的工作原理大致如此因为是以学习为目的所以忽略了一些因素如作为记忆电容充电控制的开关使用的是普通晶体管读者可自行分析一下由此带来的不足。背景光的采集时间以及信号的采集时间如何确定读者如果有条件可以使用二踪示波器检测Sample控制信号和LIGHT输出信号用Sample作为触发信号检测Sample上升沿后LIGHT输出的波形应该是一个典型的一阶飞升曲线Sample保持时间至少应使此曲线达到水平区域这个时间也就是启动Sample信号后的MCU读取延时值。此时可以发现将MCU的所有引脚引到扩展板上的好处了Sample信号为MCU的第脚选择第一路测试LIGHT为第脚直接在扩展板上就可以测量:圆梦小车StepbyStep之五wwwmcucom第页共页得到的波形为(运行我所提供的Stephex):从上面两幅图中可以看出信号采集延时为us采样的周期为ms。注意图中的通道波形可以看出在Sample信号将红外发射管点亮后需要经过一段时间才能使采到的反射信号达到稳态。圆梦小车StepbyStep之五wwwmcucom第页共页如果没有手段可大致按如下参数:背景采集时间:〉us信号采集延时:~us(此值不能太大因为时间长了记忆的背景光数值会变化)此电路要与软件配合工作否则不能输出正确的信号!!!二、轨迹信号的处理从轨迹传感器得到与反射强弱成正比的模拟信号后需要交给MCU的AD转换处理再通过程序转换为该传感器是否在轨迹上的逻辑值完成到这一步才算是轨迹传感器前面描述的硬件部分准确的说应该只是轨迹采样器!选择这款MCU的一个主要原因就是它带有路位AD转换器精度够了转换速度也不低在目前的设计中每通道转换时间约us。使用内置的AD转换器可大大简化电路对于一些要求不是十分高或者没有特殊要求的场合应该是首选方案但是如果对于精度要求很高、信号需要隔离的场合独立的AD转换还是需要的因为数字信号的隔离远比模拟信号容易。圆梦小车设计了四路轨迹采样是基于这样的考虑用中间两个控制轨迹两侧的用于检测道路的分支、直角弯、交叉口等布置如下:轨迹圆梦小车StepbyStep之五wwwmcucom第页共页此方式并非最好仅供参考。路信号输入到P–P使用AD转换的前个通道对应关系见程序中的说明。硬件和传感器的布置已交待清楚下面该讨论如何将采到的模拟量转换为逻辑值了。首先需要设立个变量保存AD的结果因为轨迹采样要求不高为提高速度减少计算复杂性使用位模式(详见STCCAD手册说明)为便于程序循环处理用数组gaucSampleVal保存之所以增加一维是为了PC读取时方便将转换后的逻辑值作为第五单元。为了兼顾路轨迹采样的差异性将判断阈值也设计为一个数组gaucThreshold每个采样器有单独的判断阈值(我所附的程序就因为第路的信号特别强故提高了判断阈值读者在使用时应注意根据自己的小车调整也可以调整放大电路使路性能接近)同时设计了一个上电初始化用的默认值DEFAULTTHRES。调试时可以利用写内存命令修改gaucThreshold当调整合适后再修改程序中的默认值DEFAULTTHRES。在所附的程序中用软件模拟了一个“施密特触发器”的功能设计了一个回差值gucThresDelta在根据AD结果判断是否在轨迹上时要根据原来的状态:如果原来在轨迹上则只有AD结果大于gaucThresholdgucThresDelta时才算脱离轨迹。而如果原来不在轨迹上则只有AD结果小于gaucThresholdgucThresDelta时才算进入轨迹。这样处理后就不会出现在轨迹边缘频繁翻转状态的情况了。注意上述讨论是基于轨迹为深色(黑色)!回差也可以使用写内存的方式改变合适后作为默认值DEFAULTTHRESDELTA。圆梦小车StepbyStep之五wwwmcucom第页共页通过上述处理将路AD结果转换为个逻辑值一个对应一位存放在gaucSampleVal的低位。走轨迹的控制根据这个逻辑值实现。详细的转换处理见程序中的lineSampproc函数。注意此函数使用了参数传入和数据返回这才是比较规范的函数编写方式尽量不在函数中直接使用全局变量!特别是修改全局变量。此函数中虽然还是使用了gaucSampleVal、gaucThreshold、gucThresDelta几个全局变量但这几个只与此函数有关如果不是为了调试AD结果gaucSampleVal都可以作为局部变量。这样编写主要是为了让初学者有个参数传递的概念。并未过于讲究等以后尝试RTOS时需要关注函数的可重入性时再作深究。三、如何走在“路”上因为本篇的主要目的是将小车的轨迹采样部分演示给读者并非刻意追求走轨迹的效果所以此处只是对轨迹采样逻辑值的一个简单应用示范为了简化只考虑、号传感器(见前面的传感器布置图)根据这两个传感器的值控制小车走在轨迹上。初步的控制逻辑是:如果、都在轨迹上(逻辑值为x),则小车直行左右电机PWM值相同如果不在轨迹上则表示小车偏左将右侧电机刹车如果不在轨迹上则表示小车偏右将左侧电机刹车此逻辑基本是套用前一篇走直线的控制只是控制变量由码盘的数值差变为了轨迹逻辑值。此控制详见程序YMProgC中的runOnline函数。但测试后发现效果不佳分析后改进为YMProgAC读者自己琢磨一下两者的差异看看问题出在哪里。圆梦小车StepbyStep之五wwwmcucom第页共页这次只是实现了一个最基本的走轨迹功能日后会研究改进之达到http:elmchanorgworksltcreporthtml中小车行走的效果也望读者中有哪位高人能尽早实现之那才算是的控制!四、PC机侧程序的相应改进为了配合走轨迹功能的调试需要增加两部分内容:轨迹采样部分的调试走轨迹控制轨迹采样部分的调试主要需求是读取相应的数据如个采样器的AD结果、转换后的逻辑值等以判断信号采集是否正确程序处理是否合理。这部分不需要增加通讯命令利用原来的读内存功能即可只是为了方便一次将所有需要的数据读回并以合适的方式显示即可所以这部分没有增加单片机侧的程序只是在PC侧增加了一些显示和专用的操作按钮。走轨迹控制与走直线类似所以在PC侧将其合并只是增加了一个运行模式选择但单片机侧需要特殊的处理所以增加了一个通讯命令:小车走轨迹命令命令字x数据域行走距离(字节)PWM基准值(字节先低后高)其中行走距离为左侧车轮的脉冲计数值按目前的几何尺寸最大值应该可以走圈约合m。为“"时连续行走。返回数据帧:帧头发送方地址自己的地址帧长命令校验和圆梦小车StepbyStep之五wwwmcucom第页共页与走直线命令完全相似但是不支持后退因为小车的控制逻辑要变化当然读者也可以尝试一下可否让小车双向走轨迹?修改后的PC界面如下:注意上部增加了一个“命令返回”状态指示主要是为了判断是否可靠的得到了小车的数据因为在读采样值时有时数据不变不能直观的判断是读回的数据没变还是小车没有返回。这个控制界面越来越丰富了而且也越来越人性化不知道使用哪种LCD屏可以如此随心所欲的添加需要的内容?又有何种方式能如此方便?我想读者也逐渐体验到PC机的好处了吧?五、结语本篇详细介绍的轨迹采样的原理以及如何使用STCLEAD单片机的AD转换功能示范了如何用软件实现“施密特触发器”并在轨迹采样结果的基础上实现了基本的走轨迹功能。圆梦小车StepbyStep之五wwwmcucom第页共页走轨迹是一个值得深入探讨的问题可以在采样方式上深入如使用线阵CCD也可以在控制逻辑上深究如PID控制这些都有待读者去尝试、去攻克。在第一轮基础问题都结束后也许我们也会去尝试提高一个层次将实现的内容从“有无”层面上升到“性能”那时希望是个群言堂而非我一人在此“忽悠”^^下一篇将给小车装上第三只“眼睛”使它可以看清前面有无障碍以免撞得“头破血流”!Hanker年月日星期二附件:、增加了轨迹采样的单片机程序、增加了轨迹采样调试的PC机程序参考资料:、STCCAD数据手册

职业精品

分销渠道选择.ppt

辞职申请书(优质范文).doc

公司年检申请书doc.doc

厂家和经销商代理合同.doc

用户评论

0/200
    暂无评论
上传我的资料

精彩专题

相关资料换一换

资料评价:

/ 10
所需积分:2 立即下载

意见
反馈

返回
顶部