Search Code

Modul Relay 16 Saluran tegangan relay 5V tetap

Modul Relay 16 Saluran tegangan relay 5V tetap

Pendahuluan

Proyek ini mengatasi cacat desain kritis yang ditemukan pada banyak modul relay 16 saluran 5V. Meskipun modul-modul ini dipasarkan sebagai perangkat 5V, regulator tegangan di papan sering kali hanya menyuplai 5V yang telah diatur ke rangkaian optocoupler, sehingga kumparan relay yang sebenarnya menerima tegangan input penuh yang tidak diatur. Jika Anda memberi daya pada modul dengan tegangan lebih tinggi dari 5V—seperti suplai 9V atau 12V—Anda berisiko merusak relay dan perangkat yang terhubung.

16 Channel Relay module
16 Channel Relay Module -2

Panduan ini menunjukkan perbaikan perangkat keras yang sederhana dan efektif untuk memastikan kumparan relay selalu menerima 5V yang benar, terlepas dari tegangan input. Ini adalah modifikasi penting untuk proyek apa pun yang mengutamakan keandalan. Berikut adalah beberapa aplikasi praktis di mana perbaikan ini sangat penting:

  • Membangun hub otomasi rumah yang mengontrol 16 peralatan berbeda (lampu, kipas angin, pemanas) dari satu suplai daya bertegangan lebih tinggi.
  • Membuat panel kontrol industri di mana suplai industri 24V digunakan, tetapi logika dan relay memerlukan 5V yang stabil.
  • Meningkatkan papan relay 16 saluran yang ada untuk menangani rentang tegangan input yang lebih luas tanpa risiko kegagalan komponen.

Tinjauan Perangkat Keras

Inti masalah terletak pada distribusi daya modul. Tegangan input (misalnya, 12V) dialirkan ke regulator tegangan (sering kali LM2596) yang menurunkannya menjadi 5V yang bersih. Namun, 5V yang diatur ini hanya dialirkan untuk memberi daya pada optocoupler, yang mengisolasi sinyal kontrol. Kumparan relay dan chip driver ULN2003 secara keliru terhubung langsung ke jalur tegangan input mentah. Ini berarti input 12V akan menyuplai 12V ke kumparan relay 5V, menyebabkan mereka menjadi terlalu panas dan akhirnya gagal.

Video ini menunjukkan masalah ini dengan jelas. Dengan input 8,72V, kumparan relay diukur menerima 7,75V, yang sangat berbahaya untuk komponen berperingkat 5V (di video pada 03:17).

Perangkat Keras/Komponen

  • Modul Relay 16 Saluran 5V
  • Soldering iron dan solder
  • Pemotong/pengupas kawat
  • Pisau tajam atau alat pemotong
  • Sepotong kawat hook-up
  • Multimeter untuk pengujian
  • Suplai daya (misalnya, 9V atau 12V) untuk pengujian

Panduan Pengkabelan

Perbaikan ini melibatkan prosedur pengkabelan ulang yang sederhana. Tujuannya adalah untuk memutuskan jalur daya yang memberi makan chip ULN2003 dan kumparan relay dari input mentah dan sebagai gantinya menghubungkannya ke output 5V yang diatur. Video ini menyediakan skema terperinci dari rangkaian yang telah dikoreksi (di video pada 03:45).

Berikut adalah proses langkah demi langkah yang ditunjukkan dalam video:

  1. Identifikasi Jalur Daya: Pertama, telusuri jalur PCB untuk menemukan di mana tegangan input mentah dialirkan ke chip driver ULN2003. Dalam video, ini adalah jalur yang membentang di bawah kapasitor ke pin 1 dari chip driver (di video pada 05:15).
  2. Potong Jalur: Menggunakan pisau tajam, potong jalur daya ini dengan hati-hati. Ini memutuskan chip driver dan kumparan relay dari tegangan input mentah. Video menunjukkan pemotongan ini dilakukan pada 05:56.
  3. Verifikasi Pemutusan: Gunakan multimeter dalam mode kontinuitas untuk mengonfirmasi bahwa tegangan input tidak lagi mencapai chip driver (di video pada 06:11).
  4. Solder Kawat Baru: Solder kawat baru dari titik output 5V yang diatur (yang sebelumnya hanya memberi makan optocoupler) ke titik daya yang sekarang terputus yang memberi makan chip driver dan relay. Video menunjukkan melewatkan kawat melalui lubang yang ada di papan untuk mencapai pin umum relay (di video pada 07:06).
  5. Uji Perbaikan: Beri daya pada modul dengan tegangan lebih tinggi dari 5V (misalnya, 15V) dan verifikasi dengan multimeter bahwa kumparan relay sekarang menerima tepat 5V (di video pada 07:37).

Penjelasan Kode

Kode Arduino yang disediakan adalah program uji sederhana untuk mengulang semua 16 saluran relay. Anda dapat menggunakannya untuk memverifikasi bahwa perbaikan perangkat keras Anda berfungsi dengan benar.

Bagian terpenting yang perlu Anda konfigurasi adalah array controlPin. Ini mendefinisikan pin Arduino mana yang terhubung ke pin input modul relay.

const int controlPin[16] = {2,3,4,5,6,7,8,9,10,11,12,A0,A1,A2,A3,A4}; // tentukan pin

Ubah daftar ini agar sesuai dengan pengkabelan aktual Anda. Kode ini menggunakan pin digital 2-12 dan pin analog A0-A4, tetapi Anda dapat mengubahnya ke pin I/O digital apa pun yang tersedia di papan Anda.

Variabel kunci lainnya adalah triggerType. Ini diatur ke LOW secara default, yang umum untuk banyak modul relay.

const int triggerType = LOW;// tipe relay Anda

Jika modul relay Anda "aktif TINGGI" (artinya Anda mengirim sinyal TINGGI untuk menyalakannya), Anda dapat mengubahnya menjadi HIGH. Fungsi channelControl() menangani logika untuk kedua tipe, jadi Anda hanya perlu menyesuaikan satu variabel ini.

Terakhir, variabel loopDelay mengontrol jeda antara setiap saluran dalam siklus uji.

int loopDelay = 1000;// jeda dalam loop

Anda dapat menyesuaikan ini untuk membuat uji lebih cepat atau lebih lambat.

Proyek Langsung/Demonstrasi

Setelah perbaikan, video menunjukkan modul bekerja dengan sempurna dengan input 15V. Multimeter menunjukkan tegangan input pada 15V, sementara tegangan yang diatur di kumparan relay adalah 5V yang stabil dan aman (di video pada 08:10). Relay berbunyi klik hidup dan mati seperti yang diharapkan, mengonfirmasi bahwa perbaikan berhasil dan modul sekarang dapat menangani tegangan input yang lebih tinggi tanpa kerusakan.

Bab

  • [00:00] Pengenalan Masalah Tegangan Relay 16 Saluran
  • [00:34] Mengidentifikasi Cacat Desain
  • [01:56] Mendemonstrasikan Masalah Tegangan
  • [03:45] Skema Rangkaian yang Telah Dikoreksi
  • [05:07] Memotong Jejak Daya yang Salah
  • [06:34] Menyolder Koneksi 5V Baru
  • [07:37] Menguji Perbaikan dengan Input 15V
  • [08:24] Kesimpulan dan Pemikiran Akhir

Gambar

16 Channel Relay module
16 Channel Relay module
16 Channel Relay Module -3
16 Channel Relay Module -3
16 Channel Relay Module -2
16 Channel Relay Module -2
16 Channel Relay Module size
16 Channel Relay Module size
16 Channel Relay Module IC and Optocouplers
16 Channel Relay Module IC and Optocouplers
16 Channel Relay Module
16 Channel Relay Module
16 Channel Relay module 12V vs 5V difference
16 Channel Relay module 12V vs 5V difference
160-Code to control a 16-channel relay module using Arduino
Bahasa: C++
/*
 * Arduino code to control 16 channel relay with Arduino UNO
 * 
 * Written by Ahmad Shamshiri for Robojax.com on Sunday, October 8, 2018 
 * at 10:35 in Ajax, Ontario, Canada
 * Watch video instructions for this code: https://youtu.be/Q9aBI4ELKC4
 * 
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */


const int controlPin[16] = {2,3,4,5,6,7,8,9,10,11,12,A0,A1,A2,A3,A4}; // define pins

const int triggerType = LOW;// your relay type
int loopDelay = 1000;// delay in loop
int tmpStat =1;


void setup() {
  for(int i=0; i<16; i++)
  {
    pinMode(controlPin[i], OUTPUT);// set pin as output
    if(triggerType ==LOW){
      digitalWrite(controlPin[i], HIGH); // set initial state OFF for low trigger relay
    }else{
       digitalWrite(controlPin[i], LOW); // set initial state OFF for high trigger relay     
    }
  }
  
  Serial.begin(9600);// initialize serial monitor with 9600 baud
}

void loop() {

  for(int i=0; i<16; i++)
  {

   channelControl(i,tmpStat,200);// turn each relay ON for 200ms

    
  }
  if(tmpStat)
  {
    tmpStat=0;
  }else{
    tmpStat=1;
  }
 Serial.println("===============");
 //channelControl(6,1, 2000); // turn relay 7 ON for 2 seconds
 //channelControl(6,0, 5000); // turn relay 7 OFF for 5 seconds
 //channelControl(9,1, 3000); // turn relay 10 OFF for ever

 delay(loopDelay);// wait for loopDelay ms
          
}

/*
 * funciton: channelControl
 * turns ON or OFF specific relay channel
 * @param relayChannel is integer value channel from 0 to 15
 * @param action is 1 for ON or 0 for OFF
 * @param t is time in milliseconds
 */
void channelControl(int relayChannel, int action, int t)
{
  int state =LOW;
  String statTXT =" ON";
  if(triggerType == LOW)
  {    
    if (action ==0)// if OFF requested
    {
      state = HIGH;
      statTXT = " OFF";
    }
    digitalWrite(controlPin[relayChannel], state);
    if(t >0 )
    {
      delay(t);
    }
       Serial.print ("Channel: ");
       Serial.print(relayChannel); 
       Serial.print(statTXT);
       Serial.print(" - "); 
       Serial.println(t);        
  }else{
    if (action ==1)// if ON requested
    {
      state = HIGH;     
    }else{
      statTXT = " OFF";    
    }
    digitalWrite(controlPin[relayChannel], state);
    if(t >0 )
    {
      delay(t);
    }
       Serial.print ("Channel: ");
       Serial.print(relayChannel); 
       Serial.print(statTXT);
       Serial.print(" - "); 
       Serial.println(t);    
  }

}

Berkas📁

Skema