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