DC 모터는 로봇 공학 및 전자 프로젝트에서 가장 많이 사용되는 모터입니다. DC 모터의 속도를 제어하기 위해 온도에 따라 자동으로 속도를 제어 할 수있는 등 다양한 방법이 있지만 이번 프로젝트에서는 PWM 방식을 사용하여 DC 모터의 속도를 제어합니다. 이 Arduino Motor Speed Control 프로젝트 에서 속도는 전위차계의 손잡이를 돌려서 제어 할 수 있습니다.
펄스 폭 변조:
PWM이란 무엇입니까? PWM은 전압이나 전력을 제어 할 수있는 기술입니다. 더 간단하게 이해하기 위해 모터 구동에 5V를 적용하면 모터가 약간의 속도로 움직입니다. 이제 적용된 전압을 2로 줄이면 모터에 3V를 적용하면 모터 속도도 감소합니다. 이 개념은 프로젝트에서 PWM을 사용하여 전압을 제어하는 데 사용됩니다. 이 기사에서는 PWM에 대해 자세히 설명했습니다. 또한 PWM이 LED의 밝기를 제어하는 데 사용되는 회로를 확인하십시오: 1W LED 조광기.
% 듀티 사이클 = (TON / (TON + TOFF)) * 100 여기서, T ON = 구형파의 HIGH 시간 T OFF = 구형파의 LOW 시간
이제 그림의 스위치가 일정 시간 동안 지속적으로 닫히면 해당 시간 동안 모터가 계속 켜집니다. 스위치가 8ms 동안 닫히고 10ms주기 동안 2ms 동안 열리면 모터는 8ms 시간에만 ON됩니다. 이제 10ms에 걸친 평균 단자 = Turn ON 시간 / (Turn ON 시간 + Turn OFF 시간), 이것을 듀티 사이클 이라고 하며 80 % (8 / (8 + 2))이므로 평균 출력 전압은 배터리 전압의 80 %입니다. 이제 육안으로는 모터가 8ms 동안 켜져 있고 2ms 동안 꺼져있는 것을 볼 수 없으므로 DC 모터가 80 % 속도로 회전하는 것처럼 보입니다.
두 번째 경우 스위치는 5ms 동안 닫히고 10ms 동안 5ms 동안 열리므로 출력의 평균 단자 전압은 배터리 전압의 50 %가됩니다. 배터리 전압이 5V이고 듀티 사이클이 50 %이므로 평균 단자 전압은 2.5V가됩니다.
세 번째 경우 듀티 사이클은 20 %이고 평균 단자 전압은 배터리 전압의 20 %입니다.
우리는 많은 프로젝트에서 Arduino와 함께 PWM을 사용했습니다.
- PWM을 사용하는 Arduino 기반 LED 조광기
- Arduino를 사용한 온도 제어 팬
- Arduino를 사용한 DC 모터 제어
- Arduino 및 TRIAC를 사용한 AC 팬 속도 제어
PWM을 기반으로 한 다양한 프로젝트를 통해 PWM에 대해 자세히 알아볼 수 있습니다.
필요한 재료
- Arduino UNO
- DC 모터
- 트랜지스터 2N2222
- 전위차계 100k ohm
- 커패시터 0.1uF
- 브레드 보드
- 점프 와이어
회로도
PWM을 사용 하는 Arduino DC 모터 속도 제어의 회로도 는 다음과 같습니다.
코드 및 설명
전위차계를 사용 하는 Arduino DC 모터 제어 의 전체 코드 는 끝에 제공됩니다.
아래 코드에서는 변수 c1과 c2를 초기화하고 전위차계 출력에 아날로그 핀 A0을 할당 하고 'pwm'에 12 번째 핀을 할당했습니다.
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
이제 아래 코드에서 핀 A0을 입력으로 설정 하고 12 (PWM 핀)를 출력으로 설정합니다.
void setup () { pinMode (pwmPin, OUTPUT); // 12 번 핀을 출력으로 선언 pinMode (pot, INPUT); // A0 핀을 입력으로 선언 }
이제 void loop ()에서 analogRead (pot)를 사용하여 아날로그 값 (A0에서)을 읽고 변수 c2에 저장합니다. 그런 다음 1024에서 c2 값을 빼고 결과를 c1에 저장합니다. 그런 다음 Arduino 의 PWM 핀 12 번째 를 HIGH로 만들고 값 c1의 지연 후 해당 핀을 LOW로 만듭니다. 다시 말하지만, 값 c2의 지연 후 루프가 계속됩니다.
1024에서 Analog 값을 뺀 이유는 Arduino Uno ADC 가 10 비트 해상도이기 때문입니다 (따라서 0-2 ^ 10 = 1024 값의 정수 값). 즉, 0 ~ 5V 사이의 입력 전압을 0 ~ 1024 사이의 정수 값으로 매핑합니다. 따라서 입력 anlogValue 를 (5/1024)에 곱하면 입력 전압의 디지털 값을 얻습니다. Arduino에서 ADC 입력을 사용하는 방법을 여기에서 알아보십시오.
void loop () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // 12 번 핀을 HIGH로 설정합니다. delayMicroseconds (c1); // c1을 기다립니다 uS (하이 타임) digitalWrite (pwmPin, LOW); // 12 번 핀 설정 LOW delayMicroseconds (c2); // c2 uS를 기다립니다 (낮은 시간) }
Arduino를 이용한 DC 모터의 속도 제어
이 회로에서 DC 모터의 속도를 제어하기 위해 100K ohm 전위차계를 사용하여 PWM 신호의 듀티 사이클을 변경합니다. 100K 옴 전위차계는 Arduino UNO의 아날로그 입력 핀 A0에 연결되고 DC 모터는 Arduino 의 12 번째 핀 (PWM 핀)에 연결됩니다. Arduino 프로그램의 작동은 아날로그 핀 A0에서 전압을 읽기 때문에 매우 간단합니다. 아날로그 핀의 전압은 전위차계를 사용하여 변경됩니다. 필요한 계산을 수행 한 후 그에 따라 듀티 사이클이 조정됩니다.
예를 들어, 256 값을 아날로그 입력에 공급하면 HIGH 시간은 768ms (1024-256)이고 LOW 시간은 256ms가됩니다. 따라서 단순히 듀티 사이클이 75 %임을 의미합니다. 우리의 눈에는 이러한 고주파 진동이 보이지 않고 모터가 75 %의 속도로 계속 켜져있는 것처럼 보입니다. 이것이 Arduino를 사용하여 모터 속도 제어를 수행하는 방법 입니다.