磁力怎麼做成互動裝置?從感測到致動的完整實作
當磁鐵自動把門關上的那一刻
你有沒有注意過——
家裡的防盜門,關上時總是「喀」的一聲,精準而乾脆。
但門框上明明沒有按鈕。門是怎麼知道「自己被關上了」的?
答案就藏在門框與門扇之間,那顆小小的磁性感測器。
磁鐵吸附的瞬間,磁場消失,感測器立刻知道:「門被打開了。」
這個「看不見的力量」,不只可以感知——還可以驅動。
當磁場可以被控制,磁力就可以被設計成一種互動語言。
這篇文章,要帶你從零開始,做一個真正的磁力互動系統——上半場用磁性感測,下半場用磁力驅動,兩者結合,就能做出一個完整的磁力互動裝置。
你可能會想要磁力的場景
在開始之前,先問自己一個問題:
磁力,對你來說可以是什麼?
想像幾個畫面——
- 無接觸開關:衛浴燈具不需要按鈕,磁鐵靠近就亮、離開就滅——手濕的時候特別好用
- 門窗防盜警示:門被打開的瞬間,警報器響起,不需要任何按鍵
- 轉速偵測:單車輪胎轉一圈,磁鐵經過感測器一次,Arduino 就能算出時速——DIY 碼表就這樣誕生
- 磁懸浮展示:一個NdFeB磁鐵,在底座線圈的排斥力下緩緩懸浮——就像《回到未來》的懸浮滑板
- 自動吸合機構:盒子蓋子靠近時,磁力自動把它吸上——就像MacBook的MagSafe那樣優雅
- 舵機磁力控制:用磁力替代物理連桿,讓機構傳動無聲、更耐久
這些應用聽起來像是工廠才會用到的技術,但你完全可以自己動手做出來。底層原理,都是同一件事:磁場可以被感測、可以被操控。
接下來,分成兩個部分來實作:
- 上半場:磁性感測——讓Arduino「感覺到」磁場的存在
- 下半場:磁力致動——讓Arduino「命令」磁鐵移動
上半場:磁性感測——讓系統知道磁場的變化
Hall Sensor:看不見的磁場,翻譯成數位訊號
最主流的磁性感測方案,是 Hall Sensor(霍爾感測器)。
它的原理很物理:當導體通過磁場時,會在垂直方向產生電壓差。這個現象叫做霍爾效應。
Hall Sensor 把這個微弱的電壓變化,放大成乾淨的數位訊號輸出。常見的型號有:
- A3144:數位輸出,有磁場時輸出 LOW,無磁場時輸出 HIGH
- 49E:類比輸出,可以偵測磁場強弱
- ACS712:電流感測專用,也能順便測磁場
對於 DIY 互動專案,A3144 是最親民的選擇——只需要一顆IC,加上幾條線,Arduino 就能讀到磁場的變化。
圖1:Hall Sensor 可以感測磁場的變化,輸出數位或類比訊號(Source: Wikimedia Commons)
Reed Switch:最簡單的磁性感測
如果想要零電子電路的方案,Reed Switch(磁簧開關) 是另一個選項。
它的構造非常簡單——兩片鐵片封在玻璃管內,外部磁場靠近時,兩片鐵片會因為磁力而接觸,導通電路。
也就是說:磁鐵靠近 = 開關 ON;磁鐵離開 = 開關 OFF。
沒有 IC、沒有供電、沒有複雜程式——純機械開關,適用於低頻率應用(如門磁、防盜器)。
圖2:Reed Switch 是最簡單的磁性感測方案,純機械結構,無需供電(Source: Wikimedia Commons)
感測端的技術關鍵
磁場強度衰減:
磁場的強度與距離平方成反比(F ∝ 1/r²)。Hall Sensor 的實用偵測範圍通常在 0.5~5cm,超出這個範圍感測就不穩定了。選用時要注意磁鐵的強度與感測器距離的搭配。
干擾問題:
地球本身就有磁場(約 0.5 Gauss),在精密應用中可能造成誤差。如果需要高精度,建議在系統啟動時做一次磁場校正,或使用差分測量(有磁鐵狀態 vs 無磁鐵狀態的相對變化)。
下半場:磁力致動——讓系統命令磁鐵移動
電磁鐵:電流可以讓鐵芯變成磁鐵
磁性感測是被動的——系統只是「感覺到」磁場。
但電磁鐵可以讓系統「主動產生」磁力。
當電流通過線圈時,線圈會產生磁場。如果線圈繞在鐵芯上,磁力會更強。
這就是電磁鐵(Electromagnet)——通電有磁、斷電消失,磁力變成可被軟體控制的輸出。
Arduino 的腳位輸出只有 5V、40mA,無法直接驅動電磁鐵。但只要加上一個 N 通道 MOSFET(如 IRFZ44N),就能用 Arduino 控制大功率電磁鐵的通斷。
Solenoid:把磁力變成直線運動
如果想要「磁鐵往前推出」的直線運動,Solenoid(線性致動器) 是專門為此設計的元件。
Solenoid 的結構就是一個電磁鐵加上一根鐵棒。通電時,鐵棒被磁力拉入線圈內;斷電時,彈簧把鐵棒推回。
這個一推一拉的動作,可以拿來做:
- 磁吸鎖:通電解鎖、斷電上鎖——IoT 門禁系統的核心
- 磁推機構:自動販賣機的退幣機構
- 氣閥控制:醫療設備的無菌流體控制
圖3:Solenoid 通電時將鐵棒吸入,斷電時靠彈簧復位,可做為直線致動器(Source: Wikimedia Commons)
致動端的技術關鍵
電流是最大風險:
電磁鐵和 Solenoid 的線圈電流可以從 200mA 到好幾安培。千萬不要直接接 Arduino 腳位,否則一定燒板子。
必須使用:
- MOSFET 驅動板(如 IRFZ44N + 散熱片)
- 外部電源供電(5V/12V 依元件規格)
- 續流二極體(Flyback Diode):當線圈斷電的瞬間,會產生反向電動勢,沒有二極體保護可能損壞 MOSFET 或 Arduino
續流二極體電路:
線圈正極 ──┬── 外部電源 5V/12V
│
├── [二極體 1N4007 正極] ──┐
│ │
│ [MOSFET D]
│ │
Arduino D9 ── [10kΩ] ── MOSFET G ─────┤
│ │
├── [二極體 1N4007 負極] ──┘
│
線圈負極 ──┴── 外部電源 GND
實作上,建議直接購買 Solenoid 驅動模組(淘寶關鍵字:5V Solenoid 驅動板模組),這些模組已經內建 MOSFET + 二極體 + 供電端子,Arduino 只需要給一個訊號腳位就能控制。
實作一:門磁防盜警報器(感測應用)
需要的材料
| 材料 | 規格建議 | 用途 |
|---|---|---|
| Arduino Uno 或 Nano | 含 USB 供電 | 控制核心 |
| A3144 Hall Sensor | 數位輸出型 | 偵測門框磁場 |
| NdFeB 強力磁鐵 | 10x3mm 規格 | 吸附在門扇上 |
| 蜂鳴器模組 | 5V 有源蜂鳴器 | 發出警報聲 |
| LED(紅色) | 5mm | 警報視覺提示 |
| 10kΩ 電阻 | 1/4W | 上拉電阻 |
| 杜邦線、麵包板 | 電路搭建 |
電路接線
| 元件 | Arduino |
|---|---|
| A3144 OUT | Pin 2 |
| A3144 VCC | 5V |
| A3144 GND | GND |
| 蜂鳴器 + | Pin 3 |
| 蜂鳴器 - | GND |
| LED 正極 | Pin 4( через 220Ω 電阻) |
| LED 負極 | GND |
程式碼
// 門磁防盜警報器
// 磁鐵靠近時安靜,磁鐵離開(門打開)時發出警報
const int hallPin = 2; // Hall Sensor 輸出腳
const int buzzerPin = 3; // 蜂鳴器
const int ledPin = 4; // LED 警示燈
bool doorClosed = true; // 記錄門的狀態
void setup() {
Serial.begin(9600);
pinMode(hallPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(buzzerPin, LOW); // 安靜狀態
digitalWrite(ledPin, HIGH); // 綠燈:門正常關閉
Serial.println("門磁警報系統已啟動");
}
void loop() {
int magnetDetected = digitalRead(hallPin);
// A3144:磁鐵靠近 → LOW;磁鐵離開 → HIGH
if (magnetDetected == LOW) {
// 磁鐵在,門關閉
if (!doorClosed) {
Serial.println("門已關閉,警報解除");
doorClosed = true;
}
digitalWrite(buzzerPin, LOW);
digitalWrite(ledPin, HIGH); // 綠燈亮
Serial.println("門:關閉 ✓");
} else {
// 磁鐵不在,門被打開
if (doorClosed) {
Serial.println("⚠️ 警告:門被打開了!");
doorClosed = false;
}
digitalWrite(buzzerPin, HIGH); // 警報聲
digitalWrite(ledPin, LOW); // 紅燈亮(綠燈滅)
}
delay(100);
}
測試方式
- 將磁鐵吸附在門扇上,Hall Sensor 對應放在門框邊緣(距離 < 5mm)
- 開門:蜂鳴器應該立即響起,LED 由綠轉紅
- 關門:蜂鳴器停止,LED 恢復綠燈
- 若訊號不穩定,檢查 Hall Sensor 與磁鐵的距離是否在 5cm 以內
實作二:磁吸式電磁鎖(致動應用)
需要的材料
| 材料 | 規格建議 | 用途 |
|---|---|---|
| Arduino Uno 或 Nano | 控制核心 | |
| 5V Solenoid 驅動模組 | 內建 MOSFET + 二極體 | 驅動電磁鐵 |
| 5V 小型電磁鐵 | 吸力 1kg 以上 | 實際鎖門 |
| 外部 5V 電源 | 2A 以上 | 供電給電磁鐵 |
| 按鍵開關 | 1 個 | 解除鎖定 |
| LED(綠+紅) | 各 1 | 狀態顯示 |
電路接線
[外部 5V 2A] ── [Solenoid 驅動板 V+]
[外部 GND] ─── [Solenoid 驅動板 GND]
[Solenoid 線圈] ── [驅動板 LOAD]
[Arduino D7] ── [驅動板 IN](訊號腳)
[Arduino GND] ── [驅動板 GND]
[按鍵] ── [Arduino D2](接地觸發)
程式碼
// 磁吸式電磁鎖
// 按一下按鍵 → 開鎖(電磁鐵通電,吸合)
// 再按一下 → 上鎖(斷電,彈簧復位)
const int solenoidPin = 7; // Solenoid 驅動訊號
const int btnPin = 2; // 按鍵開關
const int greenLED = 4; // 綠燈:已開鎖
const int redLED = 5; // 紅燈:已上鎖
bool lockState = true; // true = 上鎖狀態
bool lastBtnState = HIGH;
void setup() {
Serial.begin(9600);
pinMode(solenoidPin, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(btnPin, INPUT_PULLUP); // 內建上拉
digitalWrite(solenoidPin, LOW); // 預設:不上電
updateLED();
Serial.println("磁吸鎖系統啟動");
}
void loop() {
int btn = digitalRead(btnPin);
// 按鍵按下時(接地)觸發
if (btn == LOW && lastBtnState == HIGH) {
delay(50); // 軟體去抖動
if (digitalRead(btnPin) == LOW) {
lockState = !lockState;
if (lockState) {
// 上鎖:斷電
digitalWrite(solenoidPin, LOW);
Serial.println("已上鎖");
} else {
// 開鎖:供電
digitalWrite(solenoidPin, HIGH);
Serial.println("已開鎖");
}
updateLED();
delay(300); // 按鍵防抖動
}
}
lastBtnState = btn;
}
void updateLED() {
if (lockState) {
digitalWrite(greenLED, LOW);
digitalWrite(redLED, HIGH); // 紅燈:已上鎖
} else {
digitalWrite(greenLED, HIGH); // 綠燈:已開鎖
digitalWrite(redLED, LOW);
}
}
⚠️ 安全性提醒
- 千萬不要用 Arduino 直接供電給電磁鐵——Arduino 的 5V 腳位最大只能負載 500mA,電磁鐵啟動電流可以輕易超過這個數字
- 一定要用外部電源,並確保 GND 共地
- 續流二極體已在驅動模組上,不需要另外加
從感測到致動:中間的那條橋
上半場的門磁警報,是被動感測——系統只是安靜地等待磁場變化。
下半場的磁吸鎖,是主動致動——系統命令磁力工作。
但兩者之間,其實可以做更多:
- 門打開(感測)→ 30秒後自動上鎖(致動)
- 磁鐵靠近(感測)→ Arduino 讀取磁場強度,決定要給電磁鐵多少電力(漸進式吸附力控制)
- 遙控訊號(感測)→ 控制多組磁吸機構(多門禁系統)
這就是「感測 → 判斷 → 致動」的完整迴路——讓系統不只能感覺,還能回應。
🚀 結語
磁力是自然界最優雅的力量之一。
它不需要接觸,不需要聲音,不需要任何物理接點——穿過空氣,穿過塑膠,穿過你的掌心,悄悄地完成任務。
當你學會了用 Arduino 讀取這股力量,你打開了一扇新的大門。
當你開始用程式命令磁鐵,那扇門,就真正屬於你了。
如果你做出來了,歡迎分享你的作品!
也期待 Part 2——我們會把這兩個系統結合,做成一個「門被打開時自動拍攝畫面、並遠端通知你」的智慧門禁系統。
那一鎖,是你自己設計的。
📁 本文電路圖、程式碼均為原創內容,如需轉載請標註出處。
📦 想快速完成?這裡有最省時的方案:
直接買套件:
-
磁吸鎖 5V 門禁 套件(蝦皮搜尋)— 含電磁鎖本體 + 驅動板,省去自己焊接 -
A3144 霍爾感測器 + 磁鐵 套件(淘寶搜尋)— 門磁DIY一站購足 -
Arduino 入門套件 電子零件(蝦皮搜尋)— 基本備料,一次備齊
省時推薦順序:
- 先買套件組裝,體驗成功 → 建立動機
- 再買散件學習原理 → 深化理解
那一鎖,是你自己設計的。



Top comments (0)