使用输出设备时的重要事项 前面大家已经学习了如何在设备开发中利用传感器。物联网设备的使命就是把通过传感器采集到的信息跟云端的系统挂钩并处理这些信息,基于处理结果把用户和环境引向最佳的状态。在这一连串的反馈中,负责“把用户和环境引向最佳的状态”的正是“输出设备”。 在设备开发中,一个非常重要的设计观点就是要高效利用输出设备。以智能手机为例,大家会发现光一台智能手机就配备了扬声器、显示屏、振动装置、 LED 等各种各样的输出设备。 灵活应用输出设备时,需要遵循几个重要的步骤(图 3.40)。尤其重要的是刚刚说的传感器的设计,以及输出设备的设计,这二者有着密切的联系,因此它们的设计需要一并进行。
而且,在设计输出设备时,有一点很令开发者们头疼,那就是要如何评估开发出来的设备(图 3.41)。为了确认设备的可用性,需要明确实际测量的数值距离想要控制的状态量的目标数值有多远。除此之外,开发者还需要从多角度出发进行评估,例如设计性和环境适应性等。当然其中也包含很难直接数值化的指标。可以说,设备开发的真正难处就在于要怎么样提取这些模糊而又必要的条件。
要想恰当地评估设备,并把结果反馈到设计和开发上,就必须尽量迅速地反复进行原型设计(实际做做看),把用户的意见反映在产品上。 本节的重点在于让开发者体验“制作”这一工序上,我们将以 LED电机这些容易找到的设备为例,来说明如何应用输出设备。当然光用这两种设备并不能充分地涵盖解释所有的输出设备,但是在应用它们的过程中,通过利用其他的因素,应该也能获得不少有益的启示。那么,接下来我们就看一下处理输出设备的技巧。 驱动的作用 首先来看一下用微控制器控制输出设备时的必备结构。 微控制器的输入输出端口就跟其字面意思一样,既能够接收从传感器发来的信号,又能输出信号。这时有人可能要说了,“那赶紧把电机接到微控制器端口上试试”。难就难在,事情并不如各位想象得那样简单。因此,一般来说,微控制器的输出电压都是 3.3 V 或 5 V,电压很低,而且电流值也很低。只是让一个小 LED 灯闪来闪去倒是没什么问题,不过要是数量多了,或是必须驱动电机,这么一点输出肯定就不够了。 驱动正是解决这一问题的关键所在。驱动就好比是水管的水龙头,微控制器自身只负责控制水龙头的开或关,实际流入设备的电流跟微控制器输出的电流是两股电流,各位需要给流入设备的电流另外准备一个电源来供给电流。 最简单的驱动电路包括开关电路,它利用了一种叫作晶体管的电子器件,这种器件能控制电流。 晶体管有两种类型,分别是 NPN 型晶体管和 PNP 型晶体管。它们都具备发射极( Emitter,简称 E)、集电极( Collector,简称 C)和基极( Base,简称 B)这 3 种端子。因为它们类型不同,所以电流通过的路径也不同,这里以 NPN 型为例进行说明(图 3.42)。
当微控制器连接到基极,且微控制器的输出电压低( 0 V)的时候,集电极与发射极之间是没有电流流过的。反过来,把基极的输出电压调高,再让电流流过,电流就会从集电极流到发射极了。这个机制非常像开关,把电流加在基极上,就能控制集电极-发射极之间的开或关。这里有一点很重要:即使加在基极上的电流只有小幅度的变化,也会导致晶体管切换开关状态。把大型电源连接到集电极,就能在很大程度上放大并输出基极的电流。如图 3.42 所示,可以通过控制微控制器的输出来 令 LED 点亮或熄灭。 另外,有很多驱动也跟各自所连接的设备相搭配而成为了一种专用的 IC 芯片。例如,应用直流电机时使用的就是一种叫作电机驱动的 IC片(图 3.43)。按照控制输入端子给出的信号,电机驱动能够让连接在输出端口上的电机停止运行,或者让它正着转或反着转。其中还包括能够根据模拟信号控制旋转速度的芯片(下一章将会提到如何处理模拟信号)。
在这里,我们把用于控制微控制器的电源叫作控制电源,用于驱动电机的电源叫作驱动电源。使用电机驱动能够管理大型驱动电源,并轻松控制电机。
制作正确的电源 刚才我们提到了设备的电源特性,希望各位即使是在设计电路时,也要特别注意对电源的处理。 所有的 IC、传感器、电机和 LED 都有各自的额定电压和最大电流等参数,这些参数在产品的数据表上都有明确记载。一旦连接了大于等于额定电压的电源,就会导致设备异常发热或着火等。因此正确理解设备的规格,构建一个安全且稳定性高的电路是非常重要的。 针对这种情况,我们经常会用到一种叫三端稳压管的电子器件,它的作用是调整电源(图 3.44)。就像它的字面意思一样,它有 Vin/Vout/GND 这 3 个端子。三端稳压管在内部对输入的电压进行转换,输出一定强度的电压。不同的三端稳压管输出的电压分别有 3.3 V、 5 V、 12 V,最大电流也有规定,根据电路的结构来进行选择,就能轻松制作出一个稳定的电源。
使用三端稳压管时,有一点需要引起大家的注意,那就是发热。三端稳压管很容易形成高温状态,会影响其他元件。有些产品还有附带的散热板(用于散热的板状器件,装在三端稳压管上使用)。因为需要制作出一个散热性良好的结构,所以各位把三端稳压管组装到电路里时要多花些心思,比如使其远离其他的器件,或是在设备上开个散热孔等。 把数字信号转换成模拟信号 前面提到过“根据模拟信号控制旋转速度”。大家也在 3.4.5 节学过/D 转换了。这里我们要反着来,也就是说下面要讲的是如何把数字信号转换成模拟信号,即“数字 / 模拟( D/A)转换”中具有代表性的方法:脉冲宽度调制。 脉冲宽度调制( Pulse Width Modulation,简称 PWM)方式通过高速切换输出高 / 低电压来实现近似输出模拟信号,很多微控制器都采用了这个方式。 请想象有一台电机,这台电机只有在使用者按着开关不放的时候才会旋转,那么要如何控制这台电机的旋转速度呢? 最简单的方法是连续按动开关,调整按下去的时间。PWM 方式正是利用了这个原理。请各位再想象一下自己每隔 T 秒钟就按着开关 W时的输出电压的波形(图 3.45)。只有在按着开关的时候输出电压才会变高,其他时间输出电压都是低电压。这个起伏的波形就是“脉冲宽度调制”。在这里, T 是周期, W 是脉冲宽度。另外,表示高电压在周期中所占的时间的比率的(也就是 W/T)叫作占空比。 虽说要输出精确的模拟信号,就需要有 D/A 转换器这种特殊的转换器件,不过 PWM 信号本身也可以当作伪模拟信号来用。有很多微控制器都能输出任意占空比的 PWM 信号。通过改变占空比,就能够控制电机的旋转速度和 LED 的亮度,等等。
控制 LED 亮度的电路结构如图 3.46 所示。占空比越高,高电压时间也就越长, LED 就会越明亮。