延安大學西安創新學院 王海軍
我們把專門用于探測金屬的電子儀器稱為金屬探測器,最初,它經常會被用在戰爭中排查地雷,或者去排查墻體或者地底下是否存在電纜,還能讓科考隊用來進行地下探寶,探測埋在地底下一些有價值的金屬物體。現如今,金屬探測器更是被廣泛應用于各大場所及領域,如監獄系統來檢測罪犯是否私藏管制刀具、各種大小型車站用來檢測乘客有沒有帶金屬危險物品上車、還有一些超市以及自主購物、自主用餐的一些場所用來做防偷檢查,也可用于考試時檢測考生有沒有帶違禁物品進入考場。
系統整體方案:
使用Arduino Mega 2560作為該簡易金屬探測器主控芯片,由MOSFET和Arduino微控制器組成脈沖發生器。當線圈檢測到有金屬時,通過藍牙模塊hc-05將信息發送給應用程序“spirit PI”,通過應用程序的計算,如果線圈下有金屬,手機會發出聲音并且震動,用于提示發現金屬。系統整體方案設計如圖1所示。

圖1 系統整體方案設計圖
Arduino Mega 2560與市場上其他主板相比,它具有更多的存儲空間和I/O引腳。板上集成了54個數字I/O引腳和16個模擬引腳,54個數字I/O中有15個可實現PWM功能。板上添加了一個16MHz頻率的晶體振蕩器。該最小系統采用USB端口將代碼從計算機寫入微控制器。
HC-05是一款操作簡單的串口協議模塊,使用該模塊的目的在于無線串行連接設置。該系統采用了CSR藍核04-外部單片藍牙系統。使用互補金屬氧化物半導體技術,具有自適應跳頻特性。它的占地面積只有12.7mmx27mm。此模塊通常支持30多道AT命令(操控藍牙模塊的指令)。
HC-05藍牙模塊的兩種工作模式分別為:一是自動聯機和透通模式,另一是命令響應又稱為AT模式。動聯機和透通模式即把從接收數據引腳進來的數據,變為無線信號發送出去;以及收的數據,從發送數據引腳發送給控制器,其自身不能分析數據,同時不能被控制。下面我們詳細介紹一下這兩種工作模式。在自動聯機工作模式下模塊又可分為主、從和回環三種工作角色。1)當模塊處于自動聯機工作模式的時候,將會自動根據事先設定的方式連接的數據傳輸;2)當模塊處于命令響應模式的時候,便可以執行AT命令,我們就可以向模塊發送各種AT命令,為模塊設置控制參數或者發布控制命令。
來自Vishay的第三代功率MOSFETs為設計人員提供了快速開關、堅固的器件設計、低導通電阻和高性價比的最佳組合,集諸多優點于一身。這個系列的產品有更低的柵電荷,這款功率MOSFET是使用該公司基于條帶布局的統一MESHOVERLAY工藝設計的。與來自各種來源的標準零件相比,該技術可以匹配并提高性能。一般會用于切換大功率設備、逆變電路、DC-DC轉換器、電機控制速度、LED調光器或閃光燈、高速開關應用。
實物圖和引腳圖分別如圖2、圖3所示:

圖2 MOSFET IRF740實物圖

圖3 MOSFET IRF740引腳圖
TL072是結型場效應晶體管它具有寬共模電壓、低偏置電壓、低輸入失調電流、內部頻率補償、輸出短路保護、低噪聲、低功耗、高壓擺率、無閂鎖操作、低溫度系數等特點。可以用于UPS、音頻混合器、逆變器、示波器等電子產品。
上述各個模塊芯片還有必要的常用元器件構成了整個硬件電路,硬件電路原理圖如圖4所示。

圖4 硬件電路原理圖
此次設計的軟件開發環境是Arduino IDE,開源Arduino軟件(IDE)使得編寫代碼和將其上傳到開發板上變得容易。該環境使用Java編寫,簡單、清晰,對于一個初學者來說比較容易使用,高級用戶也可以利用。并基于Processing和其他開源軟件。它還可以和Arduino的其它型號的開發板一起使用。
初始化函數:void setup()作為Arduino必不可少的入口函數,其主要功能為對串口的波特率、特殊的數值以及腳位的模式進行初始化設置;該程序在此函數中將串口波特率設置為115200,對脈沖寬度的占空比以及脈沖的頻率進行了初始化操作并將其數值存儲于Arduino自帶的EEPROM(電可擦可編程只讀存儲器)芯片中,以防斷電數據丟失;與此同時將連接線圈的數字腳位設置為OUTPUT模式。初始化函數流程圖如圖5所示。

圖5 初始化函數流程圖
設置占空比和頻率函數:setDutyAndFreq(char value)為設置占空比和頻率的函數,該函數將從串口獲取的數值作為參數,并判斷參數的值對占空比以及頻率作出相應的改變后存儲于EEPROM芯片中。設置占空比和頻率函數如圖6所示。

圖6 設置占空比和頻率函數流程圖
讀取電壓函數:readVolt()為讀取電壓函數,當在單個線圈中建立電流后,關閉該電流會使該場崩潰,從而產生電磁場,當磁場消失時,會感應出一個電壓回線圈,該函數則是用來讀取該電壓,通過讀取連接線圈的模擬信號A7口的數值,并將該數值轉化為電壓,然后利用分壓原理對該電壓進行重復計算后取平均值。
loop循環函數:該函數調用了Arduino庫中的micros()和millis()函數來獲取Arduino運行程序時的微秒數和毫秒數,用來判斷程序運行的時間是否超過以初始化頻率計算出的單個周期,在判斷該條件之前,Arduino先對串口進行判斷是否有數據輸入,如果有數據輸入則讀取該數值,并將該數值作為函數setDutyAndFreq()的參數,來對EEPROM中存儲的占空比以及頻率的數值進行改變;此判斷結束后,判斷程序運行時間是否超過單個周期,超過則重新計算周期,并對線圈進行快速的上電和斷電操作從而獲取相關數值,最終利用藍牙傳輸數據。
有以上對程序的分析畫出如圖7所示的流程圖。

圖7 總程序流程圖
Arduino單片機模塊功能強大,使用起來方便簡易,它的開發應用系統可用JAVA、C語言等來編寫,而且Arduino IDE具有語言簡潔、表達能力強、表達方式靈活、可以直接控制計算機硬件系統、生成代碼質量高等很多有優點。
(1)首先根據系統要求,在Arduino IDE中用C語言編寫程序。
(2)確認程序編寫正確無誤后,將其進行程序加載、運行。
結論:設計了一款簡易金屬探測器,主芯片采用Arduino最小系統板。其原理主要是依據脈沖感應原理,只用一個線圈就行,即該線圈既是發射線圈Tx也是接收線圈Rx。同一線圈發送信號,然后接收信號。該金屬檢測器在60Hz的極低頻率下工作,在Arduino微控制器的幫助下,能夠更輕松地處理信號,為了使其具有無線性,使用藍牙模塊hc-05,將線圈接收的數據發送到智能手機。由漆包銅線所制成的線圈發送巨大的短脈沖電流,每個脈沖產生一個短暫的磁場。當一塊金屬進入磁場線的范圍內時,接受線圈RX就可以檢測接收到信號的幅度和相位變化。幅度變化量和相位變化量表示金屬的尺寸和距離,Arduino Mega微控制器探測到變化后將該數據通過藍牙模塊傳至智能手機,利用spirit PI軟件進行智能手機的數據處理,并通過控制手機揚聲器來判斷是否探測到金屬。