2013/09/16

Arduino練習:霍爾效應感測器

霍爾效應(Hall effect)由Edwin Hall於1879發現,當電流通過固體導體(或半導體)且放在磁場內,導體內的電荷載子受到勞倫茲力而偏向一邊,進而產生電壓(霍爾電壓)。根據此效應,便可偵測磁場、磁鐵。

這是我買的霍爾效應感測器Melexis US5881LUA。腳位功能圖,1:電源,2:接地,3:輸出。


工作電壓:3.5V到24V
適用溫度範圍:-40°C到150°C

US5881LUA是一個單極(unipolor)的磁力偵測裝置,只能偵測磁鐵的S磁極。

線路圖如下所示,接上5V電源與接地後,US5881LUA的腳位3接一個上拉電阻10k歐姆再接5V,腳位3再接Arduino的數位腳位2。


當US5881LUA處於磁力很弱、磁鐵的S磁極時,Arduino腳位2的狀態將會讀到HIGH,只有在磁鐵S磁極靠近US5881LUA的正面時(據我圖中那個小小的磁鐵而言,必須在1公分之內),Arduino腳位2的狀態將會讀到LOW,所以其作用就如同一個普通的開關,但是是以磁力控制罷了。

底下是測試用的程式碼:

int pin = 2;

void setup()
{
  Serial.begin(115200);
  pinMode(pin, INPUT);    
}

void loop()
{
  int status;
  status = digitalRead(pin);
  Serial.println(status);
  delay(1000);
}

也沒什麼,就是讀取腳位2的狀態,並輸出到序列埠,平常會看到1(HIGH),磁鐵S極靠近就會看到0(LOW)。

這篇寫的有點簡略,關於「開關」,可參考我之前寫的「Arduino練習:以開關切換LED明滅狀態」。

34 comments:

  1. Anonymous8/4/15 14:20

    請問有辦法檢測交流110V或220V的電流進而算出現在電器使用的電功率嗎?

    ReplyDelete
    Replies
    1. 你想要的是這種東西嗎?
      http://openenergymonitor.org/emon/buildingblocks/how-to-build-an-arduino-energy-monitor
      應該要量測電壓與電流,再算出電功率。

      Delete
  2. 請問要量測磁力的大小。例如多少gs是用這塊嗎?

    ReplyDelete
    Replies
    1. 不是。

      或可試試A1301/A1302,請參閱http://playground.arduino.cc/Code/HallEffect

      Delete
  3. 你好,我想請問,如果我想用霍爾感測控制馬達的正轉反轉,該怎麼做,有參考的例子嗎?

    ReplyDelete
    Replies
    1. 從霍爾感測器,取得狀態後(有磁力或無),然後下指令控制馬達。
      不太懂你的問題所在。

      Delete
    2. 有磁力時,馬達反轉,無磁力時,保持正轉。

      Delete
    3. 是的我知道。就動手寫啊,:D。

      Delete
    4. 說的簡單,大神幫忙個

      Delete
    5. 你只是說出想要的功能,並沒有描述問題。
      取得霍爾效應感測器的部份,這一篇文章有講。
      馬達電源的部份,請參考拙作《Arduino輕鬆入門:範例分析與實作設計》的第9章,然後10.2節介紹直流馬達,10.5節介紹馬達控制板,10.6有介紹自行以L293D驅動兩顆直流馬達。

      裡頭都有範例程式碼,皆能控制馬達正反轉。

      Delete
    6. int IN1=8;
      int IN2=9;
      int ENA=3;

      void setup()
      {
      pinMode(IN1,OUTPUT);
      pinMode(IN2,OUTPUT);
      }
      void loop()
      {
      analogWrite(ENA, 200);// 馬達轉速
      digitalWrite(IN1,LOW);// 馬達正轉
      digitalWrite(IN2,HIGH);
      delay(2000);

      digitalWrite(IN1,HIGH);// 馬達反轉
      digitalWrite(IN2,LOW);
      delay(2000);
      }

      以上是我寫的馬達正轉反轉的程式(利用L298N測試過,可以達到正轉反轉),我現在的問題是,我不知道如何跟霍爾感測器結合。

      Delete
    7. 你需要的程式碼,其概略形式等同於以開關控制LED,
      請參考 Arduino練習:以開關切換LED明滅狀態 http://yehnan.blogspot.com/2012/02/arduinoled.html

      從霍爾感測器,取得狀態後(有磁力或無),(請參考這一篇),
      根據該狀態,下指令控制馬達(你已經寫出來了)。

      Delete
    8. 謝謝你的回復,我先試試看。

      Delete
    9. 我做出來了,謝謝你, 我現在可以用霍爾感測有無磁力,然後控制馬達了,真心感謝。

      Delete
    10. 恭喜。
      也謝謝回報。

      Delete
  4. 您好
    想請教您一個問題
    因為我們這次的專題想利用多個磁鐵感應下棋的位置
    手邊目前已經準備好一塊ARDUINO YUN
    然而預計一個棋盤會有64個感應區塊
    這樣的話要如何去讓ARDUINO接受到訊號(多個INPUT)
    是要將多個ARDUINO板子串聯嗎?還是有擴充板子可以加裝?
    謝謝!!

    ReplyDelete
    Replies
    1. 使用MCP23017 或MCP23S17 ,
      一個可有16個數位輸入腳位,
      使用4個便可擴充64個腳位

      Delete
    2. 謝謝您的回答!
      我後來上了Arduino的官網查到此篇
      http://playground.arduino.cc/Code/I2CPortExpander8574
      裡頭有介紹到其他的Port expanders
      那這幾種的功能都差不多嗎?
      裏頭有提到MCP23016 (Microchip) are more complicated to use
      比較難使用的原因是為何?謝謝

      Delete
    3. 功能就是擴充腳位。

      > MCP23016 (Microchip) are more complicated to use
      因為控制這顆晶片時,需要傳送的訊號較囉嗦吧。

      建議找有人寫出Arduino程式庫的晶片,譬如搜尋「MCP23017 arduino library」

      Delete
    4. This comment has been removed by the author.

      Delete
    5. This comment has been removed by the author.

      Delete
    6. 謝謝您的回答!
      還有個問題想請教
      因為我們這次是想設計一個同步的棋盤(象棋或者西洋棋)
      下方靠滑軌搭配步進馬達移動再加一個伺服馬達黏一個磁鐵吸引棋子做移動
      但問了一位朋友
      他說本篇網誌介紹的感應器Melexis US5881LUA並非走IIC
      因此建議我買2個MEGA板?
      還是說有其他的感應器可以使用!謝謝

      Delete
    7. > Melexis US5881LUA這篇文章介紹的霍爾感應並非走IIC
      沒錯, 不是IIC, 這顆感測器就只會輸出數位訊號而已

      > 所以是建議我買2塊MEGA板子
      好建議
      一塊mega的腳位超過64個

      Delete
    8. This comment has been removed by the author.

      Delete
    9. This comment has been removed by the author.

      Delete
    10. 謝謝!
      另外想請問
      A3144E 跟這篇介紹的US5881
      這兩款HALL SENSOR 的功能有差嗎?
      或是說靈敏度何者較優?

      Delete
    11. A3144E那些產品,已經停產了吧。

      Delete
    12. > 靈敏度
      請自行查詢datasheet。
      我沒用過。

      Delete
  5. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
  6. 你好 請問一下您在測試US5881時有用過背面測試嗎?
    因為我們最近買了一個A3144的
    當初也是看上單極感應
    但是卻是正面N極靠近通電
    背面S極靠近也會通電
    有沒有只會偵測單面單極靠近通電的感應器呢?

    ReplyDelete
    Replies
    1. > 背面測試嗎?
      沒有。

      > 正面N極靠近通電 背面S極靠近也會通電
      A3144應該是unipolar吧,不該如此。

      > 有沒有只會偵測單面單極靠近通電的感應器呢?
      不知道。

      Delete
  7. 你好 葉前輩
    想詢問一下前輩有沒有用過另一種線性的霍爾感測器呢?
    想用它來做一個簡易的高斯計。

    ReplyDelete