본문 바로가기
Study/Arduino

BLDC 모터제어

by Answer Choi 2019. 7. 31.
반응형

소스코드 다운로드

 

BLDC 모터는 Brushress DC모터의 줄임말로 말 그대로 브러쉬가 없는 모터입니다.

 

BLDC 모터 1 - BLDC 모터 회전원리

BLDC 모터 2 - 역기전압을 이용한 효율적 제어

BLDC 모터 3 - 센서를 이용한 모터 제어하기

 

BLDC에 대한 것은 위 링크에 이전에 포스팅을 했었습니다.

 

오늘은 BLDC모터와 모터 드라이버를 이용하여 속도제어를 하려고 합니다.

 

테스트에 사용한 모터입니다.

 

홈페이지에 하네스의 결선도를 제공합니다.

 

위 BLDC모터에 연결한 모터 드라이버입니다.

 

결선도인데 오른쪽은 모터에 왼쪽은 컨트롤러와 전원부 입니다.

 

저는 간단하게 배터리 대신 24V 아답터와 MCU는 아두이노를 사용하였습니다.

 

구성은 위 사진과 같이 하였고, 가변저항을 사용하여 속도조절, 토글스위치를 사용하여 방향설정을 하였습니다.

 

dir=digitalRead(dirSW);
if(dir)
	digitalWrite(direc,HIGH);
else
	digitalWrite(direc,LOW);

위 코드는 방향을 설정하는 코드입니다.

 

토글스위치에서 입력을 받아와 모터 드라이버의 direction에 값을 넣어줍니다.

 

굳이 아두이노 말고 모터드라이버에 직접 넣어주셔도 됩니다.

 

speed=analogRead(A0);
analogWrite(pwm,speed/4);

이 코드는 가변저항에서 아날로그 값을 읽어와 PWM출력을 모터 드라이버에 주는 코드입니다.

 

한가지 주의할 점은 아두이노는 10bit ADC를 사용하므로 0~1023까지의 값을 가집니다.

 

하지만 PWM출력인 아날로그 출력은 0~255까지의 값만을 가집니다.

 

따라서 ADC값을 읽어와 1/4만 출력으로 내보내면 되므로 위의 코드로 구현하시면 아날로그 입력의 비례출력이 됩니다.

 

 

 

 

위 영상은 구현하여 동작시킨 영상입니다.

 

방향전환시 끊김이 발생합니다. 이부분은 수정되어야 할 듯 합니다.

반응형

인기글