아두이노 24V 모터 제어 - adu-ino 24V moteo jeeo

[ Original Message ]

안녕하세요. 

전동휠체어에 달 24V 브러시리스 DC 모터를 구매하려고 합니다.

rpm은 4200 정도에 감속비는 35:1 정도를 원하고 있습니다.

또한 저희가 전동휠체어를 제어하는 어플을 제작중에 있는데, CAN통신을 사용하려고합니다.

모터 제어를 위한 통신 방법 및 정보를 제공해주시는지 궁금합니다.(CAN?Serial?)

제어를 위한 프로토콜은 모터 드라이버를 통해 받아야하는건지도 알려주시면 감사하겠습니다.

[답변]

안녕하세요. 신용모터입니다.

CAN통신 또는 RS485통신 또는 아두이노 제어 또는 조이스틱 또는 무선 모두 가능합니다.

신용모터 고객센터로 전화주시어 자세한 상담을 받으시는걸 추천드립니다,

신용모터 02-2272-6230

감사합니다.

이번 게시물에서는 아두이노와 트랜지스터를 이용하여 어떻게 작은 DC모터를 제어하는지 설명하겠습니다.

아두이노 24V 모터 제어 - adu-ino 24V moteo jeeo

아두이노 아날로그 출력(PWM)을 모터의 속도를 조절하기 위하여 사용할 것입니다. 모터의 속도는 아두이노 IDE상의 시리얼 모티너 프로그램에서 입력되며 0~255의 값을 가집니다.

사용하려는 DC 모터입니다.

아두이노 24V 모터 제어 - adu-ino 24V moteo jeeo

사용하려는 PN2222 트랜지스터입니다.

아두이노 24V 모터 제어 - adu-ino 24V moteo jeeo

사용되는 다이오드 1N4001입니다.

아두이노 24V 모터 제어 - adu-ino 24V moteo jeeo

저항은 270오옴이 사용되었습니다.

브레드보드 레이아웃

브레드보드를 아래와 같이 셋업합니다. 셋업시 두가지를 살펴보아야 하는데, 첫번째로 트랜지스터가 올바르게 연결되어 있는지 확인하여야 합니다. 트랜지스터의 평평한 면이 블레드보드 오르쪽으로 오게 만들어야 합니다.

두번째로 다이오드의 줄무늬가 5V전원쪽으로 위치하여야 합니다.

사용하는 모터가 250mA이상의 전류를 소비한다면, 이것은 USB포트가 공급할 수 있는 범위가 넘서 설수 있기 때문에 USB포트 대신 전원어댑터를 아두이노에 연결하여야 합니다.

아두이노 24V 모터 제어 - adu-ino 24V moteo jeeo

위의 그림과 같이 브레드보드를 셋업합니다.

아두이노 코드

아래의 코드를 아두이노에 업로드 합니다.

  1. int motorPin =3;
  2. void setup()
  3. {
  4. pinMode(motorPin, OUTPUT);
  5. Serial.begin(9600);
  6. while(!Serial);
  7. Serial.println("Speed 0 to 255");
  8. }
  9. void loop()
  10. {
  11. if(Serial.available())
  12. {
  13. int speed = Serial.parseInt();
  14. if(speed >=0&& speed <=255)
  15. {
  16. analogWrite(motorPin, speed);
  17. }
  18. }
  19. }

트랜지스터는 스위치처럼 동작하여 모터로 가는 전력을 제어합니다. 아두이노 핀3번이 트랜지스터를 on/off하는데 사용되어 motorPin이라고 스케치에서 명명되었습니다.

스케치가 시작하면 시리얼 모니터에 제어하고 싶은 모터의 속도를 입력하라는 메세지가 뜨게 됩니다. 입력할 수 있는 값은 0에서 255까지 입니다.

아두이노 24V 모터 제어 - adu-ino 24V moteo jeeo

loop함수에서는 Serial.parseInt함수가 시리얼 모니터에 입력된 숫자를 스트링형태로 읽어 int 타입으로 변환합니다. 시리얼 모니터창에는 아무 숫자나 입력하여도 loop함수내의 if문에서 0~255사이의 값만 analogwrite합니다.

트랜지스터

DC모터는 보통 아두이노 디지털 출력 핀보다 더 많은 전력을 사용하기 때문에 직접적으로 제어를 합니다. 만약 모터를 아두이노 핀에 직접 연결한다면 아두이노 보드가 손상 받을 확률이 농후 합니다.

PN2222와 같은 트랜지스터는 아두이노의 디지털 핀에서 나오는 작은 전류를 사용하여 동작이 될 수 있기 때문에 , 스위치로 사용하여 모터와 같이 부하가 많이 걸리는 부품을 제어할 수 있습니다.

아두이노 24V 모터 제어 - adu-ino 24V moteo jeeo

트랜지스터는 3개의 다리가 있습니다. 작은 양의 전류를 베이스로 흘려보내면 전기는 콜렉터에서 에미터로 흐르게 됩니다. 베이스에 흘려 보낼 작은 전류는 아두이노 디지털 출력으로 가능합니다.

아두이노 24V 모터 제어 - adu-ino 24V moteo jeeo

위의 회로도를 보면 아두이노의 D3핀이 저항을 통하여 트랜지스터의 베이스로 연결되어 있습니다. 저항은 트랜지스터에 과도한 전류가 들어가 트랜지스터가 망가지는 것을 방지하여 주는 역활을 합니다.

모터쪽에는 다이오드가 연결되어 있습니다. 다이오는는 전기가 한방향으로만 흐르도록 만들어주는 부품입니다. 모터를 끌때, 음극 전압 스파이크가 생기고 이것은 아두이노나 트랜지스터를 망가트릴 수 있습니다. 다이오드는 모터로부터 꺼꾸로 흐르는 전류로부터 트랜지스터와 모터를 보호합니다.