2014年1月6日 星期一

操作八通道光隔離繼電器模組 - 使用 Raspberry Pi ( 樹莓派 )

"八道道光隔離繼電器模組" 可至露天賣場購買,賣場網址如下:

八通道光隔離繼電器( 5V ) 模組 (低準位觸發) - 3.3 與 5V 系統皆適用 (可用於 Raspberry Pi, Arduino, 單晶片, 8051, AVR)



賣場中的八通道繼電器模組使用光隔離來區隔 ( 前端 ) 邏輯輸入信號與 ( 後端 ) 繼電器線圈驅動信號,電源的使用上一般都預先使用 Jumper 短路繼電器模組上面 VCC 與 JD-VCC兩個接腳,讓前後端可以使用同一個電源,很是方便 !!


邏輯電源與繼電器驅動電源選擇和連接處

其餘各接腳的定義與說明,請繼續看下面的接線建議。


接線建議:

下圖是其中一個繼電器通道的電路圖 ( 其餘通道也是相同的 ),由圖面可以清楚看到,如何控制與接線。

VCC 與 IN1 邏輯電位可為 DC 3V3 或是 5V0 兩種皆可。但 JD-VCC 與 GND 因為繼電器線圈是 DC 5V 驅動,因此只能使用 DC 5V 作為驅動電源。

八通道光隔離繼電器模組 - IN1 通道電路圖 ( 低態動作 )

以下是繼電器模組電源共用與不共用的接線建議:
  1. 使用單一電源時,只要使用短路 PIN 將模組右邊的 VCC 與 JD-VCC 接腳短路,就可以直接將電源正負端直接接在中間位置的 VCC 與 GND,此時就是共用一單一電源。

  2. 不共用的情況下,模組左邊的短路 PIN 要拔掉,繼電器驅動電源正負端分別接到 JD-VCC 與 GND 處;模組中間部分的控制器邏輯輸入部分則是:VCC 接控制器的正極 ( +5V 或 +3.3V ),輸入控制接腳單獨接到 IN1 到 IN8 即可,GND 不須接任何東西,這樣就是真正隔離狀態。

下面是繼電器模組各接腳的詳細說明:
  • IN1 - IN8 輸入所需要的電流值差不多在  4 ~ 6 mA 左右;實際測試落在 2.3 ~ 2.5 mA,建議計算時可使用 5 mA 輸出電流計算。
輸入邏輯腳位與電壓輸入說明
  • 電晶體驅動繼電器線圈所需要的電流差不多要 75 - 85 mA,因此這地方必須要另外輸入 5V0 且可提供 700 mA 以上電流的電源,不然即使前方的 LED 亮起,後端還是沒有足夠的電力讓繼電器激磁;實際測試落在 80 ~ 82 mA 。

  • 繼電器線圈驅動電壓的輸入說明
  • 若整個繼電器模組要共用一個電源,則除了繼電器本身的 700 mA 還要加上您所使用的控制器或周邊所使用的最大耗電量。

  • 繼電器輸出腳位說明如下圖所示。

  • 繼電器接點說明
硬體接線測試:

NOTE:在進行下面接線請注意系統的 SPI 功能是沒有開啟的,因為下面的接線會用到 GPIO #7 ( CE1 ) 和 GPIO #8 ( CE0 )這兩根 SPI 晶片選擇腳位;當然如果您不想關掉 SPI 功能的話,再自行修改這兩根連接 GPIO ˇ7、#8 的腳位到其他地方,只要在程式編譯前修改腳位定義就可以了!


為了要直接使用樹莓派來做為控制繼電器模組的主機以及簡單示範來控制燈泡,簡單起見只使用一個通道接燈泡來做說明 ( 其他通道接外部交、直流裝置也是相同的 ),請參考下面圖面來做接線。

樹莓派與繼電器模組控制接線圖

Relay Module Raspberry Pi Rev2.0
GND 不接
IN1 #04 ( P1- 7 )
IN2 #17 ( P1-11 )
IN3 #18 ( P1-12 )
IN4 #23 ( P1-16 )
IN5 #24 ( P1-18 )
IN6 #25 ( P1-22 )
IN7 #08 ( P1-24 )
IN8 #07 ( P1-26 )
VCC Raspi 5V 或 3V3 皆可
JD-VCC 外部 DC5V 電源正極
GND 外部 DC5V 電源負極

照上面電路圖接好的實體線路就跟下面一模一樣 ( 這邊為了證明 3V3  ),中間上面那一顆藍色的東西就是短路 PIN ( Jumper ),為了說明起見,特別留在那個地方。



樹莓派與繼電器接線詳細近看。有沒注意到,圖面中繼電器模組中間排真的最下方一隻接腳是沒接的,因為我們現在要把邏輯輸入與後端繼電器驅動線路的信號分開。



硬體線路接好之後,就可以開機了!但因為各個接腳還未初始化,所以開機過程中會有燈亮滅,這是正常的!


程式測試:

程式使用 wiringPi 函式庫,因此若系統中沒有安裝的話,直接上 wiringPi 安裝說明網頁或是依照下面指令進行安裝
pi@raspberrypi ~ $ cd; sudo apt-get install git-core
## 取得更新過的程式碼
pi@raspberrypi ~ $ git clone git://git.drogon.net/wiringPi

pi@raspberrypi ~ $ cd wiringPi
pi@raspberrypi ~/wiringPi $ git pull origin
... # 如果是最新版了,就會出現 Already up-to-date
...
## 編譯及安裝 wiringPi,使用 build script
pi@raspberrypi ~/wiringPi $ ./build
...

如果腳位與電路圖不同,請自行修改下面 R_IN1 ~ R_IN8 的接腳定義再存檔
#include <stdio.h>
#include <stdlib.h>     // system()
#include <wiringPi.h>

#define R_IN1    4
#define R_IN2   17
#define R_IN3   18
#define R_IN4   23
#define R_IN5   24
#define R_IN6   25
#define R_IN7    8
#define R_IN8    7

輸入下面指令進行編譯
sudo gcc 8-relay-module.c -l wiringPi -std=gnu99 -o 8relaydemo

編譯完成之後,輸入下面指令開始測試
sudo ./8relaydemo

因為燈泡是裝在第八個通道,所以程式執行之後輸入 8 再輸入 1 開啟繼電器


這時視窗就會顯示出相對應通道的訊號,如下圖 Relay 8



實際線路執行時的照片如下圖所示:

Relay 8 = HIGH

直接輸入 9 或是一個一個繼電器全部開啟之後,就可以聽到繼電器開啟的聲音,若此時通道上有接燈泡,燈泡就會亮起 ( NO -- COM )

開啟全部輸入邏輯信號

關閉第八通道,燈泡熄滅

賣場裡的繼電器模組操作起來非常簡單,不管是使用何種控制器,只要邏輯輸出電壓在 3.3 ~ 5V都可以快速地來完成控制繼電器模組的目的。

沒有留言:

張貼留言