用RC枪控操纵乐高电机 科技系列

ruf 2016-3-14 7864

[i=s] 本帖最后由 ruf 于 2016-3-15 09:32 编辑 [/i] 大家都知道乐高PF电机是用红外发射器和接收器来实现遥控的,就是下面这两个:






这种遥控方式有两个缺点:首先是遥控距离很小,户外只有一米左右;其次是不支持比例输出,就是说接上电机只有前进后退两档,而没有高速低速之分;接上转向电机只有+90度和-90度两档,非常的不灵活。乐高还出了一款调速遥控器,俗称为火车遥控器的:



这款是可以调速的,但是超级不好用,它的工作模式是:顺时针转则速度加快,逆时针转则速度减慢,但是你不能快速的旋转它,那样它就会搞混自己是往什么方向旋转的,根本无法快速而且精确的控制输出速度。

在制作乐高赛车的过程中,我越来越需要一款可以调速,而且要快速响应的遥控器,如果像RC车(无线遥控车)的枪控那样好用该多好!和我有同样想法的人不少,包括帅哥G_phy,他用纯乐高零件制作了这个:

按此在新窗口浏览图片

手感很好,非常像RC枪控,但是仍然不能调速。

这时我想到,既然乐高火车遥控器能够发出变速的指令,那就是说,乐高的红外接收器,本身是支持调速的,只是没有对应的好用的发射器而已。RC车控可以调速,但是它发射的是无线电波,又没有对应的乐高接收器。那如果我能制作一个设备,把RC无线信号转换成乐高的红外信号,那就可以实现,用手感极好的RC车控,直接控制乐高赛车了!

说做就做。首先我需要的是乐高的PF红外通信协议,这可以在 http://www.philohome.com/pf/pf.htm 找到,通过分析协议文档,我们可以知道乐高红外接收器是支持两路独立的正反7速输出的,而且正好可以用一条16bit红外指令来控制:

[code]LEGO PF 调速指令 : 01CC BBBB AAAA LLLL
CC - 通道号,通道1是00,通道2是01,通道3是10,通道4是11
BBBB/AAAA - 两路输出,各4个bit
0000 Float 输出悬空,电机空转
0001 Forward 1 正转速度1(最慢)
0010 Forward 2 正转速度2
0011 Forward 3 正转速度3
0100 Forward 4 正转速度4
0101 Forward 5 正转速度5
0110 Forward 6 正转速度6
0111 Forward 7 正转速度7(最快)
1000 Brake 输出短路,电机刹车
1001 Forward 1 反转速度7(最快)
1010 Forward 2 反转速度6
1011 Forward 3 反转速度5
1100 Forward 4 反转速度4
1101 Forward 5 反转速度3
1110 Forward 6 反转速度2
1111 Forward 7 反转速度1(最慢)
LLLL - 校验码,1111 ^ 01CC ^ BBBB ^ AAAA
[/code]

乐高PF红外接收器通过输出频率为1KHz左右的PWM信号来控制马达转速。正转的输出一共7档,占空比分别是25%、37.5%、50%、62.5%、75%、87.5%、100% 。反转也是一样的占空比,只是电压相反。M/L/XL电机就直接用这个PWM信号来驱动了,而转向电机里面应该是有芯片来计算占空比的。

然后需要学习RC接收协议,好在现在的RC接收机非常成熟,每路RC输出都是一个50Hz的脉冲信号,每个脉冲维持1ms~2ms,分别对应发射机的-100%到+100%,1.5ms对应发射机的中位,依此类推。

现在我只需要做一个系统,读取RC输出的脉冲信号,计算出比例值,然后转换成乐高的速度:-7~+7,最后发射出红外信号,这样就可以工作了。因为只需要用到3个IO口,用一个最基础的Arduino主控就足够了。

从万能的淘宝买到了所有需要的零件。

RC枪控和接收机:



这是接收机的近照,非常小,4厘米见方:



主控电脑,10元钱的Arduino板子,只有大拇指指甲盖大小,做工相当好。



大功率红外发射器,这个发射功率比乐高原装红外发射器要强不少,室内5米没问题。普通的红外发射器只要几毛钱,这个要13元!



电池盒,我买的是可以装4节7号电池的。因为前面买的Arduino主板是支持宽电压的,6V~20V都行,所以直接用9V方电池供电也行。



然后接上线,学习一下Arduino开发,编写一点小程序后,就可以测试一下效果了:

[media=x,500,375]http://www.tudou.com/programs/view/mfGYb4dco-A/[/media]

如果把上面这些零件(除了RC枪控)全部装进一个盒子,体积也很小。这个盒子有自己独立的电源,可以粘在RC枪控上,也可以固定在乐高接收机附近。RC的遥控距离可以达到上百米,而且无线信号可以穿越障碍物,现在终于可以在户外放手地玩乐高小车了!

最后,送上一段新制作的视频,里面RC枪控上粘着的那个橙色盒子就是做好的转换器,配曲是我很爱听的一首歌,希望大家喜欢~~~

[media=swf,500,375]http://www.tudou.com/v/uFccQ_gi5Hc/&rpid=26434709&resourceId=26434709_04_05_99/v.swf[/media]




最新回复 (30)
  • 楚沐猴 2016-3-14
    2
    不明觉厉啊............
  • 彩色熊猫 2016-3-14
    3
    高手,高手,高高手{:3_131:}
  • jerryyao 2016-3-14
    4
    能拓展啦{:1_267:}
  • lancerjk 2016-3-14
    5
    这个必须顶,太赞了!
  • 阿达阿达2011 2016-3-14
    6
    去年有幸在苏州车赛上已见实物,确实不错,非常欣赏! 如有兴趣可把它做得更小,一体化.
  • ruf 2016-3-14
    7

     提示:您可以先修改部分代码再运行
    阿达阿达2011 发表于 2016-3-14 11:20
    去年有幸在苏州车赛上已见实物,确实不错,非常欣赏! 如有兴趣可把它做得更小,一体化. ...
    是的,里面最大的部件是RC接收机,如果把接收机的外壳剥掉,用短电线连接各个部件,采用小型化的2S锂电池,那缩小到打火机大小都是有希望的。而且因为我买的接收机是六通的,所以只要改写一下程序,就可以同时控制6个乐高电机!
  • e47085 2016-3-14
    8
    构思很独特,其实现在2.4G的技术很成熟,但是不明白lego还用红外传输,相对来说,更喜欢阿达那个贴的遥控改造。对于lego的控制,个人认为板控更适合些,枪控一般控制4个通道,一个油门,一个转向,其余二个通道基本是混控。
  • G_phy 2016-3-14
    9
    看到过实物,感觉相对原装还是有很大提升,搞个模块普及一下{:3_175:}
    告诉你个小秘密,其实我的遥控还有个低速档,不过没有你那么高科技:xixi
  • 江南大浪少 2016-3-14
    10
    赞~真羡慕会电路系统的达人啊
  • dna2 2016-3-14
    11
    卧槽,这么强大!楼主是专业的啊。。。嗯。。。如果可以,可以找人开发一下,人家SBrick都开发了,咱们国人做个便宜的超长红外收发装置行不行呢?
  • ruf 2016-3-14
    12

     提示:您可以先修改部分代码再运行
    G_phy 发表于 2016-3-14 12:01
    看到过实物,感觉相对原装还是有很大提升,搞个模块普及一下
    告诉你个小秘密,其实我的遥控还有个 ...
    低速档怎么实现的?只开一个电机用差速器输出吗?
  • ruf 2016-3-14
    13

     提示:您可以先修改部分代码再运行
    dna2 发表于 2016-3-14 13:13
    卧槽,这么强大!楼主是专业的啊。。。嗯。。。如果可以,可以找人开发一下,人家SBrick都开发了,咱们国人 ...
    感觉需要用到的人不多啊,包装一下做个套件出来卖,能有销路吗?{:1_265:}

  • ruf 2016-3-14
    14

     提示:您可以先修改部分代码再运行
    112123 发表于 2016-3-14 14:21
    我不同意楼主这种感觉,
    乐高科技这种玩意没有什么内含但是能恰如其分地击中大陆的消费心理,傻多速不是 ...
    听不懂你在说什么,你会玩乐高吗
  • marbleman 2016-3-14
    15
    支持量产,乐高现在的红外遥控是大问题,即使玩火车,也经常收不到信号,更别提科技了。考虑过Sbrick,价格是个问题,而且还不支持安卓系统。
  • kingbaby47 2016-3-14
    16
    膜拜技术帝
  • WXX 2016-3-14
    17
    哇塞
  • WXX 2016-3-14
    18
  • weidaibao 2016-3-14
    19

     提示:您可以先修改部分代码再运行
    marbleman 发表于 2016-3-14 15:49
    支持量产,乐高现在的红外遥控是大问题,即使玩火车,也经常收不到信号,更别提科技了。考虑过Sbrick,价格 ...
    支持啊,我就在用安卓
  • 胡德 2016-3-14
    20
    觉得有点复杂化了,最好直接做一个SBRICK的遥控器版,无需再转换红外遥控,要考虑延迟的,或者直接使用RC的遥控和电调,只不过不能用乐高的转向电机,LMXL电机倒是能用,你的控是福斯吧?某宝上有兼容福斯控的一体化接收机(集成电调),很小的。
  • ruf 2016-3-15
    21
    [i=s] 本帖最后由 ruf 于 2016-3-15 00:07 编辑 [/i]
     提示:您可以先修改部分代码再运行
    胡德 发表于 2016-3-14 22:14
    觉得有点复杂化了,最好直接做一个SBRICK的遥控器版,无需再转换红外遥控,要考虑延迟的,或者直接使用RC的 ...


    那不就是又一个版本的SBrick了吗,感觉没有新意了啊。保留乐高的红外接收器是为了保持乐高作品的纯洁性,这在有些场合是有意义的。另外我是需要支持转向电机的,所以不能随便拿个电调来用,必须是正确频率的pwm输出

    如果想直接遥控驱动电机的话,可以看看阿达大叔的方案,那个是革命性的。
  • ruf 2016-3-15
    22

     提示:您可以先修改部分代码再运行
    e47085 发表于 2016-3-14 11:55
    构思很独特,其实现在2.4G的技术很成熟,但是不明白lego还用红外传输,相对来说,更喜欢阿达那个贴的遥控改 ...


    选择枪控是因为我做试验用的是只有两通的乐高车,用枪控顺手。如果需要更多动作,那就需要上板控了。一个红外发射器最多可以控制8路马达,当然这需要4个红外接收器来配合,分别放设置在4个红外通道上。另外如果超过4通的话,就需要更强大的有更多IO的Arduino主控了。

    阿达之前的版本应该还没有实现调速,因为那需要额外的芯片。
  • 3dboy 2016-3-15
    23
    这个真学不来,只能参观了
  • 古铜色的忧郁 2016-3-19
    24
    这玩意好贵吧
  • zl1681688 2016-3-19
    25
    厉害 学习了回头也去试试不行再来求教
  • ruf 2016-3-21
    26

     提示:您可以先修改部分代码再运行
    古铜色的忧郁 发表于 2016-3-19 09:16
    这玩意好贵吧
    连遥控器带接收带零件不到200元,贵的不是硬件而是人工,呵呵。
  • ffndcz 2016-3-22
    27
    准备跳RC坑。。。
  • wqself 2016-3-23
    28
    牛拜,但不会去弄
返回
发新帖