안녕하세요 대짜이찐입니다.
이전에는 아두이노로 서보모터를 제어하는 포스팅을 했었는데요.
이건 180도까지 움직이는 서보모터로
0~180도밖에 움직이지 못하기에,
회전은 불가능했습니다.
이번에는 360도로 회전이 가능한
360도 회전 서보모터를 아두이노로 제어하는
방법에 대해 알려드리려합니다.
이번에 제가 사용할 서보모터 입니다.
상세 스펙입니다.
4.8V~6V에서 사용가능하고, 중간에 동작 각도는 360도라고 써있습니다.
모터의 핀맵은 3pin으로 각각 PWM, VCC, GND로 연결됩니다.
GND핀은 갈색일수도 검정색일수도 있습니다.
해당 서보모터는 아두이노로 전원을 주기에는 전류를 많이 소모하기에
아두이노에서 전원을 주면 동작이 안됩니다
따라서 배터리/파워서플라이/어댑터/SMPS등을 사용해서
외부전원을 넣어주어야 합니다.
서보모터에 외부전원을 연결하고
서보모터의 PWM(Signal)핀은 아두이노의 디지털 9번핀에 연결합니다.
/*
360 서보모터 테스트
http://www.devicemart.co.kr/
*/
#include <Servo.h> // 서보모터 라이브러리 사용
Servo myservo; // 서보모터 객체를 myservo로 생성
void setup()
{
myservo.attach(9); // 서보모터 9번핀에 연결
}
void loop()
{
myservo.write(180); // 역방향으로 최고속도 회전
delay(1500); // 1.5초 동작
myservo.write(92); // 정지
delay(500); // 0.5초 동작
myservo.write(0); // 정방향으로 최고속도 회전
delay(1500); // 1.5초동작
myservo.write(92); // 정지
delay(500); // 0.5초 동작
}
| cs |
소스 코드에서 servo.write() 함수는 360 서보모터에서는 속도를 제어합니다.
()안에 값으로 0은 정방향 최고속도, 180은 역방향 최고속도입니다.
0과 180에 가까울수록 속도가 빨라집니다.
90은 정지이며, 90에 가까울수록 속도가 느려집니다.
다만 제가 테스트해봤을 때, 90값을 넣으면 완전히 정지하지 않고 느리게나마
정방향으로 회전합니다. 값을 조절해보니 92에서는 정지를 완벽하게 하기 때문에
92의 값을 정지값으로 넣었습니다.
정방향 역방향 제대로 동작하는것을 확인 할 수 있습니다.
감사합니다.
전자부품 NO.1 쇼핑몰 디바이스마트
감사합니다.
0 댓글