PCF8591 是一個單電源低功耗的8位 CMOS 數(shù)據(jù)采集器件,具有4路模擬輸入,1路模擬輸出和一個串行 I2C 總線接口用來與單片機通信。與前面講過的 24C02 類似,3個地址引腳 A0、A1、A2 用于編程硬件地址,允許最多8個器件連接到 I2C 總線而不需要額外的片選電路。器件的地址、控制以及數(shù)據(jù)都是通過 I2C 總線來傳輸,我們先看一下 PCF8591 的原理圖,如圖17-3所示。
圖17-3 PCF8591 原理圖
其中引腳1、2、3、4是4路模擬輸入,引腳5、6、7是 I2C 總線的硬件地址,8腳是數(shù)字地 GND,9腳和10腳是 I2C 總線的 SDA 和 SCL。12腳是時鐘選擇引腳,如果接高電平表示用外部時鐘輸入,接低電平則用內(nèi)部時鐘,我們這套電路用的是內(nèi)部時鐘,因此12腳直接接 GND,同時11腳懸空。13腳是模擬地 AGND,在實際開發(fā)中,如果有比較復雜的模擬電路,那么 AGND 部分在布局布線上要特別處理,而且和 GND 的連接也有多種方式,這里大家先了解即可。在我們板子上沒有復雜的模擬部分電路,所以我們把 AGND 和 GND 接到一起。14腳是基準源,15腳是 DAC 的模擬輸出,16腳是供電電源 VCC。
PCF8591 的 ADC 是逐次逼近型的,轉換速率算是中速,但是它的速度瓶頸在 I2C 通信上。由于 I2C 通信速度較慢,所以最終的 PCF8591 的轉換速度,直接取決于 I2C 的通信速率。由于 I2C 速度的限制,所以 PCF8591 得算是個低速的 AD 和 DA 的集成,主要應用在一些轉換速度要求不高,希望成本較低的場合,比如電池供電設備,測量電池的供電電壓,電壓低于某一個值,報警提示更換電池等類似場合。
Vref 基準電壓的提供有兩種方法。一是采用簡易的原則,直接接到 VCC 上去,但是由于 VCC 會受到整個線路的用電功耗情況影響,一來不是準確的 5 V,實測大多在 4.8 V 左右,二來隨著整個系統(tǒng)負載情況的變化會產(chǎn)生波動,所以只能用在簡易的、對精度要求不高的場合。方法二是使用專門的基準電壓器件,比如 TL431,它可以提供一個精度很高的 2.5 V 的電壓基準,這是我們通常采用的方法。如圖17-4所示。
圖17-4 PCF8591 基準與對外接口原理圖
圖中 J17 是雙排插針,大家可以根據(jù)自己的需求選擇跳線帽短接還是使用杜邦線連接其它外部電路,二者都是可以的。在這個地方,我們直接把 J17 的3腳和4腳用跳線帽短路起來,那么現(xiàn)在 Vref 的基準源就是 2.5 V 了。分別把5和6、7和8、9和10、11和12用跳線帽短接起來的話,那么我們的 AIN0 實測的就是電位器的分壓值,AIN1 和 AIN2 測的是 GND 的值,AIN3測的是 +5 V 的值。這里需要注意的是,AIN3 雖然測的是 +5 V 的值,但是對于 AD 來說,只要輸入信號超過 Vref 基準源,它得到的始終都是最大值,即255,也就是說它實際上無法測量超過其 Vref 的電壓信號的。需要注意的是,所有輸入信號的電壓值都不能超過 VCC,即 +5 V,否則可能會損壞 ADC 芯片。