정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

스텝모터 제어시 궁금한 점이 있습니다.
김동한 | 2016-11-27

안녕하세요,

 

조도센서 값에 따라 스텝모터를 제어하고 있습니다.

 

조도센터 0~1023값에 따라 원하는 각도만큼 제어를 하고 싶은데, 문제는 스텝모터를 0~360도 안에서 조도센서 값에 따라 절대적으로 그 각도안에 들게 하고 싶습니다.

 

예를 들어서 조도값 700에서는 스텝모터를 약 120도까지 회전하고 조도값 800에서는 약 130도 회전합니다. 처음에 조도값 700을 받으면 모터가 120도를 돌테고, 다음 조도값을 800을 받았다면 아두이노가 전에 받았던 값을 잊어버리지 않고 계속 Feedback을 먹여서 130-120=10도 만큼만 이동을 하고 싶습니다. 즉, 모터가 위치를 기억하여 120도+130도가 아닌 120도 이후엔 처음 각도에서 130도 만큼 이동해야하는데 이미 120도를 회전했으니 총 10도만큼만 이동시키고 싶습니다.

 

또 다른 예는 700->800->700 순이라면, 처음 0도에서 120도를 회전하고, 다시 10도만큼 회전하고, 다시 -10도 만큼 회전을 하도록 설정하고 싶습니다.

 

#include
#define STEPS 1024
int val;
int in1Pin=8;
int in2Pin=9;
int in3Pin=10;
int in4Pin=11;
int cds=A0;

Stepper motor(STEPS, in1Pin, in3Pin, in2Pin, in4Pin);


void setup() {
  pinMode(in1Pin,OUTPUT);
  pinMode(in2Pin,OUTPUT);
  pinMode(in3Pin,OUTPUT);
  pinMode(in4Pin,OUTPUT);
  motor.setSpeed(20);
  Serial.begin(9600);
}

void loop() {
  val=analogRead(cds);
  Serial.print("cds value= ");
  Serial.println(val);

  if(val<700){
    motor.step(STEPS);
  }
  else {
    motor.step(-STEPS);
  }
  delay(1000);
}

 

현재 위는 제가 짠 아주 기본적인 코드입니다. 저기서 어떤식으로 Feedback을 먹이면 좋을까요??

이전글   |    PWM핀 버그 2016-11-26
다음글   |    코드 합치기 질문드립니다. 2016-11-28