Relé-Modulok

BMZ12TN Többcsatornás MOSFET IO-kártya

A kártya relék helyett MOSFET-ekkel végzi a kapcsolást, csatornánként opto-val izolált. A bemeneti oldal lehet 5/12/24 Voltos, a kimeneti oldal típusfüggő, 3.3/5/12/24 voltos lehet (a választott érték szerint kell rendelni). A csatornék száma is választható, 4/8/12/16 csatornás kivitelben (BMZ4TN, BMZ8TN, BMZ12TN, BMZ16TN) építik ezeket a modulokat. Az egység működhet NPN vagy PNP irányban is. A modul kinézete civilizált, szekrényben kalapsínre installálható. Én a banggood-ról rendeltem a modult, innen.

Technikai adatok

  • Tápfeszültség: DC3.3 .. 24V
  • Üzemi áramfelvétel: 5 .. 10mA
  • Kimenet: optoval leválasztott, izolált
  • Maximális kimeneti áram: 6A
  • Kimeneti oldali feszültség: DC5V .. DC24V (fix)
  • Kapcsolási idő: legfeljebb 1 ms
  • Maximális kapcsolási frekvencia: 2000 Hz
  • Installáció: szabványos sín (kalapsín)

Bekötés

Az SS láb bekötéséval határozható meg, hogy a modul NPN vagy PNP irányban működik. Ha az SS lábra rákötjük a tápfeszültséget, ami lehet a konfigurációtól függően 5, 12 vagy 24 volt, akkor a modul PNP irányban fog működni:

PNP bekötésNPN bekötés

4 csatornás relé modul

A klasszikus relémodulok 1-2-4-8 csatornás kivitelben kaphatók az Arduinokhoz. Csatornánként 15-20 mA szükséges a relék vezérléséhez. A relék optokkal vannak leválasztva a bemenetektől, és állapotukról LED visszajelzést is kapunk.

A kimeneti oldalon egyenáram esetén maximum 30V 10A, váltóáram esetén 250V 10A kapcsolható. A kimeneti oldalon NO és NC kimenet is található.

A modul alkalmazásával nekem vannak negatív tapasztalataim. Nagy terhelés esetén többször tapasztaltam, hogy nem azonnal, de egy idő után furcsa működést produkál az Arduino-val. Az egész kapcsolás elkezd ki-be kapcsolgatni, olyan másodperces ciklusban, és ebből a hibából csak teljes áramtalanítással lehet kivenni.

Ezt a problémát valószínűleg az Arduino pinjének a túlterhelése okozza, ami után a board resetelni próbál, de mivel a terhelés továbbra is fennáll, a felfutás után ismét leállást okoz. A fő probléma ezzel a jelenséggel az, hogy nem lehet tudni, hogy mikor fog bekövetkezni. Elkerüléséhez, megoldásához érdemes nem relés kapcsolást alkalmazni (pl. MOFSET, solid state,..).

JD jumper

A JD jumperen/csatlakozón keresztül megvalósítható a relémodul teljes elektromos szeparálása az Arduino-tól:

Ha a jumper VCC állásban van, akkor a relé meghajtását az Arduino-tól kapott VCC végzi. Ha a JD-VCC állásba külső megtáplálást csatolunk, akkor a VCC teljesen le lesz választva a relétől. Ebben az esetben így érdemes a mudult az Aurdino-hoz csatolni:

Relémodul példa

Relémodul példa
kép forrása: randomnerdtutorials.com

Ebben az összeállításban a PIR mozgásérzékelő egy 230V-os lámpát kapcsolgat 10 másodperces késleltetéssel. A JD jumper itt VCC állásban van, a relé a tápját az Arduino-tól kapja. A példaprogram:

// Relay pin is controlled with D8. The active wire is connected to Normally Closed and common
int relay = 8;
volatile byte relayState = LOW;
 
// PIR Motion Sensor is connected to D2.
int PIRInterrupt = 2;
 
// Timer Variables
long lastDebounceTime = 0;  
long debounceDelay = 10000;
 
void setup() {
  // Pin for relay module set as output
  pinMode(relay, OUTPUT);
  digitalWrite(relay, HIGH);
  // PIR motion sensor set as an input
  pinMode(PIRInterrupt, INPUT);
  // Triggers detectMotion function on rising mode to turn the relay on, if the condition is met
  attachInterrupt(digitalPinToInterrupt(PIRInterrupt), detectMotion, RISING);
  // Serial communication for debugging purposes
  Serial.begin(9600);
}
 
void loop() {
  // If 10 seconds have passed, the relay is turned off
  if((millis() - lastDebounceTime) > debounceDelay && relayState == HIGH){
    digitalWrite(relay, HIGH);
    relayState = LOW;
    Serial.println("OFF");
  }
  delay(50);
}
 
void detectMotion() {
  Serial.println("Motion");
  if(relayState == LOW){
    digitalWrite(relay, LOW);
  }
  relayState = HIGH;  
  Serial.println("ON");
  lastDebounceTime = millis();
}

Mondjuk ha már 230V-ot kapcsolgatunk, akkor lehet, hogy érdemes volna az optók előnyeit kihasználva az Arduino-t szeparálni a reléktől, az alábbi kiegészítéssel (lásd, a fenti JD jumperes pont):


kép forrása: howtomechatronics.com