이 블로그는 임베디드 컴퓨터를 이용한 장치(시스템) 개발과 원격제어에 필요한 지식을 공유 하기 위한 블로그 입니다.
실제 개발과 프로그램 예를 위하여 Microchip 사의 ATmega128를 사용한 보드와 Arduino Mega 보드(ATmega2560), Raspberry Pi, Raspberry Pi Pico, WiFi 모듈을 사용 합니다.

avr-power-control

AVR(Atmega128) Power control
AVR(Atmega128) 전력제어(Power control)


  • Tr Switch(BJT or FET)를 사용한 DC 전력 제어
    • 스위칭 소자로서의 BJT와 FET
      • BJT(Bipolar Junction Transistor)를 스위치로 사용하기
        • BJT 등가회로

        • Fig. a는 CE(Common Emitter) 구조 BJT 회로이다.
        • Fig. b는 Fig. a CE 구조 BJT 회로의 등가 회로이다. Fig. b에서 출력 전류 ic는 입력전류 ib의 약 hfe배(Current controlled current source)가 된다. BJT의 입력에 펄스 신호 vb를 가하면 ib도 펄스(Low, High) 신호가 되고 출력 전류 ic도 펄스 신호가 된다. 만약 입력 신호가 Low(ib <- 0) 이면 ic <- 0가 되어 SW가 Off된 상태와 같고, High 일 때 ib 가 충분히 큰 값을 갖으면 ic는 부하를 동작 시키기에 충분한 값이 되어 출력측 부하에 연결된 스윗치(SW)가 On된 상태와 같이 동작한다.
        • Fig. c는 CE 구조 BJT를 입력 전류에 의하여 구동되는 스위칭 소자(Current controlled switching device)로 사용한 경우의 등가회로이다.
      • FET(Field-Effect Transistor)를 스위치로 사용하기
        • FET 등가회로

        • Fig. a는 CS(Common Source) 구조 FET 회로이다.
        • Fig. b는 Fig. a CS 구조 FET 회로의 등가 회로이다. Fig. b에서 출력 전류 id는 입력전압 vgs의 약 gm배(Vlotage controlled current source)가 된다. FET의 입력에 펄스 신호 vgs(Low, High)를 가하면 출력 전류 id도 펄스 신호가 된다. 만약 입력 신호가 Low(vgs <- 0) 이면 id <- 0가 되어 SW가 Off된 상태와 같고, High 일 때 vgs 가 충분히 큰 값을 갖으면 id는 부하를 동작 시키기에 충분한 값이 되어 출력측 부하에 연결된 스윗치(SW)가 On된 상태와 같이 동작한다.
        • Fig. c는 CS 구조 FET를 입력 전압에 의하여 구동되는 스위칭 소자(Voltage controlled switching device)로 사용한 경우의 등가회로이다.
      • BJT와 FET 스위칭 소자의 장점
      • 반도체 소자인 BJT와 FET를 사용한 스위칭 소자는 릴레이(or 마그네트스위치)에 비교하여 다음과 같은 장단점을 갖는다.

        • 동작 속도가 빠르다.
        • 잘 설계된 경우 사용 수명이 길다.
        • 동작시 소음이 발생하지 않는다.
      • BJT와 FET 스위칭 소자의 단점
        • 입력(제어단자)와 출력이 완전히 분리되지 않는다. 입출력이 공동 단자(Common emitter or common source)를 함께 사용한다.
        • 위 결과 제한된 직류 부하의 제어에만 사용 할 수 있다.
        • 개방(Open) 상태에서 누설전류(leakage current)가 존재(0가 아님)한다.
        • 큰 전류 제어에 부적절하다. SCR, Triac 등의 반도체 스위치는 비교적 큰 전류를 제어 할 수 있다.
      • BJT와 FET를 이용한 DC 부하 제어
        • BJT와 FET를 이용한 저 전력 DC 부하(LED, 소형 DC 모터 등) 제어회로 예

        • Tr(BJT와 FET)를 이용한 저 전력 DC 부하(LED, 소형 DC 모터 등) 제어
          • Fig.a는 BJT, Fig.c는 FET를 이용한 LED 제어 회로의 예이다. 저항 R은 LED의 동작 전류(10 - 20mA)를 제한하기 위한 저항으로 LED의 동작 전류 Id는 Id = (Vcc - 0.7) / R로 결정된다. LED는 비교적 작은 전류로 동작 하기 때문에 대부분의 마이크로 콘트롤러는 Output Pout에 Tr을 사용하지 않고 직접 연결 할 수 있다. 이 예의 회로에서는 BJT와 FET의 입력에 High를 출력하면 Tr이 On 상태로 되기 때문에 LED가 Turn on 된다.
          • Fig.b는 BJT, Fig.d는 FET를 이용한 DC Motor 제어 회로의 예이다. Motor에 병렬로 연결된 Diode(Flyback diode or snubber diode)는 Motor가 On 상태에서 Motro에 축적된 에너지를 Motor가 Off 상태로 천이 할때 소멸시키는 통로로 동작한다. 이 Diode가 없으면 Motor가 On 상태에서 Off 상태로 천이할 때 Motor에 높은 전압이 발생하여 전자회로를 파손하는 원인이 된다. 이 예의 회로에서는 BJT와 FET의 입력에 High를 출력하면 Tr이 On 상태로 되기 때문에 Motor가 Turn on 된다.
          • BJT Tr을 사용하는 경우 Motor에 큰 전류(약 수 100mA 이상)를 인가 하기 위하여는 전류 이득이 큰 Darlington power transistor를 사용하여야 한다.

          주: 이 곳에서 Tr(BJT와 FET)에 대하여 설명하는 것은 전력제어용 IC에 대한 이해를 돕기 위한 것임. 실제 전력제어에는 개별 Tr을 사용하는 것 보다 DC Motor Driver IC와 같은 전력제어에 특화된 IC를 사용하는 것이 효과적 이다.

        • DC 모터의 회전 방향(순 방향, 역 방향) 제어
        • H-Bridge DC Motor control circut 예

          • DC Motor의 회전방향(순방향, 역방향)을 제어하여야 하는 경우에는 윗 그림과 같이 Switch(이 예에서는 BJT Switch를 사용) 4개를 H-Bridge 형태로 구성하여 사용한다.
          • 이 예에서는 Q1과 Q4 가 On 상태이면 순방향으로 회전하고 Q3과 Q2 가 On 상태이면 역방향으로 회전한다.
          • H-Bridge를 이용한 DC Motor Driver 예: L298.pdf
          • L298를 이용한 DC Motor 제어회로 예: DC_Motor_controller.pdf
            • 이 회로는 2개의 DC Motor(L298는 2개의 H-Bridge 회로를 갖고 있음) 또는 1개의 Stepper motor를 제어할 수 있다.
            • DC Motor를 제어하기 위하여 2개의 En(Enable) 단자와 Dir(Direction) 단자를 갖고 있다.
            • Dir 신호는 회전 방향(H-Bridge의 Switch Pair을 선택)을 설정하고, En 단자는 H-Bridge 내의 Switch를 제어하여 Motor의 회전을 제어한다.
            • En 단자에 PWM 신호를 인가하면 DC Motor의 회전 속도(전력제어)를 제어할 수 있다.
        • DC 전력(PWM) 제어
        • 펄스 Duty 값에 따른 평균 전력


    • SCR과 Triac를 사용한 AC 전력 제어
      • SCR(Silicon Controlled Rectifier)를 이용한 AC 전력 제어
        • 스위칭 소자로서의 SCR
        • SCR 회로 심볼, 등가회로, 전압-전류(V-I) 특성 곡선

          참고자료: Thyristor Circuit Design: SCR circuits

          참고자료: Thyristor Circuits: how an SCR circuit works

          • SCR 동작 개요
            • SCR의 회로 심볼은 Fig.a와 같고 등가회로는 Fig.b와 같다. Fig.c는 SCR의 특성곡선(전압 - 전류)과 부하선(A - B를 연결하는 직선)의 관계를 표시한다. SCR의 동작점은 특성곡선과 부하선이 만나는 점 A(Off 상태) 또는 B(On 상태)에 위치한다.
            • off 상태: Fig.b에서 ig(Gate current), ia(Anode current), ic(Cathode current) 가 모두 0인 상태에서는 Va(Anode voltage)가 증가하여도 ia는 거의 증가하지 않는다. 이 경우 Anode와 Cathode 사이는 전압이 증가하여도 전류가 흐르지 않는 상태 즉 off 상태(Fig.c에서 동작점 A 상태) 이다.
            • on 상태: Fig.b에서 Va를 인가 상태에서 ig = ig1를 일정한 크기로 증가 시키면 Q1의 ic1은 ic1 = ib2 = ßig1이 되고, Q2의 ic2는 ic2 = ßib2 가 된다. ig1 = ig + ic2 이기 때문에 ig 가 0이 되어도 ig1에 큰 전류가 흐르게 된다. 그 결과(Positive feedback) ig를 0으로 하여도 SCR의 Anode에는 계속하여 큰 전류가 흐르게 된다. 이 경우 Anode와 Cathode 사이는 낮은 전압에도 큰 전류가 흐르는 상태 즉 on 상태(Fig.c에서 동작점 B 상태)가 된다.
            • on 상태에서 off 상태로 변환하기 위한 방법: on 상태에서 off 상태로 변환하기 위하여는 Va를 0로 하여 ia, ic, ig를 일시적으로 모두 0으로 하여야 한다. 직류 전원을 사용하는 경우 Va를 순간적으로 0으로 하는 것은 어려운 문제이다. 그러나 교류인 경우는 매 사이클 마다 자동으로 0이 되기 때문에 일시적으로 Va를 0 상태로 하는 것이 용이하다. 이런 이유로 SCR은 교류 전력의 위상 제어에 주로 사용한다.
            • -Va 인 경우: Anode에 -(Minus) 전압이 인가된 경우 ia는 0이 되어 SCR은 off 상태가 되기 때문에 SCR은 교류 전압의 한 쪽 방향(0에서 180도 사이) 위상제어만 가능하다. 이 문제를 해결하기 위하여 SCR 2개를 서로 역 방향(병열로 연결)으로 연결한 구조가 Triac 이다.
          • SCR을 이용한 위상제어 예
          • SCR을 이용한 위상제어 회로 예

            SCR 위상제어 파형 예(Fig.c)

            • Fig.a는 RC 위상지연 회로를 이용한 위상제어 회로이다. VR(가변저항)의 값을 변경하면 Load에 인가되는 전압에 비교하여 Fig.c와 같이 SCR의 Gate 전류 ig의 위상지연을 조정할 수 있다. 그 결과 Fig.c와 같이 SCR의 Turn on 시간(위상: Trigger point)을 제어하여 부하(Load)에 인가되는 전력을 제어 할 수 있다.
            • Fig.b는 Microcontroller를 이용한 SCR 위상제어 회로 예이다. Zero crossing detector에서 입력신호의 Zero crossing point를 검출하면 이 점으로 부터 일정시간(Trigger point) 후에 Output port에 High를 출력(SCR에 ig를 인가) 하면 SCR이 Turn on 된다. SCR은 입력 신호가 0가 되면 자동으로 Turn off되기 때문에 매 주기마다 반복하여 위상제어를 실행하여야 한다.
            • 프로그램 알고리즘
              • I/O port와 Timer 초기화
                • Input port와 Output port를 설정한다.
                • Input port를 External interrupt enable(Rising edge)로 설정한다.
                • 시간지연(Trigger point)을 위한 Timer를 설정한다. 초기 Timer 설정은 Interrupt disable로 설정한다.
              • Input port의 External interrupt 처리
                • Input port의 External interrupt를 Disable 한다.
                • 일정한 시간지연(Trigger point) 후에 Timer 인터럽트(Compare Match Interrupt or Overflow Interrupt을 사용)가 발생하도록 Timer를 설정하고,
                • Timer interrupt를 Enable 한다.
              • Timer 인터럽트 처리
                • Timer 인터럽트를 Disable하고,
                • Outport에 High(가능하면 펄스 신호로 출력: SCR은 한번 Turn 하면 ig가 0인 상태에서도 On 상태를 지속함)를 출력한다.
                • Input port를 External interrupt enable(Rising edge)로 설정한다.
              • Input 신호가 Plus에서 Minus로 변동할 때 SCR은 Turn off 상태가 된다.
              • Input 신호가 Minus에서 Plus로 변동하는 순간(Zero crossing) External interrupt이 발생하여 External interrupt 처리 루틴이 다시 실행(매 주기마다 위상 제어가 실행됨) 된다.

              참고자료: External interrupt와 Timer를 이용한 Time delay

              참고자료: Phase Angle Control Of SCR Using AT89C51

      • Triac을 이용한 AC 전력 제어
        • 스위칭 소자로서의 Triac
        • Triac 회로 심볼과 전압-전류(V-I) 특성 곡선

          참고자료: Triac Circuits & Circuit Design

          참고자료: AC power control with thyristor using pic microcontroller

          참고자료: Control Your AC Mains with a Microcontroller

          • Triac 동작 개요
            • 윗 그림의 좌측은 Triac의 회로 심볼이고, 그림의 우측은 특성곡선(전압 - 전류)과 부하선(A - B를 연결하는 직선)의 관계를 표시한다. Triac의 동작점은 특성곡선과 부하선이 만나는 점 A(Off 상태) 또는 B(On 상태)에 위치한다.
            • SCR은 교류 전압의 한 쪽 방향(0에서 180도 사이) 위상제어만 가능하다. 이 문제를 해결하기 위하여 SCR 2개를 서로 역 방향(병열로 연결)으로 연결한 구조가 Triac 이기 때문에 Triac은 교류전력(양 방향)의 제어에 적합하다.
            • off 상태: Triac 압-전류(V-I) 특성 곡선에서 ig(Gate current), ia1(Anode 1 current), ia2(Anode 2 current) 가 모두 0인 상태에서는 Va(Anode voltage)가 증가하여도 ia는 거의 증가하지 않는다. 이 경우 Anode와 Cathode 사이는 전압이 증가하여도 전류가 흐르지 않는 상태 즉 off 상태이다.
            • on 상태: Va 가 인가된 상태에서 ig를 일정한 크기로 증가 시키면 SCR의 경우와 같이 ia가 크게 증가한다. 이 때 ig를 0으로 하여도 Triac의 Anode에는 계속하여 큰 전류가 흐르게(Positive feedback) 된다. 이 경우 Anode 1과 Anode 2 사이는 낮은 전압에도 큰 전류가 흐르는 상태 즉 on 상태가 된다.
            • on 상태에서 off 상태로 변환하기 위한 방법: on 상태에서 off 상태로 변환하기 위하여는 Va를 0로 하여 ia, ig를 일시적으로 모두 0으로 하여야 한다. 직류 전원을 사용하는 경우 Va를 순간적으로 0으로 하는 것은 어려운 문제이다. 그러나 교류인 경우는 매 사이클 마다 자동으로 0이 되기 때문에 일시적으로 Va를 0 상태로 하는 것이 용이하다. 이런 이유로 Triac은 교류 전력의 위상 제어에 주로 사용한다.
          • Triac을 이용한 위상제어 예
          • Triac을 이용한 위상제어 회로 예

            주: AC 부하(모터, 릴레이 등)인 경우 Load driver에 Snubber circuit를 사용하여야 한다. 아래 "릴레이(or 마그네트스위치) AC 구동 회로 예"를 참고 바람.

            • 위 회로는 Microcontroller를 이용한 Triac 위상제어(전력제어) 회로 예이다. Zero crossing detector에서 입력신호의 Zero crossing point를 검출하고, 이 점으로 부터 일정시간(Trigger point) 후에 Output port에 High를 출력(Triac의 Gate에 ig를 인가) 하면 Triac이 Turn on 된다. Triac은 입력 신호가 0가 되면 자동으로 Turn off되기 때문에 매 주기마다 반복하여 위상제어를 실행하여야 한다.
            • Triac은 SCR 2개가 역방향으로 연결된 구조이기 때문에 교류 전력의 양 방향 제어가 가능하다. 위 회로에서 Bridge Rectifier는 AC 전원(신호)로 부터 양 방향 모두의 Zero crossing detection을 하기 위한 회로이다.
            • 프로그램 알고리즘
              • I/O port와 Timer 초기화
                • Input port와 Output port를 설정한다.
                • Input port를 External interrupt enable(Rising edge)로 설정한다.
                • 시간지연(Trigger point)을 위한 Timer를 설정한다. 초기 Timer 설정은 Interrupt disable로 설정한다.
              • Input port의 External interrupt 처리
                • Input port의 External interrupt를 Disable 한다.
                • 일정한 시간지연(Trigger point) 후에 Timer 인터럽트(Compare Match Interrupt or Overflow Interrupt을 사용)가 발생하도록 Timer를 설정하고,
                • Timer interrupt를 Enable 한다.
              • Timer 인터럽트 처리
                • Timer 인터럽트를 Disable하고,
                • Outport에 High(가능하면 펄스 신호로 출력: SCR은 한번 Turn 하면 ig가 0인 상태에서도 On 상태를 지속함)를 출력한다.
                • Input port를 External interrupt enable(Rising edge)로 설정한다.
              • Input 신호가 Zero crossing(Plus에서 Minus or Minus에서 Plus로 변동)할 때 Triac은 Turn off 상태가 된다.
              • Input 신호가 Zero crossing하는 순간 External interrupt이 발생하여 External interrupt 처리 루틴이 다시 실행(매 주기마다 위상 제어가 실행됨) 된다.

              참고자료: Phase Angle Control Of SCR Using AT89C51


    • 릴레이(Relay), 마그네트스위치(Magnatic contactor)를 이용한 제어
      • 릴레이(Relay)와 마그네트스위치(Magnatic contactor)
      • 릴레이(Relay)와 마그네트스위치(Magnatic contactor) 예

              Relay 1

              Relay 2

          Magnatic contactor 1

          Magnatic contactor 2

        여러가지 릴레이(Relay) 예

      • 릴레이와 마그네트스위치의 접점
      • 릴레이는 윗 그림과 같이 다양한 형태의 접점을 갖는다. 마그네트스위치의 주 접점은 대기 상태(구동 전류가 0인 상태)에서는 개방(Open) 상태이고 동작 시에는 닫힘 상태인 경우가 대부분이다. 그러나 마그네트스위치의 보조 점점은 다양한 형태를 가질 수 있다.

      • 릴레이와 마그네트스위치의 차이
      • 릴레이와 마그네트스위치는 모두 구동부(코일: 전자석)와 금속 접점을 사용하기 때문에 명확히 차이를 구분하는 것은 경우에 따라 어려울 수 있다. 일반적으로 릴레이와 마그네트스위치는 아래와 같은 특성에 따라 구분할 수 있다.

        • 부하 전류의 차이: 릴레이는 일반적으로 10A 이하의 부하에 사용되고 접촉기는 10A보다 큰 부하에 사용되는 경우가 많다.
        • 대기(구동 전류가 0인 상태) 상태의 접점: 마그네트스위치는 대기 상태에서 접점이 열린(Open) 상태 이고, 릴레이는 원하는 기능에 따라 Normally Open 또는 Normally Closed 일 수 있으며 경우에 따라서는 두종류의 점점을 모두 갖일 수 있다. 이 의미는 대부분의 경우 마그네트스위치는 전원이 차단되면 열린 상태가 됨을 의미한다.
        • 보조 접점: 마그네트스위치는 보조 점점을 가질 수 있다. 마그네트스위치의 접점은 부하(모터 등)를 구동하는데 사용하고, 보조 접점은 제어 기능(모터 제어 기능 등) 또는 표시 기능(표시등)에 사용한다.
        • 안전 기능(스프링 장착 접점): 마그네트스위치는 일반적으로 큰 부하를 구동하기 때문에 전원이 차단되었을 때 회로가 차단되도록 하는데 도움이되는 스프링 장착 접점과 같은 추가 안전 기능을 포함하는 경우가 많다. 이것은 전원이 차단되면 모든 회로가 동시에 차단되도록 한다. 릴레이는 일반적으로 저전력 용이기 때문에 스프링 장착 접점을 사용하지 않는 경우가 많다.
        • 안전 기능(과부하 보호): 마그네트스위치는 일반적으로 전류가 설정 시간(보통 10-30 초) 동안 임계 값을 초과하는 경우 회로를 자동으로 차단하는 과부하 보호장치를 포함 하는 경우가 많다. 이는 과전류로 인한 손상으로 부터 접촉기와 장비를 보호하기 위한 것이다. 릴레이는 과부하 보호 장치를 사용하지 않는 경우가 일반적이다.

      • 릴레이(Relay), 마그네트스위치(Magnatic contactor) 구동 회로
        • 릴레이(or 마그네트스위치) DC 구동 회로 예
        • 릴레이(or 마그네트스위치) DC 구동 회로 예

          위 회로는 DC로 구동하는 릴레이 구동 회로의 예이다. 릴레이와 마그네트스위치는 구동 회로와 스위치(접점)이 완전이 분리되어 있기 때문에 부하에는 다양한 전원(DC or AC, 저전압 부터 비교적 높은 전압)을 사용할 수 있다.

          • Fig.a 는 BJT를 사용한 릴레이 구동회로의 예이다. 반도체 SW는 BJT 또는 FET(회로는 조금 다음)를 사용 할 수 있다.
          • Fig.b 는 BJT를 사용한 릴레이 구동회로와 광 결합 Tr 스위치(Phototransistor Optocoupler)를 사용하여 마이크로컨트롤러와 릴레이 구동회로를 전기적으로 완전이 분리 하였기 때문에 릴레이 측에서 발생하는 고전압으로 부터 마이크로컨트롤러 측 회로를 안전하게 보호할 수 있다.
        • 릴레이(or 마그네트스위치) AC 구동 회로 예
        • Triac을 사용한 릴레이(or 마그네트스위치) AC 구동 회로 예

          릴레이(or 마그네트스위치)와 구동 회로의 거리가 먼 경우(제어를 위한 전선의 길이가 긴 경우) AC 24V를 사용하면 비교적 안전하게 제어 할 수 있다. 이 경우 위와 같은 AC 구동 회로를 사용할 수 있다. 또한 위 회로는 일반 AC 부하를 구동하기위한 목적으로 사용할 수 있다.

          주: 부하(Load)에 인가하는 AC 전압이 높은 경우 Snubber circuit에 사용하는 C는 고전압용(부하에 인가하는 AC 전압의 2배 이상)을 사용하고 R도 고전력 저항(보통 1/2W 이상)을 사용하여야 한다.

          • 위 회로는 부하 구동에 사용하는 Triac과 Snubber circuit의 선택에 따라 다양한 AC 부하(6V - 240V)를 제어 할 수 있다.
          • 위 회로는 Triac를 사용한 릴레이 구동회로와 광 결합 Triac 스위치(PhotoTriac Optocoupler)를 사용하여 마이크로컨트롤러와 릴레이 구동회로를 전기적으로 완전이 분리 하였기 때문에 릴레이 측에서 발생하는 고전압으로 부터 마이크로컨트롤러 측 회로를 안전하게 보호할 수 있다.

    • 솔레노이드 릴레이(Solenoid Relay)를 이용한 제어
      • 솔레노이드 릴레이(Solenoid Relay)와 솔레노이드 밸브(Valve) 예

        솔레노이드 릴레이(Solenoid Relay) 예

            솔레노이드 벨브(Solenoid Valve) 예

      • 솔레노이드 릴레이(Solenoid Relay)
      • 위 그림은 솔레노이드 릴레이와 솔레노이드 릴레이를 이용한 솔레노이드 벨브의 예 이다. 솔레노이드 릴레이는 구동 코일에 전류를 인가하면 전자석이 동작하여 축을 당기는 원리이다.

        • 솔레노이드 릴레이의 기본 동작 원리는 릴레이와 같기 때문에 위 릴레이(or 마그네트스위치) 구동 회로와 같은 회로를 사용하여 제어할 수 있다.
        • 솔레노이드 릴레이는 주로 기계 장치 또는 밸브 등의 제어에 사용한다.

    • AVR(Atmega128) 전력제어(Power control) 관련 페이지 보기