查看: 2765|回复: 3

专为工程师设计的“告别单身party”

[复制链接]
  • TA的每日心情
    郁闷
    2024-10-28 10:11
  • 签到天数: 1703 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2012-11-7 09:19:24 | 显示全部楼层 |阅读模式
    分享到:
    在我工作的Nuvation公司中,我们喜欢在工程师同事结婚前做一点点不一样的事。当然,我们还是会为准新郎办个标准单身派对“庆祝活动”,但我们也把订婚当作为借口,让我们能够更加荒唐胡闹,无所不用其极地施展我们令人恐惧的工程绝技。不过,我很高兴现在仍然可以这么说──到目前为止大家都还活得好好的!

    这一次,我的同事和我决定来个绑架意外,然后强行将这位令人钦羡的准新郎关在一个特殊设计的机关中,让他必须发挥所有工程技能才能逃脱出来。架设这项禁锢机关的任务就落到我和我的同事兼好友Eliot Barker身上了。我负责做韧体部份,而由他处理机械元件,然后我们再共同分担电子部份的工作。就在这个绝妙的想法成形之际,大约只剩下一周左右的时间可进行这项隔离系统设计了,所以这个恶作剧最后就变成了一项有趣的快速原型应用。





    为了完成任务,我们采用基于ARM Cortex-M3的微控制器评估平台。这类简单易用的开发工具套件是我们“日常工作”中经常使用的快速原型平台。这篇文章接着将揭发我们的设计中魔鬼般残忍的细节,当然也包括在单身派对上准郎如何脱逃的经过。


    展开设计


    Nuvation公司的职员多半都是热血工程师,我们之中有很多人都把空闲时间花在建造战斗机器人、电动车、基于RF / MCU 控制的火焰喷射器,以及其他游走于酷炫和致命边缘的有趣设计。对于这次的单身派对恶作剧,我们想要设计出包括一道谜题的机关,让即将成为新郎的工程师还有能力去思考其解脱之道。





    我们的想法是把准新郎禁锢于客制化打造的大木箱中。他必须谨慎小心地处理箱中的内容物,才能逃脱出这只大箱子。除了完全黑暗的空间以外,工程师首先面对的是木箱中的一个“神秘盒子”。神秘盒子虽然让人一开始完全无法可理解,但如果能仔细观察与推敲出其中的因果关系,那么将可解开这些秘团顺利脱逃出来。


    这款神秘盒子包括以下物件:


    .一款4位数字的7段显示面板


    .12个继电器线路以串联方式连接,一只12V白炽灯泡在继电器通电时进行照明


    .在7段显示面板和标示“Test”的继电器之间安装一个按钮


    .在神秘盒子底部放入一堆用户输入装置,包括标示“Engage”的按钮、一副锁扣,以及一个三连杆螺丝接线端子





    我们还留下了一只神秘牛皮纸袋,随意的放进一些主动与动电子元件;另外,也在大木箱底板上放置一个面包板。墙上并钉有数据表为其激发一点灵感。


    一旦设定好锁扣后,7段显示面板先初始化为3987。按下“Engage”钮后,显示器上的数字就开始递减。“Test”钮可使继电器随机发亮。盒子的功能已经用其它方式加以隐藏了,但我们在此等着看会发生什么事其实并不是个好办法。果然,三分钟后,震耳欲聋的声音从盒中传出来,七段显示面板也闪烁着8888的数字。此时,置身箱中的准新郎唯一可做的事应该就只有用钥匙重设该装置,使其回到原先所显示的3987。


    从木箱中逃脱的技巧是必须先弄清楚继电模式并不是随机发生的,它实际上是在七段显示面板上呈现一个十二位元二进制的值。然后再依该值解开12个串联的继电器,此时七段显示器必须解读为0000。换句话说,在下一个三分钟的时间截止前,这个数字将会递减3987次。经过一番实验后,我们很快地断定出这是一项不可能由手动完成的任务。所以,问题已相当明确了。


    解决之道在于放置着杂七杂八电子元件的神秘牛皮纸袋。总之,只要连接振荡器到螺丝接线端子,计数器就能以电子方式递减。一些采用IN端子和跳线的实验显示,它能以和Engage按钮相同功能的方式来递减计数器。牛皮纸袋中提供了可打造多种不同振荡器的工具,从环形振荡器、松弛振荡器到石英振荡器与555计时器等。然而,最简单且最准确的解决方案是使用一个普通的继电器──但在袋中可是个十分独特的元件。




    如何实现这一构想?


    那么要如何何将这一切兜到一起呢?经过几个晚上通宵达旦的工作后,我们总算让它相当漂亮地整合在一起了!


    这款神秘盒设计的心脏采用了德州仪器(TI)的LM3S811评估套件。这款工具套件十分便宜、体积小,电路板上还为每个可用的I/O接脚设置0.1吋间距的接脚垫,每一个接脚也都明确标示其周边功能。PCB板上还直接建置一个JTAG编程器/除错器。


    韧体开发采用StellarisWare周边驱动程式工具库,以利用微控制器(MCU)上的每个周边与系统控制功能。对于大部份的生产应用而言,由于不一定能够负担经常性的开销,因此,工具库的使用是一个快速开始着手建置以及为基本功能进行原型处理的最佳方法。透过测试板,已知的有效周边驱动程式库也意味着不必担心MCU配置或周边互动时的错误,让我们能够更专注于手边的问题。


    以下摘录用于设置时间以及实现所需周边功能的“mcu_init()”函数。我们只需要几个简单的函数,就可以完成任务开始运作了。


    //initialize system clock to 50Mhz and use the external oscillator


    SysCtlClockSet(SYSCTL_SYSDIV_4 |


    SYSCTL_USE_PLL |


    SYSCTL_XTAL_6MHZ |


    SYSCTL_OSC_MAIN); //reset peripherals


    SysCtlPeripheralReset(SYSCTL_PERIPH_GPIOA); SysCtlPeripheralReset(SYSCTL_PERIPH_GPIOB); SysCtlPeripheralReset(SYSCTL_PERIPH_GPIOC); SysCtlPeripheralReset(SYSCTL_PERIPH_GPIOD); SysCtlPeripheralReset(SYSCTL_PERIPH_GPIOE); SysCtlPeripheralReset(SYSCTL_PERIPH_TIMER0); //default configuration: MCU will not enter sleep modes SysCtlPeripheralClockGating(false); //enable peripherals


    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);





    驱动程序库的简便性说明了Stellaris系列MCU更广泛的设计理念。在读过LM3S811数据表后,我们清楚地了解到MCU的设计是以简化易用(如降低NRE)为目标。其中一例是周边接脚功能透过一个GPIO可实现多工应用的事实。这样一来,就不再需要严密划分周边功能,而且可清楚知道MCU系列中的某个元件可实现什么样的功能性。另一个例子是一组预先设定的可用石英晶体振荡器频率。限制一组固定的频率数一开始可能感到绑手绑脚,但这些频率数与常见的晶体振荡器一致,因而大幅简化了时脉设置。最终的结果如何呢?快速地启动、执行并完成C程式码编写,而不是被令人沮丧的C程式码所阻。


    回过头来看看我们的的神秘盒子。七段显示面板以手动布线连接到一个控制器IC。继电器和蜂鸣器透过一组8输入Darlington电晶体阵列来进行切换。这些阵列可用于进行高电流GPIO缓冲,甚至还内建保护二极体来因应电感负载!灯泡部份则由手动布线直接连到两个继电器输出之一。





    这整个机关装置在单身派对活动开始的当天上午就以手动布线完成了,先前在堆叠电子元件时也已逐步完成软体测试。最后,使用两块原型板,并以带线缆直接连接到MCU评估板,以确保一切干净俐落。所有的电子元件来源均采用0.100吋间距(通常是DIP),以确保适合所用的原型板。该原型板本身也采用双面电镀,以减少布线作业。禁锢箱的门锁采用气体力学原理,而神秘盒的外表则同时采用软体与电子元件共同开发而成。


    等到为七段显示驱动时序问题进行除错后,软体就能整合地相当好了。基本的程式流程非常简单,程式逻辑采用轮询回圈建置,以确保事情更简单并避免难以发现错误。透过轮询高低层按钮/辅助输入以进行边缘检测。


    实际应用


    我们全心全力地投入这款设计,希望它所带来的挑战任务不仅能让我们的同事感到难忘,同时也兼具挑战性与创造性。在经过了一个晚上的试验后,我们把这个箱子带到了酒吧里,我们那毫无戒心的准新郎同事本来还以为他已经完成所有的考验了。我们虽然觉得有一点点不安,但也不必太过于讶异。他的脸上看来堆满灿烂的笑容,很高兴地看着大家,但已经开始晃神了。我们这位平常超级智慧、聪明且认真的准新郎当时看来似乎已经再也无法有条理地进行思考,更别提能否巧妙地解决经设计过的工程难题了。在那个时刻,显然地一切看来可能无法像我们所希望地那样顺利……





    然而,当我们“引导”他进入他的“新家”后,果然,他真的打开装有各种元件的牛皮纸袋。我是怎么知道这个事实的呢?因为从大木箱的气孔中传出来的第一声尖叫并不是“让我出去!”或“这里面好黑暗啊!”,而是“电解电容器吗?我最讨厌电解电容器了!”──告别单身派对成功!


    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-29 20:40
  • 签到天数: 1341 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2012-11-7 09:36:17 | 显示全部楼层
    哈哈 太好玩了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-12-14 11:43
  • 签到天数: 556 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-12-22 20:01:03 | 显示全部楼层
    这个真的不错哦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-10-12 09:59
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-8-28 10:37:52 | 显示全部楼层
    实践了吗?看起来挺有意思的!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-24 00:41 , Processed in 0.135901 second(s), 21 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.