連結資料紀錄器/磁力感測器 地磁紀錄器設計達陣

作者: 廖于嫺 / 李奇韋 / 陳穎龍
2021 年 11 月 29 日

本文的目的在於製作一個可用於記錄地磁場變化的資料記錄器,其中包含三個主要部分:訊號調整器,作為輸入訊號與類比數位轉換器(ADC)之間的匹配;時間系統,通常是GPS用來確定訊號的精確性;資料儲存及傳輸裝置,包含類比數位訊號轉換器、資料處理單元等。

本文設計放大倍率為0.25之訊號濾波器(Filter)作為訊號調整器,之後透過Arduino結合GPS跟即時時鐘(RTC)以確保訊號的精確性,最後將三片ADC結合本實驗前面所做的GPS和RTC,使每筆震波資料可從類比轉換為數位,預期要達到每秒50筆資料並儲存於SD卡中。系統架構如圖1。

圖1 系統架構圖

Data Logger各類元件功能說明

在Data Logger中主要的元件包含了訊號調整器、MCU、GPS、RTC、ADC和SD卡、三態閘74HC125等,以下逐一說明各個元件在Data Logger中的作用。訊號調整器:為配合Mag-13UL70三軸磁力感測器的+/-10V輸出訊號,本文設計衰減四倍30Hz低通濾波器作為訊號調整器。藉由德州儀器(TI)開發之Filter Pro 2.0軟體工具畫出電路圖以及波德圖(圖2),使用的是Butterworth單端輸入(MFB Single-Ended)低通濾波器,截止頻率為30Hz。

圖2 Filter Pro2.0(TEXAS INSTRUMENTS)所畫出的信號調整器電路設計及波德圖

・微控制器

選擇使用Arduino開發板Mega2560(圖3a),其處理晶片為Microchip ATMega2560、8-bit AVR RISC-Based Microcontroller、有256KB的快閃記憶體、8KB的靜態隨機存取記憶體,和最高16MHz的程式運作頻率。此開發版有一組SPI、三組UART、一組I2C的通訊介面,以及54個數位輸入輸出可提供其他元件的連接。

圖3 a. Arduino開發板Mega2560, b. ADC模組, c. GPS模組, d. RTC模組 (示意圖)

・類比數位轉換器

本次實作的資料紀錄器,資料解析度需24位元、取樣率50sps(每一秒紀錄50筆資料),並須使用三個ADC同時抓取地磁感測器的X、Y、Z三軸座標資料。本實驗選用Pmod AD5模組(圖3b),ADC晶片為AD7193,這是一個∑-Δ型的ADC,其特性有高達24位元的解析度,最高4.8K的取樣率,有四個通道的差動輸入也可以切換成八個通道的共模輸入(Pseudo Differential Inputs),資料傳輸由最高有效位元(Most Significant Bit)開始傳輸。這片模組有一個2.5V的參考電壓電路,使用的晶片為ADR441。此ADC可由使用者自由編程,裡面有許多暫存器控制ADC的讀取功能,其中較為重要的有:通訊暫存器、模式暫存器、 配置暫存器、數據暫存器。透過通訊暫存器(Communications Register)的讀取與寫入,可修改ADC中其他的暫存器以達到所需功能或是讀取各個暫存器內的數值,包含讀取儲存轉換完成資料的數據暫存器(Data Register)。而模式暫存器(Mode Register)主要有單次轉換或連續轉換的模式選取,內部或外部運作主時鐘的選取以及ADC的Output Data Rate的設置,其數值可到規格書查看對應到的輸出速率、雜訊大小、有效位元數。配置暫存器(Configuration Register)主要是調整增益大小,選擇使用差動輸入讀取或共模輸入讀取,選擇要讀取哪一個通道的資料。

・GPS模組

GPS除了提供位置訊息,也提供標準的時間資料,本實驗選用GY-NEO6MV2模組(圖3c),此模組在通電、接收到GPS資訊後會自動將資料以Baud Rate 9600從TX腳位輸出,只要Arduino開啟UART接收的通道及其功能就可以讓MCU接受到資料做讀取。此模組使用晶片為u-blox的NEO-6M-0-001。利用TinyGPS++的標題檔,可從大量的GPS資料中,擷取出時間資訊,而本實驗在硬體中用一個N-Channel MOSFET AO3400作為開關,當GPS設定好時,切斷GPS的電源與關閉UART的接收功能,以達到省電的效果與避免訊號的干擾、影響MCU的運作。

・RTC模組

本實驗選用Grove-High Precision RTC(圖3d),內部晶片為PCF85063TP,其工作電壓可使用5V或3.3V,電流消耗在工作電壓3.3V、溫度攝氏25度時為0.22μA,有一個CR1225電池座,當MCU斷電時也可以繼續供電,維持時間記錄運行,一年的時間飄移約為1秒,除了基本的I2C傳輸可設定時間之外,有個很重要很好用的功能:可編譯Clock Output Pin,在輸出頻率為1Hz的情況下其訊號上緣觸發與整秒同步,透過I2C的傳輸,修改RTC的CLK OUT的輸出頻率,使用整秒的上緣觸發,配合MCU的中斷功能,啟動紀錄器的紀錄。

・三態閘

由於此MCU只有一組SPI的介面可以使用,ADC與SD卡須共用一組SPI介面,在ADC整合測試中,三片ADC可以分別讀取,互相之間沒有干擾,但是加入SD卡之後,ADC讀取的資料都是FFFFFF,後來發現其原因是SD卡在未使用的狀態下,也就是在Chip Select Pin為High的情況下其MISO pin為High輸出,為了避免干擾ADC的讀取需要將SD卡的SPI腳位與ADC進行隔離,本實驗使用Low Active的Tri-state Logic IC 74HC125,可以隔絕ADC與SD卡共用MISO、MOSI和SCK,將SD卡與MCU的CS PIN作為74HC125的LOW Active開關,用一個100KΩ的電阻做上拉電阻,當要寫入SD卡時將SD卡的CS PIN\輸出LOW打開SD卡與MCU之間的通訊,在連接時須注意MISO、MOSI和SCK的傳輸方向。

圖4 Arduino擴充板電路圖

地磁感測器電路分析

因為地磁感測器有三分量的資料,所以ADC需準備三個通道讀取,原本的設定是使用一片ADC開啟三個通道做轉換,但後來發現三個通道會依序轉換,並不會在同一時間擷取資料,地磁感測器三分量的數據會因此產生時間差,經詢問原廠公司後得知ADC同時抓取的方法,有兩個步驟連接:

1.先讓三片ADC的MCLK2連接在一起,透過編程ADC的模式暫存器,可將一片ADC的內部時鐘外接給其他兩片,一片輸出其他兩片接收,使這三片ADC的運作時鐘一致,此設定可看規格書的模式暫存器中的MR19、MR18。

2.ADC的晶片與模組上都有一個SYNC的腳位,經過一次下緣觸發與上緣觸發後,可使ADC重新抓取,只要讓三片ADC在到達抓取時間時,給予相同的同步訊號,就可以達成ADC同時擷取資料的功能。

由電源通電後開機MCU開始運作,首先抓取GPS時間資訊至RTC,並且初始化ADC的功能以達到設定之需求。本文的ADC設定為:首先,連續讀取模式。接下來,Main Clock的輸入輸出,因應同步功能進行設置。再者,取樣率為960Hz。接下來,使用共模輸入模式。最後,設定讀取為通道Channel 3,增益設置為1。

待GPS與RTC設置完成後,利用Arduino的中斷功能與前述提及的RTC Clock Output訊號,啟動資料紀錄。本實驗也利用Arduino內建的Timer功能,判斷每20ms抓取一次ADC的資料,並儲存在SD卡裡面。為了使前述的元件能夠與Arduino結合,本文也設計適用於本實驗的Arduino擴充板,電路圖如圖5,圖6為本次實驗的軟體主程式。

圖5 軟體流程圖
圖6 本次實驗的軟體主程式

地磁記錄實驗成果

本實驗將資料紀錄器與磁力感測器連結,並以PC連線即時觀測數據並繪圖(圖7),利用磁鐵在XY平面上繞行過一段時間後,改成繞行YZ平面,經過資料轉檔繪圖之後可看出,一開始X軸資料與Y軸資料有明顯變化,之後Y軸資料與Z軸資料也有明顯變化,由此可證明本實驗所研製的記錄器可以作為地磁記錄器使用。

圖7 資料紀錄器與磁力感測儀的連結示意圖

(本文作者廖于嫺為國立臺灣海洋大學電機工程學系學生;陳穎龍為國立中央大學地球科學學系學生;李奇韋任職於中央研究院地球科學研究所)

》想看更多內容?快來【免費加入會員】【登入會員】,享受更多閱讀文章的權限喔!
標籤
相關文章

嵌入式應用設計化繁為簡 一次性可編程MCU不可或缺

2010 年 12 月 09 日

8位元MCU實現遠端遙控 可轉彎機械馬車行走自如

2011 年 06 月 20 日

降低家用醫療裝置成本/尺寸 高整合度SoC效益彰顯

2011 年 09 月 19 日

兼顧高精度與靈活性 SoC MCU提升BGM效能

2012 年 09 月 22 日

滿足DALI匯流排通訊需求 32位元MCU實現智慧燈控

2012 年 12 月 03 日

感測器連線更靈活/高效 新型ADC為MCU運算分憂

2021 年 09 月 06 日
前一篇
做好驅動設計最佳化 有刷馬達仍具性價比優勢
下一篇
新興穿戴裝置如雨後春筍 2020~2027 CAGR達10.72%