이 튜토리얼에서는 DC 모터를 Arduino UNO 에 인터페이스하고 PWM (Pulse Width Modulation) 개념을 사용하여 속도를 제어 할 것 입니다. 이 기능은 UNO에서 활성화되어 정전압에 대한 가변 전압을 얻습니다. PWM 방법은 여기에 설명되어 있습니다. 그림과 같이 간단한 회로를 고려하십시오.
숫자가 맞으면 버튼을 누르면 모터가 회전을 시작하고 버튼을 누를 때까지 움직이게됩니다. 이 누르는 것은 연속적이며 그림의 첫 번째 물결에 표시됩니다. 경우에 대해 버튼을 8ms 동안 눌렀다가 10ms주기에 걸쳐 2ms 동안 열리면,이 경우 버튼을 8ms 동안 만 눌렀 기 때문에 모터는 완전한 9V 배터리 전압을 경험하지 못하므로 RMS 단자 전압은 모터는 약 7V입니다. 이 감소 된 RMS 전압으로 인해 모터는 감소 된 속도로 회전합니다. 이제 10ms의 평균 턴온 = 턴온 시간 / (턴온 시간 + 턴 오프 시간), 이것은 듀티 사이클이라고하며 80 % (8 / (8 + 2))입니다.
두 번째 및 세 번째 경우에는 첫 번째 경우에 비해 버튼을 더 적게 누르는 경우가 있습니다. 이로 인해 모터 단자의 RMS 단자 전압이 더욱 감소합니다. 이 감소 된 전압으로 인해 모터 속도는 더욱 감소합니다. 듀티 사이클에 따른 속도 감소는 모터 단자 전압이 모터를 돌리기에 충분하지 않을 때까지 계속 발생합니다.
따라서 이로써 PWM을 사용하여 모터 속도를 변경할 수 있다는 결론을 내릴 수 있습니다.
더 진행하기 전에 H-BRIDGE에 대해 논의해야합니다. 이제이 회로에는 주로 두 가지 기능이 있습니다. 첫 번째는 저전력 제어 신호에서 DC 모터 를 구동하는 것이고 다른 하나는 DC 모터의 회전 방향 을 변경하는 것 입니다.
그림 1
그림 2
DC 모터의 경우 회전 방향을 변경하려면 모터의 공급 전압 극성을 변경해야한다는 것을 모두 알고 있습니다. 따라서 극성을 변경하기 위해 H 브리지를 사용합니다. 이제 위의 그림 1에는 네 개의 스위치가 있습니다. 그림 2와 같이 모터가 회전하려면 A1과 A2가 닫힙니다. 이 때문에 그림 3의 두 번째 부분 과 같이 모터를 통해 오른쪽에서 왼쪽으로 전류가 흐릅니다. 지금은 모터가 시계 방향으로 회전한다고 생각해보십시오. 이제 스위치 A1과 A2가 열리면 B1과 B2가 닫힙니다. 모터를 통과하는 전류는 1st 와 같이 왼쪽에서 오른쪽으로 흐릅니다. figure3의 일부입니다. 이 전류 흐름의 방향은 첫 번째와 반대이므로 모터 단자에서 첫 번째와 반대 전위를 볼 수 있으므로 모터가 시계 반대 방향으로 회전합니다. 이것이 H-BRIDGE가 작동하는 방식입니다. 그러나 저전력 모터는 H-BRIDGE IC L293D로 구동 할 수 있습니다.
L293D는 저전력 DC 모터를 구동하기 위해 설계된 H-BRIDGE IC이며 그림에 나와 있습니다. 이 IC는 2 개의 h- 브리지로 구성되어 있으므로 2 개의 DC 모터를 구동 할 수 있습니다. 따라서이 IC는 마이크로 컨트롤러의 신호에서 로봇의 모터를 구동하는 데 사용할 수 있습니다.
이 IC는 이전에 논의했듯이 DC 모터의 회전 방향을 변경할 수 있습니다. 이는 INPUT1 및 INPUT2에서 전압 레벨을 제어하여 수행됩니다.
핀 활성화 |
입력 핀 1 |
입력 핀 2 |
모터 방향 |
높은 |
낮은 |
높은 |
우회전 |
높은 |
높은 |
낮은 |
왼쪽으로 돌아 |
높은 |
낮은 |
낮은 |
중지 |
높은 |
높은 |
높은 |
중지 |
따라서 위의 그림과 같이 시계 방향으로 회전하려면 2A는 높고 1A는 낮아야합니다. 시계 반대 방향의 경우 1A는 높고 2A는 낮습니다.
그림에서 볼 수 있듯이 Arduino UNO에는 6PWM 채널이 있으므로이 6 개 핀 중 하나에서 PWM (가변 전압)을 얻을 수 있습니다. 이 튜토리얼에서는 PIN3을 PWM 출력으로 사용할 것입니다.
하드웨어: ARDUINO UNO, 전원 공급 장치 (5v), 100uF 커패시터, LED, 버튼 (2 개), 10KΩ 저항 (2 개).
소프트웨어: arduino IDE (Arduino nightly).
회로도
회로는 위에 표시된 회로도에 따라 브레드 보드에 연결됩니다. 그러나 LED 단자를 연결할 때주의해야합니다. 이 경우 버튼이 튀는 효과를 나타내지 만 큰 오류가 발생하지 않으므로 이번에는 걱정할 필요가 없습니다.
UNO의 PWM은 쉽습니다. 일반적인 경우에는 PWM 신호용 ATMEGA 컨트롤러를 설정하는 것이 쉽지 않습니다. 정확한 신호를 위해 많은 레지스터와 설정을 정의해야하지만 ARDUINO에서는 이러한 모든 것을 다룰 필요가 없습니다.
기본적으로 모든 헤더 파일과 레지스터는 ARDUINO IDE에 의해 미리 정의되어 있으므로 단순히 호출하기 만하면 적절한 핀에 PWM 출력이 제공됩니다.
이제 적절한 핀에서 PWM 출력을 얻으려면 세 가지 작업을해야합니다.
|
먼저 6 개의 핀에서 PWM 출력 핀을 선택해야합니다. 그런 다음 해당 핀을 출력으로 설정해야합니다.
다음으로 "analogWrite (pin, value)"함수를 호출하여 UNO의 PWM 기능을 활성화해야합니다. 여기서 'pin'은 PWM 출력이 필요한 핀 번호를 나타내며 '3'으로 표시합니다. 그래서 PIN3에서 우리는 PWM 출력을 얻고 있습니다.
값은 0 (항상 꺼짐)과 255 (항상 켜짐) 사이의 켜기 듀티 사이클입니다. 버튼을 눌러이 숫자를 늘리거나 줄일 것입니다.
UNO의 최대 해상도는 "8"이므로 0-255의 값을 더 이상 갈 수 없습니다. 그러나 "analogWriteResolution ()"명령을 사용하여 PWM의 해상도를 낮출 수 있습니다. 괄호 안에 4-8의 값을 입력하여 값을 4 비트 PWM에서 8 비트 PWM으로 변경할 수 있습니다.
스위치는 DC 모터의 회전 방향을 변경하는 것입니다.