數模轉換
其實現在我還是沒有搞得太懂數模轉換,先記錄一下吧。
大概一個作用是放大,提高精度,把模擬量轉換成數字,以便進行數據分析
本次實驗使用ADS1115,其特點是16位數據,可以表達0~65535的十進制數,
Arduino Uno 模擬輸入口(例如A0)可以表達0-1023的十進制
ADS1115
實驗效果
AIN0:讀取的是ADS模塊上A0引腳的原始數據
Voltage:通過計算得出的電壓值(AIN0 * 0.1875)/1000
BOM表
Arduino Uno *1
ADS1115 模數轉換器 *1
跳線若干
接線圖
程序
需要下載庫:https://github.com/adafruit/Adafruit_ADS1X15
#include <Wire.h>
#include <Adafruit_ADS1015.h> //加載ADS1015/ADS1115庫
Adafruit_ADS1115 ads(0x48); //聲明一個ads對象,設置模塊地址
float Voltage = 0.0; //聲明一個變量 用於存儲檢測到的電壓值
void setup(void)
{
Serial.begin(9600); //波特率
ads.begin(); //ads對象開始
}
void loop(void)
{
int16_t adc0; // 16位整數
adc0 = ads.readADC_SingleEnded(0); //讀取ADS1115模塊的A1引腳的數值
Voltage = (adc0 * 0.1875)/1000; //把數值轉換成電壓值,0.1875是電壓因數
//串口顯示數據
Serial.print("AIN0: ");
Serial.print(adc0);
Serial.print("\tVoltage: ");
Serial.println(Voltage, 7);
Serial.println();
delay(1000);
}
程序思路講解
1,先加載兩個庫
#include <Wire.h>
#include <Adafruit_ADS1015.h> //加載ADS1015/ADS1115庫
2,定義ADS對象並設置地址
Adafruit_ADS1115 ads(0x48); //聲明一個ads對象,設置模塊地址
3,在setup()裏,開始ADS對象
ads.begin(); //ads對象開始
4,讀取對應模塊上模擬口的數值
adc0 = ads.readADC_SingleEnded(1); //讀取ADS1115模塊的A1引腳的數值 ,如果讀取A0則參數裏填寫0
還有ads.readADC_Differential_0_1();函數,作用是讀取模擬引腳0和1的電壓值