서보 모터는 PWM (Pulse Width Modulation) 의 원리에 따라 작동하며 회전 각도는 제어 핀에 적용된 펄스의 지속 시간에 의해 제어됩니다. 이 튜토리얼에서는 PWM 기술을 사용하여 ATtiny13 마이크로 컨트롤러로 서보 모터를 제어합니다. 따라서 더 진행하기 전에 먼저 PWM, 서보 모터 및 Arduino Board로 ATtiny13을 프로그래밍하는 방법에 대해 배웁니다.
펄스 폭 변조 (PWM)
펄스 폭 변조 (PWM)는 디지털 소스를 사용하여 아날로그 신호를 생성하는 방법으로 정의됩니다. PWM 신호는 듀티 사이클과 주파수의 두 가지 주요 구성 요소로 구성됩니다. 이러한 구성 요소는 동작을 정의합니다. 듀티 사이클 은 신호가 높은 상태에있는 시간을 나타냅니다. 한주기를 완료하는 데 걸리는 총 시간의 백분율로 표시됩니다.
듀티 사이클 = Turn ON 시간 / (Turn ON 시간 + Turn OFF 시간)
주파수는 PWM이 사이클을 완료하는 속도와 신호가 높은 상태와 낮은 상태 사이를 전환하는 속도를 정의합니다. 100Hz의 주파수는 초당 100주기를 의미합니다. 디지털 신호를 빠른 속도로 특정 듀티 사이클로 켜고 끄면 출력이 정전압 아날로그 신호처럼 나타납니다. PWM의 강력한 이점 중 하나는 전력 손실이 매우 적다는 것입니다.
모든 서보 모터는 + 5V 전원으로 직접 작동하지만 모터가 소비하는 전류의 양에주의해야합니다. 두 개 이상의 서보 모터를 사용하는 경우 적절한 서보 실드를 설계해야합니다.
전에 Attiny13에 서보를 연결,이 서보 모터 테스터 회로의 도움으로 당신의 서보을 테스트 할 수 있습니다. 여기에서 우리는 많은 마이크로 컨트롤러와 서보 모터를 인터페이스했습니다.
- ARM7-LPC2148과 서보 모터 인터페이스
- 서보 모터와 MSP430G2 인터페이스
- Arduino로 여러 서보 모터 제어
- MPLAB 및 XC8을 사용하여 서보 모터와 PIC 마이크로 컨트롤러의 인터페이스
- Raspberry Pi를 사용한 서보 모터 제어
- Arduino Due를 사용한 서보 모터 제어
- 서보 모터와 AVR 마이크로 컨트롤러 Atmega16 인터페이스
Arduino를 사용하여 ATtiny13 프로그래밍
Attiny13은 Arduino Uno 또는 기타 Arduino 보드를 사용하여 프로그래밍 할 수 있습니다. 아래 그림과 같이 Attiny13을 Arduino Uno에 연결합니다.
- Arduino 5V – ATtiny13 핀 8
- Arduino GND – ATtiny13 핀 4
- Arduino 핀 13 – ATtiny13 핀 7
- Arduino 핀 12 – ATtiny13 핀 6
- Arduino 핀 11 – ATtiny13 핀 5
- Arduino 핀 10 – ATtiny13 핀 1
Arduino는 ATtiny13을 프로그래밍하는 프로그래머로 설정됩니다. ArduinoISP 스케치를 Arduino에 업로드하면됩니다. 이 Arduino 스케치는 Arduino IDE의 예제에서 사용할 수 있습니다. Arduino IDE를 열고 Files> Examples> ArduinoISP로 이동하십시오 .
이제 ArduinoISP 용 프로그램이 나타납니다. Arduino Uno에 프로그램을 업로드하십시오.
이제 Arduino Uno는 Attiny13을 프로그래밍 할 준비가되었습니다. 하지만 핵심 파일을 설치하여 Attiny 를 설정해야합니다. 이렇게하려면 파일 >> 아두 이노 IDE의 기본 설정 으로 이동하십시오.
그러면 새 창이 나타납니다. 그리고 " 추가 이사회 관리자 URL "에 아래 링크를 추가하고 "확인"을 클릭합니다.
“https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json”
이제 Arduino IDE에서 Tools >> Board >> Boards Manager로 이동하십시오.
그런 다음 검색 창에 'Attiny' 를 입력 한 다음 'DIY ATtiny'를 입력 한 다음 '설치' 버튼 을 클릭하는 다른 창이 팝업 됩니다 (이미 설치 했으므로 설치 버튼이 회색으로 표시됨).
ATtiny 13 프로그래밍을 시작하려면 부트 로더를 태워야합니다. 이를 위해 도구> 보드> ATtiny13으로 이동합니다 .
이제 도구> 프로세서 버전으로 이동 하여 올바른 버전의 ATtiny가 선택되었는지 확인하십시오. 칩에 따라 ATtiny13 또는 ATtiny13a를 선택하십시오.
그런 다음 도구 메뉴 하단의 부트 로더 굽기 버튼을 클릭합니다.
부트 로더를 굽고 나면 이제 ATtiny를 프로그래밍 할 준비가되었습니다. 이제 프로그램을 업로드 할 수 있습니다.
필요한 구성 요소
- ATtiny13 마이크로 컨트롤러
- 서보 모터
- 전위차계
- + 5V 배터리
- Arduino IDE
- 전선 연결
회로도 및 작동
ATtiny13과 함께 포트를 사용하여 서보 모터 를 제어하는 회로도 는 다음과 같습니다.
아래는 연결입니다
- 서보 모터 제어 핀을 ATtiny13의 핀 5에 연결합니다.
- 서보 모터의 접지를 ATtiny13의 핀 4에 연결합니다.
- 서보 모터의 VCC를 ATtiny13의 8 번 핀에 연결합니다.
- 전위차계의 중간 핀을 ATtiny13의 핀 7에 연결합니다.
- 전위차계의 첫 번째 및 세 번째 핀을 VCC 및 GND에 연결합니다.
- + 5V 배터리의 양극을 ATtiny13의 8 번 핀에 연결합니다.
- + 5V 배터리의 음극을 ATtiny13의 핀 4에 연결하십시오.
전위차계는 ATtiny13의 핀 7 (PB2)에 연결되고 서보 모터의 제어 와이어는 핀 5 (PB0)에 연결됩니다.
여기서 전위차계 값을 읽어 0에서 180 사이의 값으로 변환합니다. 그러면이 각도 값이 마이크로 초로 변환되고 계산 된 마이크로 초 지연으로 서보 모터의 제어 핀에 펄스가 제공됩니다. 이제 서보 모터는 아래 주어진 비디오에서 보여준 것처럼 전위차계의 값에 따라 회전합니다.