STM32F1, STMCubeMx, Timer, Stepper Motor
Timer를 이용하였으며
360도 단위로 정방향 회전과 반대방향 회전을 반복합니다.
0. 참고 자료
- [Stepper Driver] https://www.eleparts.co.kr/goods/view?no=4049079
- [A3K-M244] https://www.eleparts.co.kr/goods/view?no=2619
1. 모듈
- [SD02C] Stepper Driver 2 Ampere
- 스테핑모터 A3K-M244 / 42각 유니폴라방식 2상 스테핑모터
- DC 12V-2A
- Motor 6선과 전원 연결 부분입니다.
Stepping 설정 핀과 UART 연결 핀입니다.
1/1, 1/2, 1/4, 1/8 MicroStep를 지원
A3K-M244를 구입하면 사진처럼 구성되어 있습니다.
시중에 있는 DC 12V-2A 어댑터를 구입한 다음 전원잭을 제거하여 사용하였습니다.
2. HW 구성
A 3라인을 X 3라인과 연결하고
B 3라인을 Y 3라인과 연결합니다.
그리고 A-Y, B-X로 교차 연결합니다.
모터 연결선 Stepper Motor Driver
갈색 (A) Y
흑색 (COM A) NC
주황색 (A') X'
적색 (B) X
흰색 (COM B) NC
노란색 (B') Y'
3. RCC > HSE > Crystal/Ceramic Resonator
4. TIM1 > Clock Source > Internal Clock
5. Motor pin 설정
- S_MOTOR(PULSE) : PA6
- EN : PC4
- DIR : PB0
6. LED
7. Clock Configuration > 72MHz
8. TIM1 Configuration
- Prescaler 36000-1
- Counter Period : 10
9. Pin Configuration
- User Label
10. SW 구성
- 5ms pulse timer
- 1.8도 단위로 정방향으로 360도 회전, 반대방향으로 360도 회전
volatile unsigned int sMotorCnt = 0; volatile bool sMotorStop = false; /* 360 / 1.8' = 200 360 / 0.9' = 400 (if motor driver assist 1/2 mocrostep) */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == TIM1) { sMotorCnt++; if (sMotorCnt < 400) // 400 = 360' rotate { S_MOTOR_CTRL(GPIO_TOGGLE); } else { HAL_TIM_Base_Stop_IT(&htim1);
S_MOTOR_CTRL(GPIO_LOW); //EN_CTRL(GPIO_LOW); // motor holding or not sMotorStop = true; } } } int main(void) {
/* 1) 72MHz System Clock, Prescaler 1MHz Timer Clock Prescaler = 72MHz / 36000 - 1 = 2KHz - 1 = 0.5ms 2) 2KHz Timer Clock, Period = 10 => 5ms */ while (1) { S_MOTOR_CTRL(GPIO_LOW); DIR_CTRL(GPIO_HIGH); EN_CTRL(GPIO_HIGH); sMotorCnt = 0; sMotorStop = false; HAL_TIM_Base_Start_IT(&htim1); while(!sMotorStop) HAL_Delay(1); HAL_Delay(1000); S_MOTOR_CTRL(GPIO_LOW); DIR_CTRL(GPIO_LOW); EN_CTRL(GPIO_HIGH); sMotorCnt = 0; sMotorStop = false; HAL_TIM_Base_Start_IT(&htim1); while(!sMotorStop) HAL_Delay(1); HAL_Delay(1000); } } |
11. 소스
12. 결과
'STM32F1' 카테고리의 다른 글
SD02C Stepper Driver, PC 프로그램 사용법 (0) | 2018.09.29 |
---|---|
STM32F1, STMCubeMx, uart_rx_interrupt (0) | 2018.08.19 |
STM32F1, STMCubeMX, GPIO Interrupt (0) | 2018.08.18 |
STM32F1, STMCubeMX, SDIO, SPI, VS1003B MP3 Board, Micro SD Storage Board (0) | 2018.08.06 |
STM32F1, VS1003B MP3 Board, Audacity Audio Program, Linux xxd Command (0) | 2018.08.06 |