找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11065|回复: 14
打印 上一主题 下一主题
收起左侧

我的机器小车诞生了!

  [复制链接]
跳转到指定楼层
楼主
ID:262 发表于 2014-10-21 15:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
经过几月几周地看资料,收集小时候的玩具,发现多数已不能玩了,但大多数电子零件仍能使用,于是,动手DIY,几乎花了2个星期(周一周五只有中午和晚上不到2小时时间)做成。
2011年4月2日21点,所有零件收集完毕,开始组装底盘和电机驱动。
电机驱动我使用L298N。红黄两条大线为主动力电源线。红黑黄绿为信号输入线,红白为L298N芯片供电线,黑白为使能信号线,即PWM调速和紧急制动线。电机是减速电机吧,功率忘记了,几年前的玩具(挖土机)。
2011年4月2日22时,底盘完成组装,所有线全部集合上布。
2011年4月3日阳光明媚的早上10时(这天气来得真合适!),我的智能小车组装完成,程序代码也编写完成。我把这台车命名为 YYQ霹雳一号,简称:一号。
她拖着长长的数据线和电源线,身上背着电池,一身乱七八糟,毫不打扮,匆匆忙忙地来到了人世间。
Hello World!
你好,世界!
所属相册:YYQ的智能车
刚出生,与它的“母亲” 电脑的连接还没中断呢!而且,身上还必须背着芯片电池。
或许你可能要问了,既然拖着电源线,又连着电脑,怎么还要背电池?
是这样的,她现在确实是完全不能独立开来,电机动力需要DC14V电源供应,电机驱动需要DC5V电源,大脑“MCU”单片机也需要DC5V电源供应。我恼了几天,仍找不到现成合适的电源一次性全部供给。所以,暂时分开供电。
供电情况:
1.“小霸王”游戏学习机(插黄色的卡带、接电视玩游戏,超级玛丽,魂斗罗等)两台,其中一台内部主板损坏,我便取其电源。由此电机动力得到DC15V电源供应。
2.已经损坏的AA/AAA电池充电器,拆开,取其电池盒。
用电烙铁高温烧下一台插卡的街机游戏机的电池盒。 将这两个电池盒串联起来,可以放4个AAA电池(1.2V*4=4.8V)得到DC4.8V电源,我将它输入到L298N芯片上。
3.单片机电源仍由电脑USB口的DC5V供应。
活动活动身体,走了一段路后,开始觉得不顺了。
原来是有履带的轮子,但是,因为那履带不能用了套不上去。这样子没有履带走起来很费劲。
2011年4月3日22时,我完成了对它的轮子的改造以及对乱七八糟的衣服进行打扮,还有对电源的供应,不再依赖电脑,已经断开了与电脑的连接,但仍由外部“MP3充电适配器”提供DC5V电源。
不过现在走起来好多了,也显得更有精神了。
这是车头,呵呵,拍摄时,红外收发模块还在工作呢,你看到传说中的“红外线”了吗?
这是车尾。
这本来是反的,但是由于L298N芯片的GND需要与单片机共地,还有2条使能线要与单片机针脚连接但线都不够长, 信号线不适合焊接。所以,只好把单片机开发板转个方向了。以红外收发头为车头。(后面要用它来避障)
原来的电池组,我把盒子多余的部分烧掉,显得更为简约,放在车子中层。 这是单片机电源和动力电源的供应。
2011年4月5日21时,由于底盘的电机多年老化以及齿轮磨损的关系,产生的动力不足,也不方便以后的扩展。放弃使用玩具挖土机底盘。正在想新的底盘设计。
2011年4月8日22时,决定使用RP5底盘作为一号的底盘。外加一块万用版(面包板)为以后的电子元件的安放预留位置。电池与L298N芯片一起在底盘下面,中间隔万用版,再上层单片机开发板。留有足够的距离来避免电机受280大功率电机的磁场干扰单片机跑飞。
底盘情况:两个280直流电机,附带一个6节AA电池盒。电机最大承受电压12VDC,推荐9VDC。
2011年4月9日0时,将各个部件连接起来,有一条线特别难焊,不是走位就是不上锡,烫死、郁闷死我了。
不过还好,效果极其不错,非常不错。动力非常充足,开起来非常精神,转弯通过左右两边的履带反转,效果非常不错。捉地力强,不容易打滑。
现在的供电线更为简洁了。电机用底盘下面的电池盒供电,6节AA电池,正好9V。再加上附带旧的两个电池盒供电L298N,剩下单片机的,由电脑供电,也方便下载程序进去。
忽然发现,数字电视机顶盒的遥控器里的方向键手感不错,所以,修改下程序,就可以直接使用机顶盒遥控器控制车的前后左右转弯所有功能了。
(╭(╯^╰)╮哼!别以为说一句好话,换一身马甲,我就不认识你了。照样是“一号”!)
车身体积:长17CM,宽13CM,高16CM
睡觉了,大家晚安!
2011年4月9日20时,对小车的所有元件供电均使用电池。现在除了烧录程序外,完全不需要外部连线。
单片机:x3 AA
L298N芯片:x4 AAA
280电机:x6 AA
在四个方向放置4个红外收发,实现检测障碍物以及自动避障,目前有关避障方面程序尚未编写。
2011年4月10日17时,自动避障程序基本编写完成。 在四个方向无阻碍的情况下,由人工控制遥控器控制车的行走。如果命令它前进,它就前进。但是,在前进过程中,如果前方有墙壁,它会立即自动停下脚步。然后向相反方向后退1秒钟的时间。(我没有安装齿轮测速,所以只能延迟。)然后停止。如果过程中遥控器命令停止,它也停止。
但是,红外避障也存在一个弊端。在光线过足的情况下(例如太阳光下),距离会变得很短,或太过早地误判断。超声波是比较可以的,但成本比较高。目前先不考虑这个,完成整体工程再说。
2011年4月16日22时,程序编写部分实现对两个电机(左右)的PWM调速。目前可以用红外遥控器控制车子移动速度。
还有一周考试了,但不知为什么,越接近考试,搞这东西效率就越高。
不管了,复习下,估计下2周内进展缓慢。
2011年4月21日13时,实现通过串口与计算机通讯。通过USB模拟串口线。
整理优化所有代码,更美观、模块化,可读性增强,多余的代码删除,单片机运行效率提高不少,方便以后修改。
程序数据占用77.3字节,程序代码占用1841字节,代码量1013行,注释175行。
2011年5月1日0时,纯手工完成它的“手”部的基本部分。
等我在废旧里找到一枚合适的螺丝和螺母后,安装支点,然后再固定到车上就行了。因为是木的,上螺丝要很小心。
2011年5月1日 17时,完成“机器手”搭建。线也已连接好。程序尚未完成。
2011年5月7日22时,控制板完全脱离开发板,手工焊接了单片机最小系统,也脱离了不间断供电的电源,改用三合一的锂电池供电,可以分别输出5V、9V和12V电压,而且容量足够大,最大15000毫安时。最小6500毫安时。
2011年5月8日23时,小车做好啦!除机器手外,小车已成型。
大概在10号或11号,带去学校接受张老师的检阅。
目前的功能有:自动避障、红外遥控。
红外遥控可以控制两边履带的速度,可以实现圆圈运动、直线运动和平滑转弯,也可以紧急转弯和刹住。
2011年5月9日23时,对小车的自动避障算法进行优化和改进,可以自动避开九十度的死角区域,并且无论角的两边有多长,可自动调节转弯角度直到合适为止。目前可以适应多种常见的障碍物摆放情况了。
但在识别死角区域后,我还是用到了传统的“左手法则”,一步步脱离死角,可能会在以后的图像采集功能中改进。
2011年5月11日下午小车第一次进入钦州市外国语学校大门,得到很多同学赞同和表扬,但是我发现了避障算法中的90°死角避障出现BUG,“左手法则”使用出问题,当小车靠近直角的左边进入直角区域后,会卡死在直角处。从右边或45°斜入无问题。
2011年5月12日上午给给物理老师张老师看看,目前尚无法解决,正在与各位电脑老师和物理老师讨论中。
2011年5月15日13时,小车已经改头换面,好看多了,线也排好了。这种改造是可扩展性的,以后的机器手,可以直接装上去。
加了块有机玻璃,多谢那位老师傅(忘记问贵姓了)的加工,总共跑去那3次了,不嫌烦地帮忙改造玻璃。人很好啊!
2011年5月25日小车全部完工。电路板由于是用万用电路板的原因,连线还是有点多。
整个工程告一大段落了。
2011年5月29日15时,增加LCD1602,显示小车的所有状态,连线减短。
2011年6月5日13时,机器手搭建部分完成了!6个自由度。程序代码尚未编写,目前可以由电脑通过串口通讯控制。暂无法自行控制。
第一次调试时,居然被它打了一下,比较有力的。
谢谢上次那个师傅了,加工有机玻璃。这次知道名字了,黄师傅。
休息状态,回收手臂。
张望什么呢?。。。嗯?
2011年6月7日18时,发现底盘触地地有效面积太小,6自由度机器臂工作时不稳定,重心不妥,时有翻车危险。决定减掉一个自由度。
现在是5自由度机器臂。将来有条件弄个大大的底盘,有半米长,机身1.2米高,两个6自由度机器臂,相信会很有意思。
2011年6月7日19时,发现小车转向不正常,不是不动,就是走直线。
晚22时,我明白了底盘太小的因素决定这个转向的效果,但是底盘已经无法改变。怎么办呢?
我的脚不小心碰了一下机器手,最底座的舵机位置偏离,大约到了底盘右上角45°,这时转弯,非常灵活。
我就在这刻,突然明白了一个新的方法!可以通过移动机器手臂的重心,来弥补底盘太小的不足,进而可以实现转弯。
2011年6月8日23时,机器手臂程序试验性编写成功,单片机和控制器已经很好地连接并正常工作。以后就可以正常编写机器臂程序了。
这一步,本来是顺顺利利的,结果出了一个不可意料的错误,到现在也没找到原因。麻烦了几位老师,甚至是控制板技术员,也无解。
问题是:用开发板用控制板的波特率和数据的位停止位等属性给电脑发送串口数据,电脑能正常接收,开发板也能收到电脑发来的信息。
用这同一根串口线,把电脑和控制板连起来,波特率和其他属性一样,电脑能控制控制板,可以操控机器手。
最后一步来了,单片机用这同一根串口线,波特率和其他属性一样,却不能控制控制板,不能操控机器手。
老师说是共地,我也按照他们说的详细检查并正确共地,也不行。由上面排除程序没有问题,串口线没有问题。
单片机也是用MAX232芯片,控制板也是。大家的针脚经过串口线,我用万能表测,也是对应相通的。
晚上晚自修回来,根据白天询问的信息,所有可能性都再试一下。突然,又是一个偶然的时候,我把RXD和TXD反接,接到控制板TTL电平口,共地,然后让单片机循环发送数据,居然机器手臂动了!!!这一刻我既被吓死又被手臂突然打了一下,最后激动死了!
由这个结果,我猜想,是不是把串口线的2、3口交叉,也就是用一条交叉串口线,就可以用单片机的串口连接到控制板的串口呢?但现在没法试验,况且现在用的杜邦线比串口线方便得多,简便,也可以正常控制。
献上试验性程序录像,影片最后,机器手臂做挥手的手势(速度在程序上调慢了,不是舵机性能问题。),( ^_^ )/~~拜拜,我也拜拜,去睡觉了。
2011年6月11日22时机器手程序代码编写完成,现在可以通过红外遥控器控制它了。
这是目前程序代码情况:
创建目标 'Target 1' 编译 Motor.c ... 编译 delay.c ... 编译 main.c ... 编译 IR.c ... IR.c(338): 警告 C323: newline expected, extra characters found
//这行代码我用了#undef语句来撤销#define定义的一个宏,调试时用的。所以提示这是一个不安全的代码。 编译 1602.c ... 编译 UART.c ... 编译 hand.c ... 连接 ... Program Size: data=82.6 xdata=0 code=2987 创建 HEX 文件 ".\obj\YYQcar" ... ".\obj\YYQcar" - 0 个错误, 1 个警告。
代码量也差不多3K了......
2周后又要考试了,呼呼(~ o ~)~zZ,似乎做了半个学期了呢。
现在这个阶段,机器小车已经完成了。
暑假可能会考虑增加摄像头,进行图像识别。这意味着不再使用51单片机了,进入到下一个单片机学习,用DSP来处理图像或者用ARM做嵌入式操作系统。
2011年7月2日拍摄了抓取实物的录像,暂无摄像头自行定位
2011年7月17日,小车可以播放音乐了。只能播放音乐的旋律。我让它可以播放《星之所在》的旋律。
2011年7月23日18:13:21
音乐功能完善。可以选曲,我写有《星之所在》、《世上只有妈妈好》、《兰花草》、《小星星》四首歌曲在程序里。
但有一个缺陷:由于播放音乐的需要,加上只有一个单片机,单片机内部资源紧缺。没有条件在播放音乐的同时处理红外遥控信号,因此只有在播放音乐完成之后方可进行红外遥控,在播放音乐期间,遥控器任意键无效,若停止播放音乐,需复位单片机。
7月17日那时是直接由单片机I/O口驱动,因能量守恒定律,电流很小,导致喇叭声音过小。因此,这次加入了ULN2003芯片,有更大的电流驱动0.25W喇叭。
找不到合适的可调电阻来调节电流大小,因此暂不能调节音量,不过我相信还比较大声的了。
下面是最新外形图。机器手暂时没有装上,程序代码没有删除机器手部分。
车子的功能:移动、机器手、播放音乐,三大功能是由一个菜单连接起来的,四个支柱可以很方便装卸机器手。
在写播放音乐代码时,想到一个移动方面的思路:设立一个“世界规则”的处理器。可能这个名字难理解,具体是这样的:这个世界规则处理器是主动启动的(从程序员最终完成机器人调试后,发布命令启动,然后自动销毁该命令,相同、类似的调试命令均无效),即使没有电源供给,也会由备用电池运行着。且当主电源供给时,由专门一个定时器频繁检查它是否在运行(间隔不到1秒),它循环检查车子的各种状态是否遵循着现实世界中的规则。
例如如果前面有墙,操控者命令车子向墙行进。计算车子以目前的速度是否可能会撞上墙,如果还有2秒就撞上了,那么违反世界规则,“世界规则”就立即下令停止前进,直到转弯,否则遥控键 前进 永远失效。这是保护车子(机器人)本身的规则。
;又例如:(以后有摄像头的时候),有人在操控车子(机器人),旁边有一个观看者,操控者用机器手抓起一把小刀,然后,命令机器手小刀朝观看者方向移动,由于世界规则是频繁的,当摄像头识别机器手中的是危险物品,又识别前方是人,而且操控下达的命令是“攻击人”,那么违反世界规则中的规则,车子(机器人)会立即无视遥控的命令,违反操控者的要求,停下当前的动作。这是保护他人的规则。
这种思路,我会应用在以后的机器人开发中。
并且,这种思路的最终目标是:“世界规则”是可以自我更新的或者不需要PC电脑进行编程,像父母教育小孩那样,通过语言来人为设定规则。当规则生成成功时,该规则永远生效,不可删除,机器人在运行过程中会永远遵循该规则。
这已经涉及到了人工智能领域,在我看来这的确是保护人类本身和机器人本身的重要设计思路。
当然,我会遵循那“机器人三大定律”来设定基本规则,等到正式运行时,这些基本规则限制着新生成的规则。形成基本规则和新规则之间相互制约的关系。
如:基本规则中有一条:不可供给人类。但在成品后运行中,有人给他建立一条新规则:拿起刀后必须朝人类前进,直至撞上人类。那么这条新规则违反基本规则,生成失败。
正在播放音乐。 本作品源代码:http://115.com/file/eilus2x1

评分

参与人数 1黑币 +5 收起 理由
魔术快斗 + 5 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:70191 发表于 2014-12-9 16:48 | 只看该作者
回复

使用道具 举报

板凳
ID:72053 发表于 2015-1-12 13:14 | 只看该作者
研究研究
回复

使用道具 举报

地板
ID:72143 发表于 2015-1-13 14:29 来自手机 | 只看该作者
diy的精神让人钦佩!!
回复

使用道具 举报

5#
ID:56903 发表于 2015-1-22 10:45 | 只看该作者

diy的精神让人钦佩!!
回复

使用道具 举报

6#
ID:73964 发表于 2015-3-1 22:28 | 只看该作者
看样子不错呀
回复

使用道具 举报

7#
ID:44267 发表于 2015-11-16 11:26 | 只看该作者
diy的精神让人钦佩
回复

使用道具 举报

8#
ID:107105 发表于 2016-3-4 06:00 来自手机 | 只看该作者
厉害,这种主动思考的能力非常重要!
回复

使用道具 举报

9#
ID:136368 发表于 2016-8-9 16:15 | 只看该作者
好棒额
回复

使用道具 举报

10#
ID:134810 发表于 2016-11-23 17:25 来自手机 | 只看该作者
这个板子是德飞莱的,我有一个
回复

使用道具 举报

11#
ID:134810 发表于 2016-11-23 17:33 来自手机 | 只看该作者
很凶啊!
回复

使用道具 举报

12#
ID:152839 发表于 2017-1-14 16:30 | 只看该作者
楼主的恒心杠杠的
回复

使用道具 举报

13#
ID:228999 发表于 2017-8-24 17:25 | 只看该作者
一口气看完~~~楼主真是太有才了!!!
回复

使用道具 举报

14#
ID:33383 发表于 2017-9-4 12:40 | 只看该作者
如果你还在用学习板,就别说你做成了什么东西!
回复

使用道具 举报

15#
ID:250717 发表于 2019-4-12 09:31 | 只看该作者
diy的精神令人钦佩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表