弘毅 发表于 2014-4-24 19:39:09

OCROBOT入门教程006--ADC功能介绍

本帖最后由 董董soul 于 2016-10-27 10:51 编辑

ADC学名模拟数字转换器(英语:Analog-to-digital converter)是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。简单地说就是可以把模拟电压转换为数字形式的设备。

在我们各种电子制作中,只要涉及到模拟量采集的都会用到ADC,采集电压就不用多说,ADC就是专业做这个的。采集电流我们也是通过采集电流通过特定电阻时所产生的电压,来推算出来通过的电流。

MANGO的ADC精度为10位,10位表示其精度是2的10次方,8位,16位等以此类推。

我们先介绍一下ADC使用中用到的函数
analogRead()
描述
从指定的模拟引脚读取数据值。 OCROBOT控制板包含一个6通道(Grape和Nano有8个通道,Mega有16个通道),10位模拟数字转换器。这意味着它将0至5伏特之间的输入电压映射到0至1023之间的整数值。这将产生读数之间的关系:5伏特/ 1024单位,或0.0049伏特(4.9 mV)每单位。输入范围和精度可以使用analogReference()改变。 它需要大约100微秒(0.0001)来读取模拟输入,所以最大的扫描速度约每秒10000次。
语法
analogRead(PIN)
参数
PIN:输入引脚(大部分控制板从A0到A5,Mini和Nano从A0到A7,Mega从A0到A15)读取数值
返回
从0到1023的整数值
上节课我们学习了串口输出,这节课我们就就使用串口输出ADC数值,把A0口获取的ADC数值通过串口输出到电脑上进行显示。

MANGO的ADC为10位,10位所表示2的十次方。也就是1024,因为最小数值为0,所以输出范围为0~1023。

代码如下

void setup() {
// 初始化串口,设置波特率为9600
Serial.begin(9600);
}


void loop() {
// 从A0口获取模拟输入信息,放入变量sensorValue
int sensorValue = analogRead(A0);
// 串口输出变量sensorValue
Serial.println(sensorValue);
delay(200);      // 延时200毫秒
}
我们把代码下载好以后,打开串口监视器首先让他运行一下,然后把5V 3.3V GND接入A0,看看返回什么数值。连接方法如下图。







http://player.youku.com/player.php/sid/XNzEwNTgzNjI0/v.swf

课后练习:
学习了怎样通过A0口获取ADC数值,我们接一根导线在A1口,通过A1口获取ADC数值,看看在悬空,用手触摸情况下读数有什么变化,想想为什么会这样。

Friday 发表于 2014-7-25 22:31:12

请问这个模拟图是用什么软件画的啊?

弘毅 发表于 2014-7-25 22:32:53

Friday 发表于 2014-7-25 22:31 static/image/common/back.gif
请问这个模拟图是用什么软件画的啊?

用frizting

Friday 发表于 2014-7-25 22:34:27

弘毅 发表于 2014-7-25 22:32 static/image/common/back.gif
用frizting

哦。。谢谢

geekzsq 发表于 2014-11-20 12:00:14

为什么用手触摸情况下读数会一会儿1023,一会儿0?

dongbao.wang 发表于 2016-3-2 18:02:03

本帖最后由 dongbao.wang 于 2016-3-3 11:48 编辑

弘毅 发表于 2014-7-25 22:32 static/image/common/back.gif
用frizting

下载了Frizting,上手很容易。
有个问题,帖子中的这个MANGO是自己画的吗?我如何能把它导入Frizting的arduino元件库?
库里是UNO(Rev3),看起来远没有这个完整。

dongbao.wang 发表于 2016-3-3 11:47:24

本帖最后由 dongbao.wang 于 2016-3-3 11:49 编辑

弘毅 发表于 2014-7-25 22:32 static/image/common/back.gif
用frizting

请问用Frizting还能实现仿真模拟吗?

Soul110 发表于 2016-3-3 15:27:48

dongbao.wang 发表于 2016-3-3 11:47 static/image/common/back.gif
请问用Frizting还能实现仿真模拟吗?

不可以哦!
页: [1]
查看完整版本: OCROBOT入门教程006--ADC功能介绍