서보모터 펄스 제어
서보모터는 특정 위치로 움직이는 데 사용되는 회전 모터입니다. 서보모터를 제어하기 위해 일반적으로 펄스 제어 방식을 사용합니다. 이 방식은 서보모터에 특정 폭과 주기를 가진 펄스 신호를 전달하여 모터를 제어합니다.
서보모터의 펄스 제어 방식은 일반적으로 PWM(펄스폭 변조) 신호를 사용합니다. PWM 신호는 일정한 주기를 가지며, 주기당 펄스폭이 변조됩니다. 서보모터에서는 이 펄스폭을 통해 목표 위치와 현재 위치의 차이를 계산하여 모터를 이동시킵니다.
서보모터의 펄스 제어 방식에서는 펄스 폭의 길이가 모터의 회전 각도와 직접적으로 관련이 있습니다. 일반적으로 1ms에서 2ms 사이의 펄스폭을 사용하며, 이 범위에서 펄스폭이 길어질수록 모터의 회전 각도도 커집니다.
서보모터의 펄스 제어 방식은 다른 유형의 모터와는 다르게, 모터에 전압을 제공하는 것이 아니라 정확한 위치로 모터를 이동시키는 데에 초점을 맞추고 있습니다. 이를 통해 서보모터는 정확한 위치 제어와 회전각도의 정확한 제어를 가능하게 합니다.
PWM
PWM(Pulse Width Modulation, 펄스 폭 변조) 이란? PWM은 5V출력을 on 혹은 off 상태로 유지하는 것이 아니라 빠르게 on/off를 반복하는 것입니다.
PWM 신호를 이용해서 서보 모터를 제어할 수 있습니다. 아두이노로 예를 들면 아두이노와 연결된 핀으로 입력되는 신호의 지속 시간(pulse width)으로 위치를 제어합니다.
SG90 모터의 경우 -90도에서 +90도 범위 이내(0 ~ 180도로도 표현)에서 위치를 제어할 수 있습니다. 신호의 폭은 0.5ms에서 -90도 입니다. 그리고 2.5ms에서 +90도 회전한 위치에 맞추어집니다. (그림 3)
아두이노 서보 모터 제어 샘플 소스 코드
#include <Servo.h> //Servo 라이브러리 헥사 선언
Servo myservo; // 서보모터 선언
int pos = 0; // 모터 위치를 확인하기 위해 변수를 선언
int servoPin = 6; // 모터 제어를 위해 6번핀(PWM) 으로 선언
void setup() {
pinMode (servoPin, OUTPUT); // 모터 제어핀을 출력으로 설정
myservo.attach(6); // 모터의 신호선을 6번핀에 연결
}
void loop() {
// 서보모터를 0도~180도까지 돌려보기 위해 for문을 사용합니다 (for문은 조건이 맞다면 무한반복이 가능합니다)
for (pos = 0; pos <= 180; pos += 1) // 위에 변수를 선언한 pos는 0, 180도보다 작다면 , 1도씩 더함
{
myservo.write(pos); // 서보모터를 pos 각도로 움직여라
delay(100); // 0.1초의 딜레이 ( 1초 = 1000 )
}
for (pos = 180; pos >= 0; pos -= 1) // pos가 180이면, 0도보다 크다면 , 1도씩 빼라
{
myservo.write(pos); // 서보모터를 pos 각도로 움직여라
delay(100); // 0.1초의 딜레이 ( 1초 = 1000 )
}
}
'돈되는 생활 정보' 카테고리의 다른 글
신약 개발에 수학과 컴퓨터를 사용하는 이유 (0) | 2023.05.16 |
---|---|
macOS에서 PDF 파일 사이즈 줄이기 (0) | 2023.05.14 |
부모가 비대면으로 자녀 계좌를 개설할 수 있습니다. (0) | 2023.05.08 |
계전기 번호표 (모바일 기기 화면에 최적화) (0) | 2023.04.27 |
[공공 복지] 일반 근로자 휴양콘도 이용 지원 (비수기 최대 65% 할인) (0) | 2023.04.25 |
댓글