提升arduino采样速度

普通的 Arduino UNO 的采样速度

基准电压可通过函数 analogReference() 或 ADMUX 寄存器中的 REFS[1:0] 位进行设置。

void setup() {Serial.begin(9600);analogReference(INTERNAL); //调用板载1.1V基准源
}void loop() {int i;float voltage;int sensorValue;unsigned long elsp=millis();for (i=0;i<10000;i++){// read the input on analog pin 0:sensorValue = analogRead(A0);}  Serial.println(millis()-elsp);delay(10000);
}

运行结果是 1057 左右,就是说采样10000次用时1.057s,采样频率大约是 9,460.73Hz (次/秒)。

提高采样速度


#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endifvoid setup() {Serial.begin(9600);analogReference(INTERNAL); //调用板载1.1V基准源// set prescale to 16
sbi(ADCSRA,ADPS2) ;
cbi(ADCSRA,ADPS1) ;
cbi(ADCSRA,ADPS0) ;
}void loop() {int i;float voltage;int sensorValue;unsigned long elsp=millis();for (i=0;i<10000;i++){// read the input on analog pin 0:sensorValue = analogRead(A0);}  Serial.println(millis()-elsp);delay(10000);
}

运行输出结果在 148 左右,就是说采样10000次用时0.148s,采样频率大约是 67,567.56Hz (次/秒)。

区别

对ADC预分频寄存器进行操作了

// 用于设置和清除寄存器位的定义sfr:寄存器,bit:寄存器的某个位
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

原理上来说Arduino 的 ADC 是用一种逐次逼近比较的方法来进行ADC转换的。通俗的说就是内部有一个比较器,每次内部升高一个电压和外部指定的Pin进行比较,根据大于小于来判定外部指定脚上的电压。

哪个参考?

要测量模拟信号,必须有一个电压电平与之进行比较。该电压称为基准电压源。在Arduino的ATMEGA328中,该参考电压也是可以测量的最大电压。电压始终相对于地进行测量。Arduino有三个基准电压选项:连接到数字5 V电源线的AVcc,内部1.1 V和使用外部基准电压的选项。由于输入电压的测量是相对于基准电压进行的,因此基准电压的波动将影响结果。

基准电压可通过函数 analogReference() 或 ADMUX 寄存器中的 REFS[1:0] 位进行设置。

图4:测量半桥电阻时使用5 V基准电压源。

图5:测量外部电压时,使用内部1.1 V或外部基准电压源。

AVcc 基准电压源

AVcc是默认基准电压,仅在测量直接依赖于电源电压的电压时才有用。在这种情况下,必须如图4所示测量半电阻电桥的电压。如果由于某种原因电源电压下降,则两个电阻结上的电压将成比例下降。因为现在基准电压和输入电压成比例变化,ADC结果将保持不变。

内部1.1 V基准电压源

使用内部1.1 V基准电压源精确测量外部电压。1.1 V基准电压源更稳定,几乎不依赖于电源电压或温度。因此,可以进行绝对测量。图5中的示例使用1.1 V基准电压源和10:1电阻分压器来测量0至11 V之间的外部电压。

结束

遍阅人情,始识疏狂之足贵;
备尝世味,方知淡泊之为真。 – 洪应明 《菜根谭》

arduino——提升ADC采样速度相关推荐

  1. adc采样的值跳动_嵌入式er必知:模数采样知多少(最全总结)

    [导读]  生活环境周围信号万万千,对于一个嵌入式er.我们利用技术去了解世界.改变世界.而一个产品要与外界物理环境打交道,一个至关重要的触角就是采样真实模拟世界的信号,翻译成芯片可理解的数字信号,进 ...

  2. Arduino RP2040 读取ADC采样数据

    Arduino RP2040 读取ADC采样数据

  3. 【 FPGA 】使用状态机设计一个ADC采样控制电路

    以ADC0809为例,设计一个ADC采样控制电路,采用有限状态机的方式. 传统的ADC采样控制的方法是用单片机控制,单片机控制ADC采样具有编程简单,控制灵活的优点,但是采样速度慢,CPU控制的低速极 ...

  4. cubemx 配置多通道ADC进行ADC采样

    cubemx 配置多通道ADC进行ADC采样 AD的基础知识 AD很复杂,其实也不复杂,因为我们用的不多. AD:模拟量转换数字量(模拟信号转换数字信号). ADC:模拟量转数字量的转换器. 为什么需 ...

  5. STM32 ADC采样

    目录 1.基础概念 2.原理:ADC采样过程分为四步:采样.保持.量化.编码. 3.采样定理 4.采样保持放大器(SHA) 5.ADC电压值转换 6.ADC轮询采样 1.基础概念 ADC 全称:Ana ...

  6. NeurIPS 2022 | Stable Diffusion采样速度翻倍!清华提出扩散模型高效求解器

    ©作者 | 机器之心编辑部 来源 | 机器之心 清华大学计算机系朱军教授带领的 TSAIL 团队提出 DPM-Solver(NeurIPS 2022 Oral,约前 1.7%)和 DPM-Solver ...

  7. STM32多通道ADC采样获取MCP9701模拟温度传感器温度输出数据

    STM32多通道ADC采样获取MCP9701模拟温度传感器温度输出数据 市面上常见的模拟温度传感器有TI的LM35系列,然后使用中并不简便.MCP9701是Microchip公司推出的相似的模拟温度传 ...

  8. 解读ADC采样芯片(EV10AQ190A)的工作模式(单通道模式)

    有了上两篇博文的铺垫,双通道模式以及四通道模式,单通道模式也就很容易理解了,并且我已经想好了下一篇博文要写什么了. 直接看框架图吧: 直接说重点,任意一个输入端口输入的模拟信号同时进入ADC芯片的四个 ...

  9. 解读ADC采样芯片(EV10AQ190A)的工作模式(四通道模式)

    上篇博文讲了EV10AQ190A这种ADC芯片的工作模式:双通道模式 我十分重视这些内容,因为这是我认识硬件工作模式的起点,当然这也只是理论上的内容,实际采样过程中也许会遇到这样那样的问题,那就需要自 ...

最新文章

  1. html5 Web Workers
  2. 群友:事务中的异常不也抛出了,为什么没catch到而回滚?
  3. MySQL 性能优化及常用命令
  4. Java的3大框架都学习什么呢?
  5. Zookeeper 安装和配置---学习一
  6. 三相pmsm矢量控制仿真模型_学术简报|永磁同步电机无速度传感器控制离散化方法研究...
  7. HDU - 6267 (概论/找规律/递推)
  8. WebSocket API 学习笔记
  9. libcrypto yum 安装_CentOS升级OpenSSL至OpenSSL 1.1.0f版本其中有遇到libcrypto.so的问题...
  10. 西门子real是什么数据类型_西门子PLC数据类型
  11. 南开大学2019年高等代数考研试题不全
  12. LeetCode/LintCode 题解丨一周爆刷字符串:独特的摩尔斯编码
  13. ubuntu插件配置
  14. jtag和swd区别,该用哪个?
  15. vue : 无法加载文件 C:\Users\Lenovo\AppData\Roaming\npm\vue.ps1。...无法在当前系统上运行该脚本。
  16. 定义一个复数类Complex
  17. [论文笔记]Three-Dimensional Resource Allocation in D2D-Based V2V Communication
  18. 模电——PN结及其特性2
  19. 电商企业如何选择ERP管理软件
  20. 正大国际期货主账户:美债实际利率三季度或重回升势

热门文章

  1. 马斯克晒出Twitter系统架构图
  2. 第一行代码Java课后习题学习
  3. Bootstrap之导航
  4. IDEA社区版怎么配置Spring boot项目?
  5. 运放输入偏置电流方向_运放参数的详细解释和分析-part1输入偏置电流和输入-世纪电源网.PDF...
  6. 人物建模之影视建模与游戏建模的差异,你都知道吗?
  7. Business Study
  8. html5js图片滚动,基于滚动的超酷js图片动画特效
  9. 【干货】安防监控工程选择POE交换机的五大优势总结!
  10. c语言机票座位预定系统_C++实现机票预订系统