完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>
標簽 > PCF8591
PCF8591是一個單片集成、單獨供電、低功耗、8-bit CMOS數(shù)據(jù)獲取器件。PCF8591具有4個模擬輸入、1個模擬輸出和1個串行I2C總線接口。PCF8591的3個地址引腳A0, A1和A2可用于硬件地址編程,允許在同個I2C總線上接入8個PCF8591器件,而無需額外的硬件。
PCF8591是一個單片集成、單獨供電、低功耗、8-bit CMOS數(shù)據(jù)獲取器件。PCF8591具有4個模擬輸入、1個模擬輸出和1個串行I²C總線接口。PCF8591的3個地址引腳A0, A1和A2可用于硬件地址編程,允許在同個I2C總線上接入8個PCF8591器件,而無需額外的硬件。在PCF8591器件上輸入輸出的地址、控制和數(shù)據(jù)信號都是通過雙線雙向I2C總線以串行的方式進行傳輸。
功能
PCF8591的功能包括多路模擬輸入、內(nèi)置跟蹤保持、8-bit模數(shù)轉換和8-bit數(shù)模轉換。PCF8591的最大轉化速率由I2C總線的最大速率決定。
PCF8591是一個單片集成、單獨供電、低功耗、8-bit CMOS數(shù)據(jù)獲取器件。PCF8591具有4個模擬輸入、1個模擬輸出和1個串行I²C總線接口。PCF8591的3個地址引腳A0, A1和A2可用于硬件地址編程,允許在同個I2C總線上接入8個PCF8591器件,而無需額外的硬件。在PCF8591器件上輸入輸出的地址、控制和數(shù)據(jù)信號都是通過雙線雙向I2C總線以串行的方式進行傳輸。
功能
PCF8591的功能包括多路模擬輸入、內(nèi)置跟蹤保持、8-bit模數(shù)轉換和8-bit數(shù)模轉換。PCF8591的最大轉化速率由I2C總線的最大速率決定。
特性
【1】單獨供電【2】PCF8591的操作電壓范圍2.5V-6V【3】低待機電流【4】通過I2C總線串行輸入/輸出【5】PCF8591通過3個硬件地址引腳尋址【6】PCF8591的采樣率由I2C總線速率決定【7】4個模擬輸入可編程為單端型或差分輸入【8】自動增量頻道選擇【9】PCF8591的模擬電壓范圍從VSS到VDD【10】PCF8591內(nèi)置跟蹤保持電路【11】8-bit逐次逼近A/D轉換器【12】通過1路模擬輸出實現(xiàn)DAC增益
引腳信息
AIN0~AIN3:模擬信號輸入端。A0~A2:引腳地址端。VDD、VSS:電源端。(2.5~6V)SDA、SCL:I2C 總線的數(shù)據(jù)線、時鐘線。OSC:外部時鐘輸入端,內(nèi)部時鐘輸出端。EXT:內(nèi)部、外部時鐘選擇線,使用內(nèi)部時鐘時 EXT 接地。AGND:模擬信號地。AOUT:D/A 轉換輸出端。VREF:基準電源端。
基于51單片機IIC通信的PCF8591學習筆記
PCF8591 是單電源,低功耗8 位CMOS 數(shù)據(jù)采集器件,具有4 個模擬輸入、一個輸出和一個串行I2C 總線接口。3 個地址引腳A0、A1 和A2 用于編程硬件地址,允許將最多8 個器件連接至I2C總線而不需要額外硬件。PCF8591由于其使用的簡單方便和集成度高,在單片機應用系統(tǒng)中得到了廣泛的應用,這篇文章是介紹IIC通信在ADDA轉換芯片PCF8591中的應用。
關于IIC
IIC總線通信協(xié)議的介紹在“基于51單片機IIC通信的AT24C02學習筆記”有詳細的介紹。
關于PCF8591
PCF8591是單片、單電源低功耗8位CMOS數(shù)據(jù)采集器件,具有4個模擬輸入、一個輸出和一個串行I2C總線接口。3個地址引腳A0、A1 和A2 用于編程硬件地址,允許將最多8個器件連接至I2C總線而不需要額外硬件。器件的地址、控制和數(shù)據(jù)通過兩線雙向I2C總線傳輸。器件功能包括多路復用模擬輸入、片上跟蹤和保持功能、8位模數(shù)轉換和8位數(shù)模擬轉換。最大轉換速率取決于I2C總線的最高速率。
PCF8591的操作和AT24C02非常類似,只不過AT24C02是寫入或讀出數(shù)據(jù),而PCF8591是AIN端口輸入模擬電壓,然后PCF8591將轉換后的數(shù)字量通過IIC總線發(fā)送給單片機,或是單片機通過IIC總線給一個數(shù)字量,然后PCF8591通過AOUT端口將模擬電壓輸出.
控制字格式
最高位默認為0
第6位是選擇是否允許模擬電壓輸出,在DA轉換時設置為1,AD轉換時設置為0或1均可
第5/4位是選擇模擬電壓輸出方式,一般選擇00單端輸入方式,其他的幾種方式如下圖所示
第3位默認為0
第2位是自動增量使能位,如果自動增量(auto-increment)標志置1,每次A/D 轉換后通道號將自動增加。
第1/0為是在AD轉換時選擇哪一個通道輸入的電壓轉換為數(shù)字量。
PCF8591的器件地址
每一個IIC器件都有一個器件地址,來區(qū)分不同的IIC設備,下面是PCF8591的地址
它的地址是由1001和A2A1A0組成的,在原理圖中可以看出,A2A1A0均為0,所以器件地址為0x90/0x91,最后一位是讀寫方向位,0表示下一個字節(jié)往總線上寫數(shù)據(jù),1表示下一個字節(jié)從總線上讀取數(shù)據(jù).
AD轉換函數(shù)
AD轉換即將AIN端口輸入的模擬電壓轉換為數(shù)字量并發(fā)送到總線上,可以知道該函數(shù)需要指定輸入的通道,還要將轉換后的數(shù)字量返回,所以該函數(shù)有返回值,和一個形參
程序實現(xiàn):
/*讀取某一個通道轉換后的數(shù)字量*/
uchar Read_D(uchar Channel)
{
uchar dat;
start();
write_byte(0x90); //器件地址+0
ack();
write_byte(Channel); //控制字0x01表示通道1
ack();
start();
write_byte(0x91); //器件地址+1,下一個字節(jié)要讀取
ack();
dat=read_byte();
ack();
stop();
// AD_led=0; //轉換成功顯示
return dat;
}
DA轉換函數(shù)
DA轉換即將從總線上接收到的數(shù)字量通過AOUT輸出,該函數(shù)無返回值,有一個形參
程序實現(xiàn):
1
2
3
4
5
6
7
8
9
10
11
12void Out_A(uchar Digital)
{
start();
write_byte(0x90); //器件地址+0,下一個字節(jié)為寫入
ack();
write_byte(0x40); //設置控制字 0100 0000 允許模擬輸出,不自增單端
ack();
write_byte(Digital); //將要轉換的數(shù)字量寫入
ack();
stop();
// DA_led=0; //轉換成功顯示
}
轉換公式
我們可以用一個轉換公式,將AD轉換后的數(shù)字量轉換為對應的電壓值,在數(shù)碼管或液晶上顯示,公式如下:
1#define fun(x) (int)(5*x/255.0*100+0.5) //數(shù)字電壓x轉換為模擬電壓的公式
主函數(shù)調(diào)用
1
2
3
4dat1 = Read_D(0x01); //將通道1(電位器v2)的模擬電壓轉換的數(shù)字量讀出
Out_A(dat1); //將數(shù)字量轉換為模擬量輸出到led顯示
dis_Voltage1(fun(dat1)); //數(shù)碼管顯示電壓值
Delay_Ms(5); //延時緩沖
這樣就可以實時顯示輸入的電壓值了.還可以將電壓值輸出到led亮度顯示出來.這樣就可以作為一個簡易的小量程(5v)的電壓表了
總結
從程序可以看出PCF8591的操作和AT24C02基本一致,就是增加了控制字的內(nèi)容,相比于其他的ADDA轉換芯片,它結構簡單,不需要外圍的電路,可以直接使用,而且容易實現(xiàn)模塊化設計,在大多數(shù)單片機系統(tǒng)中ADDA幾乎是不可缺少的,而PCF8591只需要兩個IO口(時鐘和數(shù)據(jù))和電源就可以實現(xiàn),大大節(jié)省了IO口的使用。
關于AT24C02的使用,請看我另一篇隨筆:“基于51單片機IIC通信的AT24C02學習筆記”
如何將PCF8591 ADC模塊與Raspberry Pi連接
在本教程中,我們將學習如何將 PCF8591 ADC/DAC 模塊與 Raspberry Pi 連接。
2022-08-26 標簽:adc模數(shù)轉換器PCF8591 4299 0
基于89C51單片機的PCF8591 4路AD數(shù)碼管顯示源程序立即下載
類別:單片機 2023-05-16 標簽:89C51單片機數(shù)碼管顯示PCF8591
基于89C51單片機的PCF8591 1路AD數(shù)碼管顯示源程序立即下載
類別:單片機 2023-05-16 標簽:89C51單片機數(shù)碼管顯示PCF8591
類別:IC datasheet pdf 2022-02-21 標簽:轉換器PCF8591
Linux驅動開發(fā)-編寫PCF8591(ADC)芯片驅動
PCF8591是一個IIC總線接口的ADC/DAC轉換芯片,功能比較強大,這篇文章就介紹在Linux系統(tǒng)里如何編寫一個PCF8591的驅動,完成ADC數(shù)...
編輯推薦廠商產(chǎn)品技術軟件/工具OS/語言教程專題
電機控制 | DSP | 氮化鎵 | 功率放大器 | ChatGPT | 自動駕駛 | TI | 瑞薩電子 |
BLDC | PLC | 碳化硅 | 二極管 | OpenAI | 元宇宙 | 安森美 | ADI |
無刷電機 | FOC | IGBT | 逆變器 | 文心一言 | 5G | 英飛凌 | 羅姆 |
直流電機 | PID | MOSFET | 傳感器 | 人工智能 | 物聯(lián)網(wǎng) | NXP | 賽靈思 |
步進電機 | SPWM | 充電樁 | IPM | 機器視覺 | 無人機 | 三菱電機 | ST |
伺服電機 | SVPWM | 光伏發(fā)電 | UPS | AR | 智能電網(wǎng) | 國民技術 | Microchip |
Arduino | BeagleBone | 樹莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 華秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |