BASIC4MCU | 질문게시판 | 아두이노-스텝모터 속도조절 관련 질문입니다
페이지 정보
작성자 버즈네이 작성일2020-06-13 16:27 조회3,032회 댓글0건본문
안녕하세요 아두이노와 스텝모터를 공부하고 있는 학생입니다.
아두이노 Mega에 스텝모터 드라이버와 스텝모터를 연결하여 optical limit swich 사이 구간을 왕복운동하도록 하려고 합니다.
현재 1.8도/step 스텝모터를 32 micro step으로 세팅한 스텝모터 드라이버에 연결하여 속도조절을 위해 delayMicroseconds(-) 의 숫자를 내리면서 테스트를 진행하고 있습니다.
600RPM의 속도를 위해 10 이하로 낮추고자 하지만 숫자를 바꾸더라고 300RPM속도를 기준으로 제한이 걸린것처럼 속도가 일정하게 유지되고 있습니다.
아래와 같이 아두이노에 코딩하여 진행하고 있는데 혹시 문제점이 있을까요?
void setup() {
// put your setup code here, to run once:
pinMode(7, OUTPUT); //step pulse
pinMode(6, OUTPUT); //step direction
//pinMode(5, OUTPUT); //step ena
pinMode (31, INPUT_PULLUP); //step limit switch left
pinMode (33, INPUT_PULLUP); //step limit switch right}
void loop()
{
//if (digitalRead(31) == HIGH) // move motor until left limit switch is pressed.
//{
while (digitalRead(33) == LOW)
{
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
delayMicroseconds(10);
digitalWrite(7, HIGH);
delayMicroseconds(10);
//}
}if(digitalRead(33) == HIGH)
{
digitalWrite(6,LOW);
digitalWrite(7, LOW);
delay(1000);
}
//if (digitalRead(33) == HIGH) // move motor until left limit switch is pressed.
//{
while (digitalRead(31) == LOW)
{
digitalWrite(6, LOW);
digitalWrite(7, LOW);
delayMicroseconds(10);
digitalWrite(7, HIGH);
delayMicroseconds(10);
//}
}if(digitalRead(31) == HIGH)
{
digitalWrite(6,HIGH);
digitalWrite(7, LOW);
delay(1000);
}
}
댓글 0
조회수 3,032등록된 댓글이 없습니다.