摘要: 給出了用C8051FF330D的內部電流型D/A轉換器和電流/電壓轉換電路來輸出0~4V的模擬信號量, 用于控制恒流源輸出電流, 并使其按設定的值進行變化, 從而完成可編程恒流源控制器的設計方法。利用該方法設計的程控恒流源具有電流紋波小、控制精度高和運行穩定等特點。
0 引言
在飛速發展的電子和電信技術系統中, 電源的優劣在一定程度上決定著電信設備的性能和壽命。因此, 人們對程控恒流器件的需求也日益迫切。雖然目前市場上的數控恒壓技術已經比較成熟, 數控電壓源產品也已朝著智能化和小型化的趨勢發展, 且價格也越來越便宜。但是, 在恒流源方面, 尤其是數字控制的恒流技術則由于起步較晚, 高性能的數控恒流器件的開發和應用存在著巨大的發展空間。為此, 本文以C8051FF330D單片機為控制核心, 并利用C8051FF330D的I2C串行總線擴展外圍器件, 同時以模塊化設計方法,設計了一種程控恒流源。而且整個電源還具有功耗低、體積小, 電流紋波小、控制精度高和運行穩定等特點。
1 系統總體結構
該程控恒流源設計主要采用C8051FF330D單片機內部的10位電流型數模轉換器和電流/電壓轉換電路來輸出0~4 V的模擬量, 然后用這個電壓信號來控制恒流源的輸出電流, 以使其按照給定值變化。由于本系統擴展了I2C串行總線接口,以及以ZLG7290為核心的鍵盤和LED數碼管顯示器電路, 因而可用鍵盤進行電流值和時間間隔的設定, 其電流值設定范圍為0~10 A, 時間間隔為0~10小時。另外, 系統還具有掉電保護功能, 故當其恢復用電后, 可使電流源從斷點處恢復運行。
圖1所示是本系統的硬件組成結構。其中,時鐘電路采用外部晶體振蕩器來提高時鐘精度,JTAG接口電路則為系統提供全速、非侵入式的在線系統調試接口, 而外部復位電路可用于強制MCU進入復位狀態。
圖1 系統硬件組成結構圖
2 硬件電路設計
2.1 模擬量輸出接口電路
C8051F330D內部有一個10位電流型的D/A轉換器IDA0, 它的最大輸出電流具有0.5 mA、1 mA和2 mA三種不同的設置。同時, IDA0還具有靈活的輸出更新機制, 并允許無縫滿度變化, 可支持無抖動波形更新。IDA0的三種更新方式分別為寫IDA0H、定時器溢出和外部引腳邊沿出發。本設計采用P1.0輸出, 并采用定時器溢出的更新方式。
C8051F330D內部電路中的數模轉換器輸出的0~1 mA電流信號通過基準電阻轉換為0~2 V的電壓信號后, 再經過放大電路轉換為0~4 V的標準信號輸出。其模擬量輸出信號轉換電路如圖2所示。
圖2 模擬量輸出信號轉換電路
2.2 掉電保護電路
在電信和其他通信系統中, 如果設備斷電,將給系統造成巨大損失, 甚至可能使系統癱瘓。
為了避免系統掉電情況的發生, 本設計采用FM24CL04作為非易失存儲器來保護系統參數及其它中間數據。與EEPROM不同, FM24CL04可以以總線速度進行寫操作, 它使用的是工業標準兩線I2C接口, 圖3所示是本電源系統附帶的掉電數據保護電路。
圖3 掉電數據保護電路
由于FM24CL04存儲器的寫入速度極快, 因此, 在一個高噪聲的通信環境中, 它受到干擾的可能性很小。此外, FM24CL04使用二線制串行總線及握手協議來進行雙向傳輸, 由于這種方式占用的引腳少, 因此, 系統線路板占用的空間也比較小。
2.3 鍵盤及顯示電路
本系統配置有4位鍵盤和8位LED數碼管顯示電路, 以用于顯示編程數據和參數。鍵盤顯示器接口電路采用廣州周立功單片機發展有限公司的專用芯片ZLG7290B數碼管顯示驅動和鍵盤管理芯片。該芯片能夠直接驅動8位共陰式數碼管或者64位獨立的LED, 同時, 也可以掃描和管理64位按鍵。本電路將ZLG7290B通過I2C總線與單片機進行連接, 僅需要兩根信號線即可傳遞數據。
同時, 采用ZLG7290B專用芯片還可以簡化電路和程序, 減輕電路的調試負擔。而且, 作為工業級顯示驅動芯片, ZLG7290B也具有較強的抗干擾能力。圖4 所示是由C8051F330D 單片機和ZLG7290B專用顯示驅動芯片組成的鍵盤及顯示驅動電路原理圖。
圖4 鍵盤顯示驅動電路
一般情況下, 在設計時, 為了使電源更加穩定, 可在圖4電路的VCC和GND之間接入電解電容。由于電路中的數碼管在工作時要消耗較大的電流, 因此, 其限流電阻的典型值可取的更大一些。另外, 由于數碼管掃描和鍵盤掃描線共用,因此, 本電路采用二極管來防止按鍵對數碼管顯示的干擾。
3 軟件設計
3.1 主程序設計
本系統采用C語言來進行軟件設計, 以實現系統的各項功能。系統應用程序采用模塊化結構設計, 主要包括主程序、參數調用修改子程序、DAC0初始化程序等。圖5所示是其主程序流程圖。
圖5 主程序流程圖
3.2 模塊函數程序設計
模塊函數程序主要是為結構化模塊設計定義一些函數, 如各定時器的初始化函數、SMBUS初始化及處理函數、DAC0的初始化和處理函數,另外, 也包括往鐵電存儲器中寫入字節的函數和從目標地址讀取數據等函數。其中DAC0的初始化程序代碼如下:
Void DAC_Init (void)
{
REF0CN =0X30; /*內部偏壓發生器和電壓基準緩沖器工作, 基準從VREF腳輸出*、
ID0CB =0XF2;
}
存儲器寫入函數如下:
Viod EEPROM_ByteWrite ( uchar i2caddr,uchar addr, uchar dat )
{
While (smb_busy)
Smb_busy = 1;
Target = i2caddr;
Smb_w =write;
Smb_sendwordaddr = 1;
Smb_randomread = 0;
Smb_ackpoll =1;
Word_addr = addr;
Smb_singlebyte_out = dat;
Psmb_data_out =&smb_singlebyte_out;
Smb_data_len =1;
Sta = 1;
}
……
4 結束語
本文給出了用C8051FF330D的內部電流型D/A轉換器和電流/電壓轉換電路來設計可編程恒流源控制器的設計方法。由于C8051F330D單片機的運算速度比普通單片機要快, 而且功耗比較低, 同時內置有DAC和ADC, 由此可在電子產品開發過程中減小產品體積, 降低硬件連線的復雜程度。實驗證明, 本設計的程控電流源具有輸出電流穩定準確等特點, 而且電流隨負載和環境溫度變化小, 輸出電流誤差范圍為±5 mA, 同時其輸出電流也較大, 是一款價格低廉, 性能穩定,操作簡單的實用性通信電流源。