Ứng dụng: Bật tắt đèn, motor DC nhỏ, các chốt điện..
#relaymodule
Rơle là một công tắc hoạt động bằng điện. Nó có thể được bật hoặc tắt, để cho dòng điện đi qua hay không.
Module có thể có 1 hoặc nhiều Rơle. Với mạch nguyên lý là lập trình tương tự.
Các chân đầu ra
- COM: Chân chung
- NO (normally open): thường mở - Khi rơle không được cấp điện, thì tiếp điến này sẽ hở và đóng khi có điện cấp cho rơle.
- pin và năng lượng được cung cấp cho tải (đèn máy tính để bàn, trong trường hợp của chúng tôi).
- NC (normally close): thường đóng - Bình thường sẽ đóng, và ngược lại khi rơle được cấp điện
Nếu bạn muốn điều khiển đèn chẳng hạn, tốt hơn là sử dụng tiếp điểm thường mở, vì khi muốn bật đèn ta cần cấp điện điều khiển cho rơle.
Đấu dây đầu vào
Đấu nối khá đơn giản
- GND: Nối với GND.
- IN1: Điều khiển Rơle số 1, nối với 1 chân digital Dx của arduino.
- IN2: Điều khiển Rơle số 2, nối với 1 chân digital Dx của arduino.
- VCC: Cấp nguồn 5V.
Ứng đụng điều khiển bật tắt đèn khi có chuyển động dùng cảm biến #PIR
Bài viết về cảm biến chuyển động PIR
https://making.vn/d/34-cam-bien-chuyen-dong-pir
Cách nối dây
Chương trình điều khiển
/*********
Rui Santos
Complete project details at http://randomnerdtutorials.com
*********/
// Chân rơle nối với chân kỹ thuật số D8 của Arduino. Đèn nối với tiếp điểm thường mở và COM.
int relay = 8;
volatile byte relayState = LOW;
// Cảm biến PIR nối với chân D2 Arduino.
int PIRInterrupt = 2;
// Biến thời gian
long lastDebounceTime = 0;
long debounceDelay = 10000;
void setup() {
// Đặt chân rơle kiểu OutPut, Mức Cao (Vì rơle điều khiển ở mức thấp).
pinMode(relay, OUTPUT);
digitalWrite(relay, HIGH);
// Đặt chân cảm biến kiểu Input
pinMode(PIRInterrupt, INPUT);
// Ở đây, ta dùng ngắt ngoài ở chân D2 để điều khiển Rơle. Khi cảm biến chuyển từ LOW lên HIGHthì hàm detectMotion sẽ đươc thực thi 1 lần. RISING có nghĩa là xung lên.
attachInterrupt(digitalPinToInterrupt(PIRInterrupt), detectMotion, RISING);
// Serial communication
Serial.begin(9600);
}
void loop() {
// Nếu quá 10s thì tự tắt đèn
if((millis() - lastDebounceTime) > debounceDelay && relayState == HIGH){
digitalWrite(relay, HIGH);
relayState = LOW;
Serial.println("Tat");
}
delay(50);
}
void detectMotion() {
Serial.println("Co chuyen dong");
if(relayState == LOW){
digitalWrite(relay, LOW);
}
relayState = HIGH;
Serial.println("Bat");
lastDebounceTime = millis();
}