• ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台


    一、概述

       所谓嵌入式,其实就是专用的微型计算机系统,包括嵌入式硬件和嵌入式软件两个部分。嵌入式硬件通常是由32位(或以下)的微处理器及其相关外设组成;嵌入式软件则是写入嵌入式硬件的用于实现特定功能的程序。笔者总结了一下,嵌入式具有以下几个方面的特点:

    • 专用性。(一般是面对特定应用场景进行专门开发)
    • 实时性。(虽然嵌入式微处理器一般计算能力不高,但是因为“专片专用,定向开发”,因此具有良好的实时性)
    • 可靠性。(嵌入式系统一般直接和执行机构或底层设备打交道,要求代码质量高、简洁、稳定。)
    • 经济性。(嵌入式系统一般价格都比较低,小微型电子设备)

     二、嵌入式硬件的开发流程

     图1 嵌入式硬件发发流程

      嵌入式硬件开发的一般流程如图1所示,这里只是笔者根据以往经验进行简单的总结,未必是用于所有的开发情况。第一步就是确定产品的设计需求,这里是指经过充分讨论和评审的产品设计需求,然后开发人员根据设计需求进行分解,例如不同的功能需求可能对应的不同的硬件模块。

      然后,根究需求进行整体方案设计和评审,这里的整体方案设计包括主控芯片的选型、功能模块芯片的选型、供电方式等,整体设计方案细化程度越高,后续将会更加轻松。

      进一步,就是进行原理图设计,这里是对上一步骤的进一步细化,原理图的绘制主要包括: 确定各个元器件的电气连接、相关模拟和数字电路设计等等,图2是笔者以前绘制的一块舵机控制板的部分原理图截图,主控芯片为C8051F系列。

                          

    图2. 笔者曾经绘制的某舵机控制电路原理图部分模块截图

      进一步,根据原理图设计进行PCB布局布线,例如:采用确定几层板、电子元器件布局、连接线的走线方式和分布方式、安装孔位和定位空位设计等(如图3所示为笔者以前项目中设计的舵机控制板的布线和样板)。原理图设计和PCB布局布线最考验一个硬件设计工程师的技术功底,例如晶振应该如何放置、如何避免电磁干扰、线宽和线间距如何选择、如何避免电流耦合、时钟电路如何布局等等,这一切都直接影响硬件的稳定性。这一步完成度高可以大大降低后续的测试和优化迭代的工作量。

       进一步,制作样板并根据设计需求编写各个功能模块得测试程序进行功能验证。这一步就需要嵌入式硬件工程师也必须有一定的软件基础,因为自己设计的硬件电路板首先就要自己来测试相关的功能。

                 

    图3. 前述舵机电路板的布线和样板示例图

      进一步,如果应用场景比较严苛或要求较高,好需要做电路板的EMC测试和硬件冲击振动试验。EMC是指电测兼容性测试,它包含EMI(电磁干扰)和EMS(电磁敏感性)两个方面,写到这里想到母校的蒋全兴老教授(电磁兼容元老级人物),记得当年老爷子年近古稀还坚持每天早早的去实验室,而不是享受退休生活,可能到那个年纪还能做点研究就是幸福的吧(跑题了。。。-_-||)。冲击振动试验是指电路板安装后要能承受一定的冲击振动而不会失效,例如军工行业、高铁地铁、汽车电子等领域用到的硬件一般都要做冲击振动试验以防运行时受冲击而失效。

      最后,就根据上述的各种测试和验证进行优化迭代,以满足笔者在上一部分提到的专用行、实时性、可靠性和经济性的特点。

    tips:

      1.硬件工程师一定要会阅读芯片英文版的datasheet;

      2.硬件工程师要有一定的动手能力,起码要会用电烙铁手动焊接TQFP100封装的MCU。

    三、本开源机器人的硬件系统介绍

       博文的前半部分简单介绍了嵌入式硬件电路设计的流程和一些基础知识,下面考试介绍本开源机器人的的嵌入式硬件部分的组成。为了快速开发和节约成本,这里的机器人嵌入式硬件全部采用现有的电路板进行搭建,以便降低成本和上手的难度,当然,如果读者感兴趣的话还是可以自己绘制几块电路板来练练手,体会一下从设计到制版,从手动焊接电路板到软件调试的整个过程,其间一定会获得很多成就感和乐趣。

                       

    图4. 本开源机器人的硬件电路组成框图及实物分布图

      闲话少说,图4就是本开源机器人的硬件电路组成框图,下面我们分别介绍一下:

      1. 锂电池(如图5所示)

        这里采用的锂电池是24V的,电池容量为10Ah,这里我们电池容量也是经过一定的选型计算的,上一篇博文在介绍电机选型时提到要求机器人可以连续运行10小时,因此电池的选型过程如下:

        电池电压U = 24V 连续运行Tim = 10 h

        单个电机额定工作环境下位3W,两个电机为6W,算上嵌入式硬件功耗共计为P = 10W。

        电池容量为:

        K = P/U · Tim = 4.1667 Ah

        这里取安全系数为2,我们选择电池容量需要大于等于4.1667x2 = 8.333 Ah,因此最终选择的电池电压为24V,容量为10Ah。

     

    图5. 锂离子电池

      2. 直流稳压模块(如图6所示)

        直流稳压模块是为了稳定电路板和电机的供电电压,防止电池直接输出的电压不稳定而导致电路板损坏或电机控制精度下降。电池引出的24V电源分别介入两块直流稳压板,其中一块稳压板稳定输出22V给电机供电,另一块稳定输出12V给各个电路板供电。

    图6. 直流稳压模块

      3. STM32F407开发板(正点原子探索者)(如图7所示)

      硬件系统的主控板是一块STM32F407开发板,该开发板集成了很多个功能模块,其中我们要用到的有:

    • 通信模块。(RS232、USART等)
    • PWM信号输出。
    • 传感检测模块。(编码器、超声波测距等)
    • 陀螺仪。
    • 等等

      具体的功能及代码后续的博文会分章节详细介绍,关于该开发板的详细资料查看:开发板资料传送门

    图7. STM32F407开发板

      4. 直流电机驱动模块(如图8所示)

      该驱动模块是一款H桥直流电机驱动板,独立两路电机接口,每路最高支持120W电机,使用P、N互补MOS管实现H桥,具体使用参见:手册传送门。我们用这一块板子实现两个电机的驱动,正合适。

    图8. 直流电机驱动模块

      这里我们介绍了主要的几个模块,其他相关模块后续会结合嵌入式软件的介绍一起进行。OK,本篇到这里吧。

     <-- 本篇完 --> 

    欢迎留言、私信、邮箱、微信等任何形式的技术交流。

    作者信息:

    名称:Shawn

    邮箱:zhanggx0102@163.com

  • 相关阅读:
    李永乐说股票
    01 什么是基金
    基金分享
    02 基金分类
    03 买什么基金合适
    06丨MongoDB基本操作
    详解大端模式和小端模式
    在UIViewController中获得Container View里的embed viewController的引用
    iphone Dev 开发实例10:How To Add a Slide-out Sidebar Menu in Your Apps
    iphone Dev 开发实例9:Create Grid Layout Using UICollectionView in iOS 6
  • 原文地址:https://www.cnblogs.com/shawn0102/p/9648918.html
Copyright © 2020-2023  润新知