- 필요한 재료
- BLDC 모터 이해
- 드론 및 기타 멀티 콥터가 BLDC 모터를 사용하는 이유는 무엇입니까?
- ESC가 필요한 이유와 그 기능은 무엇입니까?
- BLDC 및 ESC의 몇 가지 일반적인 용어 :
- Arduino BLDC 모터 제어 회로도
- Arduino를 사용한 BLDC 속도 제어 프로그램
- Arduino BLDC 모터 제어
우리가 원하는 방식으로 물건을 만들고 작동시키는 것은 항상 재미있었습니다. 동의하는 동안, 날 수있는 물건을 만드는 것은 애호가들과 하드웨어 땜장이들 사이에서 조금 더 불안감을 불러 일으킬 것입니다. 예! 나는 글라이더, 헬리콥터, 비행기 그리고 주로 다중 헬리콥터에 대해 이야기하고 있습니다. 오늘날 온라인에서 제공되는 커뮤니티 지원으로 인해 직접 구축하는 것이 매우 쉬워졌습니다. 날아 다니는 모든 것의 공통점은 BLDC 모터 를 사용한다는 것입니다 . 그렇다면이 BLDC 모터는 무엇일까요? 비행을 위해 왜 필요한가요? 무엇이 그렇게 특별한가요? 올바른 모터를 구입하고 컨트롤러와 인터페이스하는 방법은 무엇입니까? ESC 란 무엇 이며 왜 사용합니까? 이와 같은 질문이있는 경우이 튜토리얼이 원 스톱 솔루션입니다.
그래서 기본적으로이 튜토리얼 에서는 Arduino로 Brushless Motor를 제어 합니다. 여기서 A2212 / 13T 센서리스 BLDC 아웃 러너 모터는 20A 전자 속도 컨트롤러 (ESC)와 함께 사용됩니다. 이 모터는 일반적으로 드론을 만드는 데 사용됩니다.
필요한 재료
- A2212 / 13T BLDC 모터
- ESC (20A)
- 전원 (12V 20A)
- Arduino
- 전위차계
BLDC 모터 이해
BLDC 모터는 Brush Less DC 모터의 약자 로, 부드러운 작동으로 인해 천장 선풍기 및 전기 자동차에 일반적으로 사용됩니다. 전기 자동차에서 BLDC 모터의 사용은 이전에 자세히 설명했습니다. 다른 모터와 달리 BLDC 모터에는 3 개의 와이어가 있으며 각 와이어는 자체 위상을 형성하므로 3 상 모터가 제공됩니다. 무엇을 기다립니다!!??
예, BLDC 모터는 DC 모터로 간주되지만 펄 스파의 도움으로 작동합니다. 전자 속도 제어기 (ESC)는 펄스에 배터리로부터의 DC 전압을 변환하여 모터의 3 개 전선에 제공한다. 주어진 시간에 모터의 두 위상 만 전원이 공급 되므로 전류는 한 위상을 통해 들어오고 다른 위상을 통해 빠져 나갑니다. 이 과정에서 모터 내부의 코일에 전원이 공급되므로 로터의 자석이 전원이 공급되는 코일에 정렬됩니다. 그런 다음 ESC에 의해 다음 두 와이어에 전원이 공급되고이 프로세스는 계속해서 모터를 회전시킵니다. 모터의 속도는 코일에 전원이 공급되는 속도에 따라 달라지며 모터의 방향은 코일에 전원이 공급되는 순서에 따라 달라집니다. 이 기사의 뒷부분에서 ESC에 대해 자세히 알아볼 것입니다.
다양한 유형의 BLDC 모터를 사용할 수 있습니다. 가장 일반적인 분류를 살펴 보겠습니다.
인 러너 및 아웃 러너 BLDC 모터: 인 러너 BLDC 모터는 다른 모터처럼 작동합니다. 즉, 케이싱이 고정 된 상태에서 모터 내부의 샤프트가 회전합니다. 반면 아웃 러너 BLDC 모터는 정반대 스테이 내부 코일을 고정하면서 상기 샤프트와 함께 회전하는 모터의 외부 케이싱이다. 아웃 러너 모터는 아우터 케이싱 (회전하는 것) 자체가 타이어 용 림으로 만들어 져서 커플 링 메커니즘이 회피되기 때문에 전기 자전거에서 매우 장점이 있습니다. 또한 아웃 러너 모터는 러너 유형보다 더 많은 토크를 제공하는 경향이 있으므로 EV 및 드론에서 이상적인 선택이됩니다. 여기서 사용하는 것도 아웃 러너 타입입니다.
참고: 포켓 드론에도 사용되는 코어리스 BLDC 모터라는 또 다른 유형의 모터가 있습니다. 작동 원리가 다르지만 지금은이 튜토리얼을 위해 건너 뛰겠습니다.
센서 및 센서리스 BLDC 모터: BLDC 모터가 저크없이 회전하려면 피드백이 필요합니다. 즉, ESC는 고정자에 에너지를 공급하기 위해 회 전자에있는 자석의 위치와 극을 알아야합니다. 이 정보는 두 가지 방법으로 얻을 수 있습니다. 하나는 모터 내부에 홀 센서를 배치하는 것입니다. 홀 센서는 자석을 감지하고 정보를 ESC로 보냅니다.이 유형의 모터는 Sensord BLDC 모터라고하며 전기 자동차에 사용됩니다. 두 번째 방법은 자석이 교차 할 때 코일에 의해 생성 된 역기전력을 사용하는 것입니다. 이는 추가 하드웨어 나 와이어가 필요하지 않으며 위상 와이어 자체가 역기전력을 확인하기위한 피드백으로 사용됩니다. 이 방법은 모터에 사용되며 드론 및 기타 비행 프로젝트에 일반적입니다.
드론 및 기타 멀티 콥터가 BLDC 모터를 사용하는 이유는 무엇입니까?
쿼드 콥터에서 헬리콥터와 글라이더에 이르기까지 모든 종류의 멋진 드론에는 하나의 공통 하드웨어가 있습니다. 이것이 BLDC 모터입니다. 그런데 그 이유는 무엇입니까? DC 모터에 비해 약간 비싼 BLDC 모터를 사용하는 이유는 무엇입니까?
이에 대한 몇 가지 타당한 이유가 있습니다. 한 가지 주된 이유는 이러한 모터가 제공 하는 토크가 매우 높기 때문에 드론을 이착륙하기 위해 빠르게 추력을 얻고 / 느슨하게하는 것이 매우 중요합니다. 또한 이러한 모터는 모터 의 추력을 다시 증가시키는 아웃 러너 로 사용할 수 있습니다. BLDC 모터를 선택하는 또 다른 이유는 진동이 적은 부드러운 작동 으로 공중에서 안정적인 드론에 매우 이상적입니다.
BLDC 모터의 중량비 전력은 매우 높다. 드론에 사용되는 모터는 고출력 (고속 및 고 토크)이어야하지만 무게도 가벼워 야하기 때문에 이것은 매우 중요합니다. BLDC 모터와 동일한 토크와 속도를 제공 할 수있는 DC 모터는 BLDC 모터보다 두 배 더 무겁습니다.
ESC가 필요한 이유와 그 기능은 무엇입니까?
우리가 알고 있듯이 모든 BLDC 모터에는 배터리의 DC 전압을 펄스로 변환 하여 모터의 위상 와이어에 전원을 공급하는 일종의 컨트롤러가 필요합니다. 이 컨트롤러는 전자 속도 컨트롤러 를 의미하는 ESC라고합니다. 컨트롤러의 주요 책임은 모터가 회전하도록 BLDC 모터의 위상 와이어에 순서대로 전원을 공급하는 것입니다. 이것은 각 와이어에서 역기전력을 감지하여 자석이 코일을 통과 할 때 정확하게 코일에 전원을 공급함으로써 수행됩니다. 따라서이 튜토리얼의 범위를 벗어난 ESC 내부에는 많은 하드웨어 기능이 있습니다. 그러나 몇 가지를 언급하자면 속도 컨트롤러와 배터리 제거 회로가 있습니다.
PWM 기반 속도 제어: ESC는 주황색 와이어에 제공된 PWM 신호를 읽어 BLDC 모터의 속도를 제어 할 수 있습니다. 서보 모터와 매우 유사하게 작동하며 제공된 PWM 신호는 20ms의주기를 가져야하며 듀티 사이클은 BLDC 모터의 속도를 변경하기 위해 변경 될 수 있습니다. 위치를 제어하기 위해 서보 모터에도 동일한 논리가 적용되므로 Arduino 프로그램에서 동일한 서보 라이브러리를 사용할 수 있습니다. 여기에서 Arduino와 함께 Servo를 사용하는 방법을 알아보십시오.
배터리 제거기 회로 (BEC): 거의 모든 ESC에는 배터리 제거기 회로가 함께 제공됩니다. 이름에서 알 수 있듯이이 회로는 마이크로 컨트롤러에 별도의 배터리가 필요하지 않습니다.이 경우 Arduino에 전원을 공급하기 위해 별도의 전원 공급 장치가 필요하지 않습니다. ESC 자체는 Arduino에 전원을 공급할 수있는 조정 된 + 5V를 제공합니다. 이 전압을 조절하는 많은 유형의 회로가 있으며 일반적으로 저렴한 ESC에서 선형 조절이 될 것이지만 스위칭 회로가있는 회로를 찾을 수도 있습니다.
펌웨어: 모든 ESC에는 제조업체가 작성한 펌웨어 프로그램이 있습니다. 이 펌웨어는 ESC의 응답 방식을 크게 결정합니다. 인기있는 펌웨어 중 일부는 Traditional, Simon-K 및 BL-Heli입니다. 이 펌웨어는 사용자가 프로그래밍 할 수도 있지만이 튜토리얼에서는 이에 대해 자세히 다루지 않을 것입니다.
BLDC 및 ESC의 몇 가지 일반적인 용어:
BLDC 모터로 작업을 시작했다면 제동, 소프트 스타트, 모터 방향, 저전압, 응답 시간 및 어드밴스 와 같은 용어 를 접했을 것입니다. 이 용어의 의미를 살펴 보겠습니다.
제동: 제동은 스로틀이 제거 되 자마자 BLDC 모터가 회전을 멈추는 기능입니다. 이 능력은 공중에서 조종하기 위해 RPM을 더 자주 변경해야하기 때문에 다중 헬리콥터에게 매우 중요합니다.
소프트 스타트: 소프트 스타트는 BLDC 모터가 기어와 연결될 때 고려해야 할 중요한 기능입니다. 모터가 소프트 스타트를 활성화하면 갑자기 매우 빠르게 회전하기 시작하지 않고 스로틀이 아무리 빨리 주어도 항상 점차적으로 속도가 증가합니다. 이는 모터에 부착 된 기어 (있는 경우)의 마모를 줄이는 데 도움이됩니다.
모터 방향: BLDC 모터의 모터 방향은 일반적으로 작동 중에 변경되지 않습니다. 그러나 조립할 때 사용자는 모터가 회전하는 방향을 변경해야 할 수 있습니다. 모터의 방향을 변경하는 가장 쉬운 방법은 단순히 모터의 두 와이어를 서로 바꾸는 것입니다.
저전압 정지: 일단 보정되면 BLDC 모터가 특정 스로틀 값에 대해 동일한 특정 속도로 실행되어야합니다. 그러나 이것은 배터리 전압이 감소함에 따라 모터가 동일한 스로틀 값으로 속도를 감소시키는 경향이 있기 때문에 달성하기 어렵습니다. 이를 방지하기 위해 일반적으로 배터리 전압이 임계 값 미만에 도달하면 작동을 중지하도록 ESC를 프로그래밍합니다.이 기능을 Low Voltage Stop이라고하며 드론에서 유용합니다.
응답 시간: 스로틀의 변화에 따라 모터가 속도를 빠르게 변경할 수있는 능력을 응답 시간이라고합니다. 응답 시간이 짧을수록 제어가 더 좋아집니다.
어드밴스: 어드밴스는 문제이거나 BLDC 모터의 버그와 비슷합니다. 모든 BLDC 모터에는 약간의 진보가 있습니다. 즉, 고정자 코일에 전원이 공급되면 영구 자석이 있기 때문에 회전자가 코일쪽으로 끌립니다. 끌린 후 로터는 코일에 전원이 공급되지 않고 다음 코일에 전원이 공급되기 전에 동일한 방향으로 조금 더 앞으로 이동하는 경향이 있습니다. 이 움직임을 "Advance"라고하며 지 터링, 가열, 소음 등의 문제를 발생시킵니다. 따라서 이것은 좋은 ESC가 스스로 피해야하는 것입니다.
자, 이제 충분한 이론으로 모터를 Arduino에 연결하여 하드웨어를 시작하겠습니다.
Arduino BLDC 모터 제어 회로도
아래는 Arduino로 브러시리스 모터 를 제어 하는 회로도입니다 .
BLDC 모터와 Arduino를 연결하기위한 연결 은 매우 간단합니다. ESC에는 최소 약 12V 및 5A의 전원이 필요합니다. 이 튜토리얼에서는 RPS를 전원으로 사용했지만 Li-Po 배터리를 사용하여 ESC에 전원을 공급할 수도 있습니다. ESC의 3 상 와이어는 모터의 3 상 와이어에 연결되어야합니다. 이러한 와이어를 연결할 순서는 없습니다. 순서에 관계없이 연결할 수 있습니다.
경고: 일부 ESC에는 커넥터가 없습니다.이 경우 연결이 견고한 지 확인하고 절연 테이프를 사용하여 노출 된 전선을 보호하십시오. 위상을 통과하는 높은 전류가 흐르기 때문에 단락은 ESC 및 모터의 영구적 인 손상을 초래할 수 있습니다.
ESC 자체 의 BEC (배터리 제거기 회로) 는 Arduino 보드에 전원을 공급하는 데 사용할 수있는 + 5V를 조절합니다. 마지막으로 BLDC 모터의 속도를 설정하기 위해 Arduino의 A0 핀에 연결된 전위차계도 사용합니다.
Arduino를 사용한 BLDC 속도 제어 프로그램
50Hz의 주파수로 0 %에서 100 %까지 다양한 듀티 사이클로 PWM 신호 를 생성해야합니다. 듀티 사이클은 모터의 속도를 제어 할 수 있도록 전위차계를 사용하여 제어해야합니다. 이를 수행하는 코드는 50Hz 주파수의 PWM 신호도 필요하므로 서보 모터를 제어하는 것과 유사합니다. 따라서 우리는 Arduino의 동일한 서보 라이브러리를 사용합니다. 전체 코드는 내가 작은 조각의 코드를 설명 더 아래이 페이지의 하단에서 확인할 수 있습니다. 그리고 Arduino 또는 PWM을 처음 사용하는 경우 먼저 Arduino와 함께 PWM을 사용하고 Arduino를 사용하여 서보를 제어하십시오.
PWM 신호는 하드웨어에 의해 PWM을 지원하는 핀에서만 생성 될 수 있습니다. 이러한 핀은 일반적으로 ~ 기호로 표시됩니다. Arduino UNO에서 핀 9는 PWM 신호를 생성 할 수 있으므로 ESC 신호 핀 (주황색 와이어)을 핀 9에 연결합니다. 다음 줄을 사용하여 동일한 인 코드를 언급합니다.
ESC.attach (9);
0 %에서 100 %까지 다양한 듀티 사이클의 PWM 신호를 생성해야합니다. 0 % 듀티 사이클의 경우 POT는 0V (0)를 출력하고 100 % 듀티 사이클의 경우 POT는 5V (1023)를 출력합니다. 여기서 포트는 핀 A0에 연결되어 있으므로 아래와 같이 아날로그 읽기 기능을 사용하여 POT에서 아날로그 전압을 읽어야합니다.
int 스로틀 = analogRead (A0);
그런 다음 값을 0에서 1023으로 0에서 180 으로 변환해야합니다. 값 0은 0 % PWM을 생성하고 값 180은 100 % 듀티 사이클을 생성하기 때문입니다. 180보다 큰 값은 의미가 없습니다. 따라서 아래와 같이 map 함수를 사용하여 값을 0-180으로 매핑합니다.
스로틀 = 맵 (스로틀, 0, 1023, 0, 180);
마지막 으로이 값을 서보 기능 에 보내서 해당 핀에서 PWM 신호를 생성해야합니다. 서보 객체를 ESC로 명명했기 때문에 코드는 아래와 같이 보일 것입니다. 여기서 변수 스로틀은 PWM 신호의 듀티 사이클을 제어하기 위해 0-180의 값을 포함합니다.
ESC.write (스로틀);
Arduino BLDC 모터 제어
회로도에 따라 연결하고 코드를 Arduino에 업로드하고 ESC의 전원을 켭니다. 모터가 회전 할 때 모든 곳에서 점프하므로 BLDC 모터를 무언가에 장착했는지 확인하십시오. 설정이 켜지면 ESC가 환영 음을 내고 스로틀 신호가 임계 값 한계 내에있을 때까지 계속 신호음을 울립니다. 간단히 POT를 0V에서 점차적으로 높이고 신호음이 중지됩니다. 이는 현재 PWM을 제공하고 있음을 의미합니다. 신호가 하한 임계 값보다 높고 더 증가하면 모터가 천천히 회전하기 시작합니다. 더 많은 전압을 제공할수록 모터는 더 많은 속도를 얻습니다. 마지막으로 전압이 상한 임계 값을 초과하면 모터가 중지됩니다. 그런 다음 프로세스를 반복 할 수 있습니다.
이 Arduino BLDC 컨트롤러 의 전체 작동은 아래 비디오 링크에서도 확인할 수 있습니다. 이 작업을 수행하는 데 문제가있는 경우 의견 섹션을 사용하거나 포럼을 사용하여 더 많은 기술적 인 도움을 받으십시오.