답변 : 아두이노-스텝모터 속도조절 관련 질문입니다
페이지 정보
작성자 master 작성일20-06-14 08:03 조회4,564회 댓글0건본문
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2020-06-14 오전 8:05:14
// by Ok-Hyun Park
//
// 아두이노 + 스텝모터
아두이노 Mega에 스텝모터 드라이버와 스텝모터를 연결하여
optical limit swich 사이 구간을 왕복운동하도록 하려고 합니다.
현재 1.8도/step 스텝모터를 32 micro step으로 세팅한 스텝모터 드라이버에 연결하여
속도조절을 위해 delayMicroseconds(-)의 숫자를 내리면서 테스트를 진행하고 있습니다.
600RPM의 속도를 위해 10 이하로 낮추고자 하지만
숫자를 바꾸더라고 300RPM속도를 기준으로 제한이 걸린것처럼 속도가 일정하게 유지되고 있습니다.
아래와 같이 아두이노에 코딩하여 진행하고 있는데 혹시 문제점이 있을까요?
//
void setup(){
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(){
digitalWrite(6,1);
while(digitalRead(33)==0){
digitalWrite(7,0); delayMicroseconds(10);
digitalWrite(7,1); delayMicroseconds(10);
}
delay(1000);
//----------------------------------------------------------
digitalWrite(6,0);
while(digitalRead(31)==0){
digitalWrite(7,0); delayMicroseconds(10);
digitalWrite(7,1); delayMicroseconds(10);
}
delay(1000);
}
이 코드로 다시 돌려보시고
타이머 인터럽트 등 아두이노 내부의 실행코드들 때문에 한계는 있습니다.
모터전원/모터부하/모터토크/드라이버모듈/ 등의 조건에 따라서 최고 속도가 제한됩니다.
모터관련 문제는 없고, 아두이노 자체 문제 때문인 것 같으면
아두이노를 버리고 AVR을 공부하시는 것이 좋습니다.
같은 MCU라도 어떤 개발환경으로 코드를 작성하는지에 따라서 훨씬 유연하게 구현이 가능합니다.
댓글 : 0
조회수 : 4,564
등록된 댓글이 없습니다.