1. 스텝모터란?
스텝모터(Step Motor)는 회전 운동을 일정한 각도만큼 정확하게 이동시키는 데에 사용되는 모터이다. 스텝모터의 가장 큰 특징은 회전 각도를 "스텝(step)"이라 불리는 고정된 각도만큼 나누어 이동시킬 수 있다는 점이다.
이 말이 무슨 말이냐면, 쉽게 말해서 아래 ORG, YEL, PIK, BLU 네 개의 선에 전류를 입력하면 방향에 따라 자기장이 형성된다. 중앙의 회전자를 밀어내거나 끌어당겨서 축을 중심으로 회전한다.
쉽게 말해서, 그대로 전류만 흘려주면 자기장이 발생하고 자석의 성질에 의해 서로가 밀어내거나 끌어당겨 회전이 되는 것이다.
위와 같이 총 8개의 step을 거치면 약 0.7도(스텝모터마다 다르므로 0.7도가 아닐 수도 있음)가 움직인다. 이 하나의 과정(8번의 step)을 1 sequence라고 하는데, 512번의 sequence를 거치면 약 360도(한 바퀴) 회전된다. 아래에서 코드로 구현해보자.
2. STM32에서 스텝모터 제어해보기
위에서 알 수 있듯이 스텝모터를 구동하기 위해 필요한 핀의 개수는 총 4개의 핀이므로 4개의 포트를 output으로 enable한 후 코드를 generate한다.
코드를 generate 시키면 MX_GPIO_Init함수에서 포트가 정상적으로 enable 되었음을 알 수 있다.
스텝모터 관련 함수를 작성하기 위해 src디렉토리에 stepmotor.c파일을 새로 추가한다.
1sequence를 위한 총 8스텝을 구현해보자. 각 스텝에 맞는 핀의 출력을 각각 정해준다.
delay함수를 이용하여 rpm 함수를 구현한다.
그 아래에는 스텝모터의 움직임을 테스트할 stepmotor_main_test함수를 구현한다.
8스텝(1 sequence)를 512번 수행하면 한 바퀴를 돌게된다. 정회전과 역회전을 한 번씩 번갈아가면서 하기 위해 위와같이 코드를 작성한다.
'STM32' 카테고리의 다른 글
[STM32] STM32F103C8T6에 W5100S FW 포팅하기 (1) | 2024.03.18 |
---|---|
[STM32] RTOS (0) | 2023.08.13 |
[STM32] UART를 이용한 Circular Queue 구현 (0) | 2023.08.13 |
[STM32] STM32F429ZI 사용하기 (0) | 2023.08.13 |
[STM32] STM32의 타이머 카운터 (0) | 2023.08.13 |