用户工具

站点工具


ocrobot:kit:arduino_star_kit:tutorial013

差别

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

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
ocrobot:kit:arduino_star_kit:tutorial013 [2017/10/04 07:44] 弘毅ocrobot:kit:arduino_star_kit:tutorial013 [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +======使用外部基准源======
 +<WRAP center round info 100%>
 +这个例程展示用板载的3.3V输出来介绍一下外部基准的使用方法
 +</WRAP>
  
 +默认情况下我们会把MANGO的基准电压当成5V,也就是USB供电电压。但实际情况USB供电的电压不会是刚好5V的,不同的电脑,USB线长短不一都会使得实际输入控制板上的电压产生上下浮动。如果在一些精度要求高的场合这种误差就会变得不可接受,在这种情况下就可以使用外部基准。因专业级外部基准源都很贵,可以用板载的3.3V输出来介绍一下外部基准的使用方法。板载的3.3V输出是通过一颗LDO,MANGO的3.3V LDO输出误差为1%之内,用他来作为要求不高场合的基准源绰绰有余。
 +=====搭建电路=====
 +我们把下面的代码编译下载,然后把控制板上的3.3V接入AREF,然后再用两颗10K电阻做一个2.5V的分压电路来看看与不是用外部基准的差异。
 +把3.3V接入AREF,再用两颗10K电阻做一个2.5V的分压电路,然后把分压后的2.5V接入A0。
 +
 +{{:ocrobot:kit:arduino_star_kit:2014-5-18_23-43-03.png?nolink|}}
 +=====代码=====
 +<code cpp>
 +void setup() {
 + Serial.begin(9600);
 +  analogReference(EXTERNAL);
 +}
 +void loop()
 +{
 +  int sensorValue = analogRead(A0);
 +  Serial.println(sensorValue);
 +  delay(1);
 +}
 +
 +
 +</code>
 +
 +<WRAP center round info 100%>
 +analogReference(type)
 +
 +描述:
 +
 + 配置用于模拟输入的基准电压(即输入范围的最大值)。
 +选项有:
 + DEFAULT:默认5V(Ocrobot控制板为5V)或3.3伏特(Ocrobot控制板为3.3V)为基准电压。
 + INTERNAL:在ATmega168和ATmega328上以1.1V为基准电压,以及在ATmega8上以2.56V为基准电压(Ocrobot Mega无此选项)
 + INTERNAL1V1:以1.1V为基准电压(此选项仅针对Ocrobot Mega)
 + INTERNAL2V56:以2.56V为基准电压(此选项仅针对Ocrobot Mega)
 + EXTERNAL:以AREF引脚(0至5V)的电压作为基准电压。
 +参数:
 +
 + type:使用哪种参考类型(DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, 或者 EXTERNAL)。
 +返回:无
 +
 +注意事项:
 + 改变基准电压后,之前从analogRead()读取的数据可能不准确。
 +
 +警告:
 +
 +不要在AREF引脚上使用使用任何小于0V或超过5V的外部电压。如果你使用AREF引脚上的电压作为基准电压,你在调用analogRead()前必须设置参考类型为EXTERNAL。否则,你将会削短有效的基准电压(内部产生)和AREF引脚,这可能会损坏您Ocrobot控制板上的单片机。
 +另外,您可以在外部基准电压和AREF引脚之间连接一个5K电阻,使你可以在外部和内部基准电压之间切换。请注意,总阻值将会发生改变,因为AREF引脚内部有一个32K电阻。这两个电阻都有分压作用。所以,例如,如果输入2.5V的电压,最终在在AREF引脚上的电压将为2.5 * 32 /(32 + 5)= 2.2V。
 +</WRAP>
 +
 +=====效果参考=====
 +打开串口监视器,我们获得ADC数值为779左右。
 +
 +{{:ocrobot:kit:arduino_star_kit:2014-5-24_23-09-46.png?nolink|}}
 +
 +我们使用的外部基准源为3.3V,那么根据ADC数值,我们算出3.3/1024*780=2.51V,与5V分压电路设计输出的2.5V基本是一致的。
 +因为MANGO控制板上的3.3V LDO精度为1%,比USB供电精度要高不少,所以需求不高的场合如果需要相对精准的外部基准,可以直接只用MANGO上的3.3V。
 +{{youku>XNzE5ODIzMTk2?900x530}}
 +
 +[[ocrobot:kit:arduino_star_kit:main|返回上一级]]

Valid HTML5 Valid CSS Driven by DokuWiki