산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino 브러시리스 모터 제어 튜토리얼 | ESC | BLDC

<메인 클래스="사이트 메인" id="메인">

이 튜토리얼에서는 Arduino와 ESC를 사용하여 브러시리스 모터를 제어하는 ​​방법을 배웁니다. BLDC 모터가 어떻게 작동하는지 더 자세히 알고 싶다면 다른 기사를 확인하거나 브러시리스 모터의 작동 원리와 Arduino 및 ESC를 사용하여 모터를 제어하는 ​​방법에 대한 설명이 포함된 다음 동영상을 시청하세요.

개요

이 예에서는 다음 사양의 outrunner BLDC 모터가 있습니다. KV 등급이 1000이고 2S, 3S 또는 4S LiPo 배터리를 사용하여 전원을 공급할 수 있으며 30A ESC가 필요합니다. 브러시리스 모터의 KV 정격은 무부하 상태에서 볼트당 모터의 RPM을 정의합니다.

이 경우 1000KV는 예를 들어 전압이 7.4V인 2S LiPo 배터리를 모터에 공급하면 모터가 1000의 7.4배, 즉 7400RPM의 최대 RPM을 달성할 수 있음을 의미합니다.

브러시리스 모터는 전력 소모가 많으며 모터에 전원을 공급하는 가장 일반적인 방법은 LiPo 배터리를 사용하는 것입니다. LiPo 배터리의 "S" 숫자는 배터리의 셀 수를 나타내며 각 셀의 전압은 3.7V입니다.

이 예에서는 3개의 셀이 있고 11.1V인 3S LiPo 배터리를 사용합니다. 따라서 모터가 최대 RPM 11100에 도달할 것으로 예상할 수 있습니다.

마지막으로 이 예에 사용하고 모터 요구 사항과 일치시킬 30A ESC가 있습니다. ESC의 한쪽에는 모터의 3상을 제어하는 ​​3개의 와이어가 있고 다른 쪽에는 전원을 공급하기 위한 2개의 와이어(VCC 및 GND)가 있습니다.

ESC에서 나오는 또 다른 3개의 와이어 세트가 있는데, 이는 신호 라인, +5V 및 접지입니다. ESC의 이 기능을 배터리 제거 회로라고 하며 이름에서 알 수 있듯이 마이크로컨트롤러를 위한 별도의 배터리가 필요하지 않습니다. 이를 통해 ESC는 Arduino에 전원을 공급하는 데 사용할 수 있는 조절된 5V를 제공합니다.

여기서 우리는 이 연결이 실제로 우리가 서보 모터에서 보는 것과 동일하다는 것을 알 수 있습니다.

따라서 ESC와 Arduino를 사용하여 브러시리스 모터를 제어하는 ​​것은 Arduino를 사용하여 서보를 제어하는 ​​것만큼 간단합니다. ESC는 서보와 동일한 유형의 제어 신호를 사용하며 이것이 표준 50Hz PWM 신호입니다.

예를 들어 RC 평면을 만들 때 일반적으로 서보 모터와 브러시리스 모터가 모두 필요하고 이러한 방식으로 동일한 유형의 컨트롤러로 쉽게 제어할 수 있기 때문에 매우 편리합니다.

따라서 Arduino를 사용하여 50Hz PWM 신호를 생성하기만 하면 되며 펄스 폭 또는 1밀리초에서 2밀리초까지 다양해야 하는 높은 상태 지속 시간에 따라 ESC는 모터를 최소에서 최대 RPM으로 구동합니다.

Arduino 브러시리스 모터 제어 – 회로도

다음은 이 예의 회로도입니다. ESC 외에도 모터 속도를 제어하기 위해 간단한 전위차계를 사용할 것입니다.

아래 링크에서 이 Arduino 튜토리얼에 필요한 구성요소를 얻을 수 있습니다.

BLDC 모터 제어용 Arduino 코드

Arduino 코드는 몇 줄의 코드로 정말 간단합니다.

/*
        Arduino Brushless Motor Control
     by Dejan, https://howtomechatronics.com
*/

#include <Servo.h>

Servo ESC;     // create servo object to control the ESC

int potValue;  // value from the analog pin

void setup() {
  // Attach the ESC on pin 9
  ESC.attach(9,1000,2000); // (pin, min pulse width, max pulse width in microseconds) 
}

void loop() {
  potValue = analogRead(A0);   // reads the value of the potentiometer (value between 0 and 1023)
  potValue = map(potValue, 0, 1023, 0, 180);   // scale it to use it with the servo library (value between 0 and 180)
  ESC.write(potValue);    // Send the signal to the ESC
}Code language: Arduino (arduino)

설명: 따라서 서보 라이브러리를 사용하면 50Hz PWM 신호를 쉽게 생성할 수 있기 때문에 서보 라이브러리를 정의해야 합니다. 그렇지 않으면 Arduino가 생성하는 PWM 신호가 다른 주파수에 있기 때문입니다. 그런 다음 ESC 제어를 위한 서보 개체를 만들고 전위차계의 아날로그 입력을 저장하기 위한 변수를 정의해야 합니다. 설정 섹션에서 attach() 함수를 사용하여 연결된 ESC의 제어 신호인 Arduino 핀을 정의하고 PWM 신호의 최소 및 최대 펄스 폭을 마이크로초 단위로 정의합니다.

루프 섹션에서 먼저 전위차계를 읽고 0에서 1023까지의 값을 0에서 180까지의 값으로 매핑합니다. 그런 다음 write() 함수를 사용하여 신호를 ESC로 보내거나 50Hz PWM 신호를 생성합니다. 0에서 180 사이의 값은 설정 섹션에서 정의된 1000에서 2000마이크로초 사이의 값에 해당합니다.

따라서 이 코드를 Arduino에 업로드한 다음 배터리를 사용하여 모든 전원을 켜면 전위차계를 사용하여 브러시리스 모터의 속도를 0에서 최대로 제어할 수 있습니다.

그러나 여기서 우리가 주의해야 할 몇 가지 사항이 있습니다. 모터에 처음 전원을 공급할 때 신호 값은 최소값인 1ms보다 같거나 낮아야 합니다. 이것을 ESC의 무장(arming)이라고 하며, 모터에서 확인 신호음이 울려 제대로 장착되었음을 알 수 있습니다. 전원을 켤 때 더 높은 값이 있는 경우, 즉 스로틀을 올려야 올바른 최소값으로 스로틀다운할 때까지 ESC가 모터를 시작하지 않습니다. 전원을 인가할 때 스로틀을 올리면 모터가 시동되지 않아 안전성 면에서 매우 편리합니다.

ESC 보정

마지막으로 ESC 캘리브레이션이 어떻게 작동하는지 설명하겠습니다. 모든 ESC에는 고유한 최고점과 최저점이 있으며 약간 다를 수 있습니다. 예를 들어 최저점은 1.2밀리초이고 최고점은 1.9밀리초일 수 있습니다. 이러한 경우 스로틀은 1.2밀리초의 낮은 값에 도달할 때까지 처음 20%에서 아무 작업도 수행하지 않습니다.

이 문제를 해결하기 위해 ESC를 보정하거나 원하는 대로 최고점과 최저점을 설정할 수 있습니다. 이를 위해 ESC에 전원을 공급하기 전에 먼저 전위차계를 최대 또는 현재 중간 지점보다 큰 값으로 조절해야 합니다. 그런 다음 ESC의 전원을 켤 수 있습니다. 그러면 모터에서 약간의 비프음이 들리고 실제로 새로운 최고점을 설정했음을 확인하게 됩니다.

그런 다음 2초 후에 전위차계를 새로운 최저점이 되는 위치로 이동해야 합니다. 확인 신호음이 다시 들리고 ESC 보정이 완료됩니다. 이제 스로틀이 즉시 반응하고 이 새로운 두 지점 내에서 모터를 제어할 수 있습니다.

이것이 이 튜토리얼의 거의 모든 것입니다. 이 Arduino 브러시리스 모터 제어를 무선으로 만드는 방법을 배우고 싶다면 Arduino 기반 RC 송신기를 구축하고 이를 사용하여 BLDC 모터를 제어하는 ​​방법을 설명하는 이전 비디오를 확인하십시오.

이 튜토리얼을 즐기고 새로운 것을 배웠기를 바랍니다. 아래 댓글 섹션에서 언제든지 질문을 하고 내 Arduino 프로젝트 컬렉션을 확인하는 것을 잊지 마세요.


제조공정

  1. Arduino RFID 잠금 자습서
  2. Arduino로 코인 억셉터 제어
  3. Arduino 제어 센터
  4. Bluetooth가 탑재된 Arduino로 LED 제어!
  5. 라인 팔로워 로봇
  6. Arduino 가습기 제어
  7. Arduino 교육 플랫폼
  8. Arduino 튜토리얼 01:시작하기
  9. BLDC 모터 및 자동화
  10. BLDC 모터 소개