基于ATtiny13的模擬量隔離采集
1 概 述
在工控應用中,模擬信號采集通常需要采用隔離技術,以避免大型電氣設備啟合或切換過程中造成的電源和地線波動影響弱電控制系統(tǒng)。常見的模擬量隔離方法主要有隔離放大器、電磁隔離和光電隔離3種方式。隔離放大器,精度很好,但成本高;電磁隔離,設備體積較大,精度較差。
光電隔離技術是一種非常有效的抗干擾手段。光耦作為常見的光電隔離器件,主要用于數(shù)字量隔離傳輸。如果使用光耦傳輸模擬量,那么要求光耦的非線性度非常小,以保證輸入的模擬信號的線性,絕大部分的光耦都很難達到。為了實現(xiàn)對模擬量的光電隔離采集,必須先進行模/數(shù)(A/D)轉換,才能將轉換后的數(shù)字量經由光耦傳遞給下一級電路。
傳統(tǒng)方法,直接使用A/D芯片進行模/數(shù)轉換,然后經光耦傳輸。按接口形式,A/D芯片可分并行和串行訪問2種方式。并行A/D芯片采集精度越高,并行數(shù)據(jù)線占用的光耦數(shù)目越多,而且需要配以控制A/D轉換操作相應的隔離信號,這種方式接線多,占用資源也多;串行A/D芯片可以節(jié)省不少光耦,但需要復雜的時序才能完成對A/D的讀寫操作。
本文提出一種使用集成A/D的微型單片機AT-tiny13進行模擬量隔離采集,使用單根數(shù)據(jù)線完成數(shù)據(jù)傳輸。模擬量隔離采集采用了簡化的UART通信方式,即單工通信方式,只需要發(fā)送線TXD,無需接收線RXD。這樣,單根數(shù)據(jù)線就能承擔發(fā)送A/D轉換值任務,接收方只要具備硬件UART或軟件UART(接收),就可以輕松獲取隔離模擬量值。
2 ATtiny13簡介
ATtiny13具有1 KB Flash,64字節(jié)EEPROM,64字節(jié)SRAM,6個通用I/O口線,32個通用工作寄存器,1個具有比較模式的8位定時器/計數(shù)器,片內/外中斷,以及4路10位ADC。
3 硬件設計
模擬量隔離采集電路如圖1所示。ATtiny13有2路10位ADC可控選擇,本設計中只使用了1路ADC。光耦PC817用于傳輸A/D轉換值。CLKI代表從外部引入的時鐘源。
4 軟件UART
ATtiny13內部沒有集成UART功能。為了彌補這一缺陷,可以使用軟件控制I/O引腳模擬UART功能,按照設定的采集速率將A/D轉換值經光耦隔離輸出。
4.1 異步串行協(xié)議
采用UART異步串行協(xié)議通信時,數(shù)據(jù)按順序逐位輸出。接收方通過監(jiān)測起始位(低電平有效)和停止位(高電平有效)來判斷一幀信息的起始與結束。數(shù)據(jù)幀中還可包括若干數(shù)據(jù)位和奇偶校驗位。異步串行協(xié)議的起始位與停止位必須使用,其余各位可調整位長度。異步串行協(xié)議格式如下:
本文定義幀格式為:起始位(1位),數(shù)據(jù)位(5位),無奇偶校驗位,停止位(1位)。ATtiny13自帶精度為10位的A/D轉換器,而數(shù)據(jù)位設定為5位寬度,所以需要連續(xù)發(fā)送2次異步串行通信幀,才能將一次A/D轉換值傳送完整。按照高位先出的方法,前1次發(fā)送A/D轉換值的高5位,后1次發(fā)送低5位。
4.2 波特率設置
波特率是UART異步串行通信中非常重要的參數(shù)。通信雙方必須以約定好的速率通信,才能保證通信成功。波特率與異步串行協(xié)議中“位”所占用的時間密切相關。對于二進制信號,數(shù)據(jù)幀中每一位的占用時間就是波特率的倒數(shù)。因此,如何精確確定每一位的時間寬度,成為確保串口通信成功的關鍵因素。
ATtiny13沒有集成UART,但內部含有一個8位定時器/計數(shù)器,可利用軟件控制該定時器產生波特率。MCU自帶的RC振蕩器可以作為時鐘源,但是振蕩頻率存在最大±10%的誤差,并且受溫度影響較大。這樣會造成波特率不穩(wěn),通信時可能出現(xiàn)接收不到數(shù)據(jù),或者丟數(shù)據(jù)位、出現(xiàn)亂碼和錯碼的情況。ATtiny13從外部引入了7.372 8 MHz有源晶振時鐘信號,從而保證了主時鐘頻率的穩(wěn)定性。
異步通信波特率可按式(1)計算。
式中:XTAL為引入的主時鐘頻率;Baud為需設置的波特率;C為定時器時鐘分頻系數(shù);n為8位定時器/計數(shù)器的預加載比較值。定時器/計數(shù)器工作在CTC模式(比較匹配時清零定時器)。
XTAL即7.372 8 MHz,Baud設定為9 600,定時器時鐘信號為主時鐘4分頻(即C=4),可得n=192。據(jù)此,8位定時器/計數(shù)器從0計到192時,產生比較中斷,軟件控制發(fā)送新的一位信息。
4.3 數(shù)據(jù)發(fā)送
UART異步串行協(xié)議規(guī)定了在沒有數(shù)據(jù)幀發(fā)送時,通過邏輯“1”表示目前處于閑置狀態(tài)。如果有數(shù)據(jù)需要發(fā)送,首先將發(fā)送線TXD拉低成邏輯“0”,并保持一個基本時間單位;之后根據(jù)待發(fā)送數(shù)據(jù)的二進制數(shù)值,依次逐位輸出。本設計中未使用奇偶校驗位,相關處理略去。5位數(shù)據(jù)發(fā)送完畢后,緊接著將TXD拉高為邏輯“1”,表示該幀結束。軟件UART發(fā)送流程如圖2所示。
函數(shù)Uart_SendByte(unsigned char data)實現(xiàn)了上述功能,一次發(fā)送5位數(shù)據(jù)。在模擬量隔離采集中,單片機不斷地獲取A/D轉換值,并通過調用上述函數(shù)發(fā)送出去。
結 語
本文介紹一種基于ATtiny13的模擬量隔離采集電路,受ADC最大采樣速率及光耦PC817傳輸帶寬的限制,只適用于頻率變換緩慢的模擬信號。該電路體積小、成本低、接線簡單,已用于開關電源成品檢測。
評論