우리 가정에서는 대부분의 가전 제품이 조명, TV, 팬 등과 같은 AC 공급 장치에서 전원을 공급받습니다. 필요한 경우 Arduino 및 릴레이를 사용하여 홈 자동화 설정을 구축하여 디지털 방식으로 켜고 끌 수 있습니다. 그러나 예를 들어 AC 램프를 어둡게하거나 팬의 속도를 제어하기 위해 이러한 장치의 전원을 제어해야하는 경우에는 어떨까요? 이 경우 AC 공급 전압의 위상을 제어하기 위해 위상 제어 기술과 TRIAC와 같은 정적 스위치를 사용해야합니다.
따라서이 튜토리얼에서는 Arduino 및 TRIAC를 사용 하는 AC 램프 디머에 대해 배웁니다. 여기에서 TRIAC는 AC 램프를 전환하는 데 사용됩니다. 이는 이러한 애플리케이션에 가장 적합한 전력 전자식 고속 전환 장치이기 때문입니다. 이 프로젝트의 하드웨어 세부 사항 및 프로그래밍에 대한 전체 기사를 따르십시오. 또한 Light Dimming 에 대한 이전 자습서를 확인하십시오.
- IR 원격 제어 TRIAC 디머 회로
- PWM을 사용하는 Arduino 기반 LED 조광기
- 1W LED 조광기 회로
- ATmega32 마이크로 컨트롤러를 사용하는 전원 LED 조광기
사용 된 구성 요소:
- Arduino UNO-1
- MCT2E 옵토 커플러 -1
- MOC3021 옵토 커플러 -1
- BT136 트라이 액 -1
- (12-0) V, 500mA 강압 변압기 -1
- 1K, 10K, 330ohm 저항기
- 10K 전위차계
- 램프가있는 AC 홀더
- AC 전선
- 점퍼
계속 진행하기 전에 제로 크로싱, TRIAC 및 옵토 커플러에 대해 알아 보겠습니다.
제로 크로싱 감지 기술
AC 전압을 제어하기 위해 가장 먼저해야 할 일은 AC 신호의 제로 크로싱을 감지하는 것입니다. 인도에서 AC 신호의 주파수는 50HZ이며 자연적으로 교대로 나타납니다. 따라서 신호가 제로 포인트에 도달 할 때마다 해당 포인트를 감지하고 그 후에 전력 요구 사항에 따라 TRIAC를 트리거해야합니다. AC 신호의 영점 교차점은 다음과 같습니다.
TRIAC 작업
TRIAC는 게이트 터미널에서 낮은 에너지 신호로 트리거 될 수있는 3 단자 AC 스위치입니다. SCR에서는 한 방향으로 만 전도하지만 TRIAC의 경우 전력을 양방향으로 제어 할 수 있습니다. 여기 에서는 AC 램프 디밍 목적 으로 BT136 TRIAC를 사용합니다.
위 그림과 같이 TRIAC는 작은 게이트 펄스 신호를 적용하여 90 도의 발사 각도에서 트리거됩니다. 시간 "t1"은 디밍 요구 사항에 따라 제공해야하는 지연 시간입니다. 예를 들어,이 경우 발사 각도가 90 %이므로 전력 출력도 절반으로 줄어들어 램프도 절반 강도로 빛납니다.
여기서 AC 신호의 주파수가 50Hz라는 것을 알고 있습니다. 따라서 시간주기는 1 / f, 즉 20ms가 될 것입니다. 그래서 반주기 동안 이것은 10ms 또는 10,000 마이크로 초가 될 것입니다. 따라서 AC 램프의 전력을 제어하기 위해 "t1"의 범위는 0-10000 마이크로 초에서 다양 할 수 있습니다. 여기에서 Triac에 대해 자세히 알아보세요.
광 커플러
Optocoupler는 Optoisolato r 이라고도 합니다. DC 및 AC 신호와 같은 두 전기 회로 간의 절연을 유지하는 데 사용됩니다. 기본적으로 적외선을 방출하는 LED와이를 감지하는 포토 센서로 구성되어 있습니다. 여기에서는 MOC3021 옵토 커플러 를 사용 하여 DC 신호 인 마이크로 컨트롤러 신호에서 AC 램프를 제어합니다. 이전에는 TRIAC 조광기 회로에서 동일한 MOC3021 옵토 커플러를 사용했습니다. 또한 링크를 따라 옵토 커플러 및 유형에 대해 자세히 알아보십시오.
회로도:
AC 조광기의 회로도 는 다음과 같습니다.
TRIAC 및 옵토 커플러 연결 다이어그램:
성능 보드에 TRIAC 및 Optocoupler MOC3021 회로를 납땜했습니다. 납땜 후 다음과 같이 보입니다.
또한 AC 공급을 위해 Transformer에 연결하기 위해 perf 보드에 광 커플러 MCT2E 를 납땜 했습니다.
Arduino Lamp Dimmer 의 전체 회로 는 다음과 같습니다.
AC 조명 조광기를위한 Arduino 프로그래밍:
하드웨어 설정이 성공적으로 완료되면 이제 Arduino를 프로그래밍 할 차례입니다. 데모 비디오가 포함 된 전체 프로그램 이 마지막에 제공됩니다. 여기에서는 더 나은 절제를 위해 코드를 단계별로 설명했습니다.
첫 번째 단계에서는 코드 전체에서 사용할 모든 전역 변수를 선언합니다. 여기서 TRIAC는 Arduino의 핀 4에 연결됩니다. 그런 다음 프로그램에서 사용할 디밍 단계의 값을 저장하기 위해 dim_val 이 선언됩니다.
int LAMP = 4; int dim_val = 0;
다음으로 내부 설정 기능은 LAMP 핀을 출력으로 선언하고 인터럽트를 구성하여 제로 크로싱을 감지합니다. 여기에서는 attachInterrupt 라는 함수를 사용했습니다.이 함수 는 Arduino의 디지털 핀 2를 외부 인터럽트로 구성 하고 핀에서 인터럽트를 감지하면 zero_cross 라는 함수를 호출합니다.
void setup () {pinMode (LAMP, OUTPUT); attachInterrupt (digitalPinToInterrupt (2), zero_cross, CHANGE); }
무한 루프 내부 에서 A0에 연결된 전위차계에서 아날로그 값을 읽습니다. 그런 다음 (10-49) 값 범위에 매핑합니다. 이것을 알아 내기 위해 우리는 작은 계산을해야합니다. 앞서 말씀 드린 바에 따르면 각 반주기는 10,000 마이크로 초에 해당합니다. 따라서 50 단계로 디밍을 제어해야합니다 (임의의 값입니다. 또한 변경할 수 있음). 0-9 단계는 거의 동일한 전력 출력을 제공하고 실제로 최대 단계 수를 사용하는 것은 권장되지 않기 때문에 최소 단계를 0이 아닌 10으로 설정했습니다. 그래서 저는 최대 단계를 49로했습니다.
그런 다음 각 단계 시간은 10000 / 50 = 200 마이크로 초로 계산할 수 있습니다. 이것은 코드의 다음 부분에서 사용됩니다.
void loop () {int data = analogRead (A0); int data1 = map (data, 0, 1023,10,49); dim_val = data1; }
마지막 단계에서 인터럽트 구동 함수 zero_cross를 구성합니다. 여기서 디밍 시간은 개별 단계 시간에 no를 곱하여 계산할 수 있습니다. 단계의. 그런 다음이 지연 시간 후에 TRIAC를 켜기에 충분한 10 마이크로 초의 작은 하이 펄스를 사용하여 TRIAC을 트리거 할 수 있습니다.
void zero_cross () {int dimming_time = (200 * dim_val); delayMicroseconds (dimming_time); digitalWrite (LAMP, HIGH); delayMicroseconds (10); digitalWrite (LAMP, LOW); }
Arduino 램프 조광기 회로의 작동
아래는 Arduino와 TRIAC을 사용하여 AC 전구를 조광하는 3 단계를 보여주는 사진입니다.
1. 낮은 디밍 단계
2. 중간 디밍 단계
3. 최대 디밍 단계:
이것이 TRIAC 및 옵토 커플러를 사용하여 AC 조광기 회로를 쉽게 구축 할 수있는 방법입니다. 작업 비디오 와 아두 이노 라이트 주차 코드는 아래와 같습니다
/>