งาน 3 รีเลย์เชื่อมต่อกับไมโครคอนโทรลเลอร์ PIC
รีเลย์เป็นสวิตช์แม่เหล็กไฟฟ้าที่ใช้ในการสลับแรงดันไฟฟ้า / กระแสสูงโดยใช้วงจรกำลังไฟต่ำ รีเลย์แยกวงจรพลังงานต่ำจากวงจรกำลังสูง มันถูกเปิดใช้งานโดยเพิ่มขดลวดที่บาดเจ็บบนแกนเหล็กที่อ่อนนุ่ม สำหรับรายละเอียดการทำงานของรีเลย์โปรดไปที่หน้านี้ รีเลย์ไม่ควรเชื่อมต่อโดยตรงกับไมโครคอนโทรลเลอร์ แต่ต้องใช้วงจรขับ รีเลย์ไม่ควรเชื่อมต่อโดยตรงกับไมโครคอนโทรลเลอร์เนื่องจากสาเหตุต่อไปนี้ .. ไมโครคอนโทรลเลอร์ไม่สามารถจ่ายกระแสที่จำเป็นสำหรับการทำงานของรีเลย์ กระแสสูงสุดที่ไมโครคอนโทรลเลอร์ PIC สามารถกำเนิดหรือจมได้คือ 25mA ในขณะที่รีเลย์ต้องการกระแสประมาณ 50 - 100mA รีเลย์เปิดใช้งานโดยเพิ่มพลังของขดลวด ไมโครคอนโทรลเลอร์อาจหยุดทำงานโดยแรงดันไฟฟ้าลบที่เกิดขึ้นในรีเลย์เนื่องจากแรงเคลื่อนไฟฟ้าสำรอง รีเลย์เชื่อมต่อกับไมโครคอนโทรลเลอร์ PIC ที่ใช้ทรานซิสเตอร์ รีเลย์สามารถเชื่อมต่อกับไมโครคอนโทรลเลอร์ได้อย่างง่ายดายโดยใช้ทรานซิสเตอร์ดังที่แสดงด้านล่าง ทรานซิสเตอร์มีสายเป็นสวิตช์ซึ่งใช้กระแสที่จำเป็นสำหรับการทำงานของรีเลย์ เมื่อพิน RB7 ของไมโครคอนโทรลเลอร์ PIC สูงขึ้นทรานซิสเตอร์ BC547 จะเปิดและกระแสจะไหลผ่านรีเลย์ ไดโอด D1 ใช้เพื่อปกป้องทรานซิสเตอร์และไมโครคอนโทรลเลอร์จาก Back EMF ที่สร้างขึ้นในขดลวดรีเลย์ โดยทั่วไปแล้วจะต้องการ 1N4148 เนื่องจากเป็นไดโอดสวิทช์ที่รวดเร็วซึ่งมีกระแสสูงสุดไปข้างหน้า 450mA ไดโอดนี้เป็นที่รู้จักกันว่าไดโอดอิสระ รีเลย์เชื่อมต่อกับ PIC โดยใช้ทรานซิสเตอร์
MikroC Program
void main() { TRISB.F7 = 0; //Makes RB7 a output pin do { PORTB.F7 = 1; //Turns ON relay Delay_ms(1000); // 1000 mS delay PORTB.F7 = 0; //Turns OFF realy Delay_ms(1000); //1000mS delay }while(1); }
Interfacing Relay with PIC Microcontroller using ULN2003
If you want to use more relays, using transistors will be difficult. In these cases you may use ULN2003 or ULN2803. These are monolithic IC s consists of High Voltage High Current Darlington transistor arrays. You can connect seven relays using ULN2003 and eight relays using ULN2803. When using these driver ICs we don’t need to connect freewheeling diode as they have built in clamp diodes.
MikroC Program
void main() { TRISD = 0x00; //Make PORTD as output do { PORTD.F1 = 1; //Turns ON relay 1 PORTD.F2 = 1; //Turns ON relay 2 PORTD.F3 = 1; //Turns ON relay 3 PORTD.F4 = 1; //Turns ON relay 4 PORTD.F5 = 1; //Turns ON relay 5 ...etc.. Delay_ms(1000); // 1 second Delay PORTD.F1 = 0; //Turns OFF relay 1 PORTD.F2 = 0; //Turns OFF relay 2 PORTD.F3 = 0; //Turns OFF relay 3 PORTD.F4 = 0; //Turns OFF relay 4 PORTD.F5 = 0; //Turns OFF relay 5 ...etc... Delay_ms(1000); //1 second Delay }while(1); }
ความคิดเห็น
แสดงความคิดเห็น