python - 使用带有 ADC 模块和树莓派的重力声计获取 DBa 值
问题描述
我需要帮助才能从带有树莓派的重力声音计中获得实际值。
我有一个 python 程序来获取这些细节
import sys
sys.path.append('../')
import time
from DFRobot_ADS1115 import ADS1115
ADS1115_REG_CONFIG_PGA_6_144V = 0x00 # 6.144V range = Gain 2/3
ADS1115_REG_CONFIG_PGA_4_096V = 0x02 # 4.096V range = Gain 1
ADS1115_REG_CONFIG_PGA_2_048V = 0x04 # 2.048V range = Gain 2 (default)
ADS1115_REG_CONFIG_PGA_1_024V = 0x06 # 1.024V range = Gain 4
ADS1115_REG_CONFIG_PGA_0_512V = 0x08 # 0.512V range = Gain 8
ADS1115_REG_CONFIG_PGA_0_256V = 0x0A # 0.256V range = Gain 16
ads1115 = ADS1115()
while True :
#Set the IIC address
ads1115.setAddr_ADS1115(0x48)
#Sets the gain and input voltage range.
ads1115.setGain(ADS1115_REG_CONFIG_PGA_6_144V)
#Get the Digital Value of Analog of selected channel
adc0 = ads1115.readVoltage(0)
time.sleep(0.2)
adc1 = ads1115.readVoltage(1)
time.sleep(0.2)
adc2 = ads1115.readVoltage(2)
time.sleep(0.2)
adc3 = ads1115.readVoltage(3)
print "A0:%dmV A1:%dmV A2:%dmV A3:%dmV"%(adc0['r'],adc1['r'],adc2['r'],adc3['r'])
它显示的值如
A0:0mv A1:1098mV A2:3286mV A3:498mV
但我不知道如何获得以分贝为单位的实际声音值。
解决方案
您可以在此处找到文档: https ://wiki.dfrobot.com/Gravity__Analog_Sound_Level_Meter_SKU_SEN0232
要回答您的问题:
本产品分贝值与输出电压成线性关系,输出电压为0.6V时,分贝值应为30dBA。当输出电压为2.6V时,分贝值应为130dBA。出厂前已校准,无需校准。所以我们可以得到这个关系:分贝 值(dBA)=输出电压(V)×50
因此,您需要检查声级计连接到哪个连接器(A0、A1、A2 或 A3)。取该值(似乎以 mV 为单位)将其转换为 V 并乘以 50。或者简单地将您的值除以 20。
推荐阅读
- google-kubernetes-engine - 对 Google Cloud 上 kubernetes 的蛇形制作中的“--default-remote-prefix”标志感到困惑
- java - 制作静态数据源
- c - 与 C 中命令行参数的动态内存分配混淆
- wpf - 如何在 WPF 工具栏中更改 ToolBarOverflowPanel 的 WrapWidth 值
- selenium - 调用类导致的空异常
- c# - 如何找到我的文件控制台应用程序的文件路径,找不到文件显示
- hibernate - EntityManagerFactory 类型的不明确依赖项
- java - 我使用Hystrix(1.5.18),并设置参数ErrorThresholdPercentage=30,总是marksuccess时的断路状态切换
- android - 单击 RecyclerView 项目时,有几个项目会起作用
- html - 点击没有任何反应