新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > 精密程控電流源的設計及應用

        精密程控電流源的設計及應用

        作者: 時間:2006-02-22 來源:網絡 收藏

        摘要:源采用USB通信模式,具有溫度測量和輸出非線性溫度補償功能,輸出的準確度高、性能穩定可靠。文中介紹此電流源的電路、控制軟件及其

        關鍵詞:USB總線 非線性溫度補償 溫度測量 XTR110

        1 系統概述

        電流源具有輸出電流范圍寬、準確度高、功率大等特點,是組成自動測試系統和校驗系統的必需儀器,廣泛用于工礦企業、科研國防等軍工單位的計量儀表、自動化標定等設備中。本文介紹的電流源除上述特點外,還具備USB總線通信、溫度測量和輸出電流非線性溫度補償功能。

        系統總體結構如圖1所示,程控電流源由微控制器(MCU)單元,USB接口單元,溫度測量單元,輸出電流校準單元,信號輸出單元及電源單元組成。MCU單元通過USB接口單元實現與上位機的通信,從上位機獲得控制命令并返回相應的數據,同時解析上位機命令來控制信號輸出信號,完成最終電流輸出。溫度測量單元和輸出電流校準單元共同完成輸出電流的非線性溫度補償。電源單元向其他單元提供所需電源。精密程控電流源還包括過流檢測、系統自檢、繼電器隔離輸出等單元,進一步提高了系統的智能性和可靠性。

        2 系統電路

        2.1 USB接口單元

        精密程控電流源通過USB總線與上位機接口,USB接口的熱插拔、高速和即插即用特性大大簡化了系統設計,方便了電流源與上位機的通信,USB接口單元電路如圖2所示。

        圖中,FT232AM完成USB總線到MCU串口信號線的轉換,以便上位機將USB虛擬成傳統的串行口,從而簡化了驅動程序,便于實現USB總線與MCU的通信。為了避免USB信號與信號源間的干擾,選用光耦器件(圖中的U29)實現其與MCU的隔離,提高系統的抗干擾能力。

        2.2 MCU及其外接單元

        微控制器MCU是精密程控電流源的核心控制單元,其與溫度測量單元及輸出電流校準單元的接口電路如圖3所示。

        MCU單元選用AT89C51型單片機構建運行環境,完成對電流源系統的控制,包括外部擴展ROM、外部擴展RAM、硬件看門狗、硬件地址譯碼器等。

        圖2

        考慮到器件輸出特性隨溫度的變化,MCU外接溫度測量單元和輸出電流校準單元來完成輸出電流的非線性溫度補償,其原理是輸出電流校準單元保存各溫度范圍內不同設定電流值和實際輸出值之間的誤差,此誤差通過實際測量得到,稱為修正系數。系統工作時,通過溫度測量單元可得到當前工作溫度,用此工作溫度對應的設定電流值乘以修正系數,即可完成輸出電流的非線性溫度補償,大大提高電流的輸出精度。

        溫度測量單元的核心器件是高精度數字溫度測量電路AD7416(圖中的U19),它采用IC總線與AT89C51接口,測量的環境溫度范圍為-10℃~+50℃,設計的MCU以十六進制形式輸出所測溫度。

        輸出電流校準單元由M24C64型64k Bit EEPROM構成,用來存貯電流源修正系統數值。MCU通過I2C總線可方便地對其進行讀寫操作,并按照可變電流源的通信協議以8位十進制數形式寫入和讀出修正系數,從而保證了對輸出電流的精確非線性溫度補償。

        2.3 信號輸出單元

        信號輸出單元完成精密程控電流源的電流產生與輸出,包括以12位高精度DAC-HK12BGC型DAC為核心的DAC轉換電路和由TI公司的精密電壓/電流轉換器組成的后級轉換電路。MCU先譯碼上位機指令,然后向DAC轉換電路寫入特定數據以控制其輸出的模擬電壓值。后級轉換電路接收DAC轉換電路輸出的模擬電壓值完成電壓到電流的轉換,隨后輸出上位機設定的電流。信號輸出單元電路如圖4所示。

        圖3

        圖中,AT89C51的數據線D0-B7通過二片74HC573與DAC-HK12BGC接口來控制其模擬輸出,控制過程如下:AT89C51通過CS_DA與51_WR信號來啟動DAC,當DAC低字節選擇信號線CS_DAL與單片機寫使能線51_WR構成的組合邏輯有效時,向DAC寫入低8位數據,然后以相同方式寫入高4位數據。為進一步提高精度,DAC輸出端連有電位器W1、W2,分別用來微調滿偏和零偏。

        DAC輸出的模擬電壓信號DA_OUT接入后級轉化電路XTR110,先通過其片內的金屬薄膜電阻網絡提供輸入的縮放比例及電流偏移,完成電壓到電流的轉換,再通過IRF7104型場效應管輸出電流。XTR110具有14位轉換精度,0.005%的非線性度,確保了轉換精度。電位器W3、W4分別用來微調輸出電流零偏和滿偏,進一步提高精度。

        3 單片機控制程序設計

        在電流源系統軟件中設計了完整的通信協議,規定了電流源從上位機獲得的控制命令字和相應的返回數據值。系統控制程序以AT89C51型單片機作為控制核心,采用匯編語言編寫,分為主程序和串口中斷處理程序2部分。

        3.1 主程序設計

        主程序主要完成系統參數初始化、系統自檢、串口中斷配置等,流程如圖5所示。

        圖4

        系統上電后,MCU從地址0000H開始執行,主程序的入口地址為0050H。系統初始化包括初始化堆棧、初始化DAC、初始化串口、初始化寄存器、初始化看門狗等。部分主程序如下。

        MOV SP,#58H ;初始化堆棧指針

        MOV A,#00H

        MOVX @DPTR,A ;初始化DAC

        NOP

        MOV A,#20H ;初始化定時器1,模式2

        MOV A,PCON

        ORL A,#80H

        MOV PCON,A ;設定串口波行率19200

        SETB MODE ;設定系統自檢

        SETB R_EN ;初始化自檢繼電器

        MOV TX_PNT,#40H ;初始化串口發送緩沖區指針

        MOV RX_PNT,#30H ;初始化串口接收緩沖區指針

        CPL WDI ;初始化看門狗

        SETB TR1 ;開定時器1

        SETB REN

        SETB ES ;開串口中斷

        SETA EA ;開單片機中斷

        MOV STATUS,#01H ;進入運行狀態

        3.2 串口中斷處理程序

        串口中斷處理程序是單片機控制程序的核心部分,串口接收上位機命令字,同時解析命令來控制硬件電路工作,流程如圖6所示。

        以設定電流輸出這個最重要的命令為例,串口中斷處理程序先接收設定的電流值(以3位16進制數表示),然后由單片機通過I2C總線讀取當前溫度值和修正系數,再由系統軟件控制設定電流值乘以修正系數得到實際值,從而完成非線性溫度補償,單片機可根據實際值設定DAC輸出電壓,控制最終電流輸出,單片機串口中斷處理程序中的主要代碼如下:

        ;*********************;

        SET_V:MOV A,37H ;得到設定電流值的最高位

        ANL A,#0F0H

        CJNE A,#30H,PACK1……

        PACK1:MOV A,37H

        CLR C

        SUBB A,#37H

        PACK2:MOV R2,A ;最高位存放R2

        MOV A,38H

        ANL A,#0F0H

        CJNE A,#30H,PACK3……

        PACK3:MOV A,38H

        CLR C

        SUBB A,#37H

        PACK4:MOV R1,A ;中間位存入R1

        MOV A,39H

        ANL A,#0F0H

        CJNE A,#30H,PACK5……

        PACK5:MOV A,39H

        CLR C

        SUBB A,#37H

        MOV R0,A ;最低位存入R0

        MOV A,R1

        SWAP A

        ORL A,R0

        MOV R0,A ;最低位與中間位合并

        MOV DPTR,#CS_DAH

        MOV A,R2

        MOVX @DPTR,A

        MOV DPTR,#CS_DAL

        MOV A,R0

        MOVX @DPTR,A

        MOV DPTR,#CS_DA ;設定DAC輸出

        MOV A,#00H

        MOVX @DPTR,A ;更新DAC

        RET

        ;************************************************;

        單片機通過I2C總線讀取當前溫度值和修正系數的程序與之相,這里只給出讀取溫度值程序:

        ;Read A Byte From AD7416 E2RPOM

        ACALL RDBYTE ;讀取溫度值高位

        MOV R1,A ;存入R1

        CLR TMSDA ;ACK

        NOP…… ;NOP指令

        SETB TMSCL

        NOP……

        CLR TMSCL

        NOP……

        SETB TMSDA

        ACALL RDBYTE ;讀取溫度值低位

        MOV R0,A ;存入R0

        SETB TMSDA ;N0 ACK

        NOP……

        SETB TMSCL

        NOP……

        CLR TMSCL

        NOP……

        CLR TMSDA

        NOP……

        SETB TMSCL

        SETB TMSDA ;停止

        ;Read A Byte From AD7416 E2PROM

        RDBYTE:MOV R0,#08H

        RDBIT:SETB TMSCL ;SCL保持高電平

        MOV C,TMSDA

        RLC A

        CLR TMSCL ;SCL保持低電平,SDA電平改變

        NOP……

        DJNZ R0,RDBIT ;讀完結束

        RET

        4 結束語

        以上介紹的精密程控電流源輸出電流為0~20mA,編程步進電流為100μA,電流誤差小于50μA,已在某機載信號調節器自動化標定系統得到很好的。該自動化標定系統可模擬信號調節器所需的各種輸入信號,并使用采集設備信號調節器輸出的調理信號,然后進行分析并完成機載信號調節器的自動檢測和標定,可大大提高檢測精度,檢測效率和降低人員工作量。

        基爾霍夫電流相關文章:基爾霍夫電流定律




        評論


        技術專區

        關閉
        主站蜘蛛池模板: 曲周县| 霍城县| 连平县| 佳木斯市| 通榆县| 汝州市| 大城县| 当阳市| 松原市| 南乐县| 额敏县| 巴彦淖尔市| 仁布县| 北安市| 滨海县| 神农架林区| 高台县| 措美县| 富川| 民勤县| 迭部县| 贵阳市| 贵州省| 辉县市| 新乡市| 山东| 视频| 涟源市| 利辛县| 乌苏市| 岳池县| 济宁市| 侯马市| 云阳县| 磐安县| 海南省| 井陉县| 青田县| 永平县| 台安县| 蒙城县|