본문 바로가기
아두이노 코딩

아두이노 코딩 : TRIAC을 사용한 AC 팬 속도 제어

by 49분전 2020. 2. 22.

아두이노 코딩 : AC팬 속도 제어

경고합니다!! 이 프로젝트에서 논의된 회로도는 교육 목적으로만 제공됩니다. 220V AC 주전원 전압으로 작업하려면 극단적인 예방이 필요하며 안전 절차를 따라야 합니다. 회로가 작동 중일 때는 구성 요소나 와이어를 만지지 않습니다.

 

많은 Arduino 기반 Home Automation 프로젝트에서와 같이 스위치를 사용하거나 일부 제어 메커니즘을 사용하여 모든 가전 제품을 켜거나 끌 수 있습니다. 그러나 예를 들어 팬의 속도나 램프의 강도를 제어하기 위해 AC 전원을 부분적으로 제어해야 하는 애플리케이션이 많습니다. 이 경우 PWM 기술이 사용되므로 여기서는 Arduino에서 생성된 PWM을 사용하여 AC 팬 속도를 Arduino로 제어하는 방법에 대해 알아봅니다.

이 프로젝트에서는 TRIAC를 이용한 Arduino AC 팬 속도 제어에 대해 시연할 예정입니다. 여기서 AC 신호의 위상 제어 방법은 Arduino에서 생성된 PWM 신호를 사용하여 AC 팬 속도를 제어하는 데 사용됩니다. 이전 튜토리얼에서는 PWM을 사용하여 DC 팬 속도를 제어했습니다.

구성 요소

아두이노 UNO다.
4N25(Zero crossing detector)입니다.
10k 전위차계입니다.
MOC3021 0pto-coupler입니다.
(0-9)V, 500mA의 Stepdown Transformer입니다.
BT136 TRIAC입니다.
230VAC Axial AC 팬입니다.
와이어를 연결합니다.
저항입니다.

 

Arduino를 사용하여 AC 팬 제어를 수행합니다.
작업은 4개의 다른 부분으로 나눌 수 있습니다. 그것들은 다음과 같습니다.

1. 제로 크로싱 디텍터입니다.
2. 위상 각도 제어 회로입니다.
3. 전위차계가 팬 속도량을 제어합니다.
4. PWM 신호 발생 회로입니다.

1. 제로 크로싱 디텍터입니다.
우리가 가정에서 공급받는 AC 공급은 220V AC RMS, 50HZ입니다. 이 AC 신호는 본질적으로 번갈아 가며 그 극성을 주기적으로 바꿉니다. 각 사이클의 전반부에서는 피크 전압에 도달하는 한 방향으로 흐르다가 0으로 감소합니다. 그런 다음 다음 반주기 동안 최대 전압으로 대체 방향(음)으로 흐른 다음 다시 0이 됩니다. AC 팬의 속도를 제어하려면 두 하프 사이클의 피크 전압을 절단하거나 제어해야 합니다. 이를 위해서는 신호가 제어/정지되는 영점을 감지해야 합니다. 전압이 방향을 바꾸는 전압 곡선의 이 점을 제로 전압 교차라고 합니다.

아래 표시된 회로는 제로 교차 검출기 회로이며, 제로 교차 지점을 얻는 데 사용됩니다. 먼저, 220V AC 전압은 단계별 변압기를 사용하여 9V AC로 내려간 후 핀 1과 핀 2에 있는 4N25 광커플러로 공급됩니다. 4N25 광커플러에는 핀 1을 양극으로 하고 핀 2를 음극으로 하는 내장 LED가 있습니다. 따라서 아래 회로에 따라 AC파가 제로 크로싱 포인트에 가까워지면 4N25의 내장 LED가 꺼지고 그 결과 4N25의 출력 트랜지스터도 꺼지고 출력 펄스 핀이 최대 5V까지 당겨집니다. 마찬가지로 신호가 점차적으로 피크 지점까지 증가하면 LED가 켜지고 접지 핀이 출력 핀에 연결된 상태에서 트랜지스터도 켜지며, 이로 인해 이 핀이 0V가 됩니다. 이 펄스를 사용하여 Arduino를 사용하여 제로 크로싱 지점을 감지할 수 있습니다.

2. 위상 각도 제어 회로입니다.
0 교차점을 감지한 후 이제 전원이 켜지고 꺼지는 타이밍의 양을 제어해야 합니다. 이 PWM 신호는 AC 모터에 대한 전압 출력량을 결정하며, AC 모터의 속도를 제어합니다. 여기서는 AC 전압 신호를 제어하기 위한 전원 전자 스위치이므로 AC 전압을 제어하는 BT136 TRIAC가 사용됩니다.

TRIAC는 게이트 단자에서 낮은 에너지 신호에 의해 트리거될 수 있는 3단자 AC 스위치입니다. SCR에서는 한 방향으로만 작동하지만 TRIAC의 경우 전원을 양방향으로 제어할 수 있습니다. TRIAC 및 SCR에 대해 자세히 알아보려면 이전 기사에 따릅니다.

위 그림에 표시된 것처럼 TRIAC는 작은 게이트 펄스 신호를 적용하여 90도의 점화 각도로 트리거됩니다. t1 시간은 조광 요구 사항에 따라 주어진 지연 시간입니다. 예를 들어 이 경우 점화 각도가 90%이므로 출력도 절반으로 감소하여 램프가 절반의 강도로 빛납니다.

여기서는 AC 신호의 주파수가 50Hz임을 알고 있습니다. 그래서 그 기간은 1/f로, 20ms가 될 것입니다. 반주기 동안 10ms 또는 10,000마이크로초가 됩니다. 따라서 AC 램프의 전원을 제어하기 위해 "t1"의 범위는 0-100마이크로초에서 달라질 수 있습니다.

옵토커플러는 다음과 같습니다. 


옵토커플러는 옵토아솔레이터로도 알려져 있습니다. DC 및 AC 신호와 같은 두 전기 회로 간의 절연 상태를 유지하는 데 사용됩니다. 기본적으로 적외선을 방출하는 LED와 이를 감지하는 광센서로 구성됩니다. 여기서 MOC3021 광커플러는 DC 신호인 마이크로컨트롤러 신호로부터 AC 팬을 제어하는 데 사용됩니다.

TRIAC 및 Optocoupler 연결 다이어그램은 다음과 같습니다.

 

3. 전위차계가 팬 속도를 제어합니다.

여기서 전위차계는 AC 팬의 속도를 변화시키는 데 사용됩니다. 전위차계는 전압 분배기의 역할을 하며 가변 전압 출력을 제공하는 3단자 장치입니다. 이 가변 아날로그 출력 전압은 AC 팬의 속도 값을 설정하기 위해 Arduino 아날로그 입력 단자에 제공됩니다.

4. PWM 신호 생성 장치입니다.
마지막 단계에서 속도 요구 사항에 따라 PWM 펄스가 TRIAC에 전달되고, 이 펄스는 AC 신호의 ON/OFF 타이밍을 변화시키고 팬 속도를 제어하기 위한 가변 출력을 제공합니다. 여기서 Arduino는 PWM 펄스를 생성하는 데 사용됩니다. 이 펄스는 전위차계로부터 입력을 받아 TRIAC 및 광커플러 회로로 PWM 신호를 출력하여 AC 팬을 원하는 속도로 더욱 구동시킵니다. 여기서 Arduino를 사용한 PWM 생성에 대해 자세히 알아봅니다.

회로 다이어그램입니다.
이 Arduino 기반 230V 팬 속도 컨트롤 회로의 회로도는 다음과 같습니다.

참고: 이해 목적으로만 빵판에 전체 회로를 표시했습니다.  220V AC 공급 장치를 직접 사용해서는 안 됩니다. 아래 이미지와 같이 점판을 사용하여 연결을 만들었습니다.

AC 팬 속도 제어를 위해 Arduino를 프로그래밍합니다.

 

하드웨어 연결 후에는 PWM 신호를 생성하여 전위차계 입력을 사용하여 AC 신호 ON/OFF 타이밍을 제어하는 Arduino 코드를 작성해야 합니다. 우리는 이전에 많은 프로젝트에서 PWM 기술을 사용했습니다.

본 Arduino AC 팬 속도 제어 프로젝트의 전체 코드는 본 프로젝트 하단에 제시되어 있습니다. 코드에 대한 단계별 설명은 아래와 같습니다.

첫 번째 단계에서 코드 전체에 사용될 모든 필수 변수를 선언합니다. 여기서 BT136 TRIAC는 Arduino의 핀 6에 연결됩니다. 그리고 Speed_val 가변속도는 Speed Step 값을 저장하기 위해 선언됩니다.

int TRIAC = 6;
int speed_val =0;

다음으로, 설정 기능 내부는 이 핀을 통해 PWM 출력이 생성되므로 TRIAC 핀을 출력으로 선언합니다. 그런 다음 제로 크로싱을 감지하도록 인터럽트를 구성합니다. 여기서는 첨부라는 기능을 사용했습니다.인터럽트 - Arduino의 디지털 핀 3을 외부 인터럽트로 구성하고 핀에서 인터럽트를 감지하면 제로_크로싱이라는 기능을 호출합니다.

void setup()
{
  pinMode(LAMP, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(3), zero_crossing, CHANGE);
}

무한 루프 내부에서 A0에 연결된 전위차계의 아날로그 값을 읽고(10-49)의 값 범위에 매핑합니다.

이 범위를 알아내려면 작은 계산을 해야 합니다. 앞서 각 반주기마다 10,000마이크로초와 동일하다고 합니다. 따라서 여기서 조광은 임의의 값인 50단계로 제어됩니다. 여기서 최소 단계는 0~9단계는 거의 동일한 출력이 발생하며 최대 단계는 49단계를 취하지 않는 것이 실질적으로 상한값(이 경우 50단계가 됨)을 권장하지 않기 때문에 10단계가 아닌 10단계를 취합니다.

그런 다음 각 단계 시간을 10000/50= 200마이크로초로 계산할 수 있습니다. 이것은 코드의 다음 부분에 사용됩니다.

void loop() 
{
    int pot=analogRead(A0);
    int data1 = map(pot, 0, 1023,10,49); 
    speed_val=data1;
}

마지막 단계에서 인터럽트 기반 함수 0_크로싱을 구성합니다. 여기서 조광 시간은 개별 스텝 시간에 스텝 수를 곱하여 계산할 수 있습니다. 그런 다음 이 지연 시간 후 TRIAC를 켜기에 충분한 10마이크로초의 작은 높은 펄스를 사용하여 TRIAC를 트리거할 수 있습니다.

void zero_crossing()
{
  int chop_time = (200*speed_val);
  delayMicroseconds(chop_time);  
  digitalWrite(TRIAC, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIAC, LOW);
}

아르 뒤노의 결과물과 PWM아래 주어진다 이 AC팬 컨트롤을 이용한을 위한 실속 있는 비디오와 함께 완전한 코드입니다.

 

CODE

int TRIAC = 6;
int speed_val=0;
void setup()
{
  pinMode(TRIAC, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(3), zero_crossing, CHANGE);
}
void zero_crossing()
{
  int chop_time = (200*speed_val);
  delayMicroseconds(chop_time);   
  digitalWrite(TRIAC, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIAC, LOW);
}
void loop()  
{
    int pot=analogRead(A0);
    int data1 = map(pot, 0, 1023,10,40);  
    speed_val=data1;
}

댓글