0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用ADS1115扩展ROC-RK3568-PC开发板ADC功能

电子发烧友开源社区 来源:未知 2022-11-18 09:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

通过ROC-RK3568-PC的官方资料,可以了解到,这块板子,本身带有ADC接口,具体信息如下:

81c7bc12-66dd-11ed-8abf-dac502259ad0.png

不过也了解到,板子本身提供的ADC接口,最大检测电压范围是1.8V,所以在实际使用中,会有所局限。

刚好,我手头有一个ADS1115 ADC模块,相当的不错,某宝某店家介绍如下:

81c7bc12-66dd-11ed-8abf-dac502259ad0.png

81f380e0-66dd-11ed-8abf-dac502259ad0.png

不吹不擂,这个ADS1115 ADC模块,那是相当的好用。

一共提供了4个输入通道,16bit的,精细度很高。

既然好用,那就要上咱们ROC-RK3568-PC开发板试一试。

一、硬件连线

ADS1115 ADC模块是一个I2C模块,根据开发板的资料,找到具体的I2C在GPIO扩展接口上的位置:

81fcbdea-66dd-11ed-8abf-dac502259ad0.png

板子上,GPIO扩展接口提供了多组I2C接口,选用I2C1即可。

826dd642-66dd-11ed-8abf-dac502259ad0.png

ADS1115模块接线如下:

834c424c-66dd-11ed-8abf-dac502259ad0.jpg

最终实物连线后如下:

835ab1ce-66dd-11ed-8abf-dac502259ad0.jpg

在上图中,使用了一块迷你 IoT电源,用于提供不同的电压,方便进行实际测试。电源要和开发板共地,然后,+连接到ADS1115的AIN0~3任一接口,上述图中接在AIN0。

二、检测I2C连接是否正常

使用sudo i2cdetect -r -y 1命令检查连接:

839a444c-66dd-11ed-8abf-dac502259ad0.png

上图中,48即为ADS1115的I2C地址0x48。如果没有出现,仔细检查接线是否正确。因为GPIO扩展接口是2.0的,我手头的线都是2.54的,所以5V和GND接到了别的位置,免得挤得太紧。

三、编写程序

Adafruit为ADS1115提供了开发库:adafruit/Adafruit_ADS1X15: Driver for TI's ADS1015: 12-bit Differential or Single-Ended ADC with PGA and Comparator (github.com)

不过,该扩展库,主要是给Arduino提供的,在咱们板子上,不能直接使用。

于是fork后,添加了Linux环境支持,已经发布到github:HonestQiao/Adafruit_ADS1X15: Driver for TI's ADS1015: 12-bit Differential or Single-Ended ADC with PGA and Comparator (github.com)

另外,还有Python版本的,是给CircuitPython提供的,有时间我也会fork一下,再提供Linux支持。

上面我修改后的库,下载后,结构如下:

83b21d24-66dd-11ed-8abf-dac502259ad0.png

测试代码具体如下:

#include "../../Adafruit_ADS1X15.h"


Adafruit_ADS1115 ads(); /* Use this for the 16-bit version */
// Adafruit_ADS1015 ads;   /* Use this for the 12-bit version */


void setup(void) {
 printf("Getting single-ended readings from AIN0..3");
 printf("ADC Range: +/- 6.144V (1 bit = 3mV/ADS1015, 0.1875mV/ADS1115)");


 if (!ads.begin(0x48, 1)) {
  // Serial.println("Failed to initialize ADS.");
  printf("Failed to initialize ADS.");
  while (1)
   ;
 }
}


void loop(void) {
 int16_t adc0, adc1, adc2, adc3;
 float volts0, volts1, volts2, volts3;


 adc0 = ads.readADC_SingleEnded(0);
 adc1 = ads.readADC_SingleEnded(1);
 adc2 = ads.readADC_SingleEnded(2);
 adc3 = ads.readADC_SingleEnded(3);


 volts0 = ads.computeVolts(adc0);
 volts1 = ads.computeVolts(adc1);
 volts2 = ads.computeVolts(adc2);
 volts3 = ads.computeVolts(adc3);
 printf("-----------------------------------------------------------
");
 printf("AIN0: %d %f V
", adc0, volts0);
 printf("AIN0: %d %f V
", adc1, volts1);
 printf("AIN0: %d %f V
", adc2, volts2);
 printf("AIN0: %d %f V
", adc3, volts3);


 delay(1000);
}


int main(int argc, char *argv[]) {
 setup();
 while (true) {
  loop();
 }
}

(左右移动查看全部内容)

上述代码中,关键调用如下:

  • 实例化ADS1115对象:Adafruit_ADS1115 ads* 开启设备I2C通信:ads.begin(0x48, 1),两个参数,一个为ADS1115的地址0x48,一个为/dec/i2c-1的序号1

  • 读取数据:ads.readADC_SingleEnded(0),表示读取通道0的数据,也就是A0;可用通道为0~3

  • 电压转换:ads.computeVolts(adc0);表示转换adc0的数据到实际的电压值

四、编译运行

编写好代码,保存后,使用下面的步骤编译运行:

# 编译
gcc -o singleended singleended.cpp ../../Adafruit_ADS1X15.cpp


# 查看编译结果:aarch64
file singleended
singleended: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=be3e02ae2223c4431de1bdb70c6f942f9016d8fa, for GNU/Linux 3.7.0, not stripped


# 运行编译后的程序
./singleended

(左右移动查看全部内容)

五、实际运行结果

当IoT电源没有输出的时候,结果如下:

83c111c6-66dd-11ed-8abf-dac502259ad0.jpg

83cf7428-66dd-11ed-8abf-dac502259ad0.png

打开IoT电源输出,设定为4.2V,结果如下:

83e12402-66dd-11ed-8abf-dac502259ad0.jpg

83f375e4-66dd-11ed-8abf-dac502259ad0.png

84065ff6-66dd-11ed-8abf-dac502259ad0.png

可以看出,电压的测量,精度还是很高的。

六、总结

使用ADS1115模块,可以很方便的为 ROC-RK3568-PC开发板 扩展ADC功能,后续不管是接入按键,还是其他的模拟传感器等,都会非常的方便。

更多热点文章阅读

  • 玩嗨OpenHarmony:基于OpenHarmony的智能助老服务机器人
  • 玩嗨OpenHarmony:基于OpenHarmony的智慧农业环境监控系统
  • HarmonyOS 3.1版本发布,全面进入声明式开发
  • OpenHarmony开发之MQTT讲解
  • OpenHarmony集成OCR三方库实现文字提取

提示:本文由电子发烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com。


原文标题:使用ADS1115扩展ROC-RK3568-PC开发板ADC功能

文章出处:【微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电子发烧友
    +关注

    关注

    33

    文章

    584

    浏览量

    33977
  • 开源社区
    +关注

    关注

    0

    文章

    95

    浏览量

    771

原文标题:使用ADS1115扩展ROC-RK3568-PC开发板ADC功能

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解

    【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解
    的头像 发表于 11-21 13:25 650次阅读
    【迅为工业<b class='flag-5'>RK3568</b>稳定可靠】itop-<b class='flag-5'>3568</b><b class='flag-5'>开发板</b>Linux驱动<b class='flag-5'>开发</b>实战:<b class='flag-5'>RK3568</b>内核模块符号导出详解

    【迅为工业RK3568稳定可靠】itop-3568开发板驱动开发第4章驱动模块传参实验

    【迅为工业RK3568稳定可靠】itop-3568开发板驱动开发第4章驱动模块传参实验
    的头像 发表于 11-06 14:25 171次阅读
    【迅为工业<b class='flag-5'>RK3568</b>稳定可靠】itop-<b class='flag-5'>3568</b><b class='flag-5'>开发板</b>驱动<b class='flag-5'>开发</b>第4章驱动模块传参实验

    【作品合集】合众HZ-RK3568开发板测评

    合众HZ-RK3568开发板测评作品合集 产品介绍: HZ-EVM-RK3568开发板采用核心+底板组合形式设计,两者通过四个80PIN稳
    发表于 09-10 10:22

    迅为RK3568开发板模型推理测试实战LPRNet 车牌识别

    迅为RK3568开发板模型推理测试实战LPRNet 车牌识别
    的头像 发表于 08-25 14:55 1067次阅读
    迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>模型推理测试实战LPRNet 车牌识别

    【HZ-RK3568开发板免费体验】合众HZ-RK3568开发板初次使用

    一、引言 开发板收到有段时间了,前段时间一直在下载官方提供的一些资料,SDK包内容丰富,完全下载完可能不太现实,资料包受官方版权声明,这里不便提供分享链接。 开发板支持2路Ethernet、2路
    发表于 07-27 23:52

    RK3568 EVB开发板 深度休眠与快速醒的工作流程

    RK3568 EVB开发板关于深度休眠和唤醒流程的分析
    的头像 发表于 07-22 09:49 598次阅读
    <b class='flag-5'>RK3568</b> EVB<b class='flag-5'>开发板</b> 深度休眠与快速醒的工作流程

    【HZ-RK3568开发板免费体验】1、开发板资源、SDK使用和镜像烧写

    试用的开发板是合众恒跃的HZ_EVM_3568开发板RK3568 是一颗高性能、低功耗的四核应用处理器芯片,专为个人移动互联网设备、AIoT 和工业领域设备而设计。
    发表于 07-21 20:52

    RK3568开发板暗藏32位兼容开关?飞凌嵌入式带你一键解锁!

    RK3568是一款64位处理器,飞凌嵌入式为其提供的交叉编译器也是64位的,然而部分用户可能需要在RK3568开发板上运行32位应用。本文将详细阐述如何使用32位交叉编译器,编译出32位应用,并使其能够在飞凌嵌入式
    的头像 发表于 07-19 08:49 4178次阅读
    <b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>暗藏32位兼容开关?飞凌嵌入式带你一键解锁!

    迅为RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入

    迅为RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入
    的头像 发表于 05-29 14:05 830次阅读
    迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>驱动指南GPIO子系统GPIO子系统API函数的引入

    一文掌握RK3568开发板Android13挂载Windows共享目录

    在物联网和边缘计算场景中,开发板PC端的高效文件交互尤为重要。现以iTOP-RK3568开发板为例,详细演示Android13系统如何通过CIFS协议挂载Windows共享目录,实现
    的头像 发表于 04-17 13:54 857次阅读
    一文掌握<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>Android13挂载Windows共享目录

    RK3568开发板教程:以iTOP-RK3568开发板为例 Android13通过CIFS协议挂载Windows共享目录

    开发板PC端的高效文件交互尤为重要。现以iTOP-RK3568开发板为例,详细演示Android13系统如何通过CIFS协议挂载Windows共享目录,实现
    的头像 发表于 04-16 14:08 1570次阅读
    <b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>教程:以iTOP-<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>为例 Android13通过CIFS协议挂载Windows共享目录

    北京迅为RK3568开发板OpenHarmony系统南向驱动开发内核HDF驱动框架架构

    北京迅为RK3568开发板OpenHarmony系统南向驱动开发内核HDF驱动框架架构
    的头像 发表于 03-11 14:13 1554次阅读
    北京迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>OpenHarmony系统南向驱动<b class='flag-5'>开发</b>内核HDF驱动框架架构

    【技术分享】迅为RK3568开发板使用TFTP加载内核设备树

    【技术分享】迅为RK3568开发板使用TFTP加载内核设备树
    的头像 发表于 02-21 14:04 1120次阅读
    【技术分享】迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>使用TFTP加载内核设备树

    迅为RK3568开发板驱动指南Linux中通用SPI设备驱动

    迅为RK3568开发板驱动指南Linux中通用SPI设备驱动
    的头像 发表于 01-23 11:02 3425次阅读
    迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>驱动指南Linux中通用SPI设备驱动

    [迅为RK3568开发板]非科班也能玩转Android应用,体验QT跨平台能力

    [迅为RK3568开发板]非科班也能玩转Android应用,体验QT跨平台能力
    的头像 发表于 12-18 16:41 1358次阅读
    [迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>]非科班也能玩转Android应用,体验QT跨平台能力