소리나는모터시스템을이용한전기자동차개발 Development of Electric Car by Application of Virtual Motor Sound System 전기전자공학전공 : 김주성, 김성기 Ju-Sung Kim and Seong-Ki Kim 강원대학교 IT 대학전기전자공학부전기전자공학전공 E-mail: jusung37@naver.com, hermes0si@naver.com I. 서론 최근환경오염과석유에너지고갈로인한대체로전기자동차에대한많은개발이이루어지고있다. 하지만급속히성장한전기자동차는그만큼적지않은문제점이대두되고있다. 이런문제점들중하나가바로전기자동차의소음이다. 대부분의자동차회사들은자동차의소음을줄이기위해최선을다하지만전기자동차는그반대이다. 소음이발생하지않는전기모터의특성때문에전기자동차는소음이거의발생하지않아, 주변의보행자들이위험을감지하지못해오히려위협적인존재가되었기때문이다. 현재국내외에서소리나는모터시스템개발은거의이루어지지않고있다. 전기자동차의대표적인문제가배터리의소형화및대용량화, 그리고효과적인배터리충전방식에초점을두고있기때문에, 소리나는모터시스템은상대적으로미약한발전을보이고있다. 우리는메카트로닉스공학과함께중량의최소화, 출력의최대화, 튼튼한내구성을기반으로한전기자동차를제작하고, 모터의회전수 (rpm) 에따라유동적으로소리를출력해낼수있고손쉽게배기음을변경해사용하는사람의취향을만족시킬수있는모터시스템을개발하는것이목표이다. [ 그림 1] 가상배기음블록선도모터회전수를측정한것을바탕으로, 각구간에해당하는음원파일을메모리에서읽어음발생부에전달하는것과상기음발생부의엔진음또는배기음을출력하는스피커로구성된것을특징으로한엔진음 / 배기음발생장치. 각각의파트에해당사항을체크하여어떠한방식으로위의블록선도를따라제어하는제어기를구성하는가에대해조사를하였다. -가상배기음시스템구현을위한장비조사 소리나는모터시스템 본론 - 기존전기자동차의소리시스템 처음모터회전수를측정하기위한측정센서를조사하였다. 센서목록에는근접센서, 포토커플러등다양한센서들을알아본결과엔코더를사용하는것이가장적합하다고판단하여 RPM 측정센서에는엔코더를사용하였다. 두번째로센서신호처리와이에대한것을바탕으로소리를출력시켜주는제어기판인 MCU 선정에있어많은고민을했다. 우선처음정한 MCU는 ATMEGA128 로학교에서도쉽게접할수있는것이가장큰장점이었다. 하지만신호처리속도가느려 ATMEGA128 을사용할수없었다. 이에여러가지기종을찾아본결과 TI사에서나온
TMS320F28335 칩과 SYNCWORKS 사에서제작한 SMC150 기판을사용하기로결정하였다. 마지막으로소리출력부분에대해서는 MP3 모듈과스피커를사용, 해당구간에해당하는음원파일을재생하기위한장치로네오틱스사에서나온 NA-EMP3 보드와 NA-EMP3M 칩을사용하여소리를출력하는계획을세웠다. -가상배기음에사용될음원파일조사가상배기음에사용될음원파일은 Youtube 에서자동차배기음을따온후, 프로툴 (Protools) 을사용하여편집하는방식을사용했다. 이때확장자명은 MP3 파일명으로저장하여 MP3모듈에서실행될수있게설정하였다. (a) SMC 150 - 개발장비성능보고 1. RPM 측정장비엔코더 제품명 : H88-30A-1024-VL-5 (a) 엔코더 (b) 엔코더도면 (c) 기본사양 [ 그림 2] 엔코더의기본데이터사이즈 : 외경 88mm, 축경 30mm 분해능 : 1024P/R 출력형태 : Line Driver 적용장비 : 자동차전기모터중공형엔코더선정이유 : 자동차에설치시축직경이 30mm 내외조건충족, 1024P/R 의높은분해능, 최대회전수 3000RPM 충족, 적은중량, 입력전압 5V 충족. 2. MCU 개발보드제품명 : SMC150 모터제어개발보드 (b) SMC 150의기능도 [ 그림 3] MCU 개발보드전원입력 : DC+24V 단일전원 / UP to 1A 통신포트 : RS232C 2 / CAN 1 / I2C 1, D-SUB 9핀커넥터 1개동시구동모터수 : 1 선정이유 : 모터제어를위한필수킷트, 보드간통신을사용하기위한 RS232 통신선로및 D-SUB9 핀커넥터장착, 엔코더제어를위한모터구동부. 3. 제어를위한 MCU 제품명 : TMS320F28335 초소형버스모듈 (a) TMS320F28335
(b) NA-EMP3 기능도 [ 그림 5] MP3 모듈보드입력전압 / 소모전류 : DC 9V / 80~150mA 외부메모리 : SD Card 또는 USB Memory 외부기기접속제어 : Computer(PC) : RS232C. MCU : TTL Rs-232 / TTL-UART : 9600-8-1-N (b) TMS320F28335 의기능도 [ 그림 4] 제어를위한 MCU CPU : 32bit 정수형 C28X core + 32bit 소수연산유닛 (FPU) -처리속도빠르다연산능력 : 150Mhz 타이머 : 32bit Cpu Timer 3개 / 8bit Watchdog Timer 1개 /32bit CAP Timer 6개 /32bit QEP Timer 2개 / 16bit PWM Timer 6개 PWM - PWM 12CH (epwm 6개, 6.67ns) - HRPWM 6CH ( 각 epwmxa 에할당, 150psec) - APWM 6CH ( ecap 모듈을 APWM 모드로사용시 ) 통신 : SCI 3개 / SPI 1개 / ecan 2개 / McBSP 2 개 / I2C 1개 선정이유 : RS232 통신을사용하여 MCU를제어시편이성, MP3 모듈을설치하는것으로음원파일재생가능, 오디오엠프출력포트가있어스피커와연결용이, USB를연결하여쉽게파일제어가능, 낮은소모전압전원으로외부배터리사용이용이함. 5. MP3 모듈제품명 : NA-MP3M 선정이유 : 32bit 프로세스사용, 빠른연산가능, 보드간통신시빠른속도로버퍼를최소, eqep 회로도를갖추고있어엔코더연산에고효율. (a) NA-MP3M 4. MP3 모듈보드 제품명 : NA-EMP3 (a) NA-EMP3 (b) NA-MP3M 기능도 [ 그림 6] MP3 모듈 선정이유 : NA-EMP3 개발보드에부착사용가능, 원 하는사운드를선택하여플레이가능, 모 듈자체에제어가가능한입 출력핀이
있기때문에별도의회로구성없이간단하게 MP3 기능발휘. 소리나는모터시스템개발프로그램 Ti 사의 Code Composer Studio(CCS)v6 이번장에선보드간통신에대해서알아보고자한다. 보드간통신이란 2개의보드에통신선로를연결하여원하는신호를처리하는것을말한다. 예를들어컴퓨터와 MCU간의하이퍼터미널을이용한통신또한보드간통신이라할수있다. 그렇다면이러한보드간통신을사용하는이유는앞서말했듯이 MP3보드와 MCU 보드를연결하여 RPM에맞게소리를출력해야하기때문이다. 따라서통신포트를사용해두보드를연결하여사용하게될것이다. 그럼통신포트에대해알아보자. 우선통신에는총 3가지의종류가있다. 이세가지중우리가사용하는 SCI 통신중하나인 RS232 통신에대해알아보도록하자. SCI란 Serial Communicarions Interface 의약자로, 우리말로하면간단히직렬통신이다. 일반적으로 UART범용비동기통신으로알려져있다. 또한 RS232를사용하여 PC 또는보드간통신에좀더쉽게연결가능하다. [ 그림 7] 개발프로그램 (CCS) CCS는 TI사에서만든코드개발툴이다. 이개발툴을사용하여 Ti 사에서나온칩셋들의설정및개발코드를 TMS320F28335 칩에 FLASH 시켜프로그램을작동시켜준다. 또한프로그램작동시피드백기능이있어원하는변수값을피드백받아실시간으로코드를수정할수있다. 이외에도 Ti 사에서나온칩들과많은기능들이서로연결돼서 Ti 사의칩의소프트웨어개발시필수툴이다. [ 그림 9] SCI 와 CPU 의인터페이스 [ 그림 10] 전체적인연결모습 [ 그림 8] 기본프로그램세팅후프로젝트파일 생성화면 보드간통신 (P2P)
float32 UTimeOutSpeedRPM2; float32 PastUTimeOutSpeedRPM2; float32 Acceleration; float32 RPM2Difference; float32 RPM2; Uint16 TxData; LoopCount; cont; Uint16 mode; 2. 레지스트및변수초기화선언 [ 그림 11] TX, RX 데이터케이블연결 Main 함수 이번장에선마지막으로 Main 함수구문에대한소스 코드분석을하겠다. 앞서말했던부분들을이제프로그 램으로구현하는일만남아있다. 기본적인설정값들은 헤더파일을불러와사용할것이다. 소스코드분석을하 기위해함수구문의구간을나눌것이다. 1. 초기변수및함수선언구문 #include "DSP2833x_Device.h" /* DSP2833x Headerfile Include File */ #include "DSP2833x_Examples.h" /* DSP2833x Examples Include File */ #include "DSP28x_Project.h" /* Device Headerfile and Examples Include File */ #define USE_SLAVE_MODULE 1 /*USE_SLAVE_MODULE 을 1 로선언 */ #if(use_slave_module == 1) #define ENCODER_REV 1024 /* 분해능 */ #define SYSTEM_FREQ 150E6 /* 시스템클록 */ #define QEPCAPTURECLK 75E6 /* 캡쳐클록 */ /* 인터럽트, 엔코더, 통신에대한함수선언 */ interrupt void UnitTimeOut_Isr(void); void InitEQep1or2( LineEncoder); void scia_tx(char); /* 시스템에사용할전역변수정의 */ Uint16 BackTicker; Uint16 IsrTicker; float32 float32 LineEncoder; PositionCounter; RotateDirection; UTimeOutPositionLatch; PastUTimeOutPositionLatch; Displacement; SpeedRPM1; SpeedRPM2; Step 1 전역인터럽트와인터럽트플래그레지스트초기화및인터럽트루프설정 DINT; IER = 0x0000; IFR = 0x0000; Step 2 2.1 InitSysCtrl() // 초기시스템컨트롤세팅 프로젝트파일중 DSP2833x_Sysctrl,c 2.1.1 Disables the watchdog 2.1.2 Set the PLLCR for proper SYSCLKOUT frequency 2.1.3 Set the pre-scaler for the high and low frequency peripheral clocks 2.1.4 Enable the clocks to the peripherals 2.2 Initialize GPIO MUX //GPIO MUX 부분초기화 GPIO 란 DSP2833x 계열에서내부적으로제공되어지는 PIN 또는 PORT 이다. /* Initializes the System Control registers to a known state */ InitSysCtrl(); //InitEQep1Gpio(); InitEQep2Gpio(); 사용할 EQep GPIO 포트의레지스트 On /* for Qep */ #if(use_slave_module == 1) EALLOW; GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0; GpioCtrlRegs.GPAPUD.bit.GPIO25 = 0; GPIO 24~25 Pull up 셋팅 GpioCtrlRegs.GPACTRL.bit.QUALPRD3 = 0x00; GpioCtrlRegs.GPAQSEL2.bit.GPIO24 = 2; GpioCtrlRegs.GPAQSEL2.bit.GPIO25 = 2; Qulification 모드사용 GPIO 24~25 GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 2; GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 2; GPIO 24~25 EQEP 사용 EDIS;
/* for LED control */ InitLEDGpio(); /*LED 설정 */ #if(use_slave_module == 1) EALLOW; PieVectTable.EQEP2_INT = &UnitTimeOut_Isr; /* 인터럽트루프설정 */ EDIS; PieCtrlRegs.PIEIER5.bit.INTx2 = 1; InitSciaGpio(); // 통신포트초기화 SciaRegs.SCICTL1.bit.SWRESET = 0; // SCI 소프트웨어리셋 SciaRegs.SCICCR.bit.SCICHAR = 7; // SCI 송수신Charcter-length 설정 : 8bit //SciaRegs.SCICTL1.bit.TXENA = 1; // SCI 수신기능Enable SciaRegs.SCIHBAUD = 0x01; // SCI Baudrate 설정 SciaRegs.SCILBAUD = 0xE7; // [SCIHBAUD,SCILBAUD] => 0x01E7 => 9600bps SciaRegs.SCICTL1.bit.SWRESET = 1; // SCI 소프트웨어리셋해제 3. 사용할변수초기화 BackTicker = 0; IsrTicker = 0; LineEncoder = ENCODER_REV; PositionCounter = 0; RotateDirection = 0; UTimeOutPositionLatch = 0; PastUTimeOutPositionLatch = 0; Displacement = 0; mode = 3; cont = 0; SpeedRPM2 = 0.0; RPM2 = 0; TxData = 0; LoopCount = 0; Step 7 7.1 사용 QEP 모듈초기화 /* Initialize Enhanced QEP Module 1 */ InitEQep2(PositionMax); Step 8 8.1 전역인터럽트허용 ERTM; /* Enable Global realtime interrupt DBGM */ EINT; /* Enable Global interrupt INTM */ Step 9 9.1 Idle Loop /* 무한반복 */ 여기까지가기본설정및변수초기화선언부분이 다. 이부분에서변수를초기화및레지스트설정을통하여우리가원하는초기세팅을완료하면된다. 4. 실제코드예시 rpm 측정코드 정방향역방향확인및포지션카운트측정 정방향회전시 측정 역방향회전시 측정 scia 통신설정 ( 함수 ) 통신함수
결론 * 활용방안소리를직접 MP3에삽입후스피커로출력되게하는시스템은각자의취향에맞는소리를편집또는다운로드하여 MP3에삽입하기만하면되기때문에기호에맞는사운드출력이가능하고근본적으로전기자동차의문제점이었던저소음을해결할수있다. * 기대효과큰문제점으로야기됐던보행자사고를줄여나감으로써점점더전기자동차의상용화를기대할수있을것으로보이고더나아가사운드시스템또는사운드파일의거래시스템을상용화할수있을것으로도기대된다. 참고문헌 1. 김상훈, 모터제어 DC, AC, BLDC, ( 복두출판 사, 2014)