树莓派 ADC模块 ADS1115 16位 模数转换器(python3)

ADC数模转换

在这里插入图片描述

接线

在这里插入图片描述
VDD - 5V
GND - GND
SCL - SCL
SDA - SDA
ADDR - GND
A0 - MQ 传感器的 A0

当ADDR引脚连接到GND时,地址为:0x48(0100, 1000B)
当ADDR引脚连接到VDD时,地址为:0x49(0100, 1001B)
当ADDR引脚连接到SDA时,地址为:0x4A(0100, 1010B)
当ADDR引脚连接到SCL时,地址为:0x4B(0100, 1011B)

设置树莓(开启I2C)

在这里插入图片描述
在这里插入图片描述

模块检查(接通电源后)

sudo apt-get install i2c-tools
sudo i2cdetect -y 1
在这里插入图片描述

安装依赖

pip3 install -i https://pypi.mirrors.ustc.edu.cn/simple/ Adafruit_ADS1x15

代码

import Adafruit_ADS1x15
/**
增益
2/3 = +/-6.144V
1 = +/-4.096V
2 = +/-2.048V
4 = +/-1.024V
8 = +/-0.512V
16 = +/-0.256V
*/
GAIN = 1
adc1 = Adafruit_ADS1x15.ADS1115(address=0x48)
while True:
	/**
		A0 = Channel 0 minus channel 1
    	A1 = Channel 0 minus channel 3
    	A2 = Channel 1 minus channel 3
    	A3 = Channel 2 minus channel 3
    	data_rate=128 为每秒返回样本数 最高为860
	*/
	print(adc1.read_adc(0, gain=GAIN, data_rate=128))
# Simple demo of reading each analog input from the ADS1x15 and printing it to
# the screen.
# Author: Tony DiCola
# License: Public Domain
import time

# Import the ADS1x15 module.
import Adafruit_ADS1x15


# Create an ADS1115 ADC (16-bit) instance.
adc = Adafruit_ADS1x15.ADS1115()

# Or create an ADS1015 ADC (12-bit) instance.
#adc = Adafruit_ADS1x15.ADS1015()

# Note you can change the I2C address from its default (0x48), and/or the I2C
# bus by passing in these optional parameters:
#adc = Adafruit_ADS1x15.ADS1015(address=0x49, busnum=1)

# Choose a gain of 1 for reading voltages from 0 to 4.09V.
# Or pick a different gain to change the range of voltages that are read:
#  - 2/3 = +/-6.144V
#  -   1 = +/-4.096V
#  -   2 = +/-2.048V
#  -   4 = +/-1.024V
#  -   8 = +/-0.512V
#  -  16 = +/-0.256V
# See table 3 in the ADS1015/ADS1115 datasheet for more info on gain.
GAIN = 1

print('Reading ADS1x15 values, press Ctrl-C to quit...')
# Print nice channel column headers.
print('| {0:>6} | {1:>6} | {2:>6} | {3:>6} |'.format(*range(4)))
print('-' * 37)
# Main loop.
while True:
    # Read all the ADC channel values in a list.
    values = [0]*4
    for i in range(4):
        # Read the specified ADC channel using the previously set gain value.
        values[i] = adc.read_adc(i, gain=GAIN)
        # Note you can also pass in an optional data_rate parameter that controls
        # the ADC conversion time (in samples/second). Each chip has a different
        # set of allowed data rate values, see datasheet Table 9 config register
        # DR bit values.
        #values[i] = adc.read_adc(i, gain=GAIN, data_rate=128)
        # Each value will be a 12 or 16 bit signed integer value depending on the
        # ADC (ADS1015 = 12-bit, ADS1115 = 16-bit).
    # Print the ADC values.
    print('| {0:>6} | {1:>6} | {2:>6} | {3:>6} |'.format(*values))
    # Pause for half a second.
    time.sleep(0.5)
### 如何在树莓派上使用ADS1115进行ADC转换 #### 安装必要的软件包 为了使 ADS1115 能够正常工作于树莓派之上,需要安装一些依赖项。这通常涉及到 Python 库 `Adafruit_ADS1x15` 或者更新版本的库来简化与 ADC 设备之间的交互过程。 ```bash sudo pip3 install adafruit-circuitpython-ads1x15 ``` 此命令会自动下载并安装所需的Python库[^1]。 #### 连接硬件 确保正确连接 ADS1115树莓派: - VDD 接到 3.3V (Pin 1 or 17) - GND 接到 地线 (Pin 6, 9, 14, 20, 25, 30, 34, or 39),这一点非常重要,因为如果两者未共地,则可能导致设备无法正常通信。 - SCL 接到 I2C 钟信号线上 (Pin 5 for RPi models with 40-pin GPIO header). - SDA 接到 I2C 数据线上 (Pin 3 for RPi models with 40-pin GPIO header). 确认物理连线无误之后,可以继续下面的操作[^2]. #### 编写测试脚本 创建一个新的 Python 文件用于测试 ADS1115 是否能够成功读取模拟输入电压值: ```python import time import board import busio import adafruit_ads1x15.ads1115 as ADS from adafruit_ads1x15.analog_in import AnalogIn # 创建I2C总线对象 i2c = busio.I2C(board.SCL, board.SDA) # 创建ADS1115 ADC对象 ads = ADS.ADS1115(i2c) # 创建单端通道对象 chan = AnalogIn(ads, ADS.P0) print("{:>5}\t{:>5}".format('raw', 'v')) while True: print('{:>5}\t{:^5.3f}'.format(chan.value, chan.voltage)) time.sleep(1) ``` 上述代码片段展示了如何初始化 I2C 总线并与指定地址上的 ADS1115 建立联系;接着定义了一个针对 AIN0 输入引脚(即 P0)的单端模式下的测量实例,并打印出原始数值及其对应的实际电压值。 #### 启用I2C接口 确保已经启用了 Raspberry Pi 上的 I2C 功能。可以通过运行以下命令完成设置: ```bash sudo raspi-config ``` 进入菜单后选择 "Interfacing Options" -> "I2C", 并按照提示操作以激活该功能[^3]。 ---
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值