差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
mp_temp_gauge [2021/10/04 23:21]
gongyusu [2.读取电位器]
mp_temp_gauge [2022/02/26 21:29] (当前版本)
gongyusu [5. 用PWM使LED衰减]
行 1: 行 1:
 ## 测量温度 ## 测量温度
-使用 Raspberry Pi Pico 的内置ADC转换模拟输入,并读取其内部温度传感器+使用[[rpi_pico|Raspberry Pi Pico]]的内置[[ADC]]转换模拟输入,并读取其内部[[temp_sensor|温度传感器]]
  
-在前面的章节中,我们一直在使用Raspberry Pi Pico上的数字输入。数字输入打开或关闭,二进制状态当按下按钮开关时,它会将引脚从低开改变;当被动红外传感器检测到运动时,它也一样。 +在前面的章节中,我们一直在使用Raspberry Pi Pico上的数字输入。数字输入只有打开(on)或关闭(off)两种状态当按下按钮开关时,它会将引脚从低)到改变;当被动红外传感器检测到运动时,它也一样。
-不过,我们的Pico可以接受另一种类型的输入信号:模拟输入。而数字是只有打开或关闭,模拟信号可以是从完全关闭到完全打开的任何值——一系列可能的值。模拟输入用于从音量控制到气体、湿度和温度传感器的所有内容,它们通过称为模数转换器 (ADC) 的硬件工作+
  
-在本章中,我们将学习如何在Pico上使用ADC ​以及如何利用其内部温度传感器来构建数据记录热量测量小工具我们还将学习一种创建类似模拟输出的技术。+不过,我们的[[rpi_pico|Pico]]可以接受另一种类型的输入信号:模拟输入,​ 数字信号是只有打开或关闭两种状态,而模拟信号可以是从完全关闭到完全打开的任何值 - 一系列可能的值。模拟输入用于从音量控制到气体、湿度和温度传感器的所有内容,它们通过称为[[adc|模数转换器 (ADC)]]的硬件工作。 
 + 
 +在本章中,我们将学习如何在[[rpi_pico|Pico]]上使用[[ADC]],以及如何利用其内部[[temp_sensor|温度传感器]]来构建数据记录热量测量小工具我们还将学习一种创建类似模拟输出的技术。
  
 ### 1. 模数转换器 ### 1. 模数转换器
-Raspberry Pi Pico的RP2040微控制器是一种数字设备,就像所有主流微控制器一样它由数千个晶体管、类似开关的微型设备组成,这些设备可以打开或关闭。因此,我们的Pico无法真正理解模拟信号 - 可以是完全关闭和完全打开之间的任何频谱 ​- 不依赖额外的硬件:模数转换器(ADC )。+Raspberry Pi Pico的[[RP2040]]微控制器是一种数字设备,就像所有主流微控制器一样它由数千个晶体管、类似开关的微型设备组成,这些设备可以打开或关闭。因此,我们的Pico无法真正理解模拟信号 - 可以是完全关闭和完全打开之间的任何数值 ​- 不依赖额外的硬件:模数转换器(ADC )。
  
-顾名思义,模数转换器将模拟信号转换为数字信号。无论您仔细观察,您都会在Pico上ADC:它内置于RP2040本身中。许多微控制器都有自己的ADC,就像RP2040一样,而那些没有的可以使用连接到一个或多个数字输入的外部ADC。+顾名思义,[[adc|模数转换器]]将模拟信号转换为数字信号。不Pico的ADC在板找不,因为内置于[[RP2040]]芯片内部的,其实许多[[mcu|微控制器]]都有自己的[[ADC]],就像[[RP2040]]一样,而那些没有的可以使用连接到一个或多个数字输入的外部ADC 
 + 
 +[[ADC]]有几个关键的技术指标: 
 +  * 以数字位为单位的分辨率; 
 +  * 以sps为单位的转换率 
 +  * 通道数 - 它可以同时接受和转换多少路模拟信号; 
 + 
 +[[rpi_pico|Pico]]中的[[ADC]]具有12位的分辨率,这意味着它能够将输入端的模拟信号转换为从0到4095的数字信号,尽管在MicroPython中的处理范围为16位 - 从0到65,​535,因此它的行为与其它 MicroPython微控制器上的ADC相同。RP2040具有4个连接到GPIO引脚的通道:GP26、GP27、GP28和GP29,对应于模拟通道0、1、2和3,它们也被称为GP26_ADC0、GP27_ADC1、GP28_ADC2、GP29_ADC3。其实还有第5个ADC通道,它连接到RP2040内置温度传感器,在树莓派Pico核心板/​硬禾Pico核心板上GP26、GP27和GP28被引出到外扩的管脚上,GP29则被用于监测板上电压,不能用户扩展使用。 
 + 
 +{{ :​pico_adc.png |}}<WRAP centeralign>​树莓派RP2040控制器内部的ADC </​WRAP>​
  
-ADC有两个关键特性: 
-  * 以数字位为单位的分辨率 
-  * 通道数,或者它可以同时接受和转换多少模拟信号。 
-Pico中的ADC具有12位的分辨率,这意味着它可以将模拟信号转换为数字信号作为范围从0到4095的数字——尽管这是在MicroPython中处理的,转换为范围从0 到16位的数字65,​535,因此它的行为与其他 MicroPython微控制器上的ADC相同。它具有三个连接到GPIO引脚的通道:GP26、GP27 和 GP28,对于模拟通道 0、1 和 2,它们也称为GP26_ADC0、GP27_ADC1 和GP28_ADC2。还有第四个ADC通道,它连接到RP2040内置温度传感器;您将在本章后面找到更多相关信息。 
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
 **为什么是 65,535?** **为什么是 65,535?**
  
-乍一看,数字“65,​535”看起来很奇怪——为什么会这样,为什么不是简单的0-100? 答案与的Pico 在进制数系统上工作的事实有关,其中一个数字的唯一可能值是0或1一个16位二进制数被制作 +乍一看,数字“65,​535”看起来很奇怪为什么会这样,为什么不是简单的0-100? 答案与我们的Pico采用2进制数系统有关,一个1位数字的唯一可能值是0或1一个16位二进制数 
-最多16位,最大可能值是16个:1111111111111111如果将其转换回十进制数,人类使用的0-9计数系统,会得到65,​535。+最多16位,最大可能值是16个:1111111111111111如果将其转换回十进制数,也就是我们人类用的十进制计数系统,会得到65,​535。
 </​WRAP>​ </​WRAP>​
  
 ### 2.读取电位器 ### 2.读取电位器
-连接到Pico模数转换器的每个引脚可以用作简单的数字输入输出;要将其用作模拟输入,需要一个模拟信号——您可以使用电位计轻松制作一个。+连接到Pico模数转换器的每个引脚可以用作简单的数字输入输出,也可以将其用作模拟输入,这时候我们需要一个模拟信号,比较简单的方式就是[[potentiometer|电位器/​电位计]]制作一个。
  
-有多种类型的电位器可供使用:,例如在第7章中使用的HC-SR501被动红外传感器上的电位器,设计为可以用螺丝刀调节;其的通常用于音量控制和其输入,有旋钮或滑块。 最常见的类型有一个小的通常是塑料的,从顶部或前面伸出的旋钮这被称为旋转电位+可以使用的电位多种,例如我们在第7章中使用的HC-SR501被动红外传感器上的电位器,它被设计为可以用螺丝刀调节;其的通常用于音量控制和其输入可以用旋钮或滑块来调节 
 +最常见的类型有一个小的通常是塑料的,从顶部或前面伸出的旋钮来调节,种电位计被称为旋转电位 
 + 
 +{{ :​potentiometer.jpg |}}<WRAP centeralign>​ 可调电位计 </​WRAP>​
  
 打开Thonny并开始一个新程序: 打开Thonny并开始一个新程序:
行 35: 行 44:
 </​code>​ </​code>​
  
-与数字通用输入/​输出 (GPIO) 引脚一样,模拟输入引脚由machine库处理——就像数字引脚一样,在使用之前需要设置它们。 继续的程序:+与数字通用输入/​输出 ([[GPIO]]) 引脚一样,模拟输入引脚由machine库处理就像数字引脚一样,在使用之前需要设置它们。 继续我们的程序: 
 <code python> <code python>
 potentiometer = machine.ADC(26) potentiometer = machine.ADC(26)
 </​code>​ </​code>​
  
-这将引脚 GP26_ADC0 配置为模数转换器上的第一个通道ADC0。+这将引脚GP26_ADC0配置为模数转换器上的第一个通道ADC0。
 要从引脚读取,请设置一个循环: 要从引脚读取,请设置一个循环:
 +
 <code python> <code python>
 while True:  while True: 
行 47: 行 58:
     utime.sleep(2)     utime.sleep(2)
 </​code>​ </​code>​
-在这个循环中,读取引脚的值并将其打印在一行上:这是将值读入变量然后打印变量的更紧凑的替代方法,但仅当您不想这样做时才有效,​除了打印之外的任何阅读 - 这正是该程序目前所需要的。 
  
-读取模拟输入几乎与读取数字输入相同除了一件事:读取数字输入时使用read(),但使用read_u16()读取该模拟输入。最后一部分u16只是警告您,您收到个16位无符号整数,即0到 65,​535之间的整数,而不是二进制0 或1结果+在这个循环中,读取引脚的值并其打印在行上
  
-单击运行图标并将您的程序保存为Potentiometer.py。观看Shell:您会看到您的程序打印出大量数字,可能超过60,​000。尝试将电位计直朝一个方向旋转根据您转动旋钮的方向和您在电路中使用的外腿数字会上升或下降。反过来:值将向相反的方向变化但是,无论您朝哪个方向转动,它都不会接近0。那是因为有两条腿连接,电位计充当称为可变电阻器或变阻器的组件。压敏电阻是一个可以改变值的电阻器——在10kΩ电情况下介于0Ω和10,000Ω之间。电阻越高,来自3V3引脚电压到达您的模拟输入端的电压就越低——因此字会下降。电阻越低到达您的模拟输入的电压就越大——因此数字会增加+读取模拟输入几乎与读取数字输入相同除了件事读取数字输入时使用read()但使用read_u16()读取模拟输入最后一部分u16只是告诉我们将收到一个16无符号整数0到65,535之间的数,而不是二进制0或1结果
  
-电位计的工作原理是在内部有一个导电条,连接到两个外部引脚,以及一个雨刷或刷子连接到内部引脚(图 8-2)。当您转动旋钮时,雨刷器会靠近条带的一端远离另一端。雨刮器离您连接到Pico 3V3 引脚条带末端越远,电阻越高;离得越近,阻力越小+单击运行将我们程序保存为Potentiometer.py
  
-压敏电阻是非常有用的组件,但有一个缺点注意到,无论您将旋钮向任一方向多远无法获得0值——或接近它的任何值。这是因为10kΩ阻器的强度不足以将3V3引脚的输出降至0V。您以寻找具有更高最大电阻的更大电位者您可以简单地将现有电位连接起来作为分压器。+观看Shell部分我们程序打印出大量数字可能超过60,​000。尝试电位计一直朝一个方向旋转:根据我们转动旋钮的方和我们在电路中使用的外部引脚,数字会上升或下降;反过来:该值将向相反的方向变化。但是,无论我们朝哪个方向转不会接近0。这是因为只有两条腿连接,位计充当称为电阻器或变阻
  
-### 3. 作为分的电+敏电阻是一个可以改变值的电, 在10kΩ电位计的情况下,介于0Ω和10,​000Ω之间。电阻越高,来自3V3引脚的电压到达我们的模拟输入端的电压就越低——因此数字会下降。电阻越低,到达我们的模拟输入的电压就越大,因此数字会增加。
  
 +电位计的工作原理是在内部有一个导电条,连接到两个外部引脚,以及一个雨刷或刷子连接到内部引脚。当我们转动旋钮时,雨刷器会靠近条带的一端而远离另一端。雨刮器离我们连接到Pico 3V3引脚的条带末端越远,电阻越高;离得越近,电阻越小。
 +{{ :​potentiometerinternal.jpg |}}<WRAP centeralign>​ 电位计内部的结构</​WRAP>​
 +
 +压敏电阻是非常有用的器件,但有一个缺点:无论我们将旋钮向任一方向旋转多远,都无法获得0值, 或接近它的任何值。这是因为10kΩ电阻器的强度不足以将3V3引脚的输出降至0V。我们可以寻找具有更高最大电阻的更大电位器,或者可以简单地将现有电位器连接起来作为分压器。
 +
 +### 3. 作为分压器的电位器
 电位器上未使用的引脚不是用来展示的:在电路中添加到该引脚的连接完全改变了电位器的工作方式。单击停止图标以停止您的程序,并抓住两根公对公 (M2M) 跳线。如图 8-3 所示,使用一个将电位计未使用的引脚连接到面包板的接地轨。取另一个并将接地轨连接到Pico上的GND引脚。 电位器上未使用的引脚不是用来展示的:在电路中添加到该引脚的连接完全改变了电位器的工作方式。单击停止图标以停止您的程序,并抓住两根公对公 (M2M) 跳线。如图 8-3 所示,使用一个将电位计未使用的引脚连接到面包板的接地轨。取另一个并将接地轨连接到Pico上的GND引脚。
  
行 165: 行 181:
 单击运行图标并将您的程序保存为Temperature.py。 观察外壳区域:您会看到打印的数字代表传感器报告的温度(以摄氏度为单位)。 单击运行图标并将您的程序保存为Temperature.py。 观察外壳区域:您会看到打印的数字代表传感器报告的温度(以摄氏度为单位)。
 <WRAP center round tip 60%> <WRAP center round tip 60%>
-**热和 RP2040**+**热和RP2040**
  
-如果你有一个传统的温度计,你可能会看到你的Pico报告的数字要高一点那是因为温度传感器位于 ​Pico的RP2040芯片内部,它正在忙于运行的程序。 当微控制器通电时,它会自行产生热量——而这些热量足以扭曲结果。 对于这样一个简单的程序,偏斜可能不会太高; 如果您的程序进行了大量复杂的计算,则偏斜可能会更高。+如果你有一个传统的[[temp_sensor|温度计]],你可能会看到你的Pico测量到的数字要高一点那是因为我们用到的温度传感器是嵌在Pico的处理器[[RP2040]]内部,它正在忙于运行我们给它编写好的程序。 当微控制器通电运行程序时,它会自行产生热量而这些热量足以让测量到的结果有偏差,对于这样一个简单的程序,偏斜可能不会太高; 如果您的程序进行了大量复杂的计算,则偏斜可能会更高。
 </​WRAP>​ </​WRAP>​
  
-尝试将指尖轻轻按在Pico中间最大的黑色芯片RP2040上,然后将其握在那里:手指的温暖应该会使芯片变暖,温度会升高。将手指从芯片上移开,温度会再次下降。 +尝试将指尖轻轻按在Pico中间最大的黑色芯片RP2040上,保持一段时间,手指的温暖应该会使芯片变暖,温度会升高。将手指从芯片上移开,温度会再次下降。 
-恭喜 - 已经将 Pico 变成了温度计!+ 
 +恭喜 - 我们已经将Pico变成了温度计!
  
 ### 5. 用PWM使LED衰减 ### 5. 用PWM使LED衰减
-Pico中的模数转换器仅以一种方式工作:它将模拟信号转换为微控制器可以理解的数字信号。如果走另一条路,让你的数字微控制器创建一个模拟输出,通常需要一个数模转换器 (DAC)——有一种方法可以“伪造”模拟信号,使用一种叫做脉宽调制或PWM。 +[[rpi_pico|Pico]]中的[[adc|模数转换器]]仅以一种方式工作:它将模拟信号转换为微控制器可以理解的数字信号。如果我们通过数字微控制器得到一个模拟输出,我们通常需要一个[[dac|数模转换器(DAC)]], 一般的微控制器中没有内置的DAC,不过有一种方法可以“伪造”模拟信号,使用一种叫做[[pwm|脉宽调制或PWM]]的技术。 
-微控制器的数字输出只能打开或关闭,0 或 1打开和关闭数字输出称为脉冲,通过改变引脚打开和关闭的速度,可以改变或调制这些输出的宽度脉冲——因此称为“脉宽调制”。 + 
-Pico 上的每个 GPIO 引脚都能够进行脉宽调制,但微控制器的脉宽调制块由八个切片组成,每个切片有两个输出。看图 8-4:你会看到每个引脚都有一个字母和一个数字。数字代表连接到该引脚的 PWM 片;字母表示使用切片的哪个输出。+[[mcu|微控制器]]的数字输出只能0或1打开和关闭数字输出称为脉冲,通过改变引脚打开和关闭的速度,我们可以改变或调制这些输出的脉冲宽度, ​因此称为“脉宽调制”。 
 + 
 +Pico上的每个[[GPIO]]引脚都能够进行脉宽调制,但RP2040微控制器的脉宽调制块由八个切片(slice)组成,每个切片有两个输出。看图 8-4:你会看到每个引脚都有一个字母和一个数字。数字代表连接到该引脚的PWM片;字母表示使用切片的哪个输出。 
 + 
 +{{ :​pico_pinout.png?​700 |}} <WRAP centeralign>​树莓派官方Pico模块的管脚定义 </​WRAP>​ 
 + 
 +{{ :​rp2040_pwm.png |}} 
 <WRAP center round tip 60%> <WRAP center round tip 60%>
 **PWM 冲突** **PWM 冲突**
  
-如果不小心使用了两次相同的 PWM 输出,您就会知道,因为每次更改一个引脚上的 PWM 值时,它也会影响冲突的引脚。 如果发生这种情况,请查看图 ​8-4 中的引脚排列图和的电路,并找到没有的 PWM 输出还没用+如果我们不小心使用了两次相同的PWM输出,每次更改一个引脚上的PWM值时,它也会影响冲突的引脚。 如果发生这种情况,请查看Pico管脚图中的引脚排列图和我们的电路,并找到我们还没有的PWM输出。
 </​WRAP>​ </​WRAP>​
  
-如果这听起来令人困惑,请不要担心:这意味着需要确保跟踪正在使用的 PWM 切片和输出,确保仅连接到带有字母和数字组合的引脚” t 已经使用。 如果在 GP0 针脚上使用 PWM_A[0] 并在针脚 GP1 上使用 PWM_B[0],则一切正常,如果脚 GP2 上添加 PWM_A[1],则将继续工作; ​但是,如果尝试在引脚 GP0 和引脚 GP16 上使用 PWM 通道,则会遇到问题,因为它们都连接到 PWM_A[0]。 +是不是听起来很晕?不要担心:这意味着我们需要确保跟踪正在使用的PWM切片和输出,确保仅连接到带有字母和数字组合的引脚已经使用。如果我们在GP0针脚上使用PWM_A[0]并在针脚GP1上使用PWM_B[0],则一切正常,如果我们脚GP2上添加PWM_A[1],是没有问题的。但是,如果我们尝试在引脚GP0和引脚GP16上使用PWM通道,则会遇到问题,因为它们在芯片的内部都连接到PWM_A[0]。 
-取一个 LED 和一个 330 Ω 的限流电阻,将它们放入面包板中,如图 8-5 所示。 将 LED 的较长脚(阳极)通过 330 Ω 电阻连接到 GP15 引脚,并将较短的脚连接到 Pico 的接地引脚。 + 
-单击 Thonny 工具栏下方的选项卡,返回的第一个程序; 如果已经关闭它,请单击“打开”图标并从的 Pico 加载 Potentiometer.py。 ​在您将电位计设置为模数输入的位置下方,键入:+单击Thonny工具栏下方的选项卡,返回我们的第一个程序; 
 + 
 +如果已经关闭它,请单击“打开”图标并从我们的Pico加载Potentiometer.py。 ​ 
 + 
 +将电位计设置为模数输入的位置下方,键入:
  
 <code python> <code python>
行 191: 行 219:
 </​code>​ </​code>​
  
-这会在引脚 GP15 上创建一个 LED 对象,但有一个区别:它激活引脚上的脉宽调制输出,通道 B[7]——第八个切片的第二个输出,从零开始计数。 +这会在引脚GP15上创建一个LED对象,但有一个区别:它激活引脚上的脉宽调制输出,通道B[7]——第八个切片的第二个输出,从零开始计数。 
-还需要设置频率,可以更改以控制或调制脉冲宽度的两个值之一。 在读数下方立即添加另一行:+ 
 +我们还需要设置PWM的频率,是我们可以更改的,用以控制或调制脉冲宽度的两个值之一。 在读数下方立即添加另一行:
  
 <code python> <code python>
行 198: 行 227:
 </​code>​ </​code>​
  
-这将设置频率为 1000 赫兹 - 每秒一千个周期。 接下来,转到程序的底部并在添加以下内容之前删除 print(voltage) 和 utime.sleep(2) 行,记住将其缩进个空格,使其成为循环中嵌套代码的一部分:+这将设置频率为1000赫兹 - 每秒一千个周期。 接下来,转到程序的底部并在添加以下内容之前删除print(voltage)和utime.sleep(2)行,记住将其缩进4个空格,使其成为循环中嵌套代码的一部分:
  
 <code python> <code python>
行 204: 行 233:
 </​code>​ </​code>​
  
-这条线从连接到电位计的模拟输入中获取原始读数,然后将其用作脉宽调制的第二个方面:占空比。占空比控制引脚的输出:0% 的占空比使引脚在每秒 1000 个脉冲时关闭,并有效地关闭引脚; 100% 的占空比使引脚在每秒 1000 个脉冲时都处于开启状态,并且在功能上等同于仅将引脚作为固定数字输出开启;占空比为 50% 时,引脚打开一半脉冲,关闭一半脉冲。 +这条线从连接到电位计的模拟输入中获取原始读数,然后将其用作脉宽调制的第二个参数:占空比。占空比控制引脚的输出:0%的占空比使引脚在每秒1000个脉冲时关闭,并有效地关闭引脚; 100%的占空比使引脚在每秒1000个脉冲时都处于开启状态,并且在功能上等同于仅将引脚作为固定数字输出开启;占空比为50%时,引脚打开一半脉冲,关闭一半脉冲。 
-为了能够正确控制 LED 的亮度,需要将模拟输入的值映射到 PWM 片可以理解的范围。执行此操作的最佳方法是告诉 MicroPython ​将占空比值作为无符号 16 位整数传递,与从 Pico 的模拟输入引脚接收到的数字格式相同。这是通过使用 led.duty_u16 实现的。 + 
-您完成的程序将如下所示:+为了能够正确控制[[LED]]的亮度,我们需要将模拟输入的值映射到PWM片可以理解的范围。执行此操作的最佳方法是告诉[[MicroPython]]我们将占空比值作为无符号16位整数传递,与我们[[rpi_pico|Pico]]的模拟输入引脚接收到的数字格式相同。这是通过使用led.duty_u16实现的。 
 + 
 +最后的程序将如下所示:
  
 <code python> <code python>
 import machine ​ import machine ​
 import utime import utime
-potentiometer = machine.ADC(26)  +potentiometer = machine.ADC(28)  
-led = machine.PWM(machine.Pin(15)) +led = machine.PWM(machine.Pin(25)) 
 led.freq(1000) led.freq(1000)
 while True:  while True: 
行 218: 行 249:
 </​code>​ </​code>​
  
-单击“运行”图标并尝试将电位计一直转动到一个方向,然后再转动到另一个方向。 观察 LED:这一次,除非使用对数电位器,否则会看到 LED 的亮度从电位器旋钮限制的一端完全关闭到另一端完全点亮。 +单击“运行”图标并尝试将电位计一直转动到一个方向,然后再转动到另一个方向。 ​ 
-恭喜:您不仅掌握了模拟输入,而且现在可以使用脉宽调制创建等效于模拟输出的内容!+ 
 +观察LED:这一次,除非我们使用对数电位器,否则我们会看到LED的亮度从电位器旋钮限制的一端完全关闭到另一端完全点亮。 
 + 
 +到此,我们不仅掌握了模拟输入,而且现在可以使用脉宽调制创建等效于模拟输出的内容!
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
 **挑战:定制** **挑战:定制**
  
-您能否结合您的两个程序,并通过车载温度传感器的温度读数来控制 LED 的亮度? 您还记得您的 Pico 有多少个模拟输入吗? PWM输出呢? 尝试在 Pico 中添加另一个模拟传感器——比如光敏电阻器 (LDR)、气体传感器或气压计——并让你的程序读取它而不是电位计。+您能否结合您的两个程序,并通过车载温度传感器的温度读数来控制LED的亮度? 您还记得您的Pico有多少个模拟输入吗? PWM输出呢? 尝试在Pico中添加另一个模拟传感器——比如光敏电阻器(LDR)、气体传感器或气压计——并让你的程序读取它而不是电位计。 
 </​WRAP>​ </​WRAP>​