想要單片機輸出模擬信號,屬于數字信號轉化為模擬信號,簡稱數模轉換;而單片機內部的ADC模塊屬于模擬信號轉化為數字信號,簡稱模數轉換,比如電壓電流采樣、溫度測量、濕度測量、壓力測量等都屬于模數轉換。

單片機如何實現模擬輸出的

由于帶DA轉換接口的單片機很少,可以使用DA芯片進行外圍擴展,單片機只是核心處理器,所有功能并不能做得面面俱到,想要精通掌握單片機,各種外圍電路擴展是必不可少的。如下圖,使用DA專用芯片DAC0832進行外擴,DAC0832是8位的電流型輸出D/A轉換芯片,接口簡單,較容易控制。

單片機如何實現模擬輸出的

D/A接口擴展電路

其中D0~D7為8位數據輸入線,與單片機普通IO口相連即可;CS為片選信號,低電平有效,與單片機IO口相連接;ILE為數據鎖存控制允許輸入線,高電平有效,可直接接5V即可;Vref為基準電壓輸入,范圍-10V~10V;Rfb為反饋信號輸入線,內部有相應的反饋電阻;Iout1、Iout2為電流輸出端,將電流轉化為電壓可實現單極性輸出及雙極型輸出。

單極性輸出:VO = - VREF ×D/256,輸出電壓范圍:(0 ~ - VREF ×255/256)之間,當VREF = -5V, VOUT =0~5×(255/256)V;當VREF = +5V, VOUT = 0 ~ -5×(255/256)V。上圖原理為單極性輸出接法。

雙極性輸出:雙極性輸出在單極性輸出的基礎上再加一級運放進行轉換,基本原理如下圖所示。

單片機如何實現模擬輸出的

選擇R2=R3=2R1,則輸出電壓VOUT= 2×VREF×D/256 -VREF= (2D/256-1)VREF,從公式也可以看出,當數據D=0(8個數據輸入線全為0)時, VOUT= -VREF;當數據D=128(8個數據輸入線為10000000)時, VOUT= 0;當數據D=255(8個數據輸入線全為1)時, VOUT= (2×255/256-1)×VREF= (127/128)VREF,所以當數字量輸入D在0~255時,輸出電壓在- VREF ~+ VREF之間變化