應(yīng)用模擬微控制器簡(jiǎn)化數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
Simplify Data Capture System Design with Analog Microcontroller
ADI公司
在微控制器中加入高精度的模擬外設(shè),這樣的模擬微控制器更能適應(yīng)市場(chǎng)的需求。外設(shè)包括高達(dá)24位的模擬數(shù)字轉(zhuǎn)換器,以及12位的數(shù)字模擬轉(zhuǎn)換器等接口。例如,ADI公司的ADuC800系列產(chǎn)品都集成了∑Δ型模數(shù)轉(zhuǎn)換器,根據(jù)配置的存儲(chǔ)器和外設(shè)的配置不同又分成14種型號(hào)。如圖1。
圖1 ADuC800系列產(chǎn)品的結(jié)構(gòu)(略)
這些產(chǎn)品的適用領(lǐng)域包括智能傳感器、過(guò)程控制與PLC等工業(yè)領(lǐng)域,以及氣體分析與監(jiān)測(cè)、熱成像、金屬探測(cè)儀器等在內(nèi)的精密儀器領(lǐng)域。它們可以直接連接傳感器進(jìn)行高精度測(cè)量,同時(shí)需要更少的模擬元件。
以ARM7代替8051內(nèi)核的ADuC702x系列產(chǎn)品分成8款,它們之間代碼互相兼容。它們都是基于12位的模數(shù)轉(zhuǎn)換器,最高采樣速率為1MHz,提供卓越的直流和交流性能指標(biāo)以及出色的低噪聲性能。內(nèi)置了20ppm精度的基準(zhǔn)電壓,并提供了一個(gè)溫度傳感器,使控制器可以根據(jù)自身溫度進(jìn)行補(bǔ)償。該ADC采用逐次逼近技術(shù),內(nèi)部的電壓源和DAC決定了其精度。如圖2。但是由于輸入引腳沒(méi)有保持電路,需要有較大的驅(qū)動(dòng)電流為電容充電,為了避免誤差,可能需要外部緩沖器。轉(zhuǎn)換器的啟動(dòng)方法有多種,推薦使用外部啟動(dòng)轉(zhuǎn)換引腳觸發(fā),此時(shí)延遲最小,其次是定時(shí)器觸發(fā),精度最低的軟件觸發(fā)或可編程邏輯陣列觸發(fā),可能會(huì)受到中斷響應(yīng)的影響。
圖2 逐次逼近型ADC原理(略)
內(nèi)置的多通道復(fù)用器可以提供多通道以及更多的靈活性。首先可以配置成單端輸入模式,此時(shí)以地為參考端。輸入范圍為地到Vref,需要使用抗混疊濾波器。偽差分輸入模式下,一個(gè)引腳為其它引腳提供參考,偽差分輸入可用于對(duì)噪聲環(huán)境要求不是太高的情況,它可抑制共模噪聲電壓。
對(duì)于要求最精確測(cè)量的應(yīng)用,可使用完全差分模式,特別是信號(hào)是以共模電壓為中心的小信號(hào),這種模式最有效。如圖3。另外,器件的偏置和增益系數(shù)可調(diào),以使外部的誤差趨于零。
圖3 完全差分輸入模式(略)
12位的電壓輸出DAC轉(zhuǎn)換器采用電阻串結(jié)構(gòu),內(nèi)置滿(mǎn)擺幅輸出緩沖器,以達(dá)到功能強(qiáng)大和精確的目的。如圖4。電阻串由兩個(gè)獨(dú)立的分壓電阻串組成,可以設(shè)置分壓輸出與后續(xù)輸出電壓,這兩個(gè)電阻串分別輸出最高有效位MSB和最低有效位LSB,所 以稱(chēng)為 分段DAC。如果負(fù)載在5k?以上,或者信號(hào)無(wú)需進(jìn)一步放大,無(wú)需濾波或者輸出保持單極性的情況下可以不需要附加的輸出緩沖器。最差情況下,有效位數(shù)可達(dá)到11.4位,在負(fù)載5k?以上,同時(shí)選用低于電源電壓100mV以上的基準(zhǔn)電壓時(shí),可以達(dá)到11.7位,進(jìn)一步優(yōu)化可以接近11.9位。
圖4 電壓輸出的12位DAC結(jié)構(gòu)(略)
使用ADC或DAC時(shí)可以采用下列的技巧,首先ADC的輸入信號(hào)應(yīng)該在1k?以下,否則需要緩沖器。其次模擬輸入端的電壓可以有一定的余量,甚至可以低于地0.3V,但需小心使用。最后采用外部高精度(高于內(nèi)置帶隙基準(zhǔn)電壓源)基準(zhǔn)電源可以獲得更優(yōu)的性能。如圖5。
圖5 ADC及DAC基準(zhǔn)電壓配置方法(略)
ARM7采用32位的精簡(jiǎn)指令集架構(gòu),指令和數(shù)據(jù)復(fù)用32位總線,集成JTAG測(cè)試端口,主頻高達(dá)44MHz,單周期32位指令,性能高達(dá)45MIPS。工作在32位ARM模式下非常適合微控制器的SRAM操作,16位THUMB模式下更適合片上FLASH操作,此時(shí)具有更大的代碼密度,但是限制對(duì)寄存器的訪問(wèn)??刂破髯陨硎侨?jí)流水線結(jié)構(gòu),如果當(dāng)前指令沒(méi)有完成,可以設(shè)置后面的指令執(zhí)行,即馮諾伊曼修正的哈弗架構(gòu)模式,指令和數(shù)據(jù)籍由同一總線送達(dá),寄存器地址采用線性預(yù)設(shè),有助于編程的方便性。應(yīng)當(dāng)注意,與SRAM相比,F(xiàn)LASH具有更快的擦寫(xiě)時(shí)間,以及更多的擦寫(xiě)次數(shù)和數(shù)據(jù)保存時(shí)間。
圖6 PLA組成的狀態(tài)機(jī)(略)
ADuC7000系列產(chǎn)品時(shí)鐘可以采用內(nèi)置PLL產(chǎn)生和32.768kHz實(shí)時(shí)時(shí)鐘獲得,也可通過(guò)外置晶振產(chǎn)生,此時(shí)時(shí)鐘范圍是50kHz~44MHz。存儲(chǔ)器的數(shù)據(jù)寬度決定了最終的MIPS性能,采用預(yù)設(shè)線性地址的寄存器后,尋址變得很容易。部分產(chǎn)品提供與外設(shè)存儲(chǔ)器的接口。
數(shù)字外設(shè)
PLA由2~8個(gè)邏輯單元陣列組成,其中每個(gè)單元的輸入可以是任意一個(gè)GPIO引腳、時(shí)鐘、計(jì)數(shù)器溢出或任意的寄存器位。輸出可以作為另外一個(gè)PLA的輸入或寄存器位。邏輯單元的配置可以通過(guò)軟件進(jìn)行。
圖7 PLA的使用實(shí)例(略)
ADuC7000產(chǎn)品提供了常見(jiàn)的數(shù)字端口,包括GPIO、I2C兼容接口以及改進(jìn)的UART接口,它具有小數(shù)分頻器以及網(wǎng)絡(luò)尋址模式,此外還提供了SPI接口。
微 控制器具有四個(gè)以上的定時(shí)器,一個(gè)是倒計(jì)數(shù)的16位實(shí)時(shí)計(jì)數(shù)器,一個(gè)可以捕獲中斷的32位計(jì)數(shù)器,既可以遞增計(jì)數(shù)也可以遞減計(jì)數(shù),一個(gè)32位的喚醒計(jì)時(shí)器,以及一個(gè)16位的看門(mén)狗計(jì)時(shí)器。
控制器中還集成了其它一些外設(shè),比如電源監(jiān)視器,具有兩個(gè)可編程電平,在電源電壓降落到這兩個(gè)電平以下時(shí)觸發(fā)中斷。另外有上電復(fù)位以及集成了3相PWM功能。
ADI為AduC系列控制器提供的開(kāi)發(fā)工具包括Quickstart及Quickstart擴(kuò)展型兩種,前者可以通過(guò)串口利 用匯編語(yǔ)言進(jìn)行調(diào)試,而擴(kuò)展型則可以通過(guò)C語(yǔ)言和匯編語(yǔ)言進(jìn)行非侵入式調(diào)試。另外還提供一種擴(kuò)展性差的Mini型開(kāi)發(fā)套件。所有的軟件都是采用Keil uVision進(jìn)行編寫(xiě)與項(xiàng)目管理。其中包括了IAR測(cè)試版。
圖8顯示了AduC7128/9用于驅(qū)動(dòng)直流電機(jī)的設(shè)計(jì)。
控制汽車(chē)電池的充電是一件非常重要而且困難的工作,利用模擬控制器的外設(shè)可以簡(jiǎn)化這些工作,隨著混合動(dòng)力車(chē)的發(fā)展,對(duì)汽車(chē)電力的監(jiān)控和控制變得非常必要,這種應(yīng)用的環(huán)境惡劣,需要新的高充電率轉(zhuǎn)換器。AduC703x非常適合這種應(yīng)用的需求,它具有3個(gè)ADC,可以進(jìn)行電壓、電流和溫度檢測(cè),采用20MHz的ARM7 TDMI內(nèi)核,而且可以直接工作在12V的電源下,還提供了汽車(chē)電氣中常見(jiàn)的LIN2.0接口。
圖8 采用AduC控制器簡(jiǎn)化直流電機(jī)驅(qū)動(dòng)電路設(shè)計(jì)(略)
ADE71xx/75xx則更適合進(jìn)行電能的監(jiān)測(cè)。它提供了2個(gè)ADC,4MHz的8025內(nèi)核,另外有一個(gè)溫度補(bǔ)償?shù)腁DC,內(nèi)置了50ppm/℃的參考電壓。并且提供108段的LCD驅(qū)動(dòng)。
問(wèn)答選編
問(wèn):在強(qiáng)干擾的情況下, ADI的單片機(jī)還能工作正常嗎?
答:這與系統(tǒng)設(shè)計(jì)有很大關(guān)系。ADI的單片機(jī)在電機(jī)控制等的惡劣環(huán)境都有成功的應(yīng)用。但是,還是需要在這種環(huán) 境下加入標(biāo)準(zhǔn)的抗干擾措施。
問(wèn):ADuC845內(nèi)部溫度傳感器可以精確到多少度?如何用它做AD轉(zhuǎn)換溫度補(bǔ)償?
答:ADuC845的精度是+/-2度。你需要測(cè)量ADC轉(zhuǎn)換誤差隨溫度的關(guān)系,然后通過(guò)當(dāng)時(shí)溫度傳感器測(cè)得的溫度來(lái) 校正。
問(wèn):ADuC800系列中16位或24位sigma-delta ADC與12 位逐次逼近型ADC最大的區(qū)別是什么?各自的應(yīng)用?
答:sigma-delta ADC的精度、線性度更高,但是它的速度很低 。它的典型應(yīng)用如溫度、壓力等低頻信號(hào)的測(cè)量。但 是SAR ADC的速度會(huì)較高。
問(wèn):傳感器小信號(hào)時(shí)存在噪音,這一問(wèn)題采用ADuC7000系列時(shí)如何解決?
答:一方面,可以使用差分的方式進(jìn)行處理,如差分放大。差分接到ADuC產(chǎn)品的差分ADC通道上;另一方面,你可以使用模擬濾波和數(shù)字域的濾波進(jìn)行對(duì)噪聲的濾除。
問(wèn):如果用C語(yǔ)言開(kāi)發(fā),代碼量是不是有限制?
答:不同型號(hào)的產(chǎn)品其Flash大小會(huì)不同,大部分ADuC系列產(chǎn)品都是62KB Flash。但是如果您使用免費(fèi)版本的開(kāi)發(fā)軟件,它會(huì)有可編譯的代碼量的限制,要突破此限制, 需要購(gòu)買(mǎi)相關(guān)的完整版開(kāi)發(fā)軟件。
問(wèn):ADuC7000系列在KEIL軟件下能仿真嗎?有沒(méi)有帶USB 接口的芯片?
答:KEIL全面支持ADuC7000系列?;谙到y(tǒng)設(shè)計(jì)成本的考慮,ADuC7000現(xiàn)在還沒(méi)有帶USB接口的。ADuC內(nèi)部帶有性能非常優(yōu)越的A DC和DAC,這是相對(duì)于其他芯片的優(yōu)勢(shì)。
問(wèn):為什么ADuC845AD轉(zhuǎn)換在很長(zhǎng)時(shí)間后特別是在斷電開(kāi)機(jī)后,數(shù)據(jù)才能達(dá)到穩(wěn)定?
答:ADuC845中的ADC是Sigma-Delta型的,所以一般需要大約3~4個(gè)采樣周期達(dá)到穩(wěn)定。
問(wèn):模擬微控制器從哪些方面簡(jiǎn)化了數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)?
答:由 于直接在芯片上集成了多路ADC和DAC,用戶(hù)無(wú)論是系統(tǒng)成本還是設(shè)計(jì)復(fù)雜度上都得到了有效的降低。而IDE環(huán)境中也提供了相應(yīng)的ADC或DAC的配置功能(甚 至仿真功能),可以讓用戶(hù)很直觀地進(jìn)行開(kāi)發(fā)。
問(wèn):如果我需要通過(guò)UART或者I2C燒寫(xiě)程序,可以通過(guò)ADI提供的ARMWSD和i2cwsd界面燒寫(xiě)嗎?和在線燒寫(xiě)有何區(qū)別?在線燒寫(xiě)需要編寫(xiě)bootloader程序嗎?
答:ADuC702x系列擁有2個(gè)不同的啟動(dòng)加載選項(xiàng):1)I2C,主要用于光學(xué)元件市場(chǎng);2)UART,通用。這些啟動(dòng)加載程 序 被整合到ADuC702x內(nèi)核中。ARMWSD面向 UART 版ADuC702x,而I 2 CWSD面向I 2 C版ADuC702xI。
問(wèn):最新的aduc7128和以前的aduc7026的arm內(nèi)核有什 么不同,增加了什么新技術(shù)或新的模塊?
答:ADuC702x和ADuC712x均具有業(yè)內(nèi)標(biāo)準(zhǔn)ARM7TDMI內(nèi) 核。然而,存儲(chǔ)器處于不同的位置,因此需要不同的連接 程 序腳本和啟動(dòng)文件。幾個(gè)外設(shè)也不同,而且這些外設(shè) 的寄存器定義也會(huì)有所不同。
問(wèn):對(duì)線性采集可以用增益校正和偏移校正來(lái)完成,那么對(duì) DAC的電壓設(shè)置中出現(xiàn)的誤差如何校正?
答:ADuC8xx和ADuC702x沒(méi)有DAC偏移寄存器。偏移問(wèn) 題的2種可能的解決方案如下:
1)有效補(bǔ)償
?、?在外部,將DAC輸出連接到ADC輸入通道上。還可 以使用內(nèi)部連接ADC通道9或10。
?、?將數(shù)值寫(xiě)入DAC。
?、?在DAC輸出上進(jìn)行ADC轉(zhuǎn)換,并與期望值比較。
?、?按照要求調(diào)高或降低DAC輸出。
2)DAC“校準(zhǔn)”
利用ADC和DAC定期執(zhí)行下列操作:
?、?從DAC輸出滿(mǎn)標(biāo)度,并利用ADC進(jìn)行轉(zhuǎn)換。
?、?從DAC輸出零標(biāo)度,并利用ADC進(jìn)行轉(zhuǎn)換。
?、?計(jì)算斜率,并與理想值比較。
評(píng)論