BASIC4MCU | 질문게시판 | 스텝모터 위치제어 질문 드립니다.
페이지 정보
작성자 몽규 작성일2018-01-22 21:56 조회6,978회 댓글0건본문
안녕하세요! 지난번 질문의 친절하신 답변 다시한번 감사드립니다.
지난번과 마찬가지로 stm32f103 보드이고 HAL드라이버를 사용중입니다.
이번엔 스텝모터의 위치를 제어 하려고 합니다.
처음은 규칙적인 스텝, 예를들어 30스텝씩의 이동은 다음과 같은 구문에 의해 동작 시킬 수 있었습니다.
int PulseCNT=0;
void StepDW(int n){
for(int a=0; a<n; a++){
M_Inc(); //모터 스텝동작인 GPIO SET,RESET 과정을 함수화 하였습니다.
PulseCNT++;
Delay_ms(1);
}
}void StepUP(int n){
for(int a=0; a<n; a++){
M_Dec(); // 역방향으로의 이동입니다.
PulseCNT--;
Delay_ms(1);
}
}int step=0; int n=0;
void Motor(){
switch(button){
case 1: Step =0 break; case 2: Step =30 break; case 3: Step =60 break; case 4: Step =90 break;
}
if(PulseCNT<Step){ n=Step-PulseCNT; StepDW(n);}
if(PulseCNT>Step){ n=PulseCNT-Step ; StepUP(n);}}
헌데 이는 상대적인 값에 의해 이동을 하고 있습니다.
만약 절대적인 값 즉, 위와 같이 30 스텝 씩이 아닌, 초기 0의 위치를 기준으로 1번 버튼은 10스텝 이동한 위치, 2번 버튼은 35스텝 이동한 위치, 3번 버튼은 65...와같이 절대값을 통해 이동하는 방법이 있는지 궁금합니다. (*1번을 누를때마다 10스텝 이동이 아닌 절대 위치 10 입니다.)
제 생각엔 PulseCNT가 현재 자기 스텝의 척도이므로 이를 통해서 절대값을 취해야 한다고 생각하여 시도 해보고 있는데 구현을 하지 못하고 있습니다.
시도와 고민 끝에 결국 질문 드립니다. 항상 감사합니다.
댓글 0
조회수 6,978등록된 댓글이 없습니다.