当前位置: 首页 > news >正文

用树莓派和ads1115采样模拟量 保姆级教程

1.背景

树莓派很好,美中不足的是,不能进行ADC转换,所以要选一个外接的ADC芯片来进行模拟量转换。正好,我要设计的产品里需要用到ADC,所以,我就设计了一个用ads1115进行ADC转换,将结果发送到树莓派的电路和程序,下面是保姆级教程。

2. 为什么用ads1115这个ADC转换芯片?

因为wiringPi库自带了驱动程序,直接拿来用就可以了,很方便,所以,我就选了这颗。

3. 电路图

4. 代码

#include <ads1115.h>
#include <stdio.h>
#include <unistd.h>
#include <wiringPi.h>
#include <wiringPiI2C.h>

#define ADC_ADDRESS 0x48
#define PINBASE 120  // choose PINBASE value arbitrarily

int main()
{
    int ret = TRUE;


    int analog0;
    // int analog1;
    // int analog2;
    // int analog3;
    float vbat = 0.0;

    int ioerr = wiringPiSetupGpio();
    if (ioerr == -1)
    {
        printf("wiringPiSetupGpio() error\n");
        return FALSE;
    }

    ret = ads1115Setup(PINBASE, ADC_ADDRESS);
    if (ret == FALSE)
    {
        printf("ads1115Setup() error\n");
        return FALSE;
    }

    while(1)
    {
        analog0 = analogRead(PINBASE+0);        // connected to ads1115 AIN0
        printf("analog0 = %d\n", analog0);

        vbat = analog0 * 4.096 / 0x7FFF*(169+9.31)/9.31;
        printf("vbat = %.2f\n", vbat);
        
        // analog1 = analogRead(PINBASE+1);        // connected to ads1115 AIN1
        // printf("analog1 = %d\n", analog1);
        
        // analog2 = analogRead(PINBASE+2);        // connected to ads1115 AIN2
        // printf("analog2 = %d\n", analog2);
        
        // analog3 = analogRead(PINBASE+3);        // connected to ads1115 AIN3
        // printf("analog3 = %d\n", analog3);
        
        delay(250);             // sample rate 250ms


    }

    return 0;

}

5. 结果检验

 

测出来的电池电压很准,比我上次设计的用STM32的ADC采样的电池电压要准得多。

6. 大功告成,亲个嘴儿。 

http://www.dtcms.com/a/110066.html

相关文章:

  • 基于CYT4BB MCAL完成对DS_SA47321功能开发
  • python match case语法
  • 2025年中级社会工作者考试模拟题
  • 大模型备案材料:评估测试题集真实案例详解
  • 基数排序算法解析与TypeScript实现
  • 《双影奇境》手机版上线?ToDesk用跨平台技术实现「全设备云电脑3A游戏」
  • liunx日志查询常用命令总结
  • Cesium 时间线 及 坐标转换
  • PyTorch复现逻辑回归
  • 高效深度学习lecture03
  • 强化学习DDPG算法
  • 【C++进阶九】继承和虚继承
  • 【新书上市】《STM32嵌入式系统开发—基于STM32CubeMX和HAL库》,高校教学推荐,STM32入门必读书籍!
  • TVM流程及调优
  • skynet.start 的作用详细解析
  • Jira 停售一周年:国产研发管理平台能否扛起替代大旗?
  • 【补题】Xi‘an Invitational 2023 E. Merge the Rectangles
  • 【PHP】- 字符串,数组,字典常用操作
  • Cribl 脱敏mask
  • (三)机器学习---线性回归及其Python实现
  • 聚焦建筑业碳中和,楼宇自控系统应如何发挥建筑节能价值
  • 大语言模型中的嵌入模型
  • (C语言)单链表(2.0)数据结构(指针,单链表教程)
  • 栈和队列的概念
  • dfs递归回溯的两种体型
  • 水下声呐探测仪,应急救援中的高效水下定位技术|深圳鼎跃
  • Nuxt3项目的SEO优化(robots.txt,页面tdk,伪静态.html,sitemap.xml动态生成等)
  • 开源虚拟化管理平台Proxmox VE部署超融合
  • RHCSA LINUX系统文件管理
  • 市场交易策略优化与波动管理