使用 ADS1115 讀取模擬訊號

2021-08-09 00:01:37 字數 2878 閱讀 4640

考慮到 raspberry pi 讀取模擬訊號是很煩人的事情,更何況是在沒人玩的 windows 10 iot 下,所以準備正兒八經的寫點東西。

需求:使用 raspberry pi 讀取輸出模擬訊號的 mq 系列氣體感測器。(github: 

由於 raspberry pi 3b 內部並沒有整合 adc,因此需要外接 adc 來進行模數轉換。外接 adc 選用的是 ads1115,**到處都是,而且還不貴, i2c 的通訊方式實現起來相對容易些。

1. 過程分析

在 ads1115 的資料手冊(github專案中附帶了pdf)的第11頁中,官方給出了乙個簡單的快速開始

(1)設定配置暫存器

(2)定位到轉換暫存器

(3)讀取轉換暫存器

2. 暫存器配置分析

了解了大概過程後接下來就是查暫存器的格式及配置方法了。

ads1115 的 addr 介面的接法決定了位址。

位址確定後,下面來看看暫存器的位址指標。由於我們只是簡單的讀取,只需要用到最上面的兩個指標。配置暫存器為 0x01,轉換暫存器為 0x00。

按照第一點的過程分析,第一步我們要設定配置暫存器。配置暫存器分高八位和低八位,指標定位到配置暫存器後,需要分別寫入兩個 byte 的配置資料。詳細的位元位的功能可以查下資料手冊。在這裡只介紹用的到的。

在14-12位,是 mux 配置。簡單的說,這決定了 ads1115 的 a0-a3 介面的測量方式。比如說,當設定為 0x04 時測量的為 a0-gnd 的電壓,當設定為 0x00 時測量的為 a0-a1 間的電壓。

在11-9位,是 pga 配置。這決定了 ads1115 的量程。

在第8位,是 ads1115 的狀態配置。0x00 為測量模式,0x01 為休眠。

在第7-5位,是每秒取樣次數的配置。

以上是我們需要的配置位,其他的按照資料手冊上的預設即可。即高八位 0 100 001 0(0x42),低八位 100 0 0 0 11(0x83)。需要其他的功能,按照資料手冊上的更改即可。

配置完成後,讀取資料是非常簡單的,直接讀取即可。

3. 連線

vdd - 5v

gnd - gnd

scl - scl

sda - sda

addr - gnd

a0 - mq 感測器的 a0

4. 部分**

詳細的**已經放在 github 上了,這裡只給出 ads1115.cs 的簡單介紹。

///

///constructor

//////

ads1115 address

///input multiplexer

///programmable gain amplifier

///data rate

public ads1115(addresssetting addr = addresssetting.gnd, inputmultiplexeconfig mux = inputmultiplexeconfig.ain0, pgaconfig pga = pgaconfig.fs4096, datarate rate =datarate.sps128);

//////

initialize ads1115

//////

public

async

task initializeasync();

//////

read raw data

//////

raw value

public

short

readraw();

//////

convert raw data to voltage

//////

raw data

///voltage

public

double rawtovoltage(short

val);

//////

cleanup

///public

void dispose();

5. 如何使用

第一步,需要例項化 ads1115,並呼叫 initializeasync()。

ads1115 adc = new

ads1115(addresssetting.gnd, inputmultiplexeconfig.ain0, pgaconfig.fs4096, datarate.sps860);

await adc.initializeasync();

第二步,讀取資料。

short raw =adc.readraw();

double vol = adc.rawtovoltage(raw);

如果需要釋放,呼叫 adc.dispose();

6. 執行圖

分類: 

張高興的 windows 10 iot 開發筆記

基於STM32的ADS1115使用例程

ads1232之stm32程式 stm32測試高精度adc篇 一 cherrymcu的部落格 csdn部落格 ads1232 基於ad7190的精密電子稱 4.8khz超低聲24位 adc,內建pga deming 0的部落格 csdn部落格 ad7190 cs5532 基於stm32的ads111...

STM32F103控制ADS1115採集模擬訊號

標籤 stm32f103 ads1115 2016 06 20 22 27 1403人閱讀收藏 舉報 微控制器 2 程式已經通過 0 定義通道 define tongdao0 0xc2e3 define tongdao1 0xd2e3 define tongdao2 0xe2e3 define to...

ADS1 2初步使用經驗

一般情況是這樣的,在函式b中呼叫函式a,而函式a是在函式b 之後在編寫實現的,在arm development suite中會出現編譯錯誤 解決方法 將函式a剪下到函式b之前就好了 當然,在函式檔案開頭先宣告一次似乎也是可行的,我自己的就試過,沒出錯 這個錯誤是很經常出現的,因為在其他編輯器中編寫 ...