思享国logo
返回顶部

点赞数

1

回复数

0

被浏览

451

机器人技术基础(一)——微控制器

2018-02-09 14:31更新
  • 热点聚焦

      什么是微控制器?

      你可能会问自己什么是微控制器,它是做什么的?

微控制器是能够执行程序(即指令序列)的计算设备,并且通常在机器人中被称为“大脑”或“控制中心”,因为它通常负责所有计算,决策和通信。

为了与外部世界进行交互,微控制器拥有一系列引脚(电信号连接),可以通过编程指令将其转为高电平(1 / ON)或低电平(0 / OFF)。这些引脚也可以用来读取电信号(来自传感器或其他设备),并告诉它们是高还是低。

        微控制器和开发版

        大多数现代微控制器还可以通过使用模数转换器(ADC)来测量模拟电压信号(即,可以具有全范围值的信号,而不是仅仅两个良好定义的状态)。通过使用ADC,微控制器可以将数值分配给既不是高也不是低的模拟电压。

       微控制器可以做什么?

虽然微控制器初看起来似乎相当有限,但通过巧妙地设置引脚的高电平和低电平,许多复杂的操作都可以实现。然而,由于其固有的资源和速度限制,创建非常复杂的算法(例如高级视觉处理和智能行为)或者非常大的程序对于微控制器来说可能是不可能的。

       例如,为了使一个灯闪烁,人们可以编程一个重复序列,在这个序列中,微控制器将一个引脚变为高电平,等待片刻,将其变为低电平,等待另一个时刻再启动。连接到有问题的引脚的灯将无限期地闪烁。

       以类似的方式,微控制器可用于控制其他电气设备,如执行器(连接到电机控制器时),存储设备(如SD卡),WiFi或蓝牙接口等。由于这种令人难以置信的多功能性,微控制器可以在日常用品中找到。实际上,每个家用电器或电子设备至少使用一个(通常是很多)微控制器。比如电视机,洗衣机,遥控器,电话机,手表,微波炉,现在的机器人都需要这些小设备来操作。

       与微处理器(例如个人计算机中的CPU)不同,微控制器不需要诸如外部RAM或外部存储设备的外围设备来操作。这意味着,尽管微控制器的功能不及PC机,但由于只需要很少的附加硬件组件,所以开发基于微控制器的电路和产品要简单得多,成本也更低。

       需要注意的是,一个微控制器只能通过其引脚输出非常小的电能; 这意味着通用微控制器可能无法直接为电动机,螺线管,大灯或任何其他大负载供电。试图这样做甚至可能会对控制器造成物理损坏。

       微控制器中更专业的功能是什么?

       微控制器内置的特殊硬件意味着这些设备可以比通常的数字I / O,基本计算,基础数学和决策做得更多。许多微控制器容易地支持最流行的通信协议,例如UART(又名串行或RS232),SPI和   I2C与其他设备,如计算机,高级传感器,或其他微控制器通信时。这特性是非常有用的。尽管可以手动实现这些协议,但内置专用硬件总是很好的,因为这些硬件都是专门处理细节的。它允许微控制器专注于其他任务,并允许一个更清洁的程序。

       模拟 - 数字转换器(ADC)用于将模拟电压信号转换成与电压幅值成正比的数字,然后可以在微控制器程序中使用该数字。为了输出与HIGH和LOW不同的中等功率量,一些微控制器能够使用脉宽调制(PWM)。例如,这种方法可以平滑地调暗LED。

       最后,一些微控制器在其开发板中集成了一个稳压器。这是相当方便的,因为它允许微控制器由多种电压供电,不需要您提供所需的准确工作电压。这也使其能够容易地为传感器和其他附件供电,而不需要外部稳压电源。

       模拟还是数字?

      下面您可以找到两个示例来说明何时使用数字或模拟引脚:

                                                 机器人MCU

                                                         1.  数字和模拟Arduino示例原理图

       1.  数字: 数字信号用于评估开关的二进制状态。如下图所示(在无焊面包板的左侧),一个瞬时开关或按钮在按下时闭合一个电路,并允许电流流过(也显示一个上拉电阻)。连接到该电路的数字引脚(通过图中的绿线)将返回LOW或0(表示该引脚上的电压处于LOW范围,在这种情况下为0V)或HIGH(表示该按钮被按下并且电压处于HIGH范围,在这种情况下是5V)。

       2.  模拟: 一个可变电阻器或电位器(如下面的电路板右侧所示)用于提供与旋转成比例的模拟电信号(例如立体声的音量旋钮)。如下图所示,当电位器连接到5V电源并转动轴时,输出将在0到5V之间变化,与旋转角度成比例。微控制器上的ADC解释电压并将其转换为数字值。例如,一个10位ADC将0V转换为值“0”,2.5V至“512”和5V至“1023”。因此,如果您怀疑您计划连接的设备将提供与其他值成比例的值(例如温度,力,位置),则可能需要模拟引脚。

机器人MCU2

                                                                   数字和模拟Arduino示例

       怎么编程?

       害怕编程微控制器变得老套。不像“旧时代”那样,通过先进的微控制器知识和几十行代码(更不用说连接到大型开发板的并行或串行电缆),利用现代集成开发环境编程微控制器非常简单(IDE),使用最新的语言,功能齐全的库,涵盖了所有最常见(不常见)的操作,以及一些现成的代码示例,以便让初学者开始使用。

       现在,微控制器可以用C,C ++,C#,Processing(C ++的变体),Java,Python,.Net和Basic等各种高级语言进行编程。当然,总是可以在汇编程序中编写它们,但是这个特权是为有更特殊要求的更高级的用户(和一些受虐待的东西)保留的。从这个意义上说,任何人都应该能够找到最适合自己的口味和以前的编程经验的编程语言。

       随着制造商创建图形编程环境,IDE变得更加简单。过去需要几行代码的序列被简化为可以连接到其他“图像”以形成代码的图像。例如,一个图像可能代表控制电机,用户只需将其放置在他/她想要的位置,并指定方向和转速。

       在硬件方面,微控制器开发板增加了便利性,并且随着时间的推移更容易使用。这些电路板通常将微控制器的所有有用引脚分开,并使其易于进行快速电路原型设计。他们还提供方便的USB电源和编程接口,插入任何现代电脑。

       对于那些不熟悉这个术语的人来说,开发板是一个电路板,为微控制器芯片提供所需的支持电子器件(如稳压器,振荡器,限流电阻和USB插头)。如果您不打算设计自己的支持电路,购买开发板比单纯获取单个微控制器芯片更可取。

       选择正确的微控制器

       1.  哪种微控制器最适合我的应用? 当然,制作机器人或电子工程一般不是一场流行的比赛,但是微控制器拥有大量的支持社区,或者已经成功应用于类似的(甚至是相同的)情况,可以大大简化您的设计阶段。这样,您可以从其他用户的经验和业余爱好者中受益。机器人制造商共同分享结果,代码,图片,视频和细节的成功甚至是失败是常见的。所有这些可用的材料以及从更有经验的用户那里获得建议的可能性都是非常有价值的。

       2.  它有机器人需要的特殊功能吗? 像微控制器一样流行,它必须能够执行机器人正常工作所需的所有特殊动作。某些特性对于所有的微控制器是共同的(例如,具有数字输入和输出,能够执行简单的数学运算,比较值和做出决定),而另一些则需要特定的硬件(例如ADC,PWM和通信协议支持)。内存和速度要求以及引脚数也应考虑在内。

       3.  我需要的附件是否可用于特定的微控制器? 如果您的机器人有特殊的要求,或者有一个对您的设计至关重要的特定附件或组件,选择一个兼容的微控制器显然是非常重要的。尽管大多数传感器和附件可以直接与许多微控制器连接,但是一些附件可以与特定的微控制器进行连接,甚至可以提供功能性或示例代码的开箱即用功能。


您尚未登录, 登入  或  注册  后可查看全部