모터 아날로그 제어 - moteo anallogeu jeeo

자유 게시판 - 마이크로 컨트롤러

아두이노 - 모터 제어(DC:direct current)

folcjin 2022. 3. 24. 20:52

320x100

반응형

# 고정자(영구자석)과 회전자(전기자)로 코일을 사용하여 구성
   > 전기자에 흐르는 전류의 방향을 전환함으로써 자력의 반발, 흡인력으로 회전

# 특징
   > 기동 토크가 크다
   > 인가전압에 대하여 회전특성이 직선적으로 비례
   > 입력전류에 대하여 출력 토크가 직선적으로 비례 (출력 효율이 좋다)
   > 가격이 저렴하다

# 제어 방식
   > 아날로그 방식 : 아날로그 신호 출력 제어 ( voltage 값으로 표현 )
   > 디지털 방식 : 디지털 신호 출력 제어 ( 0, 1로 표현 )

모터 아날로그 제어 - moteo anallogeu jeeo

### 모터 드라이버가 없는 경우
# 연결 방법

   > 총 2개 핀이 있으며 2개는 전원부 ( VCC, GND )
   > VCC-SIGNAL-DIGIAL PWM쪽에 D3번, GND

모터 아날로그 제어 - moteo anallogeu jeeo

# 소스 코드
#define  DATAPIN   D3

void setup()
{
   pinMode(DATAPIN, OUTPUT);
   Serial.begin(9600);
}

void loop()
{
   Serial.println(200);
   analogWrite(DATAPIN, 200);
   delay(100);
}

 

 

### 모터 드라이버가 있는 경우
# 특징
   > 전압 : 5V ~ 12V
   > 전류 : 2A
   > 크기 : 43mm * 43mm
   > 모터 2개까지 제어 가능

# 연결 방법
   > 총 4개 핀이 있으며 2개는 전원부 ( VCC, GND ), 1개 D2(디지털), 1개 D3(디지털)
   > VCC-5V, GND 그리고 SIGNAL-DIGIAL PWM 쪽에 D2, D3

# 모터 드라이버 ( L298N )

 

# 소스 코드
#define  DATAPIN_OUT1   D2
#define  DATAPIN_OUT2   D3
#define  DATAPIN_SPEED    D10

void setup()
{
   pinMode(DATAPIN_OUT1, OUTPUT);
   pinMode(DATAPIN_OUT2, OUTPUT);
   pinMode(DATAPIN_SPEED, OUTPUT);
   Serial.begin(9600);
}

void loop()
{
   analogWrite(DATAPIN_SPEED, 255); // 최대 속도

   digitalWrite(DATAPIN_OUT1, HIGH);   
   digitalWrite(DATAPIN_OUT2, LOW);
   delay(1000);

   // 방향을 변경하고자 하면
   //digitalWrite(DATAPIN_OUT1, LOW);   
   //digitalWrite(DATAPIN_OUT2, HIGH);
   //delay(1000);
}

320x100

반응형

사업자 정보 표시펼치기/접기

사업자 등록번호 : | TEL :

저작자표시 비영리 변경금지

DC모터는 직류 전원에 의해 회전운동을 하는 전자부품입니다. 아두이노 보드도 일정한 크기의 5V전압으로 동작하듯이 DC모터 또한 일정한 전압에 동작합니다. DC모터는 바퀴에 연결해 RC(Radio Control)카를 움직이도록 하며, 전동 드라이버가 좌우로 회전하는데 사용하는 등 다양한 분야에 적용할 수 있습니다.

모터 아날로그 제어 - moteo anallogeu jeeo

출처: https://www.ebay.com/itm/3-6-9-12pcs-DC-3V-6V-130-Miniature-DC-Motor-For-Electric-Toy-Car-Robot-DIY-Parts-/122237350158



DC모터의 속도 제어하기

아두이노 시뮬레이터에서 DC모터를 동작하는 것은 어렵지 않습니다. 하지만 실제 DC모터를 구동하려면 DC모터의 규격을 이해해야 합니다. DC모터를 적절히 사용하기 위해 알아야할 규격은 동작 전압과 전류, 분당 회전 수(RPM, Revolutions Per Minute), 토크(Torque) 등이 있습니다. 동작 전압과 전류가 충분하지 않으면 DC모터는 움직이지 않으며 분당 회전 수는 모터의 회전수를 결정하기 때문에 적용분야에 따라 속도가 중요한 경우가 있습니다. 토크는 회전력이라고 하며 물체가 회전하는데 드는 힘입니다. 토크는 모터의 회전축에 연결한 물체 또는 기어가 받는 힘보다 커야 모터가 회전할 수 있기 때문에 중요한 요소입니다. 이번 예제를 통해 가변저항과 DC모터를 이용해 모터의 회전수를 조절해 보겠습니다.



DC모터의 속도 제어하기 회로구성

모터 아날로그 제어 - moteo anallogeu jeeo

기본 구성요소에서 DC모터를 찾아 브레드보드에 배치합니다. DC모터는 2개의 단자로 구성되며 검은색과 빨간색으로 단자를 구분할 수 있습니다. 검은색은 아두이노의 그라운드에 연결하고, 빨간색은 PWM을 지원하는 디지털 핀 중 하나에 연결합니다. 여기에서는 디지털 9번 핀을 사용하였습니다. 기본 구성요소에서 가변저항을 드래그 앤 드롭으로 가져와 브레드보드에 배치하고 양 끝 단자를 각각 그라운드, 전원에 연결합니다. 가운데 단자는 아날로그 입력을 받기 위해 아두이노의 A0핀에 연결합니다.



DC모터의 속도 제어하기 스케치 코드

모터 아날로그 제어 - moteo anallogeu jeeo

스케치 코드의 4번째 줄은 디지털 9번핀을 출력모드로 설정해 DC모터의 속도를 제어하기위한 목적으로 선언합니다. 10번째 줄에서 가변저항과 연결된 아날로그 입력 핀 A0를 통해 입력 값을 받아 11번째 줄에서 map() 함수를 사용해 입력 값의 범위를 0 ~ 255로 변환하였습니다. 이는 PWM 출력으로 사용하기위한 변환 과정이며, 14번째 줄에서 analogWrite() 함수의 매개변수인 convertedValue를 통해 0 ~ 255의 범위 값으로 디지털 9번핀에 연결된 DC모터의 속도를 제어합니다. 회로구성과 스케치 코드가 완성되면 시뮬레이터 시작 버튼을 클릭해 실행 결과를 살펴보겠습니다. 초기에는 가변저항의 값이 0이기 때문에 DC모터가 동작하지 않습니다. 가변저항을 조절해 값을 변경하면 DC모터가 시계방향으로 회전하며 분당 회전 수인 RPM이 표시되는데 최솟값 0에서 최댓값 5555까지 표시되는 것을 확인할 수 있습니다.

모터 아날로그 제어 - moteo anallogeu jeeo



DC모터의 방향 제어하기

DC모터 단자에 연결된 선을 바꾸면 방향을 시계방향에서 시계 반대방향으로 변경할 수 있습니다. DC모터의 한쪽 단자는 검정색이고 다른 쪽 단자는 빨간색입니다. DC모터의 속도를 제어할 때 검정색 단자는 그라운드에 빨간색 단자는 PWM을 지원하는 디지털 핀에 연결한바 있습니다. 이 단자를 반대로 연결해보겠습니다. 즉, 검은색 단자를 PWM을 지원하는 디지털 핀에 연결하고 빨간색 단자를 그라운드에 연결하면 DC모터의 회전 방향은 시계 반대방향으로 바뀝니다. 이 원리를 이용해 슬라이드 스위치를 추가하고 스위치의 위치에 따라 방향을 제어해 보겠습니다.



DC모터의 방향 제어하기 회로구성

모터 아날로그 제어 - moteo anallogeu jeeo

DC모터와 가변저항은 “DC모터의 속도 제어하기” 예제와 동일하게 회로를 구성하면 됩니다. 슬라이드 스위치도 기본 구성요소에 포함된 것으로 3개의 단자를 가집니다. 한쪽 끝 단자는 그라운드에 연결하고 반대쪽 끝 단자는 10KΩ에 이어 전원에 연결하도록 합니다. 슬라이드 스위치의 입력은 가운데 단자로부터 읽을 수 있으며, 디지털 8번 핀에 연결해 HIGH와 LOW 값을 읽을 수 있도록 하겠습니다.



DC모터의 방향 제어하기 스케치 코드

모터 아날로그 제어 - moteo anallogeu jeeo

스케치 코드의 4번, 5번째 줄은 핀 모드를 설정하는 함수로 DC모터의 단자에 연결한 핀 번호를 입력하여 설정합니다. 하나의 핀이 아닌 두 핀 모두 연결한 이유는 출력 값을 조절해 DC모터의 회전방향을 바꿀 수 있기 때문입니다. 예를 들어, DC모터의 빨간색 단자에 HIGH 값을 주고 검정색 단자에 LOW 값을 주면 DC모터가 시계방향으로 회전합니다. 반대로 빨간색 단자에 LOW 값을 주고 검정색 단자에 HIGH 값을 주면 DC모터가 시계 반대방향으로 회전합니다. 이 원리를 응용해 스케치 코드에 analogWrite() 함수를 더해 속도까지 동시에 제어할 수 있습니다.

8번째 줄은 슬라이드 스위치의 입력 값을 받기 위해 입력 모드로 디지털 8번 핀을 사용한다는 것을 의미합니다. 14번, 15번째 줄은 가변저항으로 입력 받은 값을 아날로그 출력, 즉 PWM 기능을 사용하기 위해 입력 범위를 0 ~ 255로 변경합니다.

19번째 줄은 슬라이드 스위치의 입력 값을 읽어 inputSwitch라는 변수에 저장하고 20번째 줄부터 27번째 줄까지 inputSwitch 값에 따라 analogWrite() 함수를 사용해 DC모터의 회전 방향을 결정합니다. inputSwitch 값이 LOW인 경우는 초기상태를 의미하며 이때 시계 방향으로 회전하기 위해 DC모터의 빨간색 단자에 연결된 디지털 9번핀은 가변저항으로 읽은 값을 써 속도조절을 할 수 있도록 하며, DC모터의 검정색 단자에 연결된 디지털 10번핀은 LOW 값과 동일한 0 값을 씁니다. 마찬가지로 스위치로 입력 받은 값이 HIGH인 경우 시계 반대방향으로 DC모터를 회전하기 위해 DC모터의 빨간색 단자에 연결된 디지털 9번핀은 0값을 쓰도록 analogWrite() 함수를 사용하고, 검정색 단자에 연결된 디지털 10번 핀은 가변저항으로 읽은 값을 씁니다.

모터 아날로그 제어 - moteo anallogeu jeeo

따라서 슬라이드 스위치를 좌측으로 이동시킬 경우 RPM이 양의 정수로 표현되어 시계방향으로 회전함을 볼 수 있으며, 슬라이드 스위치를 우측으로 이동시킬 경우 RPM이 음의 정수로 표현되어 시계 반대방향으로 회전함을 볼 수 있습니다.