Upload
others
View
16
Download
1
Embed Size (px)
Citation preview
26 Devicemart Magazine
PROJECTS TO BUILD
1 BLDC(Brushless DC electric motor)란?
BLDC란무엇일까요??약자를풀어서읽어보면,
Brush가없는DC모터인것이분명합니다.그렇다면일반DC
모터와는무슨차이가있길래Brush를왜없앴을까요?다시
옛날에가지고놀던미니카의DC모터를떠올려보겠습니다.
<한참달리고나면모터가엄청뜨겁습니다.약간의탄내도올
라옵니다.모터를뜯어보니Brush가탄게분명한것같습니
다.이걸갈아줘야다시달릴수있을것같습니다.>다들미니
카를한번쯤다뤄봤다면이와같은일을겪었을것입니다.
그렇습니다.DC 모터의 단점은 Brush입니다.소음이많고,
일정시간이되면갈아줘야하기때문입니다.이와같은단점
을 없앤 것이 BLDC(Brushless DC electric motor)인것입
니다.그렇다면구조는어떻게다른지살펴보겠습니다.
<그림1-1>에서볼수있듯이,DC모터의경우회전체가코일
인반면,BLDC모터는자석자체가회전하는회전체의모습입
니다.그러므로구조상Brush가필요없어지게된것입니다.
그렇다면실제BLDC의모습은어떻게생겼을까요?
안녕하세요!필자는엔지니어로써막발을들여놓은지
얼마되지않아,많은것을배우고있는‘왕초보’입니다!!
이번에처음으로SensorlessBLDC모터구동에대한글을쓰게
되었습니다.아주간단하게SensorlessBLDC모터를구동하는방
법에대해글을써볼까합니다.부족한점이많겠지만,같이열심
히배워보도록합시다.
처음SensorlessBLDC모터를손에쥐고.구동하려하니막막
할따름입니다.이녀석을어떻게구동시켜야할까?과연구동시
킬수있을까...?하는걱정도들었습니다.
사실왕초보인필자는어릴때가지고놀던미니카에들어가는
DC모터를뜯어본기억이전부인데말입니다.
학교앞문구점앞에설치된미니카용트랙(Track)에서미니카를
친구들것보다빠르게달리게하기위해모터를구입하던기억이
떠오르네요.BLDC모터라...무언가DC와는이름부터다르니다
른점이한,두가지가아닐것같은느낌이매우많이듭니다.
얼마나많이다른걸까요?
자!그럼SensorlessBLDC모터를구동하기에앞서,BLDC와
SensorlessBLDC에대해서알아봐야하겠죠??
그럼간단하게알아보도록합시다
<그림1-2>실제 BLDC모터 실제모습
<그림1-1> DC와 BLDC의 구조
current current
회전방향
DC Motor의 구조
semiconductor switch
BLDC Motor의 구조
rotor magnetstator coil
hall sensor
rotor coil
commutator brush
rotor stator magnet
Sensorless BLDC모터를 구동해보자!!
작성자:허홍강
www.devicemart.co.kr 27
SensorlessBLDC모터를구동해보자!
<그림1-2>을보시면<그림1-1>에서봤던것처럼코일에
전류가흐르면자석이회전하게끔만들어져있습니다.
그리고3개의극성터미널이존재합니다U,V,W(A,B,C)가
바로그것이지요.
그리고모터회전체인자석의위치를알려주는홀센서가
장착되어있습니다.이홀센서를통해모터자석의위치를
판단할수있고,모터의회전속도및회전각등을알수있
는것입니다.
여기서궁금한점이있을것입니다.DC모터와BLDC가
구조적인차이점이있으니,구동하는데도각각의차이점
이있지않을까요?물론그렇습니다.일반DC모터의경우
Brush의양터미널에(+,-)를입력하면간단하게구동이
되지만,BLDC모터의경우홀센서의출력에따라각각의
터미널에전류를흘려주어야하므로반드시구동용드라이
버가필요합니다.
<그림1-3>은일반적인BLDC모터의내부구조입니다.
BLDC모터는영구자석으로이루어진회전자와권선으로이
루어진스테이터들로이루어져있으며,전류가흐르는권
선으로부터자기장관계에의해회전자를회전시켜전기적
에너지를기계적인에너지로변환되게됩니다.
<그림1-3>의오른쪽에나타낸화살표의방향은각각의
전류흐름방향이고이를좀더자세히표현한것은아래
<그림1-4>와같습니다.
<그림1-4>와같이BLDC모터는총6-STEP으로이루어
져있으며,홀센서의신호에따라각각다른방향으로전압
을인가해주어야합니다.위와같이전류를흘려주게되면,
모터는회전체(영구자석)가순서대로각전자석에게밀리고
당겨져회전체가회전하게되는것입니다.
<그림1-5>는3상전류제어용인버터로,위와같은회로조
합을통해BLDC모터를제어하게됩니다.
여기까지매우간단하게BLDC에대해알아보았습니다.
다음장에서는SensorlessBLDC에대해알아보도록하겠
습니다.
2 Sensorless BLDC란?
드디어SensorlessBLDC모터에대해알아보는시간
이되었습니다!SensorlessBLDC모터란무엇인가?단순히해석하
고자하면,BLDC모터에Sensor가없는것이므로,홀센서가없는
것일까?그렇습니다.홀 센서가 장착되지 않은 BLDC모터입니
다.그렇다면왜홀센서를장착하지않은것일까요?필자의생각
으로는,소형BLDC모터를개발하다보니홀센서까지제거하여크
기를줄이다가개발된것이아닐까생각이듭니다.
즉,기존의BLDC모터에비해크기를줄이기위한것이아닐까
조심스럽게추측해봅니다.본론으로넘어와서,SensorlessBLDC
<그림1-3> BLDC모터의 내부모습
100N
AA
a
a
a
com
com
com
com
b
b
b
BB
c
c
cc
C
S N
S
S
NS
N
011
001
101N
S
110
010
13
25
46
<그림1-4> 홀 센서 신호에 따른 전압인가 방법
+VBUS
-VBUS 60°
Red Winding
Green Winding
Blue Winding
+VBUS
-VBUS
+VBUS
-VBUS
1 2 3 4
sector
5 6
<그림1-5> 3상 전류 제어용 인버터
a+
a+ a- b+ b- c+ c-
a-
b+
b-
c+
c-
Ha
N
S
HbHcLogic회로
트랜지스터
영구자석
자기센서
요크
전기자(스테이터)
A
C
B
Ha
Hc
Hb
28 Devicemart Magazine
PROJECTS TO BUILD
모터를구동하기위해서는무엇을알아야할까요?기존BLDC모
터와구동하는데있어서차이점은무엇일까요?그럼앞시간에다
룬BLDC모터에대해다시한번떠올려볼까요?기존BLDC모터의
경우에는,각홀센서의출력신호를가지고,모터의회전자(영구자
석)의위치를파악하여3개의터미널에순서대로각기다른전압을
인가하여회전자와전자석사이의밀고당기는힘을이용하여회전
하였습니다.그렇다면,“SensorlessBLDC모터의경우홀센서가
없으면,모터의회전체의위치는어떻게알고전압을순서대로인
가하지?홀센서가없는데회전체의위치를알고모터에정확한신
호를준다?어떤방법일까?”하는의문이생길것입니다.
일단결론부터얘기하면,역기전력(BACKEMF)을이용하는방법
입니다.BLDC모터가회전할때,각권선은렌츠의법칙(Lenz’s
Law)에따라서각권선은인가되는주전압과반대의극성을갖는
역기전력(BEMF)을발생시키게됩니다.이들역기전력의극성은인
가전압의방향과반대가되며,주로3개의큰모터파라미터에의
해결정됩니다.
·고정자권선의턴수
·회전자의각속도
·회전자자석에의해발생되는자계
(더많은내용이있지만,간단하게구동하는방법만을소개하므로,
복잡한내용은생략하도록하겠습니다.)
<그림2-1>은각각의U,V,W(이하A,B,C)에순서대로전압을인
가했을때발생되는Back-EMFZeroCrossing의위치를나타
낸것입니다.그렇다면역기전력은어떻게이용하느냐가문제인데,
보통SensorlessBLDC모터를접하면,중성점(NeutralPoint)이
나와있는것과그렇지않은것들두가지를접하게됩니다.
<그림2-2>에나와있는것같이왼쪽의중성점이있는경우와,오른
쪽처럼중성점이없는경우두가지의방법이있습니다.
왼쪽과같은경우에는중성점을이용하여,직접Back-EMF를검
출할수있는반면,오른쪽과같이중성점이나와있지않은경우,
가상의중성점을구성하여간접적으로검출하여야합니다.그리고
간접적으로검출한Back-EMF와각각의U,V,W(이하A,B,C)와
의비교기를통해홀센서와유사한출력을얻고,그출력에따라
o
o
o
SECTOR 5 0 1 2 3 4 5 0 1
<그림2-1> Zero Crossing 검출
30°
= BEMF Zero Crossing
<그림2-2> 중성점이 나와있는 경우 (우), 중성점이 없는 가상의 중섬점인 경우(좌)
BUS
POWER GND POWER GND
N N
BUS
N'
www.devicemart.co.kr 29
SensorlessBLDC모터를구동해보자!
순서대로전압을인가하게되는것입니다.
드디어BLDC모터와SensorlessBLDC모터에대해간단하게알아
본것같군요!!
다음장에서는제가수행한방법을소개하도록하겠습니다.
3 Sensorless BLDC 모터 구동
1장과2장을통해간략히BLDC모터와Sensorless
BLDC모터에대해알아보았습니다.1장과2장을통해제설명이
잘전달되었는지궁금하군요!!
이제BLDC모터를구동할시간입니다.그럼저와함께Sensorless
BLDC모터구동을해보도록할까요??
우선SensorlessBLDC모터를
구동하기에앞서모터를선정해
볼까요??필자는HDDSpindle
SensorlessBLDC모터를선택
하겠습니다.종종각포탈게시판
에하드드라이버를분해한뒤모
터돌리는동영상을보고,한번해
봐야지했었는데,드디어해보게
되는군요!!모터의배선을보니,4선으로써3선은모터의각상인
U,V,W(A,B,C)임에틀림없고,나머지한선은중성점일것입니다.
이모터의데이터시트를찾아봤지만인터넷에는데이터시트가존
재하지않는군요!어떤터미널이중성점인지어떻게알아낼까?
생각끝에멀티메터로찍어보았습니다.
각각의터미널끼리저항값을재보니,한터미널에서2.9Ω이나
왔습니다.만약중성점일경우,각각의터미널선가운데있으므로,
저항성분이절반밖에되지않을것입니다.그러므로분명이녀석
이중성점일것입니다.이제중성점의위치를알았으므로,모터를
구동시킬모터구동부가있어야할것입니다.이모터를만능기판
에놓고테스트해본결과,큰전류량을필요로하는모터는아니
므로,간단하게범용npn트랜지스터인2N2222을사용하여브릿
지회로를구성하였습니다.그리고,Back-EMF를검출하기위해
LM2904를사용하여비교기회로를구성하였습니다.
(필자는메인MCU로ATmega8을사용하였습니다.)
<그림2-3> 각각의 터미널의 전압인가 순서
<그림3-1> 브릿지 회로
<그림3-2> Back-EMF 검출용 비교기 회로
<그림3-3> 모터 연결 회로
www.devicemart.co.kr 31
SensorlessBLDC모터를구동해보자!
NT - SpindletestKIT Parts List
Part Package Description EA Location 디바이스마트 제품명
IC
ATmega8-16PI DIP MCU 1 U4 ATmega8-16PI
KIA7805 DIP Line driver 1 U39 MAX232N
LM324D DIP OP-AMP 1 U1 LM324N
74HC08D DIP NAND GATE 1 U3 74HC00
X-TALCRYSTAL - 18.432MHz
ATS 18.432MHZ 1 Y1X-TAL 18.432M (49/U Type)
Fundamental
Regulator 7805 TO-220 5V Regulator 1 U2 7805(TO-220) 방열판세트
DIODE1N4148 DIP DIODE 7 D1,D2,D3,D4,D5,D6,D7 1N4148
3파이 LED RED DIP LED 1 D8 3A4SCA-8
SW KLT-1105B DIP SWITCH 2 S1,S3 KLT-1105B
Connector
Molex 53014-02 DIP molex 53014 - 2PIN 1 J4 Molex 53014-02
Molex 5045-02 DIP molex 5045 - 2PIN 1 J1 Molex 5045-02
PINHEADER 2X3 DIP 2.54mm 1 J2 핀헤더
PINHEADER 1X3 DIP 2.54mm 1 J3 핀헤더
MOTORSPINDLE MOTOR Sensorless BLDC 1
HDD Spindle Sensorless BLDC
Molex 5267-04 Motor Con 1 MOT1 Molex 5267-04
Transistor 2N2222A TO-92 NPN TR 9Q1,Q2,Q3,Q4,Q5,
Q6,Q7,Q8,Q92N2222A
Resistor
1/4W Axial Resistor 471J
DIP 470Ω 1 R1 1/4W Axial Resistor 471J
1/4W Axial Resistor 101J
DIP 100Ω 8R20,R21,R22,R24,R25,
R26,R27,R281/4W Axial Resistor 101J
1/4W Axial Resistor 1K
DIP 1KΩ 17R5,R6,R8,R10,R12,R14, R16,R18,R30,R32,R34,
R37,R38,R41,R42,R45, R461/4W Axial Resistor 1K
1/4W Axial Resistor 10K
DIP 10KΩ 19R3,R4,R7,R9,R11,R13,R15,R17,R19,R23,R29,R31,R33,R35,
R36,R39,R40,R43,R441/4W Axial Resistor 10K
1/4W Axial Resistor 0 DIP 0Ω 1 R2 1/4W Axial Resistor 0
CAP
E/C 25V 470uF DIP 470uF E/C 2 C1,C2 E/C 25V 470uF (85℃)
E/C 10V 100uF DIP 100uF E/C 1 C3 E/C 10V 100uF (85℃)
Ceramic 0.1㎌, 50V DIP 14C5,C7,C8,C9,C10,C11, C12,C13,C14,C15,C16,
C17,C18,C19Ceramic 0.1㎌, 50V
Ceramic 22pF, 50V DIP 2 C4,C6 Ceramic 22pF, 50V
1n4148 2n2222a 74hc00 5045-02 5267 xtal atmega8-16PI axial resi
ceramic cap e/c cap klt1105 led lm324 max232
※제품구입은디바이스마트를
이용해주십시오
www.devicemart.co.kr
32 Devicemart Magazine
PROJECTS TO BUILD
개발툴 – AVR GCC
#include <avr/io.h>#include <stdio.h>#include <avr/interrupt.h>#include <util/delay.h>
#define A_H_ON PORTC = ((PORTC | 0x01) & 0xF9)#define B_H_ON PORTC = ((PORTC | 0x02) & 0xFA)#define C_H_ON PORTC = ((PORTC | 0x04) & 0xFC)
#define A_L_ON PORTC = ((PORTC | 0x08) & 0xCF)#define B_L_ON PORTC = ((PORTC | 0x10) & 0xD7)#define C_L_ON PORTC = ((PORTC | 0x20) & 0xE7)
void motor(void);
//mainvolatile unsigned char g_Motor_state;
//pwmvolatile unsigned int g_Spindle_speed;volatile unsigned int g_Spindle_speed_renewal;
int main(void){ //GPIO Initializing DDRC |= (1<<DDC0)|(1<<DDC1)|(1<<DDC2)|(1<<DDC3)|(1<<DDC4)|(1<<DDC5); PORTC &= ((0<<PORTC0)|(0<<PORTC1)|(0<<PORTC1)|(0<<PORTC2)|(0<<PORTC3)|(0<<PORTC4)|(0<<PORTC5)); DDRD &= (0<<DDD2)|(0<<DDD3)|(0<<DDD4); PORTD |= (1<<PORTD2)|(1<<PORTD3)|(1<<PORTD4);
DDRD &= (0<<DDD5); //START Switch PORTD |= (1<<PORTD5); //START Switch
DDRB |= (1<<DDB1); //PWM PORTB |= (1<<PORTB1); //PWM
//PWM Initializing TCCR1A = (1<<COM1A1)|(1<<COM1B1)|(1<<WGM11); //9bit phase correct PWM 15.6KHz TCCR1B = (1<<CS10);//1 prescaler TIMSK |= (1<<OCIE1A); sei();
g_Spindle_speed_renewal = 200;
while(1) { if((PIND&0x20)==0) { g_Spindle_speed = 250;g_start_flag =1; }
if(g_Spindle_speed>510) { g_Spindle_speed = 510; } if(g_Spindle_speed<100) { g_Motor_state = 0; OCR1A = 0; } motor(); } return 0;}
void motor(void)
{ switch(g_Motor_state) { case 0: if(g_Spindle_speed>100) g_Motor_state =1; break; case 1: OCR1A =200; if(((PIND & 0x1C)>>2) == 3)g_Motor_state =2; A_H_ON; C_L_ON; _delay_ms(15); if(((PIND & 0x1C)>>2) == 1)g_Motor_state =2; B_L_ON; _delay_ms(15); if(((PIND & 0x1C)>>2) == 5)g_Motor_state =2; C_H_ON; B_L_ON; _delay_ms(15); if(((PIND & 0x1C)>>2) == 4)g_Motor_state =2; A_L_ON; _delay_ms(15); if(((PIND & 0x1C)>>2) == 6)g_Motor_state =2; B_H_ON; A_L_ON; _delay_ms(15); if(((PIND & 0x1C)>>2) == 2)g_Motor_state =2; C_L_ON; _delay_ms(15); break; case 2: OCR1A = 300; if(((PIND & 0x1C)>>2) == 1) { A_H_ON; B_L_ON; } if(((PIND & 0x1C)>>2) == 2) { B_H_ON; C_L_ON; } if(((PIND & 0x1C)>>2) == 3) { A_H_ON; C_L_ON; } if(((PIND & 0x1C)>>2) == 4) { C_H_ON; A_L_ON; } if(((PIND & 0x1C)>>2) == 5) { C_H_ON; B_L_ON; } if(((PIND & 0x1C)>>2) == 6) { B_H_ON; A_L_ON; } break; }}
ISR(TIMER1_COMPA_vect){
}
·if(((PIND&0x1C)>>2)==3):HA,HB,HC가각각PORTD의2,3,4핀에물려있으므로,각각의상태를확인하기위해서는0x1C와&연산을해주어야한다.또한>>2는오른쪽으로2번쉬프트연산을통해각각의상태가1~6까지의6스텝상태를확인할수있다.
소스코드
www.devicemart.co.kr 33
SensorlessBLDC모터를구동해보자!
우선SensorlessBLDC모터를구동하게되면각각의ABC파형
은<그림3-5>와같이ZeroCrossing과Back-EMF가발생되는
floating구간사이에Conducting구간이존재할것입니다.
<그림3-1,2,3>과같이회로는구성했지만,막상Signal을주려고
하니막막합니다.Back-EMF검출용회로를구성했는데어떻게
써야하나조사해본결과매우다양한방법이있었습니다.
그중가장간단한가정을하나세워보았습니다.
<그림3-5>와같이처음모터를돌리기전에일정방향으로
6-Step의펄스를순서대로넣어준다면,HallSensorType의
BLDC모터처럼Back-EMF검출용비교기회로에서Signal을
발생시킬것이고어느순간6-Step의어느한스텝과정확히일치
하는부분이있을것입니다.그때부터6-Step에맞춰Signal을입
력한다면,모터는제대로회전할것입니다.
그럼테스트결과를보도록할까요?
<그림3-5> 3상의 Back-EMF와 Zero Crossing
<그림3-4> 각 모터 터미널전압과 Back-EMF
34 Devicemart Magazine
PROJECTS TO BUILD
<그림3-6>은Back-EMF검출회로를통해발
생되는출력화면입니다.A,B,C각각의Back-
EMF는60°를간격으로순차적으로발생됨을
확인할수있습니다.그렇다면이Signal에맞
춰서6-Step펄스를입력해준다면,모터는정
상적으로회전할것입니다.
<그림3-6>을살펴보면,A의Highside입력
에따라모터ATerminal에는<그림3-4>과
같이Back-EMF와ZeroCrossing이일어나는
매우유사한펄스를확인할수있었습니다.
<그림3-7>을통해확인한결과,A펄스가입
력될때,A의Back-EMF비교기출력이출력
됨을확인할수있었습니다.
<그림3-8>은제가구동시킨모터가잘돌
아가는사진과,모터를돌리기위해제작한
간단한회로의모터드라이버입니다.간단
하게글을쓰다보니생략하고넘어간부분
이많은것같군요.
하지만독자여러분들모두Sensorless
BLDC모터를구동할수있으리라믿습니
다.여기까지왕초보의“SensorlessBLDC
모터를구동하자”를읽어주신모든분께
감사의인사를올립니다.
감사합니다.
<사진=(c)엔티렉스><저작권자(c)엔티렉스.무단
전재-재배포금지> 허홍강연구원(hhkgkdl@
ntrex.co.kr)
※참고문헌
· Microchip AN1160 (Sensorless BLDC Control with Back-EMF filtering Using a Majority Function)
-2009 Microchip Technology Inc.
· Direct Back EMF Detection Method for Sensorless Brushless DC(BLDC) Motor Drives
- Jianwen Shao (Virginia Polytechnic Institute and the State University -September, 2003)
<그림3-6> 3상의 Back-EMF Signal
A Sense A Sense
B Sense C Sense
<그림3-8> 모터의 구동모습(좌), 테스트를 위해 제작한 모터 드라이버 (우)
<그림3-6> 모터의 A terminal과 브릿지회로의 A high side input
Motor A PIN
A High Side
<그림3-7> 모터의 A terminal, 브릿지회로의 A high side input, Back-EMF 검출기의 A signal
Motor A PIN
A Sense
A High Side
A Sense
※디바이스마트를 통해서 모터구동용 테스트 기판을 판매할 예정입니다.