이 프로젝트에서는 릴레이를 PIC 마이크로 컨트롤러 PIC16F877A와 인터페이스 할 것 입니다. 릴레이는 낮은 전압 레벨에서 고전압, 고전류 기기 ' ON '또는 ' OFF ' 를 제어하는 기계 장치 입니다. 릴레이는 두 전압 레벨 사이에 절연을 제공하며 일반적으로 AC 기기 를 제어 하는 데 사용됩니다. 기계식에서 솔리드 스테이트 릴레이에 이르기까지 전자 장치에서 다양한 유형의 릴레이를 사용할 수 있습니다. 이 프로젝트에서는 기계식 릴레이를 사용합니다.
이 프로젝트에서 우리는 다음을 할 것입니다.
- 사용자 입력을 위해 스위치를 인터페이스합니다.
- 5V 릴레이 로 220V AC 전구 를 제어합니다.
- 릴레이를 제어하기 위해 BC547 NPN 트랜지스터를 사용하고 트랜지스터는 PIC16F877A 에서 제어됩니다. LED는 릴레이 ON 또는 OFF 상태를 알려줍니다.
PIC 마이크로 컨트롤러를 처음 사용하는 경우 PIC 마이크로 컨트롤러 시작하기부터 시작하십시오.
필요한 구성 요소:
- PIC16F877A
- 20Mhz 크리스탈
- 33pF 세라믹 2 개
- 3 개의 4.7k 저항기
- 1k 저항
- LED 1 개
- BC547 트랜지스터
- 1N4007 다이오드
- 5V 큐빅 릴레이
- AC 전구
- 브레드 보드
- 부품 연결 용 전선.
- 5V 어댑터 또는 최소 200mA 전류 기능을 갖춘 5V 전원.
릴레이 및 작동:
릴레이 는 일반적인 스위치와 동일하게 작동합니다. 기계식 릴레이는 전자기 코일로 만든 임시 자석을 사용합니다. 이 코일에 충분한 전류를 공급하면 전원이 공급되고 팔이 당겨집니다. 그로 인해 릴레이에 연결된 회로가 닫히거나 열릴 수 있습니다. 입력 및 출력에는 전기 연결이 없으므로 입력과 출력을 분리 합니다. 여기에서 릴레이 및 그 구조에 대해 자세히 알아보십시오.
릴레이가 같은 다른 전압 범위에서 찾을 수 있습니다 5V, 6V, 12V, 18V 우리가 사용하는이 프로젝트 등 5V 릴레이를 우리의 작업 전압이 것은 5 개 볼트를 여기에. 이 5V 큐빅 릴레이 는 240VAC 에서 7A 부하 또는 110VAC 에서 10A 부하 를 전환 할 수 있습니다. 그러나 그 큰 부하 대신 220VAC 전구 를 사용하고 릴레이를 사용하여 전환합니다.
이 프로젝트에서 사용 하는 5V 릴레이 입니다. 전류 정격은 120VAC 에서 10A 및 240VAC에서 7A의 두 가지 전압 레벨에 대해 명확하게 지정됩니다. 지정된 정격 미만의 릴레이에 부하를 연결해야합니다.
이 릴레이에는 5 개의 핀이 있습니다. 핀아웃을 보면 알 수 있습니다.
L1 및 L2는 내부 전자 코일의 핀이다. 릴레이 ' ON '또는 ' OFF ' 를 켜기 위해이 두 핀을 제어해야합니다. 다음 세 개의 핀은 POLE, NO 및 NC 입니다. 극은 릴레이가 켜지면 연결을 변경하는 내부 금속판과 연결됩니다. 정상적인 상태에서 POLE 은 NC 로 단락됩니다. NC 는 일반적으로 연결됨을 나타냅니다. 릴레이가 켜지면 극이 위치를 변경하고 NO 와 연결됩니다. NO 는 Normally Open을 나타냅니다.
우리 회로에서 우리는 트랜지스터와 다이오드와의 릴레이 연결을 만들었습니다. 트랜지스터와 다이오드가있는 릴레이는 릴레이 모듈로 시중에서 판매되므로 릴레이 모듈을 사용할 때 드라이버 회로 (트랜지스터 및 다이오드)를 연결할 필요가 없습니다.
릴레이는 모든 가정 자동화 프로젝트에서 AC 가전 제품을 제어하는 데 사용됩니다.
회로도:
릴레이를 PIC 마이크로 컨트롤러와 연결 하기위한 완전한 회로 는 다음과 같습니다.
위의 회로도에서 pic16F877A 가 사용되며, 여기서 포트 B 에서 LED 와 트랜지스터 가 연결 되며 RBO 의 TAC 스위치 를 사용하여 추가로 제어됩니다. R1은 트랜지스터에 바이어스 전류를 제공한다. R2 는 촉각 스위치에 사용되는 풀다운 저항입니다. 스위치를 누르지 않으면 로직 0 을 제공합니다. 1N4007는 A는 클램프 다이오드 릴레이의 전자기 코일에 사용. 릴레이가 꺼지면 고전압 스파이크 가 발생할 가능성이 있습니다.다이오드가이를 억제합니다. 트랜지스터는 마이크로 컨트롤러가 제공 할 수없는 50mA 이상의 전류를 필요로하기 때문에 릴레이를 구동하는 데 필요 합니다. 트랜지스터 대신 ULN2003 을 사용할 수도 있습니다. 애플리케이션에 두 개 또는 세 개 이상의 릴레이가 필요한 경우 더 현명한 선택입니다. 릴레이 모듈 회로를 확인하십시오. LED 에서 포트 RB2는 "통지합니다 릴레이가 있습니다."
최종 회로는 다음과 같습니다.
여기서 아두 이노로 릴레이를 제어하는 방법을 배울 수 있고, 릴레이에 정말 관심이 있다면 여기에서 모든 릴레이 회로를 확인하세요.
코드 설명:
main.c 파일 의 시작 부분에 pic16F877A 에 대한 구성 줄 을 추가하고 PORTB 전체에 핀 이름도 정의했습니다.
항상 먼저 pic 마이크로 컨트롤러에서 구성 비트를 설정하고 라이브러리 및 크리스탈 주파수를 포함한 일부 매크로를 정의해야합니다. 마지막에 주어진 전체 코드 에서 모든 코드를 확인할 수 있습니다. 우리는 RB0 을 입력으로 만들었습니다. 이 핀에서 스위치 가 연결됩니다.
#포함
그 후, 핀 방향을 초기화하고 핀의 기본 상태를 구성하는 system_init () 함수를 호출했습니다.
system_init () 함수에서 우리는
무효 system_init (무효) { TRISBbits.TRISB0 = 1; // Sw를 입력으로 설정 TRISBbits.TRISB1 = 0; // LED를 출력으로 설정 TRISBbits.TRISB2 = 0; // 릴레이 핀을 출력 LED 로 설정 = 0; 릴레이 = 0; }
에서 주요 우리가 건너 로직 높은 감지하여 스위치를 눌러 검색 할 경우 기능 우리는 지속적으로 스위치를 눌러 확인 RB0을; 잠시 기다렸다가 스위치가 눌려 있는지 여부를 확인합니다. 스위치가 여전히 눌려 있으면 RELAY 및 LED 핀의 상태가 반전됩니다.
void main (void) { system_init (); // 시스템 준비중 while (1) { if (SW == 1) {// 스위치를 눌렀습니다. __delay_ms (50); // 디 바운스 지연 if (SW == 1) {// 스위치를 계속 누르고 있음 LED =! LED; // 핀 상태 반전. 릴레이 =! RELAY; } } } return; }
이 릴레이 인터페이스에 대한 전체 코드 및 데모 비디오 는 다음과 같습니다.