<사진> 실험장치의 전경

 

          

  <사진> 공주대학교 전력전자응용연구실 식구들(좌측부터 장진욱형, 이원일형, 김동기형, 나, 윤덕용교수님)

 

         

                                                     <사진> 논문상

 

        * 이승용, 김동기, 윤덕용, "TRIAC을 이용한 커패시터 운전형 단상 유도전동기의 속도제어 특성",

          대한전기학회 전기기기 및 에너지변환시스템 부문회 춘계학술대회(한양대학교 안산캠퍼스) 논문집,

          pp. 231 ~ 234, 2012. 4. 20, 우수논문상 수상

 

            TRIAC을 이용한 커패시터 운전형 단상 유도전.pdf

            학술대회발표자료.pdf

 

댓글을 달아 주세요

  1.  댓글주소  수정/삭제  댓글쓰기 김동기 2012.05.01 00:05

    이승용군 다시 한번 축하한다...^^

전력전자&모터 | Posted by Mr.Yong 2011. 12. 13. 13:42

DC 파워서플라이



거창하게 파워 서플라이라고 했지만 변압기를 이용해

22V로 낮춰주고 브릿지다이오드로 정류시키고 평활해서 레귤레이터 IC 입력단에 넣어줬다

주로 사용한 레귤레이터 IC는 LM2575 시리즈와 LM2576시리즈이다.

+5V는 2A  +12V 2A, 25V 2A까지 사용할수 있다.

댓글을 달아 주세요

전력전자&모터 | Posted by Mr.Yong 2011. 12. 13. 12:33

80W급 BLDC모터 속도제어기 구현

* 작업기간 : 2010 .8 ~ 2011. 1

* 사용한 마이크로프로세서 : ATxmega 128A1(OK-128A1 키트를 컨트롤러로 사용)

* 특징 : - 속도제어기로는 PI 제어기 사용, 홀센서를 이용한 회전자의 위치 검출, 500펄스 엔코더 사용
           - 센서리스 회로 포함(실험 X)

* 이거 만들려고 MOSFET 한박스는 태워먹은 것 같다..ㅡ.ㅡ...


* 전체 사진



* BLDC모터와 엔코더




* BLDC 모터를 제어하기 위한 MOFET 6개를 이용한  H-브릿지 회로




* DC 5V 및 12V를 만들어주기 위한 회로




* 센서리스를 위한 역기전력 검출 회로 및 전류 센서 회로

댓글을 달아 주세요

전력전자&모터 | Posted by Mr.Yong 2011. 10. 27. 23:55

단상유도전동기 정리자료


단상유도전동기 관련 이론을 정리한 자료입니다.

댓글을 달아 주세요


댓글을 달아 주세요

  이번에는 AC전력제어에 많이 쓰이는 TRIAC 전력제어 중에서 제로크로싱제어를 사용한 출력제어법을 소개합니다.

  TRIAC을 사용하여 전력(우리나라는 보통 AC220V)기기를 제어하는 방법은 크게 두가지로 나눌 수 있습니다. 하나는 위상제어이고 또 하나는 이번에 소개하려는 제로크로싱(Zero Crossing)제어 입니다.

  혹시 이게 뭔미? 하시는 분들을 위해 위상 제어와 제로크로싱 제어에 대해 간략히 설명합니다.    
 

  위 그림에서 붉은색 사인파형은 AC라인의 전압파형이죠. 그리고 수직으로 내려운 검은색 실선은 TRIAC GATE TRIGGER 신호입니다. 위상제어는 트리거의 위상을 조절해서 AC출력(그림의 'ON'구간) 크기를 제어하는 것입니다.  즉, AC전압이 원점을 통과하는 시점을 검출해서 그 시점을 기준으로 트리거를 일찍하면 출력은 100%에 근접하고, 트리거 타이밍을 늦추면(최대 8.333ms) 출력은 0%에 근접하게 됩니다.

  참고로 우리나라의 전력은 모두 60Hz이니까 1Hz는 1/60 = 16.667ms이고 그 반파에 해당하는 1/2는 8.333ms입니다. 제로크로싱제어에서는 AC전압이 원점을 통과하는 시점 직후에 TRIAC에 트리거 신호를 줍니다. 위 그림처럼 트리거 신호를 주면 'ON', 주지 않으면 'OFF'가 되는거죠. 그러니까 위상제어에 비해 간단하다고 할 수 있습니다.

  자, 이제 위상제어를 하든 제로크로싱을 하던 TRIAC을 사용한 전력제어 회로의 예를 보입니다.

 

 

  PH_CHECK는 MCU의 인터럽트로 연결하고 인터럽트 모드는 NEGATIVE EDGY 트리거로 설정해야 합니다. TRIGGER이야 당연히 출력포트로 연결하는거죠. 가능하면 MCU의 출력포트는 OPEN 모드인것이 좋습니다. PH_CHECK INT는 포토커플러의 동작점이 있어서 AC 제로크로싱 포인트 보다 일정시간 늦게 되는데 이는 R2값으로 어느정도 조절할 수 있습니다.

  그런데 트리거 시점은 제로크로싱 포인트보다 일정시간 늦어야 합니다. 그 이유는 TRIAC에 짧은 펄스(10us)로 트리거 신호를 주더라도 그 시점의 순간전압이 매우 낮으면 전류가 거의 흐르지 않게 되는데 흐르는 전류가 일정값 이하이면 TRIAC는 'TRIGGER ON'에 실패하게 됩니다. 이것을 TRIAC의 최소 유지전류라고 합니다. 만일 모터등 인덕턴스 성분이 큰 부하인 경우는 전압투입에 비해 전류의 흐름이 상당히 늦게 됩니다. 이때는 트리거 시간을 적당히 연장하던지 아니면 연속적인 트리거 신호를 주던지 해야 합니다.

  제로크로싱은 역률이 100%에 가까운(즉, 위상지연이 거의 0도인) 히터부하를 대상으로 하므로 모터를 대상으로하는 위상제어에 대한 이야기는 생략하겠습니다. 편의상 여기서는 1/2 CYCLE을 1펄스로 표현하겠습니다.

  자, 그러면 예를 들어 48% 출력제어를 어떻게 하면 좋을까요? 간단히 생각하면 100번의 펄스(1/2 CYCLE)가 발생하는동안 48번을 보내면 되는것이죠. 그렇다고 '48 펄스를 먼저 출력하고 62펄스는 쉰다'는 것은 좀 안이한 발상입니다. 이렇게 하면 히터의 출력이 0.833초(100/120초)를 주기로 흔들리게 되는데 이는 히터의 온도제어에 오차로 나타나게 됩니다. 또 현실적으로도 히터에 소음이 발생한다든지(지잉..지잉..하는 소리가 납니다.)하는 문제도 생깁니다.  

 
자, 우선 분모를 100으로 하고 분자는 0으로 합니다.

  먼저 분자에 출력율을 더합니다. -> 48/100 -> 1 이하이므로 쉽니다.

  첫 크로싱에서 또 출력율을 더합니다. -> 96/100 -> 1 이하이므로 쉽니다.

  다음 크로싱에서 또 출력율을 더합니다. -> 144/100 -> 1 이상이므로 1펄스를 출력하고 분자에서 100을 뺍니다. -> 44/100

  다음은 92/100 -> OFF -> 140/100 -> ON(40/100) -> 88/100 -> OFF -> 136/100 -> ON(36/100) ......

  결국 50회의 크로싱에서 24번의 'ON'이 적절히 분산되어 발생하게 됩니다.

  히터에 주는 출력은 골고루 분산되겠죠.

  자, 이제는 구현코드를 보겠습니다. 이런 간단한 제어는 대부분 소형 MCU로 구현되는 일이 많은데, 여기서는 ATMEGA32에서 구현된 코드입니다.

컴파일러는 코드비젼입니다.

 //

// 지정된 비율에 따라 히터 출력을 결정

//

#define PULSE_DUTY 100 // 여기서 제어 정밀도가 결정됩니다. 100이면 %단위가 됩니다.

uchar HeatCount;

char pulse_out_heater(void)
{
 char pulse = 0;

 if (HeaterOn) // 히터를 켜고 끄는 스위치입니다.
 {
  HeatCount += HeatOut;

  if (HeatCount >= PULSE_DUTY)
  {

   pulse = 1;

   HeatCount -= PULSE_DUTY;

  }
 }
 
 return pulse;
}

 

// PH_CHECK에 의해서 발생하는 EXT_INT2 인터럽트입니다.
// External Interrupt 2 service routine
// 60Hz Power Cycle Detect
// Plus Cycle Trigger
// 잠깐, 회로를 보면 플러스 사이클에서는 PH_CHECK 신호가 나오지만
// 마이너스 사이클에서는 PH_CHECK가 나오지 않습니다.
// 따라서, PH_CHECK에 의한 인터럽트가 발생한 후 8,333us후에 타이머1 인터럽트를 발생시켜
// 마이너스 사이클에서도 출력을 제어하도록 합니다.


#define TRIG_TIME_DELAY 65536-8333 // 0us delay

interrupt [EXT_INT2] void ext_int2_isr(void)
{

 if (pulse_out_heater()) TRIGGER= 0;
 
 delay_us(10); // TRIAC의 트리거는 10uS 펄스폭만으로도 충분합니다.

 TRIGGER = 1;

 // 8,333us 후에 TIMER1 INT가 발생하도록 설정
 TCCR1A=0x00;
 TCCR1B=0x02;
 TCNT1H = TRIG_TIME_DELAY >> 8;
 TCNT1L = TRIG_TIME_DELAY & 0xFF;
 TIMSK=0x05; // Timer0,1 Interrupt enable

}


// Timer 1 overflow interrupt service routine
// Minus Cycle Trigger

interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
 if (pulse_out_heater()) TRIGGER= 0;

 TCCR1A=0x00;
 TCCR1B=0x00;
 TIMSK=0x01; // Timer1 Interrupt disnable

 delay_us(10);

 TRIGGER= 1;
}

 

// 이것은 ATMEGA32에서의 EXT2 INT 설정함수입니다.
// ATMEGA계열은 대부분 그대로 사용할 수 있습니다.
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: On
// INT2 Mode: Falling Edge
 
void extint2_init(void)
{
 GICR|=0x20;
 MCUCR=0x00;
 MCUCSR=0x00;
 GIFR=0x20;
}

여러분에게 참고가 되길 바랍니다.

[출처] 네이버 : TRIAC 제로크로싱 제어를 활용한 출력제어 (씨에스랩 카페) |작성자 씨에스쥔

댓글을 달아 주세요

  1.  댓글주소  수정/삭제  댓글쓰기 노홍구 2012.06.12 06:46

    좋은 정보 감사합니다.
    그렇다면 1% 출력 제어는 100회에 1번 발생하게 되는 것인가요?

    •  댓글주소  수정/삭제 이승용 2012.06.15 23:26

      그렇죠...

      그래서 응답이 느립니다.

      논문에서도 보면 위상제어 비해 응답속도가 느리죠.

      대신 장점이..삐익 거리는 소음이 적다 이런거지요

      그래서 보통 장판이나 이런데서 사용하죠.

전력전자&모터 | Posted by Mr.Yong 2010. 6. 23. 14:16

Using Vibration Motor


    ->  핸드폰이나 게임기에 진동을 발생시키는 Vibration Motor 사용(디바이스마트에서 구입).
    -> 
MCU에서 TRBASEHigh
신호를 주어 구동.
 

댓글을 달아 주세요

전력전자&모터 | Posted by Mr.Yong 2010. 6. 10. 14:03

BLDC 모터의 구동 원리(퍼옴)


그림 1 간단한 형태의 BLDC 모터 내부 구조

  그림 1은 BLDC 모터의 간단한 구조를 나타내고 있다. BLDC 모터는 영구 자석으로 된 회전자와 권선으로 되어 있는 스테이터 폴들로 이루어져있다. 영구 자석 회전자와 전류가 인가된 권선으로부터 생성되는 자기장 사이의 관계에 의해 전기 에너지는 회전자를 회전시킴으로써 기계적인 에너지로 변환된다.
  그림 왼쪽에는 간단한 형태의 BLDC 모터의 내부를 나타내고 있으며, 오른쪽은 stator의 전기적인 구성을 나타내고 있다. 오른쪽 그림에서 ( A – a – com – b – B )의 순서로 전류가 흐르는 1번의 경우를 생각해보자. 그러면 왼쪽 그림에서처럼 해당 stator의 극성이 정해진다. 영구 자석으로 되어 있는 rotor의 N극은 ( A – a ) stator와 ( com – b ) stator 사이에 위치하고, S극은 ( b – B ) stator와 ( a – com ) stator 사이에 위치하게 된다. 여기서 ( A – a – com )으로 흐르는 전류량과 ( com – b – B )로 흐르는 전류는 BLDC 모터에 연결되어 있는 MOSFET 소자에 의해 스위칭 되어 A, B, C에 공급된다.

  앞에서 설명한 구조는 내부 rotor가 하나의 N, S극 이루어진 단순한 형태의 BLDC 내부 구조이다. 만약, rotor가 2 pole이 아니라 4 pole이라면, 내부 둘레의 stator의 개수도 6개가 아닌 12개가 된다. 그렇게 되면, stator에 인가되는 전류의 상이 바뀔 때, 60도씩 움직이는 것이 아니라 30도씩 움직이게 된다.


그림 2 3상 브리지 회로

  그림 2는 3상 브리지 회로를 보여주고 있다. High 시그널이 입력되는 P-channel MOSFET소자와 Low 시그널이 입력되는 N-channel MOSFET 소자로 구성되어 있다. 각각의 MOSFET 소자 사이가 모터의 A, B, C(U, V, W)에 연결되어 모터를 구동시키기 위한 전류를 공급하게 된다. 각각의 드라이브 컨트롤은 MOSFET에 High와 Low 시그널을 조합, 입력하여, A, B, C 터미널에 High 드라이브, Low 드라이브, Floating 드라이브가 걸리게 된다.
  한가지 주의해야 할 점은 이런 형태의 회로에서는 모터전류 공급을 위한 하나의 드라이빙 회로에서 High MOSFET과 Low MOSFET을 동시에 활성화 시키면 안 된다는 것이다. 또한 마이크로 컨트롤러에서의 신호를 즉시 인식시킬 수 있도록 드라이버 입력단에 반드시 풀-업과 풀-다운 저항을 연결해 주어야 한다. High, low 양쪽 드라이버를 동시에 활성화 시키지 못하게 하는 dead time control이라고 하는 방법은 low 쪽 드라이버가 활성화 되기 전에 high 쪽 드라이버를 적당한 시간만큼 미리 비활성화 시키는 것이다. 일반적으로 드라이버는 on 될 때보다 off 될 때 시간이 더 많이 소요된다. 따라서 동시에 드라이버가 활성화 되지 않도록 이 시간 차이만큼의 여유를 가져야 한다.
  하지만, BLDC 모터 제어를 위한 드라이빙 순서는 high 쪽과 low 쪽이 스위칭이 이루어지기 전에 floating 상태를 거치기 때문에 자연적으로 dead time이 존재하게 된다. 따라서 이런 순서에서는 일부러 dead time을 고려하지 않아도 된다.


그림 3 드라이브 타이밍 순서

  그림 3은 BLDC 모터의 3상 드라이브에 대한 입력 순서는 나타내고 있다. 홀센서는 두 가지 버전으로 나눌 수 있다. 상이 60도 시프트 되는 것과 120도 시프트 되는 것이 그것이다. 이에 근거하여 모터 제조회사에는 상 변화 순서를 정의해서 판매가 되며, 우리는 이에 따라 모터를 제어하면 된다. 홀센서는 파워 소스를 필요로 하는데, 대략 4~24V의 전압을 요구하며, 5~15mA의 전류를 소모한다. 모터 제어회로를 설계할 때 이 점을 유의해야 한다. 홀센서는 보통 open-collector 타입으로 컨트롤러 쪽에 풀업 저항이 필요하다.


퍼온 곳 : http://nerve.tistory.com/

댓글을 달아 주세요



작년 말에 작업한건데..이제야 올린다.....이놈에 귀차니즘..T.T...PI 게인 값이 부정확해서 저속에서는 불안정함.

댓글을 달아 주세요