Arduino UNO驱动ADS1220模数转换模块

ops/2024/11/24 20:39:07/

文章目录

  • 简介
  • ADS1220特性参数
  • ADS1220模数转换模块原理图
  • Arduino UNO与ADS1220接线
    • 简单测试
    • K型热电偶测试


简介

ADS1220 是一款精密的 24 位模数转换器 (ADC),它提供许多集成功能,可降低测量小传感器信号的应用中的系统成本和元件数量。该器件具有两个差分输入或四个单端输入(通过灵活的输入多路复用器 (MUX)、低噪声可编程增益放大器 (PGA)、两个可编程激励电流源、电压基准、振荡器、低侧开关和精密温度传感器。该器件可以以高达 2000 样本/秒 (SPS) 的数据速率进行转换,并具有单周期稳定功能。在 20 SPS 时,数字滤波器可为嘈杂的工业应用提供同时 50 Hz 和 60 Hz 抑制。内部 PGA 提供高达 128 V/V 的增益。使用 PGA 时,该器件支持伪差分或全差分信号的测量。或者,该器件可以配置为绕过内部 PGA,同时仍提供高输入阻抗和高达 4 VV 的增益,从而实现单端测量。在 PGA 禁用的情况下以占空比模式运行时,功耗低至 120 uA。额定温度范围为 -40C 至 +125C。

ADS1220特性参数

  • 模拟电源:AVDD / AVSS (AGND) 时为 2.3 至 5.5 伏。
  • 数字电源:DVDD / DGND 时为 2.3 至 5.5 伏。
  • 双极电源选项:例如 AVSS 到 DGND = -2.5 伏,AVDD 到 DGND = +2.5 伏。
  • 功耗:占空比模式下为 120 微安。
  • 通信:通过 SPI。
  • 参考电压:
      内部:2.048 伏。
      外部:VREFPx– VREFNx= 最小 0.75 伏,最大 AVDD。
  • 增益:1 – 128(带 PGA = 可编程增益放大器),1 – 4(不带 PGA)。
  • 数据速率:5 – 2000 SPS(每秒采样数)
  • 转换模式:连续和“单发”模式。
  • 电压输入:4 个单端(相对于 AVSS)或 2 个差分输入。
  • 在多路复用模式下进行测量。
  • 两个可编程 IDAC(电流数模转换器):10 μA 至 1.5 毫安(在数据表中也称为“激励电流源”)。
  • 数字滤波器:50 和/或 60 Hz。
  • 集成温度传感器。

ADS1220模数转换模块原理图


DRDY数据就绪引脚,当数据可用时为低电平
MISO串行数据输出
MOSI串行数据输入
SCLK串行时钟输入
CS片选
CLK外部时钟(可选)
DVDD数字电压正
DGND数字电压负
AIN0/REFP1模拟输入通道 0,也可以用作附加外部参考电压的输入正
AIN1模拟输入通道 1
AIN2模拟输入通道 2
AIN3/REFN1模拟输入通道 3,也可以用作附加外部参考电压的输入负
REFN0外部参考电压负
REFP0外部参考电压正
AVDD模拟电压电源正
AVSS模拟电压电源负

Arduino UNO与ADS1220接线

Arduino UNOADS1220
5VDVDD,AVDD
GNDDGND,AVSS
D6DRDY
D7CS
D11MOSI
D12MISO
D13SCLK

简单测试接线

K型热电偶测试接线

简单测试

AIN0-AIN1:1.2V差分测试,AIN2,AIN3:1.49V单端测:

/***************************************************************************
* Example sketch for the ADS1220_WE library
*
* This sketch shows how to change channels and get data. The sketch uses the 
* the default settings, e.g. the internal voltage reference. This limits the 
* maximum voltage that can be measured to 2.048 volts.
* 
* On my website you find:
*   1) An article about the ADS1220 and the use of this library
*      https://wolles-elektronikkiste.de/ads1220-4-kanal-24-bit-a-d-wandler  (German) 
*      https://wolles-elektronikkiste.de/en/4-channel-24-bit-adc-ads1220     (English)
* 
*   2) An article how to use the ADS1220 for typical applications, such as thermocouples, 
*      NTCs, RTDs or Wheatstone bridges:
*      https://wolles-elektronikkiste.de/ads1220-teil-2-anwendungen          (German)
*      https://wolles-elektronikkiste.de/en/ads1220-part-2-applications      (English)
* 
***************************************************************************/#include <ADS1220_WE.h>
#include <SPI.h>#define ADS1220_CS_PIN    7 // chip select pin
#define ADS1220_DRDY_PIN  6 // data ready pin /* Create your ADS1220 object */
ADS1220_WE ads = ADS1220_WE(ADS1220_CS_PIN, ADS1220_DRDY_PIN);
/* Alternatively you can also pass the SPI object as reference */
// ADS1220_WE ads = ADS1220_WE(&SPI, ADS1220_CS_PIN, ADS1220_DRDY_PIN);void setup(){Serial.begin(9600);if(!ads.init()){Serial.println("ADS1220 is not connected!");while(1);}
/* The voltages to be measured need to be between negative VREF + 0.2 V and positive* VREF -0.2 V if PGA is enabled. For this basic example I disable PGA, to be on the * safe side. */ ads.bypassPGA(true);
}/* *  You set the channels to be measured with setCompareChannels(); You* can choose the following parameters:* Parameter                  Pos. Input     Neg. Input         Comment* ADS1220_MUX_0_1              AIN0           AIN1* ADS1220_MUX_0_2              AIN0           AIN2* ADS1220_MUX_0_3              AIN0           AIN3* ADS1220_MUX_1_2              AIN1           AIN2* ADS1220_MUX_1_3              AIN1           AIN3* ADS1220_MUX_2_3              AIN2           AIN2* ADS1220_MUX_1_0              AIN1           AIN0* ADS1220_MUX_3_2              AIN3           AIN2* ADS1220_MUX_0_AVSS           AIN0           AVSS           single-ended* ADS1220_MUX_1_AVSS           AIN1           AVSS           single-ended  * ADS1220_MUX_2_AVSS           AIN2           AVSS           single-ended* ADS1220_MUX_3_AVSS           AIN3           AVSS           single-ended* ADS1220_MUX_REFPX_REFNX_4   REFP0/REFP1   REFN0/REFN1     (REFPX-REFNX)/4; PGA bypassed* ADS1220_MUX_AVDD_M_AVSS_4    AVDD           AVSS           (AVDD-AVSS)/4; PGA bypassed* ADS1220_MUX_AVDD_P_AVSS_2    AVDD           AVSS           (AVDD+AVSS)/2* * The last three modes use the internal reference (2.048 V) and gain = 1, independent of * your settings.*/void loop(){float result = 0.0;long longResult = 0;ads.setCompareChannels(ADS1220_MUX_0_1);result = ads.getVoltage_mV();longResult = ads.getRawData();Serial.print("AIN0 vs. AIN1  [mV]: ");Serial.println(result);Serial.print("AIN0 vs. AIN1 (raw): ");  // raw dataSerial.println(longResult);// ads.setCompareChannels(ADS1220_MUX_0_AVSS);// result = ads.getVoltage_mV();// Serial.print("AIN0 vs. AVSS  [mV]: ");// Serial.println(result);// ads.setCompareChannels(ADS1220_MUX_1_AVSS);// result = ads.getVoltage_mV();// Serial.print("AIN1 vs. AVSS  [mV]: ");// Serial.println(result);ads.setCompareChannels(ADS1220_MUX_2_AVSS);result = ads.getVoltage_muV();    // request result in microvoltsSerial.print("AIN2 vs. AVSS  [µV]: ");Serial.println(result);ads.setCompareChannels(ADS1220_MUX_3_AVSS);result = ads.getVoltage_mV();Serial.print("AIN3 vs. AVSS  [mV]: ");Serial.println(result);ads.setCompareChannels(ADS1220_MUX_AVDD_M_AVSS_4); // voltage supply / 4result = ads.getVoltage_mV() * 4.0;Serial.print("Supply Voltage [mV]: ");Serial.println(result);result = ads.getVRef_V();                 // get the reference voltageSerial.print("Reference       [V]: ");Serial.println(result,3); Serial.print("Temperature    [°C]: ");    // get the temperatureresult = ads.getTemperature();Serial.println(result);Serial.println();delay(2000);
}

)

K型热电偶测试

温水测试:

#include <ADS1220_WE.h>
#include <SPI.h>#define ADS1220_CS_PIN    7 // chip select pin
#define ADS1220_DRDY_PIN  6 // data ready pin ADS1220_WE ads = ADS1220_WE(ADS1220_CS_PIN, ADS1220_DRDY_PIN);void setup(){Serial.begin(9600);if(!ads.init()){Serial.println("ADS1220 is not connected!");while(1);}ads.setCompareChannels(ADS1220_MUX_0_1);ads.setGain(ADS1220_GAIN_128);
}void loop(){float ambTemp = 0.0;float deltaTemp = 0.0; // thermocouple temperature minus ambient temperaturefloat tCTemp = 0.0; // thermocouple temperaturefloat tCV = 0.0; // thermocouple voltageads.enableTemperatureSensor(true);ambTemp = ads.getTemperature();ads.enableTemperatureSensor(false); Serial.print("Ambient Temperature [°C]:          ");Serial.println(ambTemp);tCV = ads.getVoltage_muV(); // get result in millivoltsdeltaTemp = 0.0244821*tCV + 0.106873;Serial.print("Thermocouple T vs. ambient T [°C]: ");Serial.println(deltaTemp);tCTemp = ambTemp + deltaTemp;Serial.print("Thermocouple Temperature [°C]:     ");Serial.println(tCTemp);Serial.println();delay(2000);
}


http://www.ppmy.cn/ops/136395.html

相关文章

webkit浏览器内核编译(2024年11月份版本)

webkit浏览器内核编译 本文详细介绍了如何安装和配置Webkit的编译环境和工具的安装&#xff0c;以及在Windows上编译和运行WebKit浏览器引擎的过程&#xff0c;包括安装依赖、设置环境变量、生成解决方案并最终运行附带的MiniBrowser示例。 一、WebKit简介 WebKit 是一个开源的…

AR智能眼镜|AR眼镜定制开发|工业AR眼镜方案

AR眼镜的设计与制造成本主要受到芯片、显示屏和光学方案的影响&#xff0c;因此选择合适的芯片至关重要。一款优秀的芯片平台能够有效提升设备性能&#xff0c;并解决多种技术挑战。例如&#xff0c;采用联发科八核2.0GHz处理器&#xff0c;结合12nm制程工艺&#xff0c;这种低…

Linux:进程

✨✨所属专栏&#xff1a;Linux✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 冯诺依曼体系结构 现代计算机发展所遵循的基本结构形式始终是冯诺依曼结构。这种结构特点是“程序存储&#xff0c;共享数据&#xff0c;顺序执行”&#xff0c;需要CPU从存储器取出指令和数据进行相应的…

秋招面试基础总结,Java八股文基础(串联知识),四万字大全

目录 值传递和引用传递 静态变量和静态代码块的执行顺序 Java​​​​​​​集合的框架&#xff0c;Set,HashSet,LinkedHashSet这三个底层是什么 多线程篇 Java实现多线程的方式 假设一个线程池&#xff0c;核心线程数是2&#xff0c;最大线程数是3&#xff0c;阻塞队列是4…

一种构建网络安全知识图谱的实用方法

文章主要工作 论述了构建网络安全知识库的三个步骤&#xff0c;并提出了一个构建网络安全知识库的框架;讨论网络安全知识的推演 1.框架设计 总体知识图谱框架如图1所示&#xff0c;其包括数据源&#xff08;结构化数据和非结构化数据&#xff09;、信息抽取及本体构建、网络…

STL之哈希

STL之哈希 unordered_set/map&哈希之介绍unordered系列哈希哈希表的模拟实现 unordered_set&/map的模拟实现哈希的应用位图&#xff08;bitmap/bitset&#xff09;布隆过滤器&#xff08;Bloom Filter&#xff09;海量数据处理 unordered_set/map&哈希之介绍 unor…

联邦学习安全聚合算法综述(论文解析)以及如何确定自己研究方向的方法

自己写相关论文的方法&#xff1a; 可以重点看看综述类论文的未来研究方向和引言中前人已经做过的内容 联邦学习安全聚合算法综述 auth:江萍 1 通讯作者 李芯蕊 1 赵晓阳 2 杭永凯 摘要 摘要&#xff1a;随着深度学习技术的发展&#xff0c;人工智能在社会的各个方面有着重要…

Redis设计与实现 学习笔记 第二十章 Lua脚本

Redis从2.6版本引入对Lua脚本的支持&#xff0c;通过在服务器中嵌入Lua环境&#xff0c;Redis客户端可以使用Lua脚本&#xff0c;直接在服务器端原子地执行多个Redis命令。 其中EVAL命令可以直接对输入的脚本进行求值&#xff1a; 而使用EVALSHA命令则可以根据脚本的SHA1校验…