>


아두이노로 bldc 모터(brushless DC motor) 제어 - #1 보기

아두이노로 bldc 모터(brushless DC motor) 제어 - #2 보기

아두이노로 bldc 모터(brushless DC motor) 제어 - #3


#3은 한숨 자고 일어나서 할려고 했는데.. 잠이 안오기도 하고.. 간단하기도 하고 해서, 걍 바로 이어서 쓰기로 함..


결선은 다 끝났고.. 이제 아두이노를 피씨와 연결을 똭하고, 프로그램을 짜면 된다!

아두이노 프로그램은 스케치 라는 녀석을 사용하면 된다.


스케치 다운로드


위 링크 들어가서 다운받고 다음다음 눌러서 설치하고 어쩌고 하고 실행을 똭! 하면


요런놈이 똭! 뜬다.


void setup()과 void loop() 두 함수가 미리 생성돼 있는것을 볼 수 있고,

자세한 설명같은건,, 음.. 나중에 소프트웨어 이야기에서 다루도록 하겠다.

( 절대 귀찮거나 그런거 아님 ㅇㅇ )


우선 간단하게 스케치는 최초 실행시 setup() 함수가 실행되고, 그다음에 loop() 함수를 전원이 나갈때 까지 돈다.

돌고 돌고 돌고 돌고 꺼주지 않으면 계속 돌꺼얌..


여기에 다음과 같이 써주자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
int DIR = 9;
int PWM = 10;
void setup()
{
  pinMode(DIR, OUTPUT);
  pinMode(PWM, OUTPUT);
  Serial.begin(9600);
}
void loop()
{
  String strCmd;
  if(Serial.available())
  {
    strCmd = Serial.readString();
    Serial.println(strCmd);
    if(strCmd == "l")
    {
      analogWrite(PWM, 0);
      digitalWrite(DIR, HIGH);
      delay(50);
      analogWrite(PWM, 50);
      digitalWrite(DIR, HIGH);
      delay(50);
      analogWrite(PWM, 100);
      digitalWrite(DIR, HIGH);
      delay(50);
      analogWrite(PWM, 150);
      digitalWrite(DIR, HIGH);
      delay(50);
      analogWrite(PWM, 200);
      digitalWrite(DIR, HIGH);
      delay(50);
    }
    else if(strCmd == "s")
    {
      analogWrite(PWM, 0);     
    }
    else if(strCmd == "r")
    {
      analogWrite(PWM, 0);
      digitalWrite(DIR, LOW);
      delay(50);
      analogWrite(PWM, 50);
      digitalWrite(DIR, LOW);
      delay(50);
      analogWrite(PWM, 100);
      digitalWrite(DIR, LOW);
      delay(50);
      analogWrite(PWM, 150);
      digitalWrite(DIR, LOW);
      delay(50);
      analogWrite(PWM, 200);
      digitalWrite(DIR, LOW);
      delay(50);
    }
  }
}


내용은 이렇다.

setup()

{

baud rate 9600 을쓰는 시리얼 포트를 오픈하고,

아두이노 우노의 digital out 9, 10 번을 사용하겠다.

}

loop()

{

시리얼통신으로 l(소문자 L) 이라는 값이 들어오면 모터를 저렇게 회전시킬거고

r은 이렇게

s는 스탑! 할거다

}


라는 뜻.


모터제어를 위해 중요한 부분만 보자면

analogWrite(PWM, 숫자);

부분은, 얼마나 빨리 돌건지를 지정해 주는 부분이다.

0~255 까지가 속도다.

0이면 당연히 스탑!

digitalWrite(DIR, 하이 로우);

부분은, 어느방향으로 돌건지 지정해 주는 부분이다.


드디어 대망의 마지막 실행 영상!!



#. 책상이 더러워 보이는건 기분탓.

#. 모터가.. 토크가 80kg 까지 나가는 무시무시한 녀석이라.. 힘이 장사다..

#. 잘 된다.



#3. 끝ㅅ

Posted by 빗방울교향곡


아두이노로 bldc 모터(brushless DC motor) 제어 - #1 보기

아두이노로 bldc 모터(brushless DC motor) 제어 - #2

아두이노로 bldc 모터(brushless DC motor) 제어 - #3 보기


#2에서는 결선법 따위를 설명한다.

기본적인 재료는 모두 구비 됐다는 가정하에, 바로 결선 들어간다.
걍 DC 모터는 전원 연결하고 방향 조절해서 전류만 흘려주면 지가 알아서 돌아가는데
여기서 사용한 bldc 모터는,, 연결해야 하는 선이 8가닥이다.
( 모든 BLDC 모터가 다 그런지 어쩐지는.. 솔직히 잘 모른다. 궁금하면 알아서 찾아보자 )

모터 스펙을 보면 이런 내용이 있다.

결선 부분에 관한 내용인데, 우선 당췌 무슨 소린지 알수가 없다.

하나하나 살펴보면 다음과 같다.
모터에서 삐져나온 선은 총 8가닥이다.
1, 5, 6 번은 모터에 모터에 동력 전달을 담당한다.
3개인 이유는 3상의 동력이 전달되기 때문, 자세한 사항은 각자 검색해서 찾아보도록 하고.
( 깊이 있게 공부할게 아니라면 걍 이런게 있구나~ 하면 될거 같다. )

3, 4, 8 번은 모터의 홀 센서이다. 
이녀석이 똑똑하게도 정확한 시컨스로 정확한 위치에 동력을 전달해준다.
( 이녀석도.. 깊이 있게 공부할거 아니면 우선 패스하자, 우리는 결선만 잘해주면 된다. )


마지막으로

2, 7 번은 요 모터에 동력 전달 명령을 내리는 녀석에게 전원을 공급하기 위한 녀석이다.

( 솔직히 이건 정확한진 모르겠다. 그냥 내 추측(??) 이다. )

선번호와 각각의 역할 그리고 색깔까지는 쉽게 이해하겠는데, 그 옆에 AWG 라는 녀석이 있다.
이부분은 전기 공부를 해본사람이라면 쉽게 알 수 있지만, 그렇지 않다면 뭔소리여? 라면서 짜증낼법도 하다.
AWG는 American Wire Gauge 의 약자로, 미국 전선 규격이란 뜻이다.
여기서 주의할점은

AWG의 숫자가 작을수록 두껍다는 것!

이거 주의해야 한다. 위 결선 내용을 보면, hall a,b,c 와 motor phase a,b,c의 각각의 색깔이 같다.
다만 awg로 구별을 해놓았다.
저 모터가.. 쬐끔해 보이고 힘없어 보일지라도, 하나에 40만원이 넘는 몸값을 자랑하는 지라
필자는 바꿔서 끼워보는 무모한 짓을 해볼수가 없었다.
( 혹시라도 용기있는 자 있다면 바꿔끼워보고 어떻게 되는지 알려주면 좋겠다... )


자.. 이제 모터에서 삐져나와 있는 전선들은 대략 확인 했으니, 이제 드라이버를 확인할 차례다.
이 드라이버 하나도 십만원( 반올림 )에 가까운 어마무시한 몸값을 자랑한다.
어쨌든 결선 내용을 살펴 보자면
이와 같다.
모터 스펙에는 motor phase a,b,c 이렇게 적혀 있는데, 이 빌어먹을 드라이버에는 u/v/w 로 적혀있다...
( 같은회사에서 산건데.. 이왕이면 똑같이 적어주면 어디 덧나나.. 흥 칫 뿡 보고있나!!(요) 모터뱅크 김대리!!(님) )
사실 이게 뭔지 잘 모르기도 하고 궁금하기도 해서 찾아봤더니, 3상전기를 사용할때 3상이 각각 u v w 라고 한다.
그렇다고 하더라.

어찌됐든,, 저 모터와 드라이버간의 연결을 확인하자고 한다면,
motor phase
a - u
b - v
c - w
hall
a = Hu (H1)
b = Hv (H2)
c = Hw (H3)
Vcc 5v = 5V
GND = GND
(왼쪽이 모터, 오른쪽이 드라이버)
#. hall 부분은.. 설명 이미지를 보면 H1,2,3 으로 돼 있는데,, 제품 상단을 보면 Hu,v,w 로 돼있다.

자.. 이렇게 모터에서 나오는 8가닥은 모두 드라이버에 연결했으니..

나머지 다섯가닥 중, power 를 넣는 두가닥은 
1. GND -> 24v - ( 그라운드! smps 보면 -V 라고 돼있다. )
2. VDC -> 24v 전원( 이 드라이버는 12~35V 까지 지원한다. 우리는 24V 모터를 쓸거니까 24V 연결 )
이 두가닥은 모터를 움직이기 위한 전원을 공급해줄것이다.

마지막으로 우리의 외부 MCU 아두이노 우노와 연결할 부분을 보자면
1. PWM -> 아두이노 우노의 DIGITAL out 중 아무곳에나 ( 단, 꽂은 곳의 번호는 기억하자. )
2. DIR -> 아두이노 우노의 DIGITAL out 중 아무곳에나 ( 단, 꽂은 곳의 번호는 기억하자. )
3. GND -> 아두이노 우노의 GND에 연결.
이 세 가닥은 아두이노가 모터에게 명령을 할 수 있게 해줄 것이다.

결선 완료된 모습을 보면 다음과 같다! 두둥

#. smps 에 240v input 전원과 24v output 전원이 결선된 모습



#. 드라이버에 24v 전원, 모터 8가닥 선, 아두이노와 연결될 3가닥 선이 연결된 모습 awg 20과 awg26의 확연한 굵기 차이.



#. 아두이노에 세가닥 선이 연결된 모습




여기까지 결선이 끝났다.

음.. #2

끝ㅅ.


Posted by 빗방울교향곡



아두이노로 bldc 모터(brushless DC motor) 제어 - #1

아두이노로 bldc 모터(brushless DC motor) 제어 - #2 보기

아두이노로 bldc 모터(brushless DC motor) 제어 - #3 보기

#1에서는 사용된 부품 따위를 설명한다.


아두이노로 bldc 모터를 제어 해볼려고 한다.

우선, bldc 모터가 무엇인가? 모터를 아두이노(외부 MCU)를 통해 컨트롤 하기 위해서 무엇이 필요한가?

등의 의문을 갖고 시작해야 할거 같다.


일일히 가져다 쓰기 힘들고 귀찮으니까,


아래 링크를 참조하자


모터뱅크 모터의 종류 <--- 클릭(새창)

모터뱅크 BLDC모터 사용을 위한 드라이버의 역할 <--- 클릭(새창)


초~ 간단하게 이야기하자면,


bldc 모터-> dc 모터에서 브러쉬를 뺀 모터

컨트롤을 위해 필요한 드라이버? -> bldc에 전기적 신호를 주기 위한 장치

이다.



여기서 필자가 의뢰받은 장비를 만들기 위해 구매한 장비목록은 다음과 같다.



BLDC 모터

BL3260-24120 


#. 자세한 내용은 모터뱅크를 참고.



BLDC 모터 드라이버

BLD-200


#. 자세한 내용은 모터뱅크 참고.


외부 MCU

아두이노 우노


#. 자세한 내용은 ICbanQ참고


[정품]아두이노 A000066-아이씨뱅큐


외의 잡다한 재료들

- 전선                                         -- A

- 전선 마감 및 연장을 위한 도구        -- B

- 글루건과 풀                                -- C

- 일자 드라이버                             -- D


#. 동내 전자점빵에서 구매

#. 다른건 몰라도.. 전선이랑 저 일자 드라이버는 꼭꼭꼭! 필요하다. 밑줄 쫙


위 사진을 보면 사이즈가 대충 짐작 될거라고 믿는다.





음...



#1. 끝ㅅ

Posted by 빗방울교향곡