以前用Arduino碰到過負電壓,例如某個電阻一端接地,而其上電流在某個時刻反向了,還要測量電阻兩端的電壓,這個時候就會遇到負電壓。Arduino本身沒有辦法測量負電壓,所以遇到的幾次,都是在GND前面加上3.3V或者用其他的電壓撐起來,之后再在代碼里面減去,挺笨拙地解決了,直到發(fā)現(xiàn)ADS1115。ADS1115可以直接測量負電壓。ADS1115是16位分辨率的高精度ADC,51、Arduino、樹莓派等都能使用它,精度高,成本低,資料多(其實也不多)。 1. ADS1115ADC引腳下面的模塊是最常見的。它需要尋址。ADDR不同地址不同解碼方式。有四個地址可用。 以下模塊不太常見。地址預(yù)設(shè)為0x48。不包括警報/就緒信號。在大多數(shù)應(yīng)用中,也不需要此信號。 2. ADS1115ADC模塊尋址ADS1115的四個地址是通過將ADDR引腳連接到SCL、SDA、GND或VDD來設(shè)置的。下圖說明了這些連接是如何建立的,并提供了這些連接的地址號。 3.ADS1115精度與范圍ADS1115的輸出是有符號整數(shù),第一個位用于表達正負號,因此用于AD轉(zhuǎn)換的數(shù)值,只有個,首位0,最后一位32767。 默認模式下,ADS1115測量范圍為,即32767表示6.144V,這樣,ADS1115的分辨率就是。 這是遠大于Arduino ADC的5 mV/bit的分辨率的。 4.Arduino ADS1115單端應(yīng)用先需要下載Adafruit發(fā)布的ADS1X15的庫,地址https://github.com/adafruit/Adafruit_ADS1X15。 作為Demo,我們要測量Arduino的3.3V電壓。注意接線圖ADDR與GND連接。 使用以下代碼,注意“Adafruit_ADS1115 ads(0x48);”的地址0x48,目前這個構(gòu)造函數(shù)在新的庫里面,是不需要顯式聲明地址的,這可以在庫示例里面看到。另外,0.1875 mV因子也是默認的。實際A0、A1、A2、A3是可以同時采集電壓的。 #include <Wire.h> 5.ADS1115 Arduino差分測量我們前面提到負電壓,即低于GND的電勢Arduino無法直接測量,實際上對差分來說,即使兩端均非GND,也是可以直接測量的,這正是差分測量的好處。 下面的示例,是在ADS1115的A0與A1之間測量差分電壓,如果A1電勢高,就會得到正的示數(shù),反之則為負數(shù)。接線圖如圖,注意A0、A1是ADS1115上面的,別找到Arduino板子上去。Arduino一般默認即高阻態(tài),18650即使接到A0與A1之間,也不會有什么危險,但不會得到正確的示數(shù)。 使用的代碼。庫文件里面也有示例。 #include <Wire.h> 實物圖,左右兩個圖里,電源正負極換了一下位置。 當(dāng)電壓為負時,串口得到。我們的穩(wěn)壓電源監(jiān)視器則顯示電壓為3.33V。 |
|
來自: 新用戶5228KeDY > 《待分類》