- 스테퍼 모터
- ARM7-LPC2148로 스테퍼 모터 회전
- 필요한 구성 요소
- 스테퍼 모터 (28BYJ-48)
- ULN2003 스테퍼 모터 드라이버
- 회로도
- 스테퍼 모터 용 ARM7-LPC2148 프로그래밍
오늘날의 자동화 세계에서 스테퍼 모터와 서보 모터는 임베디드 시스템에서 가장 일반적으로 사용되는 두 가지 모터입니다. 둘 다 로봇 팔, CNC 기계, 카메라 등과 같은 다양한 자동화 기계에 사용됩니다.이 튜토리얼에서는 스테퍼 모터를 ARM7-LPC2148 과 인터페이스 하는 방법과 속도를 제어하는 방법을 살펴 봅니다. ARM7을 처음 사용하는 경우 ARM7-LPC2148 및 해당 프로그래밍 도구에 대해 배우면서 시작하십시오.
스테퍼 모터
스테퍼 모터는 브러시리스 DC 모터로 작은 각도로 회전 할 수 있으며 이러한 각도를 단계 라고 합니다. 핀에 디지털 펄스를 제공하여 스테퍼 모터를 단계적으로 회전시킬 수 있습니다. 스테퍼 모터는 저렴하고 견고한 디자인입니다. 모터의 속도는 디지털 펄스의 주파수를 변경하여 제어 할 수 있습니다.
고정자 권선 유형에 따라 UNIPOLAR 및 BIPOLAR의 두 가지 유형의 스테퍼 모터를 사용할 수 있습니다. 여기 에서는 가장 일반적으로 사용되는 스테퍼 모터 인 UNIPOLAR 스테퍼 모터를 사용 합니다. 스테퍼 모터를 회전하려면 스테퍼 모터의 코일에 순서대로 전원을 공급해야합니다. 회전 작동에 따라 두 가지 모드로 분류됩니다.
- 풀 스텝 모드: (4 단계 시퀀스)
- 단상 온 스테핑 (WAVE STEPPING)
- 스테핑에 2 단계
- 하프 스텝 모드 (8 단계 시퀀스)
스테퍼 모터 및 작동에 대한 자세한 내용은 링크를 참조하십시오.
ARM7-LPC2148로 스테퍼 모터 회전
여기서는 FULL STEP: ONE PHASE ON 또는 WAVE STEPPING 모드를 사용하여 ARM7-LPC2148로 스테퍼 모터를 회전합니다.
이 방법에서는 한 번에 하나의 코일 (LPC2148의 한 핀)에만 전원을 공급합니다. 즉, 첫 번째 코일 A 가 잠시 동안 통전되면 샤프트가 위치를 변경 한 다음 코일 B 가 동시에 통전되고 샤프트가 다시 위치를 변경합니다. 이와 같이 코일 C와 코일 D에 동력이 공급되어 샤프트를 더 이동시킵니다. 이것은 한 번에 하나의 코일에 전원을 공급하여 스테퍼 모터의 샤프트를 단계적으로 회전시킵니다.
이 방법으로 우리는 순차적으로 코일에 전원을 공급하여 샤프트를 단계적으로 회전시킵니다. 4 단계를 거치 므로이를 4 단계 시퀀스 라고 합니다.
아래에 주어진 값에 따라 HALF STEP 방식 (8-Sequence 방식)을 사용하여 스테퍼 모터를 회전 시킬 수 있습니다.
단계 |
코일 A |
코일 B |
코일 C |
코일 D |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
삼 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
필요한 구성 요소
하드웨어:
- ARM7-LPC2148
- ULN2003 모터 드라이버 IC
- LED – 4
- 스테퍼 모터 (28BYJ-48)
- 브레드 보드
- 배선 연결
소프트웨어:
- Keil uVision5
- Flasic 매직 도구
스테퍼 모터 (28BYJ-48)
28BYJ-48 스테퍼 모터는 이미 위 그림에 나와 있습니다. 그것은이다 유니 폴라 스테퍼 5V 전원을 필요로 모터. 모터는 4 개의 코일 단극 배열을 가지고 있으며 각 코일은 + 5V 정격이므로 Arduino, Raspberry Pi, STM32, ARM 등과 같은 마이크로 컨트롤러로 비교적 쉽게 제어 할 수 있습니다.
그러나 스테퍼 모터는 높은 전류를 소비하고 마이크로 컨트롤러를 손상시킬 수 있기 때문에 ULN2003과 같은 모터 드라이브 IC가 필요합니다.
28BYJ-48의 사양은 아래 데이터 시트에 제공됩니다.
다른 마이크로 컨트롤러와 스테퍼 모터와의 인터페이스도 확인하십시오.
- Arduino Uno와 스테퍼 모터 인터페이스
- Raspberry Pi를 사용한 스테퍼 모터 제어
- 8051 마이크로 컨트롤러와 인터페이싱하는 스테퍼 모터
- 스테퍼 모터와 PIC 마이크로 컨트롤러의 인터페이스
- 스테퍼 모터와 MSP430G2 인터페이스
스테퍼 모터는 마이크로 컨트롤러 없이도 제어 할 수 있습니다. 스테퍼 모터 드라이버 회로를 참조하십시오.
ULN2003 스테퍼 모터 드라이버
대부분의 스테퍼 모터 는 드라이버 모듈의 도움으로 만 작동합니다. 이는 컨트롤러 모듈 (이 경우 LPC2148)이 모터가 작동 할 수 있도록 I / O 핀에서 충분한 전류를 제공 할 수 없기 때문입니다. 그래서 우리는 스테퍼 모터 드라이버 로 ULN2003 모듈과 같은 외부 모듈을 사용할 것입니다.
이 프로젝트에서는 ULN2003 모터 드라이버 IC를 사용 합니다. IC의 핀 다이어그램은 다음과 같습니다.
핀 (IN1 ~ IN7)은 마이크로 컨트롤러 출력을 연결하기위한 입력 핀이고 OUT1 ~ OUT7은 스테퍼 모터 입력을 연결하기위한 해당 출력 핀입니다. COM에는 출력 장치 및 외부 전원 입력 소스에 필요한 양의 소스 전압이 제공됩니다.
회로도
스테퍼 모터와 ARM-7 LPC2148 을 연결하는 회로도 는 다음과 같습니다.
ULN2003 모터 드라이버 IC가있는 ARM7-LPC2148
LPC2148 (P0.7 ~ P0.10)의 GPIO 핀은 ULN2003 IC의 입력 핀 (IN1-IN4)과 연결된 출력 핀으로 간주됩니다.
LPC2148 핀 |
ULN2003 IC의 핀 |
P0.7 |
IN1 |
P0.8 |
IN2 |
P0.9 |
IN3 |
P.10 |
IN4 |
5V |
COM |
GND |
GND |
스테퍼 모터 (28BYJ-48)와 ULN2003 IC 연결
ULN2003 IC의 출력 핀 (OUT1-OUT4)은 스테퍼 모터 핀 (파란색, 분홍색, 노란색 및 주황색)에 연결됩니다.
ULN2003 IC 핀 |
스테퍼 모터의 핀 |
OUT1 |
푸른 |
OUT2 |
분홍 |
OUT3 |
노랑 |
OUT4 |
주황색 |
COM |
빨간색 (+ 5V) |
ULN2003의 IN1 ~ IN4가있는 LED
4 개의 LED (LED1, LED2, LED4, LED 4) 양극 핀은 ULN2003의 IN1, IN2, IN3 및 IN4 핀에 각각 연결되고 LED의 음극은 LPC2148의 펄스를 나타내는 GND에 연결됩니다. 제공된 펄스의 패턴을 확인할 수 있습니다. 패턴은 마지막에 첨부 된 데모 비디오 에 나와 있습니다.
스테퍼 모터 용 ARM7-LPC2148 프로그래밍
ARM7-LPC2148을 프로그래밍하려면 keil uVision 및 Flash Magic 도구가 필요합니다. 마이크로 USB 포트를 통해 ARM7 Stick을 프로그래밍하기 위해 USB 케이블을 사용하고 있습니다. Keil을 사용하여 코드를 작성하고 16 진수 파일을 만든 다음 Flash Magic을 사용하여 HEX 파일을 ARM7 스틱에 플래시합니다. keil uVision 및 Flash Magic 설치 및 사용 방법에 대한 자세한 내용은 ARM7 LPC2148 마이크로 컨트롤러 시작하기 링크를 클릭하고 Keil uVision을 사용하여 프로그래밍하십시오.
ARM 7을 사용하여 스테퍼 모터 를 제어 하기위한 전체 코드 는이 튜토리얼의 끝 부분에 제공되며 여기에서는 그 일부를 설명합니다.
1. 사용하기 위해 FULL STEP-ONE PHASE ON의 우리가 명령 아래에 포함 할 필요가 방법을. 그래서 우리는 프로그램에서 다음 줄을 사용합니다.
부호없는 문자 시계 방향 = {0x1,0x2,0x4,0x8}; // 시계 방향 회전 명령 unsigned char anticlockwise = {0x8,0x4,0x2,0x1}; // 반 시계 방향 회전 명령
2. 다음 라인은 PORT0 핀을 출력 으로 초기화하고 LOW로 설정하는 데 사용됩니다.
PINSEL0 = 0x00000000; // PORT0 핀 설정 IO0DIR-= 0x00000780; // 출력 핀 P0.7, P0.8, P0.9, P0.10 설정 IO0CLR = 0x00000780; //P0.7, P0.8, P0.9, P0.10 핀 OUTPUT을 LOW로 설정
3. 지연 이있는 for 루프를 사용하여 시계 방향 명령에 따라 PORT 핀 (P0.7 ~ P0.10)을 HIGH로 설정합니다.
for (int j = 0; j
Anti-clock Wise 와 동일
for (int z = 0; z
4. 스테퍼 모터 의 회전 속도 를 변경 하기 위해 지연 시간을 변경합니다.
지연 (0x10000); //이 값을 변경하여 회전 속도 (0x10000)-최대 속도 (0x50000)-느려짐 (0x90000)-이전보다 느려집니다. 따라서 지연 을 증가시킴으로써 회전 속도를 낮 춥니 다.
5. 하나의 완전한 회전에 대한 단계 수는 아래 코드로 변경할 수 있습니다.
int no_of_steps = 550; // 필요한 단계 회전 수에 대해이 값을 변경합니다 (550은 하나의 완전한 회전을 제공함).
스테퍼 모터의 경우 완전 회전을 위해 550 단계, 반 회전을 위해 225 단계를 얻었습니다. 따라서 요구 사항에 따라 변경하십시오.
6. 이 기능은 지연 시간 을 생성 하는 데 사용됩니다.
void delay (unsigned int value) // 지연을 생성하는 함수 { unsigned int z; for (z = 0; z
데모 비디오 가 포함 된 전체 코드 는 다음과 같습니다.