2020年11月25日 星期三

Arduino 教學:線性霍爾磁力感測器

作者:王一哲
日期:2020/11/25



元件基本資料


KY-024 是一種常見的線性霍爾磁力感測器,售價大約90元。測量原理是利用外加磁場使晶片中的載子偏轉,使晶片於電流、磁場同時垂直的方向上產生電壓。但是 KY-024 只能測量磁場強度的相對值,無法精確地測量磁場強度的絕對值,因此在使用上比較適合作為開關,或是利用磁場量值隨時間的變化測量時間間隔。從下方的照片中可以看到由上至下的接腳功能分別為類比訊號接地電源數位訊號,分別將它們接到 Arduino 開發板上的類比輸入GND5V數位輸入

KY-024 照片

KY-024 電路圖

KY-024 裝置照片

測試用程式碼


#define ANALOG A0
#define DIGITAL 3

int analog, digital;

void setup() {
    pinMode(ANALOG, INPUT);
    pinMode(DIGITAL, INPUT);
    Serial.begin(9600);
    Serial.println("t (ms), analog, digital");
}

void loop() {
    analog = analogRead(ANALOG);
    digital = digitalRead(DIGITAL);
    Serial.print(millis());
    Serial.print(", ");
    Serial.print(analog);
    Serial.print(", ");
    Serial.println(digital);
    delay(100);
}

測試結果如下:
  1. 沒有磁鐵靠近時,類比輸入讀取數值約為530,數位輸入讀取值為0。
  2. 磁鐵N極靠近晶片正面或S極靠近晶片背面,類比輸入讀取數值約為870,數位輸入讀取值為0。
  3. 磁鐵N極靠近晶片背面或S極靠近晶片正面,類比輸入讀取數值約為435,數位輸入讀取值為1。

磁鐵 N 極靠近 KY-024 晶片正面

磁鐵 N 極靠近 KY-024 晶片背面

測量複擺週期


將強力磁鐵吸附在鐵尺的下方,再將鐵尺懸掛起來,將鐵尺向右拉到某個角度後由靜止釋放。當鐵尺擺動到最低點時,下方磁鐵的 N 極會接近磁力感測器晶片的背面,使類比輸入讀取到的數值降低到 430 左右,從數值 - 時間的資料及關係圖中可以看出鐵尺擺動到最低點的時間間隔,這應該是鐵尺擺動的半個週期,大約為 374 ms。為了盡量縮短測量的時間間隔,實驗時會將程式碼中最後一行的 delay(100) 註解掉,但理論上磁場變化影響到感測器輸出數值需要一些時間,這部分還需要再研究看看。
測量複擺週期裝置照片

測量複擺週期實驗結果


參考資料


KY-024 線性霍爾磁力感測器資料表:https://arduinomodules.info/ky-024-linear-magnetic-hall-module


HackMD 版本連結:https://hackmd.io/@yizhewang/BJU9Tcq9v

2 則留言:

  1. 这个可以蓝牙吗?esp32倒可以,也不贵,再结合手机软件phyphox可以有巨大的应用潜力

    回覆刪除
    回覆
    1. 我這裡使用的 Arduino Uno 沒有內建藍芽功能,可以另外連接藍芽模組。

      刪除