为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

圆梦小车4_教小车“走路”

2012-04-25 6页 pdf 181KB 32阅读

用户头像

is_760754

暂无简介

举报
圆梦小车4_教小车“走路” 圆梦小车 StepbyStep 之四 www.embedream.com 第 1 页 共 6 页 圆梦小车 Step by Step 之四 —— 教小车“走路” 前一篇讲述了如何使小车“抬腿”,本篇该教小车“走路”了! 人学走路的第一步是“站立”,而圆梦小车有三条“腿”,这个问题就不存在了,但是要 想走好还是需要“学习”的。 我们都知道,如果将人的眼睛蒙起来,他很难走直线,因为人的两条腿不尽相同,略有 长短和粗细...
圆梦小车4_教小车“走路”
圆梦小车 StepbyStep 之四 www.embedream.com 第 1 页 共 6 页 圆梦小车 Step by Step 之四 —— 教小车“走路” 前一篇讲述了如何使小车“抬腿”,本篇该教小车“走路”了! 人学走路的第一步是“站立”,而圆梦小车有三条“腿”,这个问就不存在了,但是要 想走好还是需要“学习”的。 我们都知道,如果将人的眼睛蒙起来,他很难走直线,因为人的两条腿不尽相同,略有 长短和粗细,导致步幅不同,要靠眼睛来纠正这个偏差,这也是人们常在雪地和森林中迷路 的原因,雪地和森林无法提供给眼睛可靠的参照系。 小车的两条“腿”也有同样的问题,即使是优质直流电机(步进电机可以)也难以做到 驱动特性相同,更何况我们所用的是最便宜的玩具电机! 那圆梦小车的“眼睛”是什么呢? 一、 小车的“眼睛” 能起此作用的“眼睛”最常见的是陀螺仪、电子罗盘,还有图像识别,可这些设备一是 较贵,二是对于初学者而言较难使用,且如果目的是学习而非竞赛的话,就有些不值了。 为了能起到“眼睛”的这个功能,小车了一个简易的码盘,用它来监测“腿”的行 走,在一定程度上也能满足要求,当然,要受到诸多因素制约,如地面不平整、车轮直径差 异。车轮的不统一还可加以弥补,因为不可能在短时间内把轮子磨小了。地面不平就有些麻 烦了,所以这里所讨论的只是针对在较平整的地面上走直线。 本篇就是探讨这个“眼睛”如何帮助小车走好直线,至于那些高档的“眼睛”,也许在 后面文章中会有所涉及。 圆梦小车 StepbyStep 之四 www.embedream.com 第 2 页 共 6 页 首先一下这个“眼睛”的组成。 它是由轮毂上的 50 齿码盘、遮断式光电采样器、采样电路组成,采样电路将光电信号 转换为脉冲后输入到MCU,MCU通过中断方式获取。 码盘、光电采样器的作用较直观,这里不作讨论,只分析一下采样电路: 上图为一路采样电路,其作用是构成一个“施密特触发器”,用较大的回差消除慢速变 化的光电信号在过门槛电压时产生的误信号(此部分原理请参阅运放教材中的“滞回比较器” 部分)。 从图中可以看出: 信号从低到高的比较电平为: ((R5//R7)/(R6 + R5//R7) ) * 5V 信号从高到低的比较电平为: ((R5/(R5 + R6//R7)) * 5V (R5//R7 表示两个电阻并联) 读者可以分析一下是否如此,并计算出实际的比较电平。 为何需要这个采样电路?原因如下: 第一、这样可以改善输入到MCU的信号沿,使中断可靠。 第二,车轮在停止时,光电采样器有可能处于齿的边沿,使得光电信号正好处于门槛电 平上,如果没有上述回差处理,将会不断地发出错误信号,使得程序控制失效。 圆梦小车 StepbyStep 之四 www.embedream.com 第 3 页 共 6 页 至此,码盘采样的物理信号处理已完成,下面讨论其逻辑部分。 将上述脉冲信号引入 MCU 的外部中断口是最常见的选择,可是 51 单片机的外部中断 只能监测一个方向的跳变,也就是脉冲的下降沿。但为了提高码盘的分辨率,此处希望能够 实现上升、下降沿都能采到,从而使码盘的分辨率提升为 100 脉冲/圈。 正好 STC12LE5412AD的 PCA模块支持脉冲的正、负沿捕获功能: 利用这个功能,即可实现脉冲输入上升、下降沿均产生中断,所以将 PCA的通道 0、1 用于码盘采样,将它们设置为正、负沿捕获模式,允许中断,忽略其捕获的时间值,只需要 其产生的中断信号。 根据对中断信号的计数即可知道车轮的转动情况,即掌握了小车的“步幅”,从而可以 据此控制小车走直线。 圆梦小车 StepbyStep 之四 www.embedream.com 第 4 页 共 6 页 二、 如何实现走“直线” 控制的基本逻辑是根据小车左、右轮码盘计数的差值来调整相应电机的 PWM值,以达 到使两个码盘的计数值相同的目的。 最初级的方式是:启动时将左、右码盘计数值清“0”,两个电机提供同样的 PWM控制 值(PWM基值),当出现两者计数不同时,将快的那一侧电机置为惰行。恢复相同后,再置 挥 PWM基值。 这种模式形象的描述就像人的两条腿走路,左、右不断交替前进,只是转换速度很快, 步幅很小,所以看上去像是连续直行。 按这个逻辑设计的小车程序见附件。 为了避免调试时小车掉下桌子或撞墙,增加了行走距离控制,即设定行走脉冲定值,因 为现在做的是直线行走,所以只需控制一个轮子 —— 选择左轮,当左轮码盘计数达到定值 时使小车停止。 三、PC机侧程序的相应改进 为配合直线行走调试,PC机的程序增加了直线行走控制,扩充了一个命令: 小车直线行走命令 命令字 —— 0x04 数据域 —— 行走距离(2字节)PWM 基准值(2字节,先低后高) 其中行走距离为左侧车轮的脉冲计数值,按目前的几何尺寸,最大值 65535 应该可以 走 655 圈,约合 86 m。为“0" 时连续行走。 返回数据帧: 帧头 发送方地址 自己的地址 帧长 命令 校验和 圆梦小车 StepbyStep 之四 www.embedream.com 第 5 页 共 6 页 同时,为了便于检测小车中程序运行的状况,将读内存的部分作了改进。 首先,将数据地址改为 HEX(16 进制)输入,因为在 M51 文件中所得到的变量地址 均为 16 进制值,要通过手工转换为 10 进制,太麻烦。(注意:读不同区域的地址参见第二 篇的定义,地址最多输入 4 位) 其次,增加了读数据的类型选择,开始做 PC机读内存程序时为了简化,只做了读一字 节的功能,但是正常使用时,要读一个整形就极其不便了,为此,添加了数据类型选择,在 读时可根据数据类型确定读 1、2 或 4 个字节,显示时也根据数据类型确定是否显示符号。 这样我想读者可以体会一下,是否方便?(小车程序中的码盘计数器就是无符号整形,调试 时需要检查此变量,所以才做此修改。读者可以利用这个功能检查码盘是否可靠采样,通过 手工转动车轮,读取对应的码盘计数变量,看是否符合你所期望的?) 修改后的 PC机界面如下: 随着你的需求增加,会不断促使你学习VC的功能,逐步使你掌握VC编程,无疑会对 你的工作、学习带来极大的好处,PC机也将物尽其用。 圆梦小车 StepbyStep 之四 www.embedream.com 第 6 页 共 6 页 四、结语 本篇的主要目的是介绍如何使用码盘采样信号,以控制小车走直线为载体,所以只采用 了最简单的控制逻辑,有诸多不完善之处。 如何改进控制性能留待日后作为算法部分的讨论主题,用这种简单的控制是无法满足复 杂要求的,如让小车走半径一定的圆弧。读者如有兴趣,可自己先尝试一下,可能需要速度 测量及 PID 速度控制了。 下一篇将讨论小车的另一只“眼睛”—— 轨迹采样传感器,看它如何帮助小车“走好”。 附件: 1、增加了电机控制的单片机程序 2、增加了电机控制的 PC机程序 3、小车走直线视频片断 参考资料: 1、《电动机的单片机控制》ISBN 7 – 81077 – 175 – 2 2、STC12C5410AD数据手册
/
本文档为【圆梦小车4_教小车“走路”】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索