极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 90230|回复: 58

进来欣赏下我们组装的小坦克吧,更新到解密10,结构与组装

[复制链接]
发表于 2012-12-31 15:16:13 | 显示全部楼层 |阅读模式
本帖最后由 @ZiShi 于 2013-1-22 13:29 编辑

已经更新到解密10结构与组装,详见37楼,多谢朋友们关注......

这个是坦克的组装视频


这里还有一些图片






为方便阅读,把解密过程,移动到这里{:soso_e100:}


遥控坦克DIY过程解密(01)
>>>>>>>>>>2013-01-04<<<<<<<<<<
【前言】
       贴子发布了几天发现有很多网友对“@ZiShi”这个遥控坦克的DIY过程比较感兴趣,不时有朋友通过QQ加好友询问这个坦克的DIY过程和控制原理,为了大家进一步了解这个项目,“@ZiShi”将本着开放、分享的原则对这个坦克的DIY过程进行“解密”,说是“解密”可能更多针对一些DIY“新手”而言的,对于一个DIY“高手”来说这些可能并不算什么,但是仍然希望DIY“高手”们来分享这个过程并提出您的改进意见。
【面向玩家】
       这个坦克的DIY过程主要面向广大的小车、模型、电子、机械DIY爱好者,重点在于分享DIY过程以及DIY心得,与更多朋友分享DIY的乐趣。
       如果您是一个DIY“新手”通过“@ZiShi”的这些文字您可以了解到DIY过程中使用到的一些工具、设备、相关基础知识以及这个坦克的组装过程。如果您是一个DIY“熟手”,您可能曾经做过类似的事情,同时更希望了解“@ZiShi”这个坦克的DIY过程以及内部原理,“@ZiShi”在这里都会呈现给大家。如果您是一个DIY“老手”的话,那么“@ZiShi”的这篇文字在您面前就显得班门弄斧了,我们更希望您能为我们的进步提出更多宝贵意见,在这先说一声谢谢。
【几点说明】
       在此要说明几点:
       由于精力和时间的限制再加上内容较多,这篇文字会不断更新直到完成,请大家持续关注;
        “解密”过程将会沿着电路、软件、机械、组装的过程展开;
       由于篇幅所限文字将侧重原理进行讲解;
       文字中会涉及到一些专业知识如机械、电子以及软件,如果我们哪里做的不合理或不正确请您明确指出;
       对于一个DIY的作品很多地方是不能使用产品级的眼光去看待的,这样会给DIY过程带来很大困难,当然我们力争做到专业;

       上面说了很多题外话,下面进入正题。

【解密-电路】
       待续……

遥控坦克DIY过程解密(02)
>>>>>>>>>>2013-01-05<<<<<<<<<<
       继续解密……
       首先我们进行一个简单设计,规划一下我们的遥控坦克要具备哪些功能。我们希望DIY后的遥控坦克可以实现下面一些功能:
       1、前进;
       2、后退;
       3、左转;
       4、右转;
       5、炮塔顺时针旋转;
       6、炮塔逆时针旋转;
       7、通过遥控方式实现功能1-6;
       我们知道坦克的移动以及炮塔的旋转可以通过电机实现,对于遥控功能的话我们这里选用的是NRF24L01这个无线收发模块,所以对上面7点进一步概括的话我们只要实现电机的控制以及无线接收与发送就可以了。
       下面是遥控坦克的功能图。

       图中的“M”表示坦克上的3个电机,分别是2个轮子和1个炮塔,绿色的框代表NRF24L01这个无线收发模块(需要2只),实际上剩下的工作大家都很容易想到,只要接收模块接收到遥控发来的命令然后对命令进行识别,最后控制电机旋转。
       做过电机控制的朋友都知道只要通过一个叫“H桥”的电路就可以轻松控制电机转动,那么实现“H桥”的方法有很多,大家可以使用独立元器件去搭建电路当然也可以选择现成的控制芯片,我们选择第二种方法,选择使用芯片有几个好处,第一它能够大大节省我们的DIY时间,第二降低了实现的难度,同时芯片的集成度也比较高让电路看起来比较美观。这里我们不去讨论如何选择“H桥”芯片,我们只简单的介绍我们使用的这款芯片“L9110”,因为他价格不贵而且使用方便,下图是L9110使用手册上的截图。

       我们发现这个芯片上有8个引脚,我们只要关注其中的4个就够了分别是IA、IB、OA和OB那么这四个引脚的关系是什么呢,继续看芯片的使用手册(本来是件挺轻松的事情结果动不动就要把手册请出来,真是头大),通过浏览芯片的使用手册我们会发现这样一张图,如下:

       这张引脚波形图已经清楚的告诉我们,IA和OA的关系以及IB和OB的关系,用一句话概括就是输入是高那么输出也是高,输入是低输出也是低,怎么样简单吧。
       知道了引脚的时序关系后就可以要把他它连接到电路中了,芯片的使用手册上已经给出了应用电路,我们照做就好了,看下图:

       这个电路看起来还是蛮简单的,芯片左边连接电机右边连接单片机的IO。
       待续……

遥控坦克DIY过程解密(03)
>>>>>>>>>>2013-01-07<<<<<<<<<<
       继续解密……
       上一回我们已经大致了解了“H桥”芯片L9110的使用方法了,这一回我们将解释如何使用这个芯片来控制小马达的旋转,参考上一回芯片手册上给出的应用电路,我们可以清楚的知道只要将芯片的OA和OB引脚与马达的两个引脚相连就完成了马达与芯片的连接,如图3-1所示:

       马达与芯片连接好以后,坦克控制系统的主角就要登场了,她就是微控制器(MCU),在我们的坦克系统中马达的启动、停止、旋转方向以及旋转速度都是由微控制器进行精确控制的,可见她的地位是非常重要的。
       说道微控制器我们也叫他单片机,常见的单片机有很多51、AVR、Arduino、ARM等等,我们这个坦克所使用的单片机是51兼容的单片机,具体型号是STC89C52,这款单片机的程序空间以及她的数据空间完全能够满足我们DIY遥控坦克的需要,而且使用起来也比较方便,图3-2是一个STC89C52单片机:

       单片机的IO引脚是其与外界通信的重要手段,我们正是利用单片机的IO与L9110进行通信的,下面看我们是怎样将两者进行连接的,如图3-3所示:

       将单片机的P10和P11分别和L9110的IB和IA相连,这里需要提醒那些想使用这个电路DIY的朋友,需要注意图中那两个虚框专业上称为上拉电阻的家伙,有的时候单片机引脚的驱动能力有限需要使用这种方法提高她的驱动能力,这个要视情况而定,并不是所有情况下都需要这个电阻的,可能有人会问到如果需要的话选什么阻值呢,根据我们的经验选择10K欧姆电阻式可以正常工作的。
       有了上面这个电路我们就可以完成一组电机的控制了,这里我们需要三个电机那么如法炮制,只要再次分配4个IO口连接另外2块L9110就可以了,如图3-4所示:

       另外这里还涉及到单片机的工作问题,比如电源怎么接、地线怎么接、还有复位电路等等,这里都没有描述,由于这些内容讲起来比较占用篇幅,如果有想使用这个电路进行DIY但又不太熟悉单片机的朋友可以联系“@ZiShi”,我们可以提供更细致的资料。
       电机控制原理基本介绍完了,看起来并不复杂,后面该介绍数据接收部分的电路了。
       今天就到这里,下回继续……

遥控坦克DIY过程解密(04)
>>>>>>>>>>2013-01-09<<<<<<<<<<
       上一回我们分享了电机控制的原理,这一回我们继续看下遥控是如何实现的。
       对于一个坦克或小车来讲我们总不希望他拖个长长的尾巴跑来跑去(线控)这样会大大的限制住坦克的活动范围,如果是飞机或舰船的话使用线控就显得更不合适了,那么使用什么方法来对坦克进行远程的控制呢,同样有很多方案供DIY爱好者选择,简单来说有下面几种:
       1、常见的航模遥控器,如图4-1,加上接收器一套下来估计最便宜的那种都要一两百元,不太适合资金有限的DIY朋友;
       2、还有一种遥控外观如图4-2,这种遥控器主要用来控制电灯的开关,以及经常出入停车场的朋友常常会看到门卫手里拿的这个东西遥控进出口栏杆的起降,这个种模块使用非常简单,但是有一点不足这个模块可以表达的信息有限,对于简单的开关完全可以,但要是功能多起来,这个遥控就应付不了了,尤其要实现比例遥控的话这个模块就无能为力了;
       3、第三个就是我们这里要讨论的NRF24L01这个模块了如图4-3,首先他价格便宜其次它是一个数据传输模块可以传输多种控制命令,但它也有缺点那就是他的接口比较复杂需要特定的时序才能完成对它的控制;
   
       经过综合的考虑我们选择了NRF24L01这个模块,决定使用单片机对它进行控制。
       下面就是硬件的连接问题了,说到这里我们又要去翻看芯片的使用手册,还好我们有图4-3这样的模块,模块中已经帮我们做好了芯片的周边电路,我们并不需要做这些工作过了,我们只要了解这个模块各个针脚的定义就好了,看图4-4。

       这个模块有8个针脚,分别代表VCC、GND、CE、CSN、SCK、MOSI、MISO、IRQ,我们看看如何把这个模块和51单片机相连,如图4-5。

       我们将无线模块的各个引脚与单片机的P2口相连,同时将它的中断引脚连接到单片机的INT0引脚,这部分硬件电路的搭建基本就结束了,需要注意的是图中那个上拉电阻,到了这里坦克一端的硬件电路基本已经形成了,看下完整的电路,图4-6。

       后面我们再简要介绍一下,遥控手柄一端的电路,今天先到这里。
       待续……

遥控坦克DIY过程解密(05)
>>>>>>>>>>2013-01-11<<<<<<<<<<
       上一回我们介绍完了坦克一端的硬件部分,这回继续介绍一下手柄一端的硬件,比较之前的电路手柄这边的电路要简单一些了,还是老习惯我们先分析一下手柄的功能,如图5-1。

       手柄的主要任务就是处理玩家的一些动作,然后将玩家的动作以命令形式发送给坦克。那么玩家都有哪些动作呢?总结下来就一个动作“按键”,当手柄发现用户按下按键后,判断用户按下的是哪个按键最后将这个按键对应的操作以命令形式发送给坦克。
       根据前面对坦克功能的定义我们要实现的动作有前进、后退、左转、右转、炮塔顺时针转、炮塔逆时针转这几个动作,那么我们就来设计一个带有6个按键的手柄,其大致外观如图5-2。

       功能基本确定了我们来看下手柄一端的电路如何设计,涉及到数据传输模块的设计其实与坦克一端是一样的,可以直接参考《遥控坦克DIY过程解密(04)》来完成相关电路的设计,我们仅仅讨论按键电路的设计,如图5-3所示。

       其中阴影部分电路就是遥控手柄的按键电路,同时已经给出了数据传输模块的电路。我们一共定义了6个按键使用单片机的P0口去读取按键的状态,如果读入的数据是‘0’说明按键是抬起状态,如果读入的数据是‘0’说明按键被按下。怎么样其实实现一个手柄也并不复杂,对于我们DIY来说这个电路已经完全够用了。我们可以选择图5-4这种小按键来制作我们的手柄。

       把这种按键焊接在万能版上效果如图5-5所示。

       DIY这个遥控坦克所涉及到的硬件部分基本介绍完毕了,后面的工作就是根据原理图(在万能版或面包板上)把电路搭建好,搭建好电路后就可以进入软件设计阶段了。
       今天先进行到这里,待续……

遥控坦克DIY过程解密(06)
>>>>>>>>>>2013-01-13<<<<<<<<<<
【解密-软件】
       我们说硬件是载体软件是灵魂,前面已经介绍了遥控坦克的硬件部分接下来我们该去实现它的软件部分了,说简单就是写程序控制我们的坦克完成预计功能。看过前面文字的朋友知道我们的硬件系统分为两部分,它们是坦克系统和手柄系统,我们要分别为这两个系统编写程序。首先我们先设计一下坦克一端的软件架构,如图6-1。

       从图中我们能看出坦克一端在不断的接收命令,如果有命令发来就解析命令然后执行命令,如果没有命令那么继续下一次接收命令,总之坦克一旦上电就在不停的接收命令直到关闭电源。这里给出部分源程序作为参考,考虑到有些朋友不太熟悉程序设计为不影响大家对原理的理解,在代码中使用了很多注释和伪代码甚至插入很多中文信息,如图6-2。

       从图中我们可以清晰的看出程序的执行过程,系统在无止境的循环接收命令、解析命令、执行命令。其中红色方框部分是这段程序的主体,我们会发现它的核心就是控制电机的旋转,那么如何通过程序来控制电机的旋转呢,这就要回忆一下前面介绍的硬件电路了(《遥控坦克DIY过程解密(02)》),如图6-3。

       根据L9110的工作时序图以及我们的硬件原理图,我们可以清楚的看出要想让电机旋转我们只要让单片机的两个IO引脚P10、P11输出反相就可以了,如果转化成代码如图6-4所示。

       上图中红色方框中表示的是对一个马达的控制,对另外2个马达的控制方法也是一样的,进行到这里我们已经可以通过程序来控制电机的旋转了,只要正确的协调3个马达的旋转方向,我们就可以让我们的坦克完成前进、后退、左转、右转、炮塔顺时针旋转以及炮塔逆时针旋转这几个功能。
       那么系统是如何知道已经接收到数据的呢?只要有2种方法,一种方法是对NRF24L01的状态不断进行查询,另一种方法是当NRF24L01接收到数据以后主动通知MCU,根据我们的硬件原理图同时为了提高系统执行效率,我们采用第二种方法,代码如图6-5、6-6。
  
       当接收到数据传输模块触发的中断后,我们去读取传输模块的状态,如果接收到数据我们就设置一个标志,图6-2的程序会不断查询这个标志,一旦发现有数据发送来,就可以对数据进行解析了。
       当然这里面我们省略了初始化硬件、定时器以及传输模块的详细步骤,如果大家在DIY过程中也遇到到了具体技术问题,可以随时翻阅资料或学习,当然也可以与“@ZiShi”进行交流。
       如果要让坦克正常解析接收到的命令,我们可以定义一些简单的协议,如图6-7。

       有了命令列表,通信双方就可以根据这个“协议”进行通信了,假如坦克一端接收到0X00,那么坦克就全速向前冲,如果坦克一端接收到0X02,那么坦克就会左转,大家还可以自己扩充这个命令列表,让自己的坦克完成更多的功能。
       坦克一端的程序原理已经介绍完毕了,后面我们还会继续介绍遥控手柄一端的程序原理。
       今天先到这里……

遥控坦克DIY过程解密(07)

>>>>>>>>>>2013-01-15<<<<<<<<<<

       前面介绍了坦克一端的程序原理这一回我们来看看手柄程序是怎么实现的,要实现手柄一端的程序我们还得回顾一下手柄一端的硬件原理图,如图7-1。

       根据原理图我们可以看出当按键没有被按下是,单片机对应的IO引脚为高电平,当有按键按下时候,单片机对应的IO引脚为低电平,根据这一原理,我们的程序可以不断去读取IO引脚的状态来判断是哪个按键被按下了,请看图7-2。

       图7-2是一段按键扫描程序,这段程序会返回被按下按键的编号,最后根据按键的编号发送对应的控制命令。系统程序运行起来后我们只要不断的调用这个按键扫描函数,就可以不断的读取用户输入,发送控制命令,如图7-3。

       至此程序部分的基本原理已经介绍完毕了,有了这些程序我们已经可以控制我们的坦克完成预计的功能了,如果后面再需要其他功能我们会在这个程序上进行扩展,另外这里给出的只是框架性的内容,为了不影响对整体程序功能的理解,我们略去了部分技术细节。
       有些朋友可能对单片机编程或者对一些芯片、模块的使用不太熟悉,这些涉及到具体细节的问题我们可以另外进行讨论,这里还是以原理为主。
       软件部分的“解密”基本完成了,下一回我们要开始进行结构与外观的设计了,敬请期待……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +1 收起 理由
幻生幻灭 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2012-12-31 15:33:11 | 显示全部楼层
挺不错的 LZ有没有兴趣出个套件卖卖?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-31 15:37:04 | 显示全部楼层
感谢支持哦 这是我们小团队自己开发的 目前还没有套件出售哦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-31 15:38:28 | 显示全部楼层
histamine 发表于 2012-12-31 15:33
挺不错的 LZ有没有兴趣出个套件卖卖?

感谢支持哦 这是我们小团队自己开发的 目前还没有套件出售哦
回复 支持 反对

使用道具 举报

发表于 2012-12-31 15:52:24 | 显示全部楼层
这个可以摇控吗?
回复 支持 反对

使用道具 举报

发表于 2012-12-31 15:52:37 | 显示全部楼层
造型不错,确实可以拿来出卖。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-31 16:00:00 | 显示全部楼层
pww999 发表于 2012-12-31 15:52
这个可以摇控吗?

可以遥控呀,室内10米范围内,没问题的哦 呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-31 16:05:17 | 显示全部楼层
szmszm 发表于 2012-12-31 15:52
造型不错,确实可以拿来出卖。

呵呵 多谢支持
回复 支持 反对

使用道具 举报

发表于 2012-12-31 18:14:53 | 显示全部楼层
有些地方是不是太薄了?亚克力还是挺容易断的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-31 18:29:08 | 显示全部楼层
Malc 发表于 2012-12-31 18:14
有些地方是不是太薄了?亚克力还是挺容易断的

如果材料的质量过关的话还比较结实,有什么其他材料推荐吗?谢谢
回复 支持 反对

使用道具 举报

发表于 2012-12-31 19:49:09 | 显示全部楼层
送出去加工的吗
回复 支持 反对

使用道具 举报

发表于 2012-12-31 19:49:44 | 显示全部楼层
送出去加工的吗  好帅啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-31 19:55:28 | 显示全部楼层
小政哥 发表于 2012-12-31 19:49
送出去加工的吗  好帅啊

这个是机器加工,如果零件不复杂的话,手工也能搞定的,呵呵
回复 支持 反对

使用道具 举报

发表于 2012-12-31 21:22:30 | 显示全部楼层
建议采用木板,铝板,或者薄不锈钢板。。。亚克力这种厚度太脆了。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-31 22:16:56 | 显示全部楼层
迷你强 发表于 2012-12-31 21:22
建议采用木板,铝板,或者薄不锈钢板。。。亚克力这种厚度太脆了。。

好,有机会一定试一试,
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 21:52 , Processed in 0.050087 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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