• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于單片機(jī)I/O口實(shí)現(xiàn)A/D轉(zhuǎn)換方法

      2010-06-22 08:18:16周渡海何此昂
      關(guān)鍵詞:發(fā)射極三極管門限

      周渡海,何此昂

      (1.北京建筑工程學(xué)院 電信學(xué)院,北京100044;2.華中科技大學(xué) 電氣學(xué)院)

      引 言

      在某些特定的場(chǎng)合(主要是在數(shù)字電子應(yīng)用方面),需要一個(gè)模擬信號(hào)輸入來進(jìn)行一些基本模擬量的測(cè)量,或者是提供可控的方式使用外部電位器。像這樣的需求,由一個(gè)內(nèi)置A/D(模/數(shù))轉(zhuǎn)換器的單片機(jī)就能很好地實(shí)現(xiàn);當(dāng)然,也可以使用一些經(jīng)濟(jì)的外部器件,由一個(gè)標(biāo)準(zhǔn)的數(shù)字Ⅰ/O口來實(shí)現(xiàn)簡(jiǎn)單的A/D轉(zhuǎn)換功能。本文以Holtek系列單片機(jī)為對(duì)象,介紹使用標(biāo)準(zhǔn)的施密特輸入口或CMOSⅠ/O作為基本A/D轉(zhuǎn)換口的使用方法,為對(duì)A/D轉(zhuǎn)換精度要求不高的應(yīng)用提供了一種低成本的A/D轉(zhuǎn)換實(shí)用方案。

      1 I/O口A/D轉(zhuǎn)換原理

      Ⅰ/O口A/D轉(zhuǎn)換的原理是:對(duì)某一電容充電達(dá)到某個(gè)固定的電壓值,然后以恒定電流進(jìn)行放電,通過測(cè)量放電時(shí)間來獲得當(dāng)前輸入信號(hào)的強(qiáng)弱。通過設(shè)置Ⅰ/O口為輸出高電平可以迅速地對(duì)電容進(jìn)行充電,在輸出口與電容之間建議串接一個(gè)100Ω的小電阻來限流,防止大電流損壞。電容充電的表達(dá)公式如下:

      式中:VC是電容電壓,VO是Ⅰ/O口輸出電壓(與單片機(jī)實(shí)際工作電壓有關(guān))。將輸出口置高開始對(duì)電容充電后僅需短時(shí)間的延時(shí),充電電壓即可達(dá)到VO的98%(這里需要的時(shí)間大約為39μs)。充電過程完成后,即可將控制口設(shè)置為輸入狀態(tài)。這是因?yàn)槠漭斎霠顟B(tài)為高阻態(tài),此時(shí)電容就只能通過三極管的發(fā)射極對(duì)地以恒定的電流放電。電流大小與發(fā)射極上串聯(lián)的電阻有關(guān),改變放電電流的大小即可改變放電斜率。

      電流大小與電容電量之間的關(guān)系式如下:

      式中:C是元件的電容,單位是F;dV/dt是電容上的電壓變化率,單位是V/s;I是流過電容的電流,單位為A。如圖1所示,如果流經(jīng)電容的電流是恒定的,那么充電時(shí)電容電壓上升的速率也是恒定的。也就是說,對(duì)電容的充放電曲線的斜率是由電容參數(shù)值和充放電電流值決定的,電壓的變化率dV/dt等于1/C。

      圖1 電量與充放電時(shí)間關(guān)系圖

      在放電時(shí),如果電容與一個(gè)CMOS輸入端相連接,那么隨著電容電壓幅度的減小,當(dāng)其幅度降低到CMOS輸入的開關(guān)極限值時(shí),CMOS輸入端將從高電平變?yōu)榈碗娖健J褂脙?nèi)部定時(shí)器/計(jì)數(shù)器從放電周期開始對(duì)輸入端進(jìn)行監(jiān)測(cè)。當(dāng)輸入端出現(xiàn)下降沿時(shí),如果定時(shí)器/計(jì)數(shù)器停止計(jì)數(shù),則定時(shí)器寄存器的剩余值是與放電電流成比例的。放電電流大小是由發(fā)射極的兩個(gè)電阻決定的,其中一個(gè)電阻是電位器。

      2 硬件設(shè)計(jì)

      圖2 硬件設(shè)計(jì)圖

      硬件電路由極少的標(biāo)準(zhǔn)元器件組成,如圖2所示。用一個(gè)紅色的LED(D1)提供一個(gè)大約1.8V的參考電壓,同時(shí)具有上電指示的功能(也可使用不同顏色的LED或串聯(lián)幾個(gè)低功耗的二極管,如1N4148)。LED的正向電壓與Q1(2N2222)基極到射極之間的電壓相減,便得出串聯(lián)電阻R1和R2上的電壓,從而在Q1的發(fā)射極產(chǎn)生一個(gè)恒流源。這將在Q1的集電極產(chǎn)生一個(gè)恒定的電流,該電流即為放電電流。三極管的集電極電流同基極電流的關(guān)系,是由三極管的放大倍數(shù)值決定的,與外部電路的精確度無關(guān)。幾乎所有的NPN型三極管都可以應(yīng)用到該電路中。單片機(jī)的Ⅰ/O引腳經(jīng)一個(gè)100Ω的電阻與電容C1連接,當(dāng)充電時(shí),這個(gè)電阻對(duì)電容具有限流保護(hù)作用。在放電期間,Ⅰ/O口具有高輸入阻抗,所以不會(huì)影響A/D轉(zhuǎn)換的精確度。R1的作用是當(dāng)R2電位計(jì)在最小值時(shí),確保三極管Q1工作在非飽和區(qū),并維持電流源工作。如果R1為1.2kΩ,那么提供的電流源的值大約為1mA,選取較小的電阻值以便于計(jì)算。選取R2為10kΩ的目的是,當(dāng)其在較大值時(shí)可降低功耗,并且可以防止外界干擾。

      使用Holtek公司的HT48F06E的Flash Ⅰ/O型單片機(jī)來設(shè)計(jì)Ⅰ/O口A/D輸入方式。事實(shí)上任何一款帶有施密特觸發(fā)、CMOS Ⅰ/O結(jié)構(gòu)的Holtek單片機(jī)都可以使用。注意,NMOS型Ⅰ/O引腳不適合于該應(yīng)用。如果電容放電電壓的下降沿下降得相對(duì)比較緩慢,非施密特型的CMOS輸入也不適用于該應(yīng)用,因?yàn)榫徛南陆笛剌斎朐陔妷航档介T限電壓時(shí)不能產(chǎn)生一個(gè)明確的邏輯轉(zhuǎn)換。檢查電路將會(huì)發(fā)現(xiàn),電容電壓從Vdd開始放電到輸入引腳的門限電壓Vth之間的時(shí)間,可由電壓的變化量除以電壓的變化率求得。方程式如下:

      式中:Vth是輸入引腳的門限電壓值,C是電容值,I是恒定的放電電流值。I可由三極管Q1發(fā)射極的電壓Ve除以R2與R3之和得出,代入方程式可得出:

      式中:Ve是發(fā)射極電壓值,它可由LED的正向電壓減去三極管的Vbe得出。

      3 軟件設(shè)計(jì)

      A/D轉(zhuǎn)換編碼很簡(jiǎn)單,它是由連續(xù)地對(duì)電容充放電來實(shí)現(xiàn)的。對(duì)電容充電,通過設(shè)置Ⅰ/O為輸出,并設(shè)置一個(gè)較長(zhǎng)的固定時(shí)間周期以確保電容滿充。一個(gè)100nF的電容和一個(gè)100Ω的電阻可以達(dá)到10μs的固定時(shí)間周期,它可以作為一個(gè)計(jì)算合適充電時(shí)間的標(biāo)準(zhǔn)。對(duì)電容充電的合適時(shí)間應(yīng)不小于10倍的RC充電時(shí)間常數(shù)。當(dāng)Ⅰ/O口由低輸出變?yōu)楦咻斎霠顟B(tài),放電過程即可開始,同時(shí)定時(shí)計(jì)數(shù)器也開始計(jì)時(shí)。該系統(tǒng)使用3.58MHz的晶振,如果設(shè)置定時(shí)器預(yù)分頻器的值為16,將得到一個(gè)約4.47 μs的時(shí)鐘周期。此時(shí),TMR寄存器的溢出周期為(255×4.47μs)=1.14ms。若該溢出周期遠(yuǎn)小于電容由滿充到輸入門限電壓值的放電時(shí)間,A/D轉(zhuǎn)換值將會(huì)是大于8位二進(jìn)制的數(shù)據(jù)。如果增加預(yù)分頻器值到64,將會(huì)得到一個(gè)足夠長(zhǎng)的時(shí)鐘周期,允許A/D轉(zhuǎn)換值在8位(即255)以內(nèi)。軟件設(shè)計(jì)流程如圖3所示。

      圖3 軟件設(shè)計(jì)流程

      由于Holtek單片機(jī)的指令和處理方式與很多公司(如Atmel、TⅠ、NXP等)的微處理器類似,所以 Holtek單片機(jī)程序可以很方便移植到各類單片機(jī)中。

      編者注:源代碼見本刊網(wǎng)站 www.mesnet.com.cn。

      4 實(shí)驗(yàn)驗(yàn)證

      圖4為使用泰克公司示波器測(cè)試的電容兩端的電壓波形。可以清楚地看到電容充電整個(gè)過程的指數(shù)上升曲線。上升時(shí)間比預(yù)計(jì)值長(zhǎng),這可能是由于單片機(jī)CMOS輸出口的電壓驅(qū)動(dòng)能力沒有理想中的好。這一點(diǎn)在充電周期起始階段、充電電流值比較大時(shí),表現(xiàn)得尤為明顯。注意,電流源將不斷地從CMOS輸出口吸收電流,這對(duì)上升時(shí)間產(chǎn)生一些影響,可通過在電容充電時(shí)加一個(gè)較長(zhǎng)延時(shí)來解決。這條曲線表明,在這個(gè)范例中,允許電容充電時(shí)間的編程值明顯長(zhǎng)于所必需的時(shí)間,并且可以縮短整個(gè)A/D轉(zhuǎn)換的時(shí)間。至于比較重要的放電斜率,盡管沒有測(cè)量,但看起來線性度非常好。施密特觸發(fā)Ⅰ/O輸入口的轉(zhuǎn)換也很明顯,而且沒有檢測(cè)到干擾信號(hào)。另外,由高到低變化的門限電壓值為1.62V,這個(gè)值依賴于處理過程,而且隨著選擇的芯片不同而有所變化,它對(duì)A/D轉(zhuǎn)換值有著重要的影響。

      圖4 實(shí)際測(cè)試波形

      由于該應(yīng)用范例只是提供一個(gè)A/D轉(zhuǎn)換的基本形式,因此不適用于精確的測(cè)量,只適用于轉(zhuǎn)換精度有限的領(lǐng)域。絕對(duì)誤差的主要來源在于所使用電容的實(shí)際值和輸入電壓的門限值。盡管使用的電容為0.1μF,但它的容限可能會(huì)大。如果采用軟件校準(zhǔn)對(duì)絕對(duì)誤差進(jìn)行補(bǔ)償,那么將獲得一個(gè)合理的精確度。另外,還存在一些小誤差,其中一個(gè)就是電容放電時(shí),由于三極管Vce電壓值不斷變化引起的放電電流的微弱變化。其他誤差可能是由不很理想的電源電壓引入的。注意:要確保沒有上拉電阻與Ⅰ/O引腳相連,否則將會(huì)產(chǎn)生誤差,影響到放電斜率的線性度,尤其在放電電流較小的情況下。

      結(jié) 語

      本文介紹如何用一個(gè)標(biāo)準(zhǔn)邏輯Ⅰ/O引腳與內(nèi)部定時(shí)器/計(jì)數(shù)器,以及一些低成本的器件來實(shí)現(xiàn)A/D轉(zhuǎn)換功能。雖然不是針對(duì)高精度的A/D轉(zhuǎn)換應(yīng)用,但這個(gè)構(gòu)思實(shí)際上可以實(shí)施于低分辨率、低成本的A/D轉(zhuǎn)換功能。在示波器曲線上隨意測(cè)量放電斜率,雖然測(cè)量方式比較簡(jiǎn)單,但可以看到很好的線性度。目前,只使用了一個(gè)Ⅰ/O引腳,但很容易應(yīng)用于多通道模擬輸入。本文使用一個(gè)電位計(jì)提供模擬信號(hào)輸入,也可以用一個(gè)固定電阻來代替,并使用一個(gè)緩沖電壓源與三極管的基極連接,從而來提供模擬信號(hào)的輸入。雖然這個(gè)電壓源可以用來控制放電電流,但是對(duì)三極管保持導(dǎo)通并工作在線性區(qū)域的輸入電壓范圍加大了限制。使用外部中斷作為模擬測(cè)量輸入腳,可以實(shí)現(xiàn)更高效率的程序代碼,在A/D轉(zhuǎn)換過程中程序可以繼續(xù)執(zhí)行其他的任務(wù)。

      本文介紹的方法可以廣泛地應(yīng)用于低成本的溫度檢測(cè)場(chǎng)合,諸如室外溫度計(jì)、電熱水器溫度檢測(cè)、空調(diào)溫度監(jiān)測(cè)等場(chǎng)合,具有一定的實(shí)用價(jià)值。

      [1]何此昂,等.Freescale 08系列單片機(jī)開發(fā)與應(yīng)用實(shí)例[M].北京:北京航空航天大學(xué)出版社,2009.

      猜你喜歡
      發(fā)射極三極管門限
      基于發(fā)射極耦合邏輯結(jié)構(gòu)的低相噪鑒頻鑒相器設(shè)計(jì)
      基于規(guī)則的HEV邏輯門限控制策略
      地方債對(duì)經(jīng)濟(jì)增長(zhǎng)的門限效應(yīng)及地區(qū)差異研究
      激光推進(jìn)納米硼漿在N型高效晶硅電池制作選擇性發(fā)射極中的應(yīng)用研究
      云南化工(2020年11期)2021-01-14 00:50:50
      隨機(jī)失效門限下指數(shù)退化軌道模型的分析與應(yīng)用
      基于晶體三極管的放大電路分析
      UPS的使用安裝維護(hù)和運(yùn)行
      三極管引腳折彎?rùn)C(jī)雙凸輪機(jī)構(gòu)的分析與仿真
      三極管放大電路的研究
      電子制作(2016年1期)2016-11-07 08:43:05
      三極管單管放大電路的失真分析
      东至县| 溆浦县| 綦江县| 定结县| 怀化市| 平顺县| 奉贤区| 固始县| 芦山县| 栾城县| 呼玛县| 铜陵市| 磐安县| 湘乡市| 万盛区| 舟曲县| 沁阳市| 社旗县| 五莲县| 无棣县| 涡阳县| 武山县| 芮城县| 定兴县| 阿瓦提县| 疏勒县| 岑溪市| 肥西县| 寿阳县| 麻栗坡县| 洛扎县| 息烽县| 柳江县| 黑山县| 蒲城县| 临夏县| 阳谷县| 陇西县| 石柱| 高雄县| 蓬安县|