Fogeaters, Light The World.

21

2016-Feb

[AVR] 서보모터 제어

작성자: title: MoonBlonix IP ADRESS: *.148.87.98 조회 수: 1668

* DC모터와 마찬가지로 꽤나 전류를 먹기 때문에 왠만하면 외부전원에 연결하도록 하자.

전류가 약하면 회전이 약하거나 아예 안 돌아갈 수도 있다.



Servo_Angle_Schematic_180_3.8.jpg


서보모터는 50Hz, 즉 20ms 의 펄스파를 필요로 한다. (완벽히 정확할 필요는 없다)

HIGH 상태는 위의 그림과 같이 각도에 따라 600~2400us 만큼 유지하고 나머지를 LOW 상태로 유지해야 한다.

즉, 0도 위치에 머무르고 싶으면 1500us 동안 HIGH, 20ms 동안 LOW 인 셈이다.


90도 서보모터의 경우 -45 ~ 45 만큼 움직인다고 보면 된다.

360도 서보모터는 아예 작동방식이 다른데, 얘는 걍 속도, 방향조절이 되는 DC모터라고 보면 된다.

(근데 DC도 드라이버 달면 되잖아? 쓸모없군.)


서보 한개야 뭐 대충 PWM 쓰든 delay로 무식하게 하든 하면 되는데, 여러개가 되면 이야기가 달라진다.

나는 서보 여럿을 동시에 조절하기 위해 아래와 같이 만들었다. C++ 형식이므로 C로 만들 경우 알아서 적당히 바꾸자.

대체로 내가 예전에 올려둔 DC 컨트롤러와 비슷한데, 잘 이해가 안되면 내가 전에 올려둔 프로젝트 받아서 분석해보면 된다.



#define    SERVO_PORT     PORTC

#define    SERVO_DDR      DDRC

#define    SERVO_MASK    pwmMaskPortc      // 얘는 uint8_t 전역변수다. 서보 추가할 때 바꿔준다.



K-20160221-797357.png


K-20160221-797573.png


타이머1은 분주비8 이다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15117
52 OP Amp - 연산 증폭기 title: MoonBlonix 2016-03-07 1741
51 [아두이노] RC용 ESC(변속기) 작동방법 title: MoonBlonix 2016-03-06 1762
50 [AVR/아두이노] 수광 센서 file title: MoonBlonix 2016-03-06 1759
49 [리눅스] 정적, 공유, 동적 라이브러리 사용 title: MoonBlonix 2016-03-05 1325
48 [C/C++] Makefile 만들기 title: MoonBlonix 2016-03-05 1777
47 [C/C++] OS 구분 전처리기 매크로 title: MoonBlonix 2016-03-05 1562
46 [C++ STL] std::unique_ptr + 1 title: MoonBlonix 2016-03-05 1754
45 [AVR] 퓨즈비트 옵션 file + 1 title: MoonBlonix 2016-03-04 1453
44 [AVR] 외부클럭, 리셋회로 설계 file + 1 title: MoonBlonix 2016-03-04 1739
43 [AVR] 소프트웨어 UART 통신(Software Serial) file + 1 title: MoonBlonix 2016-03-04 1739
42 [AVR/아두이노] PIR 인체감지 센서 file title: MoonBlonix 2016-03-03 1911
41 [리눅스] 파일관리 라이브러리 함수 title: MoonBlonix 2016-03-03 1649
40 [리눅스] 리눅스 커널 API 모음 title: MoonBlonix 2016-03-03 1949
39 [리눅스/윈도우/C/C++] 플러그인 시스템 구현 title: MoonBlonix 2016-03-03 1991
38 [라즈베리파이] UART 통신 file title: MoonBlonix 2016-02-25 1620
37 [리눅스] vi 편집기 명령어 title: MoonBlonix 2016-02-25 1520
» [AVR] 서보모터 제어 file title: MoonBlonix 2016-02-21 1668
35 [AVR] 16MHz 클럭의 연산자별 연산속도 측정 title: MoonBlonix 2016-02-16 1686
34 [AVR] 입력받기 (풀업저항, 외부인터럽트) file + 1 title: MoonBlonix 2016-02-13 1994
33 [AVR] ADC (아두이노 analogread 사용) file + 2 title: MoonBlonix 2016-02-13 1703