sg90 서보모터는 다음과 같이 생겼습니다
이를 제어하기 위해서는 pwm을 이용합니다
pwm 값을 주어 서보모터를 회전시킬 수 있습니다
하지만 이는 스텝모터와 다르게 5를 준다고 5만큼 도는것이 아닙니다
5의 위치로 돌게 됩니다
그리고 정밀하게 제어하기에 좋은 모터는 아닙니다
정밀한 제어가 필요하다면 스텝모터를 이용해야 합니다
그래서 저는 주로 이를 사용하기 전에 어떤 한 값으로 초기화 후
그 각도를 기준으로 각도를 맞춰 진행하였습니다
그리고 0~180도를 제어할 수 있다고 되어있지만
하드웨어의 한계로 보통 5~175정도 까지 회전가능하도 보면 됩니다
sg90 서보모터 특징
특징을 정리해보겠습니다
1. 가격이 저렴하다 보통 2000원이면 구매할 수 있다
2. 가볍다: 작고 가볍습니다
3. 회전을 구현하기 쉽다
4. 불량이 많다: 정말 많습니다.. 분명히 제대로 꽂은 것 같은데 안된다면 먼저 불량을 의심하세요!!
10개 중 절반 이상이 불량인 제품을 받은 친구도 있었습니다 ㅠㅠㅠ
간단하게 위의 특징이 있을 것 같습니다
softPwmCreate(핀번호, 시작 펄스 값, 주기)
주기는 1~1024 사이의 값을 가집니다
내부적으로는 *0.1ms가 됩니다
즉 위와 같이 200을 입력하면 주기는 20ms가 됩니다
sg90 서보모터 라즈베리 파이에 연결 방법
서보모터를 보시면 선이 3개가 있습니다
하나는 +, 하나는 GND, 하나는 데이터 핀입니다
뭐가 뭐일까요??
빨강은 전원선(+)
갈색은 GND(-)
오렌지색은 데이터 선 입니다
여기 중요합니다!!!
즉 빨강은 5V에 연결, 갈색은 GND에 연결, 오렌지색은 PWM이 되는 GPIO에 연결합니다
(저는 wpi 1번을 사용하겠습니다)
서보모터 테스트 코드
위와 같이 연결하고 위의 코드를 실행했는데도 되지 않는다면 불량입니다!!
먼저 테스트를 해보세요
역시 컴파일을 해주고 실행시켜봅니다
$ gcc -o servotest servotest.c -lwiringPi
$ ./servotest
모터가 정상이라면 위와 같이 동작합니다
서보모터 연속 회전하기
이번에는 조금 더 응용해봅시다!!
위에서는 한 각도로 돌고 끝이었지만 이번에는 연속회전하게 해보겠습니다
위 코드를 통해 5에서 25의 각도를 왔다갔다 하는걸 볼 수 있습니다
pos를 1씩 증가하면서 계속 값을 주어 연속적으로 움직이게 만든 것입니다
정말 깨방정 맞게 움직이네요 ㅋㅋㅋㅋㅋㅋ
이렇게 서보모터를 다루는 방법을 알아봤습니다!!