บทเรียนนี้เป็นส่วนหนึ่งของ: การควบคุมรีเลย์โดยใช้ Arduino
นี่คือกลุ่มวิดีโอที่เกี่ยวข้องกับการวิ่งผลัดทั้งหมด ลิงก์ไปยังวิดีโออื่นๆ อยู่ด้านล่างบทความนี้
การใช้รีดสวิตช์เพื่อควบคุมรีเลย์และโหลดไฟฟ้ากระแสสลับ/กระแสตรงด้วยอาร์ดูอิโน
ในบทช่วยสอนนี้ เราจะสำรวจวิธีการใช้รีดสวิตช์ร่วมกับ Arduino เพื่อควบคุมรีเลย์ที่สามารถจัดการโหลดทั้งไฟฟ้ากระแสสลับและไฟฟ้ากระแสตรง รีดสวิตช์ทำหน้าที่เป็นเซนเซอร์แม่เหล็ก ทำให้เราสามารถสั่งงานรีเลย์ตามความใกล้ของแม่เหล็ก การกำหนดค่านี้เหมาะอย่างยิ่งสำหรับการใช้งาน เช่น สัญญาณเตือน ไฟอัตโนมัติ หรือสถานการณ์ใดก็ตามที่คุณต้องการควบคุมอุปกรณ์ตามการมีหรือไม่มีสนามแม่เหล็ก ผลลัพธ์ที่ได้จะเป็นวงจรที่ทำงานได้อย่างสมบูรณ์ซึ่งสามารถเปิดหรือปิดไฟหรือสัญญาณเตือนขึ้นอยู่กับสถานะของรีดสวิตช์


ขณะที่เราสร้างโปรเจกต์นี้ เราจะพูดถึงส่วนประกอบสำคัญที่เกี่ยวข้อง รวมถึงรีดสวิตช์ รีเลย์ และ Arduino รีดสวิตช์มีสามขา: VCC (ไฟเลี้ยง), GND (กราวด์) และ OUTPUT (สัญญาณ) เมื่อแม่เหล็กเข้าใกล้ สวิตช์จะปิด ทำให้ขาสัญญาณเป็น HIGH ซึ่งสามารถสั่งงานรีเลย์ได้ รีเลย์ทำหน้าที่เป็นสวิตช์สำหรับโหลดแรงดันไฟฟ้าสูง ทำให้เหมาะสำหรับการควบคุมอุปกรณ์ เช่น หลอดไฟหรือสัญญาณเตือน
สำหรับการสาธิตด้วยภาพและคำอธิบายเพิ่มเติม โปรดดูวิดีโอที่เกี่ยวข้องที่ (ในวิดีโอที่ 00:00)

อธิบายฮาร์ดแวร์
ส่วนประกอบหลักของโปรเจกต์นี้ประกอบด้วยรีดสวิตช์ โมดูลรีเลย์ และบอร์ด Arduino รีดสวิตช์เป็นเซนเซอร์แม่เหล็กที่ปิดหน้าสัมผัสเมื่อมีแม่เหล็กอยู่ใกล้ ทำให้กระแสไหลผ่านขา OUTPUT ขานี้ส่งสัญญาณไปยังรีเลย์ ซึ่งสามารถควบคุมอุปกรณ์แรงดันสูงได้อย่างปลอดภัย
โมดูลรีเลย์ถูกออกแบบมาเพื่อควบคุมโหลดขนาดใหญ่ มีการเชื่อมต่อหลักสามจุด: Common (COM), Normally Open (NO) และ Normally Closed (NC) เมื่อรีเลย์ถูกสั่งงานโดย Arduino จะเชื่อมต่อขา COM กับขา NO ทำให้กระแสไหลไปยังอุปกรณ์ที่เชื่อมต่อ การตั้งค่านี้ช่วยให้สามารถควบคุมอุปกรณ์ไฟฟ้าต่างๆ ได้อย่างยืดหยุ่นโดยไม่ต้องเชื่อมต่อ Arduino กับแรงดันสูงโดยตรง แอมพลิฟายเออร์หลักที่ใช้ขยายสัญญาณรีดสวิตช์คือ LM393 Operational Amplifier
ข้อมูลจำเพาะของโมดูล
| ผู้ผลิต | ไม่ทราบ |
|---|---|
| แรงดันไฟฟ้าลอจิก/IO | 3.3V-5V |
| แรงดันไฟฟ้าจ่าย | 5V |
| กระแสเอาต์พุต (ต่อช่อง) | สูงสุด 10A |
| กระแสสูงสุดชั่วขณะ (ต่อช่อง) | สูงสุด 16A |
| คำแนะนำความถี่ PWM | ไม่เกี่ยวข้อง |
| เกณฑ์ลอจิกอินพุต | ขั้นต่ำ 2.5V (HIGH) |
| แรงดันตก / RDS(on) / ความอิ่มตัว | โดยทั่วไป 0.1V |
| ขีดจำกัดความร้อน | สูงสุด 85°C |
| แพ็กเกจ | ติดตั้งบนแผง PCB |
คำแนะนำการเดินสายไฟ

ในการเดินสายไฟระบบ ให้เริ่มต้นด้วยการเชื่อมต่อรีดสวิตช์ เชื่อมต่อขา VCC ของรีดสวิตช์เข้ากับเอาต์พุต 5V บน Arduino และเชื่อมต่อขา GND เข้ากับขากราวด์ขาหนึ่งบน Arduino ขา OUTPUT ของรีดสวิตช์ควรเชื่อมต่อกับขาดิจิทัล 2 บน Arduino ซึ่งจะช่วยให้ Arduino อ่านสถานะของรีดสวิตช์ได้
ถัดไป เดินสายไฟโมดูลรีเลย์ เชื่อมต่อขา VCC ของรีเลย์เข้ากับเอาต์พุต 5V บน Arduino และขา GND เข้ากับกราวด์ ขาอินพุตของรีเลย์ซึ่งควบคุมการทำงานของรีเลย์ ควรเชื่อมต่อกับขาดิจิทัล 10 บน Arduino สุดท้าย เชื่อมต่อโหลด (เช่น หลอดไฟ) เข้ากับขา Common และ Normally Open ของรีเลย์ โดยตรวจสอบให้แน่ใจว่าโหลดเหมาะสมกับข้อกำหนดของรีเลย์
ตัวอย่างโค้ดและคำอธิบาย
โค้ดต่อไปนี้เริ่มต้นขาและตั้งค่าการสื่อสารซีเรียลสำหรับการดีบัก รีดสวิตช์เชื่อมต่อกับขา 2 ในขณะที่รีเลย์ถูกควบคุมผ่านขา 10
int LD = 200; // เวลาเป็นมิลลิวินาทีที่รอก่อนการอ่านค่าครั้งถัดไป
void setup() {
Serial.begin(9600);
pinMode(10, OUTPUT); // เชื่อมต่อกับรีเลย์
pinMode(2, INPUT); // ขาอินพุตรีดสวิตช์ ขา 2
Serial.println("Robojax Test: Reed switch");
}
ในฟังก์ชัน loop สถานะของรีดสวิตช์จะถูกตรวจสอบอย่างต่อเนื่อง หากสวิตช์ปิด (บ่งบอกว่ามีแม่เหล็กอยู่) รีเลย์จะถูกเปิด หากสวิตช์เปิด รีเลย์จะถูกปิดหลังจากหน่วงเวลา 5 วินาที เพื่อให้มีช่วงเวลาผ่อนผันก่อนการปิดการทำงาน
void loop() {
if(digitalRead(2)){
Serial.println("Switch ON ");
digitalWrite(10, LOW); // เปิดรีเลย์
delay(LD);
}else{
delay(5000); // รอ 5 วินาทีก่อนปิดสัญญาณเตือน
digitalWrite(10, HIGH); // ปิดรีเลย์
}
}
โค้ดนี้ช่วยให้มีความยืดหยุ่นในการควบคุมรีเลย์ตามสถานะของรีดสวิตช์ คุณสามารถปรับเปลี่ยนเวลาและพฤติกรรมได้โดยการเปลี่ยนค่า delay หรือวิธีการควบคุมรีเลย์ตามอินพุตของสวิตช์
การสาธิต / สิ่งที่คาดหวัง
เมื่อการตั้งค่าเสร็จสมบูรณ์ การนำแม่เหล็กเข้าใกล้รีดสวิตช์ควรสั่งงานรีเลย์ ทำให้เปิดไฟหรือสัญญาณเตือนที่เชื่อมต่อ หากนำแม่เหล็กออก ไฟจะยังคงเปิดอยู่เป็นระยะเวลาหนึ่งตามที่กำหนดก่อนจะปิดลง เพื่อให้มีเวลาสำรองสำหรับผู้ใช้ ตรวจสอบให้แน่ใจว่าได้ทดสอบระบบเพื่อยืนยันว่ารีเลย์ทำงานตามที่คาดหวังและตอบสนองต่อรีดสวิตช์อย่างถูกต้อง
ไทม์สแตมป์วิดีโอ
- 00:00 - แนะนำโปรเจกต์
- 02:15 - อธิบายฮาร์ดแวร์
- 05:30 - สาธิตการเดินสายไฟ
- 08:45 - อธิบายโค้ด
- 12:00 - ผลลัพธ์ที่คาดหวังและเคล็ดลับการแก้ไขปัญหา
บทเรียนนี้เป็นส่วนหนึ่งของ: การควบคุมรีเลย์โดยใช้ Arduino
- รหัส Arduino และวิดีโอสำหรับรีเลย์ 5V แบบสองช่อง
- ควบคุมรีเลย์ 5V ด้วย Arduino เพื่อควบคุมโหลด AC หรือ DC เช่น หลอดไฟหรือมอเตอร์
- TTP224 4 ช่องเซนเซอร์สัมผัสสำหรับเปิด/ปิดโหลด AC/DC ด้วยรีเลย์
- การใช้โมดูลรีเลย์ 5V (แบบกระตุ้นต่ำ) กับ Arduino
- ใช้ MAX6675 เทอร์โมคัปเปิลชนิด K ร่วมกับรีเลย์และจอแสดงผล
- ใช้โมดูลสัมผัส TTP223B และรีเลย์เพื่อควบคุมโหลด AC/DC ด้วย Arduino
- การใช้ปุ่มกด Arduino เพื่อสลับรีเลย์และหลอดไฟ AC
++
//*
* This is the Arduino code for a reed switch to
* turn a relay ON, which the relay
* can turn a light or alarm ON.
* The reed switch is connected to pin 2.
* The relay is connected to pin 10.
* Watch the video for this code: https://www.youtube.com/watch?v=2RBFKqoauaI
*
* Written by Ahmad Shamshiri for Robojax.com Video
* Date: December 5, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code, given that this
* note is kept with the code.
* Please keep this note with the code.
* This code is available on Robojax.com
*
* 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/>.
*/
int LD = 200; // time in milliseconds to wait before making another reading.
void setup() {
Serial.begin(9600);
// output pins
pinMode(10, OUTPUT);// connected to relay
// input pins
pinMode(2, INPUT);// reed switch input pin 2
Serial.println("Robojax Test: Reed switch");
}
void loop() {
// read the REED switch
if(digitalRead(2)){
Serial.println("Switch ON ");
digitalWrite(10, LOW); // Turn the relay ON
delay(LD);
}else{
delay(5000);// wait 5 seconds before turning the alarm off
// remove this line if you don't want any delay
digitalWrite(10, HIGH);// Turn the relay OFF
}
}// loop
แหล่งข้อมูลและเอกสารอ้างอิง
ยังไม่มีทรัพยากรเลย
ไฟล์📁
ไม่มีไฟล์ที่พร้อมใช้งาน