중 하나 가장 인기있는 스테퍼 모터는 28BYJ-48입니다. 이 블로그에 게시 된 기사 후에는 이미 알고 있어야합니다. 이 유형의 엔진에 대해 필요한 모든 것 회전을 제어하여 천천히 전진하거나 원하는 위치에서 정적으로 유지되도록 할 수 있습니다. 이를 통해 산업에서 로봇 공학에 이르기까지 여러분이 생각할 수있는 다른 많은 분야를 통해 다양한 응용 분야를 가질 수 있습니다.
28BYJ-48은 단 극형 스테퍼 모터일반적으로 함께 포함되는 드라이버 / 컨트롤러 모듈 모델 ULN2003A가 있으므로 Arduino와 쉽게 통합 할 수 있습니다. 모두 매우 저렴한 가격과 상당히 컴팩트 한 크기입니다. 이러한 기능은 또한 이러한 장치로 연습을 시작하는 데 이상적입니다.
28BYJ-48 특징
엔진 28BYJ-498 다음과 같은 특성을 가진 스테퍼 모터입니다.
- 억센: 스테퍼 모터 또는 단극 스테퍼
- 단계: 4 개 (풀 스텝), 내부에 4 개의 코일이 있습니다.
- 저항: 50Ω.
- 모터 토크 : 34 N / m, 즉 미터당 뉴턴이 Kg로 전달되면 축에 약 0.34Kg / cm를 두는 것과 동일한 힘이됩니다. XNUMX 분의 XNUMX 킬로가 조금 넘는 풀리로 들어 올릴 수 있습니다.
- 소비: 55 mA
- 랩당 걸음 수: 8 개 반 스텝 타입 (각각 45º)
- 통합 기어 박스: 예, 1/64이므로 정밀도를 높이기 위해 각 단계를 64 개의 작은 단계로 나눕니다. 따라서 각각 512º 씩 0.7 단계에 도달합니다. 또는 랩당 256 개의 풀 스텝 (풀 스텝)으로 볼 수도 있습니다.
전체 또는 절반 단계 또는 전체 및 절반 단계는 작업 할 수있는 모드입니다. 기억한다면 스테퍼 모터에 대한 기사에서 Arduino IDE의 코드 예제가 최대 토크로 작동한다고 말했습니다.
자세한 내용은 데이터 시트 다운로드으로 예를 들어 이것. 핀아웃에 관해서는 구입 한 모델의 데이터 시트에서 정보를 볼 수도 있지만 너무 걱정할 필요가 없습니다. 그러나이 콘크리트에는 극성이나 각 케이블이 어디로 가는지 걱정하지 않고 모든 케이블을 한 번에 연결할 수있는 연결이 있습니다. 컨트롤러에 삽입하기 만하면됩니다.
이 28BYJ-48 모터에 포함 된 모터 컨트롤러 또는 드라이버는 ULN2003A, 가장 인기 있고 Arduino와 함께 매우 쉽게 사용할 수 있습니다. 이전에 언급 한 스테퍼 모터 기사에서 본 것처럼 최대 500mA를 지원하는 Darlington 트랜지스터 배열과 4 개의 코일을 IN1에서 IN4까지 번호가 지정된 Arduino 보드의 핀과 연결하는 연결 핀이 있습니다. Arduino에서 5v 및 GND 핀에서-+ (5-12v)로 표시된 드라이버 모듈 보드의 두 핀으로 와이어를 연결하여 보드와 스테퍼 모터에 전원을 공급할 수 있습니다.
그건 그렇고, 달링턴 트랜지스터 한 쌍의 바이폴라 트랜지스터를 함께 배치하고 단일 트랜지스터로 사용할 수 있습니다. 이렇게하면 단일 '트랜지스터'에서 신호 이득이 크게 증가하고 더 높은 전류와 전압을 전달할 수 있습니다.
El 달링턴 페어, 두 개의 바이폴라 트랜지스터의 조합에 의해 형성된 단일 "트랜지스터"가 알려져 있습니다. 그것은 1952 년 Sidney Darlington에 의해 Bell Labs에서 시작 되었기 때문에 그 이름이되었습니다. 이 트랜지스터는 하나의 NPN이 두 번째 NPN 트랜지스터의 콜렉터에 연결된 콜렉터를 갖도록 연결됩니다. 첫 번째 발행자는 두 번째 발행자로 이동합니다. 즉, 결과 트랜지스터 또는 쌍에는 단일 트랜지스터로 세 개의 연결이 있습니다. 첫 번째 트랜지스터의베이스와 두 번째 트랜지스터의 컬렉터 / 에미 터 ...
모터 구입처
롯 당신은 많은 상점에서 찾을 수 있습니다 전자 제품을 전문으로하고 아마존과 같은 온라인에서도 예를 들어 다음에서 구입할 수 있습니다.
- 약 € 6에 대해 28BYJ-48 엔진 (드라이버 모듈 포함).
- 제품이 없습니다. 작업중인 로봇 또는 프로젝트에 하나 이상의 모터가 필요한 경우 연결 용 케이블 ...
Arduino로 28BYJ-48 프로그래밍
우선, 당신은 스테퍼 모터의 개념에 대해 명확하게, 그래서 나는 당신을 추천합니다 이 항목에 대한 Hwlibre의 기사 읽기. 이 모터는 지속적으로 공급되도록 설계되지 않았지만 서로 다른 위상에서 극성을 띠게하여 우리가 원하는 각도로만 전진하도록 설계되었습니다. 위상을 자극하고 샤프트의 회전을 제어하려면 각 연결을 적절하게 공급해야합니다.
제조업체는 한 번에 2 개의 코일을 구동 할 것을 권장합니다.
- 작동하게하려면 최대 토크에서, 가장 빠른 속도와 최대 소비량으로 다음 표를 사용할 수 있습니다.
단계 | 코일 A | 코일 B | 코일 C | 코일 D |
---|---|---|---|---|
1 | 높은 | 높은 | 낮은 | 낮은 |
2 | 낮은 | 높은 | 높은 | 낮은 |
3 | 낮은 | 낮은 | 높은 | 높은 |
4 | 높은 | 낮은 | 낮은 | 높은 |
- 한 번에 하나의 코일 만 자극하고 작동하게하려면 웨이브 드라이브 모드 (절반이지만 소비량이 적더라도) 다음 표를 사용할 수 있습니다.
단계 | 코일 A | 코일 B | 코일 C | 코일 D |
---|---|---|---|---|
1 | 높은 | 낮은 | 낮은 | 낮은 |
2 | 낮은 | 높은 | 낮은 | 낮은 |
3 | 낮은 | 낮은 | 높은 | 낮은 |
4 | 낮은 | 낮은 | 낮은 | 높은 |
- 또는 진보를 위해 반 단계,이를 사용하여 짧은 단계에서 더 높은 회전 정밀도를 얻을 수 있습니다.
단계 | 코일 A | 코일 B | 코일 C | 코일 D |
---|---|---|---|---|
1 | 높은 | 낮은 | 낮은 | 낮은 |
2 | 높은 | 높은 | 낮은 | 낮은 |
3 | 낮은 | 높은 | 낮은 | 낮은 |
4 | 낮은 | 높은 | 높은 | 낮은 |
5 | 낮은 | 낮은 | 높은 | 낮은 |
6 | 낮은 | 낮은 | 높은 | 높은 |
7 | 낮은 | 낮은 | 낮은 | 높은 |
8 | 낮은 | 낮은 | 낮은 | 높은 |
그리고 당신은 생각할 수 있습니다 ... 이것이 Arduino 프로그래밍과 어떤 관련이 있습니까? 글쎄요, 사실은 Arduino IDE의 값으로 행렬 또는 배열을 만들 수 있습니다. 모터가 원하는대로 움직 이도록 한 다음 루프에서 또는 필요할 때 상기 어레이를 사용하도록 ... LOW = 0 및 HIGH = 1, 즉 전압이 없거나 고전압이 없음을 고려하여 다음을 생성 할 수 있습니다. Arduino가 모터를 구동하기 위해 컨트롤러로 보내야하는 신호. 예를 들어 중간 단계를 수행하려면 행렬에 대한 코드를 사용할 수 있습니다.
int Paso [ 8 ][ 4 ] = { {1, 0, 0, 0}, {1, 1, 0, 0}, {0, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 0}, {0, 0, 1, 1}, {0, 0, 0, 1}, {1, 0, 0, 1} };
즉, 스케치의 완전한 코드 Arduino IDE에서이 기본 예제를 사용하여 28BYJ-48 스테퍼 모터의 작동 방식을 테스트 할 수 있습니다. 이를 통해 전체 다이어그램이 제대로 연결되면 모터 샤프트를 회전 할 수 있습니다. 값을 수정하거나 귀하의 경우에 필요한 애플리케이션의 코드를 변경하십시오.
// 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); } }
보시다시피,이 경우 코일을 XNUMXxXNUMX로 활성화하는 최대 토크로 작동합니다.