ATZiShi
发表于 13-1-8 11:48:36
wxy119wxy 发表于 13-1-7 12:34 static/image/common/back.gif
和模型厂家出来的有哪些不一样?
厂家的是厂家设计的,这个是自己设计的,{:soso_e100:}
DIY嘛
ATZiShi
发表于 13-1-9 14:09:43
lwy1952 发表于 13-1-7 19:53 static/image/common/back.gif
遥控坦克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。
后面我们再简要介绍一下,遥控手柄一端的电路,今天先到这里。
待续……
ATZiShi
发表于 13-1-10 09:23:38
前面在介绍遥控坦克实现过程中提到了NRF24L01这个模块,但是这个模块有个缺陷就是编程复杂,这里在给大家补充一个方案,就是上图的飞思卡尔无线串口,这个也可以用来遥控小车,只要把它插在串口上,基本上无需额外编程了,只要操作串口就好,同时价格适中。
ATZiShi
发表于 13-1-11 11:32:20
遥控坦克DIY过程解密(05)>>>>>>>>>>2013-01-11<<<<<<<<<<
上一回我们介绍完了坦克一端的硬件部分,这回继续介绍一下手柄一端的硬件,比较之前的电路手柄这边的电路要简单一些了,还是老习惯我们先分析一下手柄的功能,如图5-1。
手柄的主要任务就是处理玩家的一些动作,然后将玩家的动作以命令形式发送给坦克。那么玩家都有哪些动作呢?总结下来就一个动作“按键”,当手柄发现用户按下按键后,判断用户按下的是哪个按键最后将这个按键对应的操作以命令形式发送给坦克。
根据前面对坦克功能的定义我们要实现的动作有前进、后退、左转、右转、炮塔顺时针转、炮塔逆时针转这几个动作,那么我们就来设计一个带有6个按键的手柄,其大致外观如图5-2。
功能基本确定了我们来看下手柄一端的电路如何设计,涉及到数据传输模块的设计其实与坦克一端是一样的,可以直接参考《遥控坦克DIY过程解密(04)》来完成相关电路的设计,我们仅仅讨论按键电路的设计,如图5-3所示。
其中阴影部分电路就是遥控手柄的按键电路,同时已经给出了数据传输模块的电路。我们一共定义了6个按键使用单片机的P0口去读取按键的状态,如果读入的数据是‘0’说明按键是抬起状态,如果读入的数据是‘0’说明按键被按下。怎么样其实实现一个手柄也并不复杂,对于我们DIY来说这个电路已经完全够用了。我们可以选择图5-4这种小按键来制作我们的手柄。
把这种按键焊接在万能版上效果如图5-5所示。
DIY这个遥控坦克所涉及到的硬件部分基本介绍完毕了,后面的工作就是根据原理图(在万能版或面包板上)把电路搭建好,搭建好电路后就可以进入软件设计阶段了。
今天先进行到这里,待续……
wxy119wxy
发表于 13-1-11 20:02:42
不错的推进。。。期待更好的进步
ATZiShi
发表于 13-1-12 18:19:43
wxy119wxy 发表于 13-1-11 20:02 static/image/common/back.gif
不错的推进。。。期待更好的进步
多谢鼓励 {:soso_e100:}
ATZiShi
发表于 13-1-13 17:34:29
遥控坦克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,那么坦克就会左转,大家还可以自己扩充这个命令列表,让自己的坦克完成更多的功能。
坦克一端的程序原理已经介绍完毕了,后面我们还会继续介绍遥控手柄一端的程序原理。
今天先到这里……
ATZiShi
发表于 13-1-15 09:12:59
遥控坦克DIY过程解密(07)>>>>>>>>>>2013-01-15<<<<<<<<<<
前面介绍了坦克一端的程序原理这一回我们来看看手柄程序是怎么实现的,要实现手柄一端的程序我们还得回顾一下手柄一端的硬件原理图,如图7-1。
根据原理图我们可以看出当按键没有被按下是,单片机对应的IO引脚为高电平,当有按键按下时候,单片机对应的IO引脚为低电平,根据这一原理,我们的程序可以不断去读取IO引脚的状态来判断是哪个按键被按下了,请看图7-2。
图7-2是一段按键扫描程序,这段程序会返回被按下按键的编号,最后根据按键的编号发送对应的控制命令。系统程序运行起来后我们只要不断的调用这个按键扫描函数,就可以不断的读取用户输入,发送控制命令,如图7-3。
至此程序部分的基本原理已经介绍完毕了,有了这些程序我们已经可以控制我们的坦克完成预计的功能了,如果后面再需要其他功能我们会在这个程序上进行扩展,另外这里给出的只是框架性的内容,为了不影响对整体程序功能的理解,我们略去了部分技术细节。
有些朋友可能对单片机编程或者对一些芯片、模块的使用不太熟悉,这些涉及到具体细节的问题我们可以另外进行讨论,这里还是以原理为主。
软件部分的“解密”基本完成了,下一回我们要开始进行结构与外观的设计了,敬请期待……
ATZiShi
发表于 13-1-17 15:45:43
遥控坦克DIY过程解密(08)
>>>>>>>>>>2013-01-17<<<<<<<<<<
前面介绍了很多专业内容,估计大家看的有些不耐烦了,今天换换口味,欣赏一下我们拍摄的照片,之前一直有朋友反映视频看的不是很清楚,很多细节没有看到,今天给大家上几张图,我们也正在翻录新的视频,希望能做的更好,话不多说开始上图喽,图8-1:
上面这张图,是我们用铜柱和螺母拼出的“DIY”和“ZiShi”字样,图中这两样东西,是我们拼接外壳的主要连接件。他们都是很常见的零件,相信常常DIY的朋友对这种零件并不陌生。在看下一张,图8-2。
看到这个图大家会不会想起儿时玩的四驱车呢,如果能够回忆起说明您从小就十分热爱DIY这项充满刺激的动手活动。我们的坦克就是利用这些简单的组件搭建出来的,蛮神奇的。
后来我们都长大了,但心依然年轻,从未放弃自己热爱的事情,只是不再满足于“简单”的四驱车,一心想要做出自己的超级战车,同时我们的战车应该具有聪明的“大脑”,而不是简单的前、后、左、右,我们要实现更多功能让它具备更快的反映能力,要说反应能力快在这是世界上谁还能快过计算机呢,我们打算在战车中植入计算机让它具有思维,下图就是我们引入的51计算机,图8-3。
有了大脑战车才会变得更加聪明。
要说DIY真的乐趣很多,可以充分发挥大家的想象力和动手能力,同时让我们在学校里学到的知识不被浪费掉,所以我们一直鼓励大家动手去做去实践。
说到坦克我们再来看看他的履带长什么样子,如图8-4。
大家看到了吗,坦克的履带,我们就以这张笑脸结束今天的文字,希望我们能为大家带来更多的快乐,同时也感谢前一段时间大家对“ZiShi”遥控坦克的支持,感谢大家。
后面我们继续回到结构设计的话题,请看下一回……
ATZiShi
发表于 13-1-20 00:31:49
遥控坦克DIY过程解密(09)
>>>>>>>>>>2013-01-19<<<<<<<<<<
继续解密
今天进行我们遥控坦克项目的最后一个“解密”部分,最后一部分主要是关于机械结构的解密。对于一般的DIY爱好者来讲螺丝刀、钳子、钢锯、电钻这些工具还都是具备的,但是要说到数控机床、激光切割之类的大家伙可能很少有人具备这个条件了,是不是没有这些大家伙我们就不能进行DIY了呢?当然不是的。DIY的精神就在于有条件要DO,没条件创造条件也要DO,没有工具没有专业的知识都不能阻止我们去DIY。
今天在这里“ZiShi”要给大家分享的内容是,在有限的加工工具和有限的专业知识条件下如何进行个人的DIY,当然我们这回是围绕机械结构部分展开的。
我们会分两回进行这部分内容,第一回介绍金属加工方法,第二回介绍非金属加工方法。
先来看金属加工方法,做任何事之前都需要进行简单设计,如果不进行设计就开工后面会遇到很多麻烦,对于机械加工来说我们第一步要做的就是绘图,可能有朋友说了没学过CAD怎么做呢?我们说没关系一杆笔一把直尺足够了,当然有时候还会用到圆规。有条件的朋友可以现在坐标纸上进行设计,没有坐标纸呢找一张白纸也完全可以,有了这些就可以开工喽,具体怎么画不用详细介绍,我们只要一上图,大家马上明白,请看图9-1、9-2:
这是我们曾经设计过的一个实例—机械腿,看着可能有些复杂,但仔细观察发现图中除了线就是圆,一把直尺一支笔一个圆规完全能搞定了,怎么样原理并不复杂吧没有CAD我们也可以DIY的,有了这张图接下来就是绘制具体的零件了,这个就更加容易了,看图9-3:
上面的图展示了3个零件的绘制方法,零件画好以后顺便标记尺寸,这个尺寸就是我们后面进行加工的依据了。上面这个图是一个立体效果,我们还要把它转化成平面的尺寸,看图9-4:
图9-4是一个简单的零件,被展开后就是一个矩形,我们只要把下半部分的图纸用剪刀剪下,然后贴到金属材料上(铁皮、铝片),然后使用钢锯沿着图纸进行切割就好了,切割好的材料根据预先设计的尺寸进行折弯处理,请看图9-5:
被加工好的零件与图9-5左下方的效果类似,这种加工方法效率不算高但是可行的,为了充分说明这个方法的可行性,我们展示一下当时做的机械腿效果,如图9-6:
这里只进行了原理性的说明,我想大家应该可以理解这个过程,交代的可能不是很细致,因为具体的手工加工过程还是有很多技巧的,而且对动手能力有比较高的要求,最重要的是有耐心因为这种方法的效率并不高,还有最最重要的是注意安全,主要保护好眼睛和手。如果大家对这种DIY方式感兴趣我们可以进一步分享经验。
下一回我们就介绍非金属材料的加工,这部分和坦克车就很接近了……