BASIC4MCU | 질문게시판 | 스텝모터 C코드
페이지 정보
작성자 rohyunge 작성일2018-08-06 14:28 조회29,249회 댓글6건본문
안녕하세요 스텝모터를 돌리고 있는 학생입니다.
현재 스텝모터를 돌리는데 속도 조절이 안되는 상황입니다.
스텝모터는 8.6V 1A 유니폴라 스텝모터를 사용중이고
스텝모터드라이버는 MP6500을 사용중입니다.
#include
sbit dir = P2^0;
sbit step = P2^1;
sbit sleep = P2^4;
unsigned char count;
void delay(unsigned long i)
{
while(i--);
}
void TMR1_int(void) interrupt 3
{
EA = 0;
count--;
if (count==0){
step = ~step;
count = 20;
}
TH1=0x3c;
TL1=0xb0;
EA=1;
return;
}
void main(void)
{
dir = 1;
sleep = 1;
step = 1;
TMOD=0x10;
TH1=0x3c;
TL1=0xb0;
ET1=1;
EA=1;
PT1=1;
TR1=1;
count = 20;
while(1);
}
위는 제가 한 코딩인데 타이머를 이용해서 0.5초마다 1펄스씩 나올것같은 코딩입니다.
그런데 오실로스코프로 재보면
질문 1) 코딩을 어떻게 수정해야 -_-_-_-_ 하는 방식으로 펄스파가 나올까요
질문 2) 스텝각이 1.8도인데 1펄스당 1.8도 돌아야 하는거 아닌가용? 30도씩 돌아가네요..
댓글 6
조회수 29,249master님의 댓글
master 작성일
8051은 강한 HIGH 출력을 하지 못합니다.
10K 풀업저항을 사용하세요
step만 풀업저항 사용하면 안되고
나머지 신호에도 풀업저항 사용하세요
master님의 댓글
master 작성일
오실로스코프 설정을 변경해서 DC로 바꾸세요
현재 AC로 설정되어 있는 상태입니다.
DC로 바꾸면 (풀업저항 사용하지 않아도) 정상적으로 파형이 보이겠습니다.
rohyunge님의 댓글
rohyunge 작성일감사합니다 풀업저항 안달았는데 dc로 바꾸니까 출력 잘되네여..
master님의 댓글
master 작성일
30도씩 정확하게 회전하든가요?
노이즈에 의해서 오동작하는 상태라면 정확히 30도씩 움직이지 않습니다.
8051의 GND, MP6500 GND, 12V의 GND가 모두 연결 되었는지 다시 확인하세요
rohyunge님의 댓글
rohyunge 작성일
30도씩 정확하지 않아요 눈대중으로 측정했어요 그정도씩 돌고 있습니다
GND가 모두 연결이 되어있는데 이상합니다
타이머를 반으로 줄이면 속도만 2배가 되어야 하는데
회전도 1/2도로 줄고 회전도 2배더 많이해서 좀더 부드러워지지만
결과적인 속도는 그대로입니다
master님의 댓글
master 작성일스텝신호와 출력을 두개채널로 동시에 측정해보세요