아두이노의 analogWrite로 조절할 수도 있지만

아두이노의 Servo.h 라이브러리를 이용하여 DB모터의 PWM제어를 할 수 있다.

장점이라면 신호를 계속 만들어 주지않아도 되고 한번준 신호는 다시 신호를 줄때까지 같은 속도로 주기 때문에 쓰레딩을 할 필요가 없다.


Servo 설명

This library allows an Arduino board to control RC (hobby) servo motors. Servos have integrated gears and a shaft that can be precisely controlled. Standard servos allow the shaft to be positioned at various angles, usually between 0 and 180 degrees. Continuous rotation servos allow the rotation of the shaft to be set to various speeds.

 

The Servo library supports up to 12 motors on most Arduino boards and 48 on the Arduino Mega. On boards other than the Mega, use of the library disables analogWrite() (PWM) functionality on pins 9 and 10, whether or not there is a Servo on those pins. On the Mega, up to 12 servos can be used without interfering with PWM functionality; use of 12 to 23 motors will disable PWM on pins 11 and 12.


필자가 사용한 BLDC모터의 변속기는 Servo.write() 메소드 기준으로 30~150도의 신호에서 반응하고 약50부터 정회전을 하기 시작한다.

(옛날 ±60도의 신호를 받음)

역회전을 지원한다면 90도를 기준으로하여 값이 크거나 작으면 회전방향이 달라질 수도 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<Servo.h>
 
const int MOTOR_PIN = 9;
Servo m_servo;
int iPWM;
void setup() {
  m_servo.attach(MOTOR_PIN);
  Serial.begin(9600);
}
 
void loop() {
  if(Serial.available() > 0){
    iPWM = Serial.read();
    if(iPWM>150)iPWM=150;
    if(iPWM<30)iPWM=30;
    m_servo.write(iPWM);
  }
}
cs

       ▲Simple source

'프로그래밍 > 아두이노' 카테고리의 다른 글

아두이노 드론 MPC6050  (0) 2016.07.09
MPU6050의 사용  (0) 2016.07.09
(아두이노)리미트 스위치  (0) 2016.07.09

+ Recent posts