标题: 基于stm32f10 ADS1115芯片模转换器 数据采集系统 [打印本页]

作者: happy112    时间: 2016-6-7 17:18
标题: 基于stm32f10 ADS1115芯片模转换器 数据采集系统




ADS1115芯片介绍:

ADS1115 是具有 16 位分辨率的高精度模数转换器 (ADC),采用超小型的无引线 QFN-10 封装或 MSOP-10 封装。 ADS1115 在设计时考虑到了精度、功耗和实现的简易性。 ADS1115具有一个板上基准和振荡器。 数据通过一个 I2C 兼容型串行接口进行传输;可以选择 4 个 I2C 从地址。 ADS1115采用 2.0V 至 5.5V 的单工作电源。

ADS1115能够以高达每秒 860 个采样数据 (SPS) 的速率执行转换操作。ADS1115 具有一个板上可编程增益放大器 (PGA),该 PGA 可提供从电源电压到低至 ±256mV 的输入范围,因而使得能够以高分辨率来测量大信号和小信号。 另外,ADS1115 还具有一个输入多路复用器 (MUX),可提供 2 个差分输入或 4 个单端输入。

ADS1115可工作于连续转换模式或单触发模式,后者在一个转换完成之后将自动断电,从而极大地降低了空闲状态下的电流消耗。 ADS1115 具有-40℃ 至 +125℃ 的规定温度范围。

改源码设计是基于stm32f10芯片开发,将ADS1115采集到的数据正常的在tft液晶显示出来。


  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"         
  7. //#include "adc.h"
  8. #include "ads115.h"
  9.    
  10. int main(void)
  11. {       
  12.         float t1;
  13.     u16 t,result;
  14.         delay_init();                     //延时函数初始化          
  15.         NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  16.         uart_init(9600);                 //串口初始化为9600
  17.         LED_Init();                             //LED端口初始化
  18.         LCD_Init();                                
  19.     ADS1115_Init();
  20.         POINT_COLOR=RED;//设置字体为红色
  21.         LCD_ShowString(50,60,200,16,16,"Voltage1:00.000V");
  22.     LCD_ShowString(50,80,200,16,16,"Voltage2:00.000V");
  23.     LCD_ShowString(50,100,200,16,16,"Voltage3:00.000V");
  24.         LCD_ShowString(50,120,200,16,16,"Voltage4:00.000V");
  25.         //显示提示信息
  26.         POINT_COLOR=BLUE;//设置字体为蓝色
  27.         while(1)
  28.         {   
  29.                   //通道0
  30.                   result=lvbo(0xe3,0xc2);   
  31.                   t1=4.096*2*result/65535;     //转换成电压
  32.           LCD_ShowxNum(122,20,result,5,16,0x80);
  33.                     t=t1;
  34.                   LCD_ShowxNum(122,60,t,2,16,0x80);
  35.           result=(t1-t)*1000;
  36.                   LCD_ShowxNum(146,60,result,3,16,0x80);
  37.           //delay_ms(5);
  38.                   //通道1
  39.                   result=lvbo(0xe3,0xd2);   
  40.                   t1=4.096*2*result/65535;     //转换成电压
  41.           t=t1;
  42.                   LCD_ShowxNum(122,80,t,2,16,0x80);
  43.           result=(t1-t)*1000;
  44.                   LCD_ShowxNum(146,80,result,3,16,0x80);
  45.           //delay_ms(5);
  46.                   //通道2
  47.                   result=lvbo(0xe3,0xe2);   
  48.                   t1=4.096*2*result/65535;     //转换成电压
  49.           t=t1;
  50.                   LCD_ShowxNum(122,100,t,2,16,0x80);
  51.           result=(t1-t)*1000;
  52.                   LCD_ShowxNum(146,100,result,3,16,0x80);
  53.                   //delay_ms(5);
  54.                   //通道3
  55.                   result=lvbo(0xe3,0xf2);   
  56.                   t1=4.096*2*result/65535;     //转换成电压
  57.           t=t1;
  58.                   LCD_ShowxNum(122,120,t,2,16,0x80);
  59.           result=(t1-t)*1000;
  60.                   LCD_ShowxNum(146,120,result,3,16,0x80);
  61.           //delay_ms(100);
  62.         }
  63. }
复制代码

全部资料(压缩包)下载:
ADS1115(stm32f10采集).zip (4.13 MB, 下载次数: 515) ADS1115数据手册.pdf (1.2 MB, 下载次数: 126)

AD应用原理图截图.png (6.1 KB, 下载次数: 247)

AD应用原理图截图.png

作者: loverui1221    时间: 2016-10-1 18:35
太6了!!!!!!!
作者: lovexiaodong    时间: 2017-4-22 11:15
下载来看看  
作者: 拾光纪逸    时间: 2017-7-28 17:17
为什么检测5V电压显示3.999V,检测3.3V显示3.2V检测地是7.999V
作者: czhaii    时间: 2017-9-4 07:24
不错,不错。

作者: 帅帅的于    时间: 2017-9-4 11:18
谢谢分享
作者: qingzhiwu110    时间: 2018-1-29 23:01
优秀优秀!学习一下!
作者: qq542731976    时间: 2018-3-15 16:29
谢谢分享, 参考参考
作者: szccxy    时间: 2018-3-24 10:42

谢谢分享!学习一下!
作者: 电子派    时间: 2018-3-26 13:19
很不错,谢谢楼主
作者: chenlong_    时间: 2018-4-6 10:25
老铁,你那个AD和stm32的链接引脚是怎么连得
作者: chenlong_    时间: 2018-4-6 10:32
电子派 发表于 2018-3-26 13:19
很不错,谢谢楼主

大佬们,j3和j2对应stm32什么接口
作者: 嘟嘟噜    时间: 2018-4-7 11:52
具体怎么用单片机操作呢?需要练哪几个接口哇

作者: chenlong_    时间: 2018-4-8 13:05
拾光纪逸 发表于 2017-7-28 17:17
**** 作者被禁止或删除 内容自动屏蔽 ****

是啊,我下载代码  连接电路图然后也是这种结果
作者: w5218129    时间: 2018-5-2 22:46
谢谢!大佬大佬!!!

作者: 337241773    时间: 2018-5-16 20:45
拾光纪逸 发表于 2017-7-28 17:17
**** 作者被禁止或删除 内容自动屏蔽 ****

我也是这样的,你解决了吗,
作者: Viperd2    时间: 2018-7-21 01:04
有波形没数值,下载来看看
作者: ilili    时间: 2018-8-10 09:11
谢谢分享
作者: xingchen8910    时间: 2018-12-10 13:54
ADS1115的I2C高速模式怎么开启啊
作者: as86455011    时间: 2019-3-21 10:53
感谢分享!
作者: 竹子开花    时间: 2019-4-17 16:27
谢谢分享, 参考参考
作者: 1491998797    时间: 2019-5-20 14:18
谢谢分享
作者: 旭日青草    时间: 2019-7-9 08:51
感谢楼主分享,下来试试
作者: wxh126    时间: 2019-10-13 12:32

谢谢!大佬大佬!!!
作者: w5218129    时间: 2020-5-6 23:39
感谢楼主分享,下来试试
作者: dongd70    时间: 2020-7-28 16:49
首先感谢大佬的分享
拿来代码调试之后发现是ADS1115的Config Register没有配置正确导致的读数不准确,下面是一些经验
1.大佬提供的手册不是1115的 所以在DR寄存器配置那里卡住了 ADS1115的最高速模式是860sps 寄存器的值应该是111 这里需要注意
我使用的是A0通道 +-6.144V量程 连续转换模式 860sps 因此代码中的HCMD1应该是0x40
然后我没有使用比较校验 因此LCMD1值为0xE3
这两个值改过来应该就可以了 主要就是这个寄存器的配置卡住我了
再次感谢大佬的分享

作者: dongd70    时间: 2020-7-28 16:53
然后接线的话电源 地线 SDA 和SCL就不说了
如果I2C总线上只有一个外设的话ADDR就接地
我没有使用阈值判定 因此ALRT就悬空了 接地也可
A0就接要读的信号就行了 但是要注意输入范围()
作者: zhangzhong215    时间: 2023-5-26 14:26
谢谢 luozhufenxian
作者: zcm119    时间: 2024-7-12 00:31
LCD有没有接线定义




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1