Thursday, 11 May 2017

I2C Relay Board

I2C Relay Board
I2C Relay Board
Relay adalah salah satu antarmuka yang paling umum antara pengendali mikro dan dunia luar. Ini menyediakan isolasi listrik antara rangkaian tegangan rendah dari mikro kontroler, dan muatannya.
So why this funny I2C Relay Board, mungkin kamu akan bertanya ....
dalam postingan ini, saya akan mencoba memberikan beberapa alasan saya di balik perancangan board Relay I2C .
Please enjoy, and any feedback is welcome.

Step 1: Cara Normal menghubungkan Relay Tunggal

Normal Way to Drive a Single Relay
Biasanya, sirkuit hanya mendriver beberapa relay,, cara terbaik dengan mengunakan transistor sebagai driver seperti yang di tunjukkan, itu sederhana, biaya rendah dan effectif.
Resistor menjadi pull-down ke ground, dan pembatasan arus basis transistor.
transistor di gunanakan untuk meningkatkan arus yang diggunakan mendriver / mengerakkan Relay, dengan hanya 1mA keluaran dari pin microcontroller, trasistor bisa mensaklar beban 100mA, lebih dari cukup untuk sebagian besar jenis relay.
Dioda itu adalah dioda Fly-Back, melindungi sirkuit dari lonjakan tegangan tinggi ketika relay swicthing (bekerja).
Keuntungan tambahan dari mengunakan sirkuit ini, adalah tegangan operasi relay dapat berbeda dari tengangan yang digunakan microcontroller. jadi, tidak hanya mengunakan relay 5v, tapi dapat mengunakan tengan DC yang lain sampai 48V.
ada satu kekurangan. meskipun sirkuit hanya mengunakan 4 componen, itu semua akan tetap bertambah jika mengunan relay lebiih dari 4 yang dibutuhkan, jadi ,apaya kamu lakukan jika kamu ingin mendiriver 8 relay, tapi ingin tetap mengunakan PCB dengan ukuran yang kecil sebisa mungkin.?

Step 2: Memperkenalkan ULN2803

Introducing the ULN2803
uln2.jpg
semakin banyak relay yang sebuah project butuhkan, semakin banyak pula kompunen yang terhitung. ini aka membuat design PCB menjadi lebih sulit, dan mungkin mengunakan ruang pcb yang berharga, tapi dengan mengunakan transistor array, seperti ULN2803, pasti akan sangat membantu untuk menjaga ukuran pcb.
ULN2803 sangat ideal untuk input 3.3v dan 5V dari microcontroller, dan dapat mendriver relay hingga 48v DC.
ULN2803 ini memiliki 8 sirkuit yang terpisah(sendiri-sendiri), masing-masing sirkuit memiliki semua komponen yang dibutuhkan untuk menyalakan relay.

Step 3: Apa yang telah kita capai sejauh ini

What We Have Achieved So Far
uln.jpg
dengan mengunakan driver ULN2803, kita mengurangi jumlah komponen untuk mendriver 8 relay dari 32 komponen menjadi satu komponen.
ini akan membuat design pcb jauh lebuh sederhana dan mengurangi keseluruhan ukuran pcb.

Step 4: menghubungkan relay ke proyek mengunakan ULN2803

Connecting Relays to a Project Using ULN2803
timer1.jpg
uln3.jpg
timer3.jpg
gambar ini menunjukkan sebuah projek yang mendriver 16 relay, seperti yang dapat dilihat, ruang yang diambil oleh ULN2803 sangan sedikit, dan tata letak pin dari ULN2803 membuatnya sangat mudah di gabungkan dalam pcb.
header sebelah kanan dari ULN2803 digunakan untuk menghubungkan ke masing-masing relay. ini membuat pbc relay sangat sederhana, dengan hanya satu koneksi suply, dan satu koneksi per relay.
mungkin kamu akan bertanya apakah ada cara untuk memperbaiki desig ini.

Step 5: Memperkenalkan Microchip MCP23017 IO Expander

Intruducing the Microchip MCP23017 I/O Expander
mcp.jpg
MCP23017 dari MicroChip adalah sebuah I/O is an I/O Expander IC, yang menambahkan 16 port I/O tambahan ke microcontroller. masing-masing pin MCP23017 dapat di konfigurasi sebagai input dan output. MCP23017 di control lewat bus i2c, dan pengalamatan dapat di program pada MCP23017, sampai 8 ic MCP23017 yang dapat terhubung pada sebauh proyek. ini dapat menambahkan pin total hingga 128 I/O.
melihat proyek yang mana menggunkan 16 relay, jumlah kabel antara pcb utama dan papan relay total ada 17 kabel - satu suplai positif relay dan satu kabel per realay.
mengunakan MCP23017,pengkabelan antara pcb utama dan relay board dapat dikurangi hanya 5 kabel:

  •  relay positive supply
  •  +5V for MCP23017
  •  0V
  •  SDA (I2C bus)
  •  SCL (I2C bus)

untuk mengontrol maksimum 128 I/O porta tambahan ,itu masih membutuhkan 5 kae yang sama dari PCB utama. hal ini membuat desig pcb utama sederhana dan rapi,dan menguangi pengkabelan internal proyek seminimal mungkin.

Step 6: Merancang papan relay I2C

Designing of the I2C Relay Board
4.jpg
6.jpg
2.jpg
3.jpg
PCB Design software limitation
saya mengunkan versi gratis Eagle untuk semua desigku. software itu hanya memiliki satu keterbatasan, dan itu adalah ukuran papan yang dibatasi hingga 100mm x 80mm.
merancang sebuah papan relay dengan 16 relay dan terminal skrupnya, itu tidak mungkin pada PCB 100m x 80 mm. tapi itu mungkit sesuai 8 relay dengan terminal skrupnya, sebuah MCP23017 dan ULN2803 dalam satu papan. alih -alih satu papan, designya di ubah menjadi dua pcb yang identik. satu-satunya kelemahan opsi ini adalah berharap mengunakan semua 16 I/o pada satu ic MCP23017 tapi masing-masing papan harus mengunakan satu ic MCP23017 dan hanya mengunakan 8 I/O dari 16 I/O yang tersedia..
Component selection
Desainnya harus dibuat hanya dengan menggunakan komponen melalui lubang standar..
Connecting multiple I2C Relay Boards
MCP23017 memiliki tiga baris alamat (A0,A1, dan A2), dan masing-masing papan Relay i2c harus memiliki alamat I2C yang uniq. untuk memudahkan pengalamatan, pin header ditambahkan untuk pengturan alamat seriap papan relay I2C. dengan opsi ini, hingga 8 papan relay i2c dan terhubung pada sebuah proyek, untuk mengendalikan total 64 relay.
Supplying power to the relays
dengan sampai 64 relay yang dapat dihubungkan pada sebuah proyek, jelas power suply yang dibutuhkan tidak dapat lagi diambilkan langsung dari pcb utama proyek. oleh karena itu, suply masing-masing papan relay I2C melalui terminal skrup. agar mudah untuk terhubung antar papan relay i2c, dua terminala skrup di tambahkan.
Relay operating voltage
kareanabanyapilihan relay yang tersedia, desig harus memenuhi berbagai tegangan relay yang berbeda. degan mengunakan ULN2803, tegangan relay dapat berbeda antara 5v sampai 48V ,ini membuat pemilihan beban relay lebih mudah.
Connecting a load to the relays
A set of 3 screw terminals per relay allows easy connections the relay contacts (Common, Normally Open, Normally Closed). There is no common connections between the 8 relays, allowing maximum connection flexibility using the I2C Relay Board.
Connecting the I2C Bus
Connection of the four I2C Bus wires is done using headers. Again, two rows of headers were added for easy connection of multiple I2C Relay Boards.

Step 7: Cost and Design Breakdown

Cost and Design Breakdown
Using the project where I had to control 16 relays , the different designs can now be compared
Transistor design
32 Resistors, 16 Diodes (1N4007), 16 Transistors (BC109)
Total number of components excluding relays: 64
Total cost of components, excluding relays : ZAR116.96
Pros:
Standard everyday components
Cons:
Difficult PCB layout
17 wires between project and relays


ULN2803 design
2 x ULN2803
Total number of components excluding relays: 2
Total cost of components, excluding relays : ZAR18.24
Pros:
Minimum components
Easy PCB layout, and reduces overall PCB size
Cheapest option
Cons:
17 wires between project and relays
I2C Relay Board design
2 x ULN2803, 2 x MCP23017, 6 x 3-pin headers, 6 x mini-jumpers, 6 x resistors
Total number of components excluding relays: 22 (4 without the address selection headers)
Total cost of components, excluding relays : ZAR78.00
Pros:
Easy to connect multiple I2C Relay Boards to project
Only 6 wires between project and relays
Cons:
Not the cheapest option available.

Step 8: Connecting the I2C Relay Board

Connecting the I2C Relay Board
f4.jpg
f1.jpg
f2.jpg
The project shown, uses 16 relays, so it contains two I2C Relay Boards. The address of the boards are set to 0 and 1 respectively. As can be seen, the connections between the different PC boards are now kept to a minimum.
Simply connect the +5v, 0V, SDA and SCL lines to an Arduino I2C Bus using ribbon cable.
Connect the required V-Relay to the board.

Step 9: Arduino and the I2C Relay Board

Arduino and the I2C Relay Board
ide.jpg
Connect the board to your Arduino as shown.
Below is a simple sketch for using the I2C Relay Boards.
In this sketch, only the "wire" library is used. Due to the easy comminucation on the I2C Bus, all comms to the MCP23017 is included in the sketch.
<p>#include   <Wire.h>   // needed for I2C operation<br></p><p>void setup() {
 //start I2C communications
 Wire.begin();</p><p>  // Setup relay boards
 SetupRelays();
}</p><p>void loop() {
 // put your main code here, to run repeatedly:
 
 for (byte relaydata = 0; relaydata <= 255; relaydata = relaydata + 1) {
   // write data to cards 0 .. 7 relays
   WriteRelays(0,relaydata);    // write data to relay card 0
   WriteRelays(1,relaydata);    // write data to relay card 1
   WriteRelays(2,relaydata);    // write data to relay card 2
   WriteRelays(3,relaydata);    // write data to relay card 3
   WriteRelays(4,relaydata);    // write data to relay card 4
   WriteRelays(5,relaydata);    // write data to relay card 5
   WriteRelays(6,relaydata);    // write data to relay card 6
   WriteRelays(7,relaydata);    // write data to relay card 7
   delay(1000);  
 }
}</p><p>//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Begin of MCP routines - no library needed
</p><p>//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</p><p>void SetupRelays() {
 // Setup all possible relay cards (address 0 to 7)
 for (byte i = 0; i <= 7; i = i + 1) {
   MCP_Write(i, 0x00, 0b00000000);      //  set all pins to output
   MCP_Write(i, 0x12, 0b00000000);      //  set all outputs to off
 }
}</p><p>void WriteRelays(byte address, byte data) {
 // Write data to relays
 // --------------------
 MCP_Write(address, 0x12, data);
}</p><p>void MCP_Write(byte MCPaddress, byte MCPregister, byte MCPdata) {
 // I2C write routine
 // -----------------
 MCPaddress = MCPaddress + 0x20;    // 0x20 is base address for MCP
 Wire.beginTransmission(MCPaddress);
 Wire.write(MCPregister);
 Wire.write(MCPdata);
 Wire.endTransmission();
}
</p><p>//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</p><p>// End of MCP routines
</p><p>//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</p>


Enjoy !

Step 10: Building and Selling This Project

Building and Selling This Project
If there is a company interested in building this I2C Relay Board, please do so. It would be great if this can be made available for hobbyist as a ready-made add-on.

Source by Eric Brouwer in arduino

1 comment: