이것은 MPLAB 및 XC8을 사용하는 PIC 마이크로 컨트롤러 학습에 대한 11 번째 튜토리얼입니다. 이 튜토리얼에서는 PIC 마이크로 컨트롤러로 서보 모터를 제어 하는 방법을 배웁니다. 이미 서보 모터로 작업 한 경우이 튜토리얼의 전반부를 건너 뛸 수 있지만 서보 모터 자체를 처음 사용하는 경우 계속 읽으십시오.
지금까지 PIC를 사용한 LED 깜박임, PIC의 타이머, LCD 인터페이스, 7 세그먼트 인터페이스, PIC를 사용하는 ADC 등과 같은 많은 기본 자습서를 다루었습니다. 완전 초보자 인 경우 여기에서 PIC 자습서의 전체 목록을 방문하십시오. 배우기 시작하십시오.
이전 튜토리얼에서 PIC 마이크로 컨트롤러를 사용하여 PWM 신호를 생성하는 방법을 배웠습니다. 신호는 전위차계에서 읽은 값을 기반으로 생성되었습니다. 모든 프로그램을 이해했다면 축하합니다. 서보 모터도 이미 코딩했습니다. 예, 서보 모터는 PWM 신호 (여기에서 타이머를 사용하여 생성)에 응답합니다.이 튜토리얼에서는 그 이유와 방법을 배웁니다. 이 프로젝트에 대한 하드웨어 설정을 시뮬레이션하고 빌드 할 것이며이 튜토리얼의 끝에서 자세한 비디오 를 찾을 수 있습니다.
서보 모터 란?
서보 모터는 각도 제어를 허용하는 액추에이터 유형 (대부분 원형)입니다. 많은 종류의 서보 모터를 사용할 수 있지만이 튜토리얼에서는 아래 표시된 취미 서보 모터에 집중하겠습니다.
취미 서보는 저렴한 모션 제어 방법이기 때문에 인기가 있습니다. 그들은 대부분의 R / C 및 로봇 애호가의 요구에 대해 기성품 솔루션을 제공합니다. 또한 각 애플리케이션에 대한 제어 시스템을 맞춤 설계 할 필요가 없습니다.
대부분의 취미 서보 모터는 회전 각도가 0-180 ° 이지만 관심이 있다면 360 ° 서보 모터를 얻을 수도 있습니다. 이 튜토리얼은 0-180 ° 서보 모터를 사용합니다. 기어에 따라 두 가지 유형의 서보 모터가 있습니다. 하나는 플라스틱 기어 서보 모터이고 다른 하나는 금속 기어 서보 모터입니다. 메탈 기어는 모터가 더 많이 마모되는 곳에서 사용되지만 가격이 비싸다.
서보 모터의 정격은 kg / cm (kg / cm)입니다. 대부분의 취미 서보 모터의 정격은 3kg / cm 또는 6kg / cm 또는 12kg / cm입니다. 이 kg / cm는 서보 모터가 특정 거리에서 들어 올릴 수있는 무게를 나타냅니다. 예: 6kg / cm 서보 모터는 부하가 모터 축에서 1cm 떨어진 곳에 매달린 경우 6kg을 들어 올릴 수 있어야하며 거리가 멀수록 무게 운반 능력은 줄어 듭니다. 여기에서 서보 모터의 기초를 배우십시오.
서보 모터와 마이크로 컨트롤러의 인터페이스:
취미 서보 모터와 MCU의 인터페이스는 매우 쉽습니다. 서보에는 3 개의 와이어가 있습니다. 그중 2 개는 공급 (양수 및 음수)에 사용되며 하나는 MCU에서 전송되는 신호에 사용됩니다. 이 튜토리얼에서는 RC 자동차 휴머노이드 봇 등에 가장 일반적으로 사용되는 MG995 메탈 기어 서보 모터 를 사용합니다. MG995의 그림은 다음과 같습니다.
서보 모터의 색상 코드가 다를 수 있으므로 각 데이터 시트를 확인하십시오.
모든 서보 모터는 + 5V 공급 레일과 직접 작동하지만 모터가 소비하는 전류의 양에주의해야합니다. 두 개 이상의 서보 모터를 사용하려는 경우 적절한 서보 실드를 설계해야합니다. 이 튜토리얼에서는 단순히 하나의 서보 모터를 사용하여 모터를 제어하도록 PIC MCU를 프로그래밍하는 방법을 보여줍니다. 서보 모터를 다른 마이크로 컨트롤러와 연결하려면 아래 링크를 확인하십시오.
- 8051 마이크로 컨트롤러와 인터페이스하는 서보 모터
- Arduino를 사용한 서보 모터 제어
- Raspberry Pi 서보 모터 튜토리얼
- AVR 마이크로 컨트롤러가있는 서보 모터
PICF877A PIC 마이크로 컨트롤러로 서보 모터 프로그래밍:
서보 모터 프로그래밍을 시작하기 전에 서보 모터를 제어하기 위해 어떤 유형의 신호가 전송되는지 알아야합니다. 서보 모터의 신호선으로 PWM 신호를 보내도록 MCU를 프로그래밍해야합니다. 아래 그림과 같이 PWM 신호의 듀티 사이클을 읽고 서보 모터 샤프트를 각 위치에 배치하는 서보 모터 내부에 제어 회로가 있습니다.
각 서보 모터는 서로 다른 PWM 주파수 (이 튜토리얼에서 사용되는 가장 일반적인 주파수는 50HZ)에서 작동하므로 모터의 데이터 시트를 가져와 서보 모터가 작동하는 PWM주기를 확인하십시오.
Tower pro MG995의 PWM 신호에 대한 자세한 내용은 다음과 같습니다.
이것으로부터 우리는 모터가 20ms (50Hz)의 PWM 주기로 작동한다는 결론을 내릴 수 있습니다. 따라서 PWM 신호의 주파수는 50Hz로 설정되어야합니다. 이전 튜토리얼에서 설정 한 PWM의 주파수는 5KHz 였고, 같은 것을 사용하면 여기서는 도움이되지 않습니다.
하지만 여기에 문제가 있습니다. PIC16F877A 저주파 PWM 신호를 생성 할 수있는 중공 모듈을 사용한다. 데이터 시트에 따르면 PWM 주파수에 대해 설정할 수있는 가장 낮은 값은 1.2KHz입니다. 따라서 우리는 CCP 모듈 사용에 대한 아이디어를 버리고 자체 PWM 신호를 만드는 방법을 찾아야합니다.
따라서이 자습서에서는 타이머 모듈을 사용하여 50Hz 주파수 의 PWM 신호를 생성 하고 듀티 사이클을 변경하여 서보 모터의 각도를 제어합니다. 타이머 나 PIC를 사용하는 ADC를 처음 사용하는 경우이 자습서로 돌아가십시오. 이미 다뤘으므로 대부분의 내용을 건너 뛸 것입니다.
32의 프리스케일러로 Timer 모듈을 초기화하고 1us마다 오버플로합니다. 데이터 시트에 따르면 PWM의주기는 20ms입니다. 따라서 우리의 켜짐 시간과 꺼짐 시간은 정확히 20ms와 같아야합니다.
OPTION_REG = 0b00000100; // 외부 주파수를 갖는 Timer0 및 프리스케일러로서 32 TMR0 = 251; // 1us에 대한 시간 값로드 delayValue는 0-256 사이 일 수 있습니다. TMR0IE = 1; // PIE1 레지스터에서 타이머 인터럽트 비트 활성화 GIE = 1; // 글로벌 인터럽트 활성화 PEIE = 1; // 주변 장치 인터럽트 활성화
따라서 인터럽트 루틴 함수 내에서 지정된 시간 동안 핀 RB0을 켜고 리밍 시간 (20ms – on_time) 동안 끕니다. On time의 값은 Potentiometer 및 ADC 모듈을 사용하여 지정할 수 있습니다. 인터럽트는 아래와 같습니다.
oid 인터럽트 timer_isr () {if (TMR0IF == 1) // 타이머가 오버플로되었습니다 {TMR0 = 252; / * 타이머 값을로드합니다. RB0 = 1; // LED 점멸 값 보완} if (count> = (on_time + (200-on_time))) {RB0 = 0; count = 0;}}
while 루프 내 에서 ADC 모듈을 사용하여 전위차계의 값을 읽고 읽은 값을 사용하여 PWM의 온 시간을 업데이트합니다.
while (1) {pot_value = (ADC_Read (4)) * 0.039; on_time = (170-pot_value); }
이런 식으로주기가 20ms이고 전위차계를 사용하여 설정할 수있는 가변 듀티 사이클을 갖는 PWM 신호를 생성했습니다. 완전한 코드 는 아래 코드 섹션에 제공되었습니다.
이제 proteus 시뮬레이션을 사용하여 출력을 확인하고 하드웨어로 진행하겠습니다.
회로도:
이미 PWM 튜토리얼을 접했다면이 튜토리얼의 회로도는 LED 조명 대신 서보 모터를 추가하는 것을 제외하고는 동일합니다.
시뮬레이션 및 하드웨어 설정:
Proteus 시뮬레이션의 도움으로 오실로스코프를 사용하여 PWM 신호를 확인하고 서보 모터의 회전 각도를 확인할 수도 있습니다. 아래에 시뮬레이션의 몇 가지 스냅 샷이 나와 있습니다. 여기서 서보 모터의 회전 각도와 PWM 듀티 사이클은 전위차계에 따라 변경되는 것을 알 수 있습니다. 마지막에 다른 PWM에서 회전 하는 전체 비디오를 추가로 확인하십시오.
보시다시피 서보 회전 각도는 전위차계 값에 따라 변경됩니다. 이제 하드웨어 설정을 진행하겠습니다.
하드웨어 설정에서 위의 회로도와 같이 LED 보드를 제거하고 서보 모터를 추가했습니다.
하드웨어는 아래 그림과 같습니다.
아래 영상 쇼는 서보 모터 전위차계의 다양한 위치에 반응하는 방법.
그게 다야 !! 우리는 한 PIC는 마이크로 컨트롤러와 서보 모터를 인터페이스 지금 당신은 당신의 자신의 창의성을 사용하고이 용 응용 프로그램을 찾을 수 있습니다. 서보 모터를 사용하는 프로젝트가 많이 있습니다.