스테퍼 모터 : Arduino와 통합

스테퍼 모터

전기 모터는 점점 더 수요가 증가하고 있으며, 그중에서도 직류로 작동하는 모터가 눈에 띄는 데, 이는 이동성을 제공하기 때문에 Arduino를 사용하는 제조업체의 프로젝트에서 가장 인기가 있습니다. 그중 하이라이트 스테퍼 모터 특히 액추에이터 등과 같은 로봇 공학에 여러 응용 분야에 사용됩니다.

전기 자동차, 소형 자율 로봇, 자동화를위한 산업용 애플리케이션, 반복 운동 장치 등 서보 모터와 스테퍼 모터가 이러한 응용 분야에 좋은 이유는 느리거나 빠른 움직임을 수행하지만 무엇보다도 제어. 또한 드라이브는 높은 정밀도로 많은 정지 및 시작이 필요한 애플리케이션을 위해 연속적입니다.

전기 모터의 유형

내부 전동기 다음 유형을 강조 표시 할 수 있습니다.

  • DC 또는 DC 모터 : 이름에서 알 수 있듯이 DC 모터는 이러한 유형의 전류로 작동합니다. 산업용 애플리케이션, 차량, 엘리베이터, 컨베이어, 팬 등에 사용되는 가장 강력하고 큰 전력에서는 몇 mW에서 몇 MW까지 다양합니다. 회전 속도 (RPM)와 적용 토크는 피드에 따라 조절할 수 있습니다.
  • AC 또는 AC 모터 (비동기 및 권 선형 로터): 그들은 교류와 함께 작동하며, 이러한 유형의 전류가 DC와 유사한 방식으로 전자석의 자기 반발에 의해 회전을 생성하는 위상 덕분에 작동하는 매우 특정한 회 전자를 사용합니다. 그들은 매우 저렴하고 몇 kW까지 올라갑니다. 회전 속도를 조절할 수 있지만 조절 요소는 DC보다 비쌉니다. 이들은 종종 가전 제품에 사용됩니다.
  • 스테퍼 모터-스테퍼라고도하며 여러면에서 DC와 유사하지만 스핀 속도와 출력이 낮습니다. 여기서 눈에 띄는 것은 축의 위치, 즉 특정 위치에 배치하는 정밀도입니다. 회전 각도와 속도를 많이 제어 할 수 있으므로 플로피 드라이브, 하드 드라이브 (HDD), 로봇, 프로세스 자동화 등에 사용되었습니다.
  • 서보 모터: 어떤 경우에는 7000RPM까지 올라가는 작은 힘과 속도로 작동하는 스테퍼 모터의 진화라고 할 수 있습니다. 이 모터는 기어 감속 상자와 제어 회로를 통합합니다. 스테퍼와 동일한 포지셔닝 정밀도를 가지고 있으며 적용된 토크 측면에서 매우 안정적이므로 일부 로봇 및 산업용 애플리케이션에 이상적입니다.

스테퍼 모터 및 서보 모터

회 전자 및 고정자

이 두 가지 유형의 전자 모터가 무엇인지 이미 알고 있습니다. 스테퍼에 대한 추가 정보. 그들이 만드는 턴은 계속되는 것이 아니라 작은 단계로 이루어집니다. 회 전자 (회전하는 부분)는 톱니 바퀴 모양이고 고정자 (회전하지 않는 부분)는 인터리브 된 편광 전자석으로 구성됩니다. 이런 식으로, 하나가 "활성화"될 때 측면에있는 것들은 활성화되지 않아서 로터 톱니를 그쪽으로 끌어 당겨 특징이있는 정확한 전진을 허용합니다.

drv8825
관련 기사 :
DRV8825 : 스테퍼 모터 용 드라이버

에 따라 로터 치아, 턴에서 어느 정도 전진 할 수 있습니다. 이가 더 많으면 회전을 완료하는 데 더 많은 단계가 필요하지만 단계가 더 짧아 져 더 정확한 모터가됩니다. 이빨이 거의 없으면 단계는 그다지 정밀하지 않고 더 갑작스런 점프가 될 것입니다. 따라서 스테퍼 모터가 회전을 완료하기 위해 취해야하는 단계는 각 단계에 따라 달라집니다.

그 단계 각도가 표준화 됨, 비표준 피치를 가진 일부 모터를 찾을 수 있습니다. 각도는 일반적으로 1.8º, 5.625º, 7.5º, 11.25º, 18º, 45º 및 90º입니다. 스테퍼 모터가 완전 회전 또는 회전 (360º)을 완료하는 데 필요한 단계 수를 계산하려면 나누기 만하면됩니다. 예를 들어, 45º 스테퍼 모터가있는 경우 8 단계 (360/45 = 8)가 있습니다.

편향으로 회전 (위상)

이 모터에는 5 개 또는 6 개의 케이블이있는 유니 폴라 (가장 많이 사용됨) 또는 4 개의 케이블이있는 바이폴라가 있습니다. 이것에 따르면, 하나 또는 다른 것이 수행됩니다 편광 시퀀스 코일을 통해 전류 전달 :

  • 편광 양극성:
단계 터미널 터미널 B 터미널 C 터미널 D
1 +V -V +V -V
2 +V -V -V +V
3 -V +V -V +V
4 -V +V +V -V
  • 단극:
단계 코일 A 코일 B 코일 C 코일 D
1 +V +V 0 0
2 0 +V +V 0
3 0 0 +V +V
4 +V 0 0 +V

두 경우의 작동은 동일하며 코일을 극성 화하여 축을 배치하려는 위치로 로터를 끌어 당깁니다. 네가 원한다면 한 위치에 유지하십시오. 편광을 유지해야합니다. 그 위치와 짜잔을 위해. 그리고 앞으로 나아가기를 원한다면 다음 자석을 분극화하고 또 다른 단계를 밟을 것입니다.

당신이 사용하는 경우 서보 모터, 당신은 이미 그것이 기본적으로 스테퍼 모터라는 것을 알고 있으므로 말한 모든 것이 그들에게도 효과가 있습니다. 그 감속 기어를 포함하는 유일한 것은 회 전당 더 많은 단계를 얻으므로 훨씬 더 높은 정밀도를 갖습니다. 예를 들어, 8:1 기어 박스가있는 경우 회 전당 64 단계의 모터를 찾을 수 있습니다. 이는 64 단계의 각 단계가 512 개의 작은 단계로 세분화되어 회 전당 최대 0.7 단계를 제공한다는 것을 의미하기 때문입니다. 즉, 각 단계는 약 XNUMXº입니다.

l298n
관련 기사 :
L298N : Arduino 용 모터 제어 모듈

또한 일부를 사용해야 함을 추가하십시오. controlador 예를 들어 H-Bridge를 사용하여 편광, 속도 등을 제어합니다. 일부 모델은 L293, ULN2003, ULQ2003 등입니다.

구입처

다양한 온라인 사이트에서 구매 또는 전문 전자 제품 매장에서. 또한 초보자라면 필요한 모든 것이 포함 된 키트를 사용할 수 있습니다. Arduino UNO 프로젝트를 실험하고 생성하기위한 매뉴얼. 이 키트에는 모터 자체, 컨트롤러, 보드, 브레드 보드 등 필요한 모든 것이 포함됩니다.

Arduino를 사용한 스테퍼 모터 예제

스테퍼 모터 및 컨트롤러가있는 Arduino

마지막으로 Arduino를 사용한 실용적인 예, ULN2003 컨트롤러 및 28BYJ-48 스테퍼 모터 사용. 매우 간단하지만 작동 방식에 익숙해지기 시작하면 테스트를 시작하고 작동 방식을 볼 수 있습니다.

에서 볼 수 있듯이 연결 방식에서 모터 코일 A (IN1), B (IN2), C (IN3) 및 D (IN4)는 Arduino 보드의 연결 8, 9, 10 및 11에 각각 할당되었습니다. 반면에 드라이버 또는 컨트롤러 보드는 적절한 전압으로 5-12V 핀 (아두 이노의 GND 및 5V)에 공급되어야합니다. 그래야이 드라이버가있는 흰색 플라스틱 커넥터에 연결된 모터에 전원이 공급됩니다. 또는 컨트롤러.

28BYJ-48 엔진 코일이 1 개인 단 극형 스테퍼 모터입니다. 따라서 작동 방식에 대한 아이디어를 제공하기 위해 다음과 같이 Arduino 보드에서 코일로 HIGH (0) 또는 LOW (XNUMX) 값을 보낼 수 있습니다.

단계 코일 A 코일 B 코일 C 코일 D
1 높은 높은 낮은 낮은
2 낮은 높은 높은 낮은
3 낮은 낮은 높은 높은
4 높은 낮은 낮은 높은

로로 움직임을 프로그래밍하는 데 필요한 스케치 또는 코드, 다음을 사용하여 아두 이노 IDE (수정하고 움직임이 어떻게 변경되는지 테스트하기 위해 실험) :

// Definir pines conectados a las bobinas del driver
#define IN1  8
#define IN2  9
#define IN3  10
#define IN4  11

// Secuencia de pasos a par máximo del motor. Realmente es una matriz que representa la tabla del unipolar que he mostrado antes
int paso [4][4] =
{
  {1, 1, 0, 0},
  {0, 1, 1, 0},
  {0, 0, 1, 1},
  {1, 0, 0, 1}
};

void setup()
{
  // Todos los pines se configuran como salida, ya que el motor no enviará señal a Arduino
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

// Bucle para hacerlo girar
void loop()
{ 
    for (int i = 0; i < 4; i++)
    {
      digitalWrite(IN1, paso[i][0]);
      digitalWrite(IN2, paso[i][1]);
      digitalWrite(IN3, paso[i][2]);
      digitalWrite(IN4, paso[i][3]);
      delay(10);
    }
}


코멘트를 첫번째로 올려

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.