본문 바로가기

Dev/C언어

아두이노 DC모터와 가변저항 사용하기

728x90
반응형

오늘은 저번에 DC모터와 멀티미터를 사용했던 회로에 이어 멀티미터 대신 가변저항을 연결해보겠습니다.

 

DC모터와 멀티미터를 연결했던 회로가 궁금하신 분들은 아래 링크를 먼저 보고 와주시면 감사하겠습니다!

https://programmingandengineering.tistory.com/50

 

아두이노 DC모터와 멀티미터 사용하기

이번에는 아두이노에 DC모터를 연결하고 멀티미터로 전압을 측정해보겠습니다. 그리고, 버튼을 하나 추가해서 버튼을 누르면 모터가 작동되게 연결했습니다. 회로 DC모터 이 회로를 구성할 때, �

programmingandengineering.tistory.com

회로

트랜지스터와 가변저항을 보드에 연결하고 가변저항을 위한 전원과 각각 구성품을 위한 접지를 보드에 연결했습니다.

 

DC모터의 특성과 왜 9V배터리가 필요한지는 마찬가지로 저번 글에서 다루었기 때문에 스킵해보도록 하겠습니다.

 

가변저항 또한 전에 다루었던 내용이 있기 때문에

이 포스팅에서는 자세한 설명을 생략하고 링크를 첨부하도록 하겠습니다.

https://programmingandengineering.tistory.com/35

 

아두이노 가변저항 사용하기

이번에는 Arduino Uno에 Potentiometer, 가변저항(분압기)을 연결하여 그 값을 볼 수 있는 회로를 만들었습니다. 5V, 접지, Analog 핀을 연결해줍니다. 위 회로는 tinkercad 상에서 구현하였는데, 각 핀에 마우

programmingandengineering.tistory.com

코드

const int pin_potentio=A0;
const int pin_BJT_control=10;

void setup()
{
  pinMode(pin_BJT_control, OUTPUT);
}

void loop()
{
  int pm=analogRead(pin_potentio);
  int pwm=map(pm,0,1024,0,255);
  analogWrite(pin_BJT_control, pwm);
}

여기 int pm으로 가변저항의 아날로그 값을 읽어와 정수형 변수로 저장합니다.

 

int pwm은 pm이라는 변수 값을 0~1024값에서 0~255값으로 다시 맵핑해주어 저장하는 변수입니다.

 

아날로그출력으로 pwm의 변수 값만큼 트랜지스터로 그 값을 출력하게 됩니다.

 

전에 제 포스팅을 다 읽고 와주셨다면 이미 알고 계실거라고 생각합니다.

 

DC모터는 pwm방식으로 회전 수(rpm)을 제어할 수 있다고 말씀드렸었습니다.

 

이렇게 아날로그 방식으로 아두이노에서 받아올 수 있는 0~1024 사이의 값을 0~255 사이의 값으로

맵핑함으로써 2^8=8bit로 DC모터의 속도를 조절할 수 있게 되는 코드입니다.

 

가변저항을 최대한 낮췄을 때

가변저항의 값을 낮추게 되면 코드에 따라 0의 값이 A0핀에서 읽혀지게 되고,

트랜지스터에 들어가는 int pwm의 값도 0이 되면서 DC모터는 0rpm으로 작동하지 않게 됩니다.

 

가변저항을 최대한 높였을 때

가변저항을 최대로 높은 값을 주게 되면 A0핀에서 1024의 값을 읽게 되고,

트랜지스터에 맵핑되어 들어가는 int pwm의 값은 255가 되면서 PWM방식 최댓값이 들어가게 되므로

DC모터가 17493rpm으로 최고 속력을 내게 됩니다.

 

마치며

오늘도 저의 미숙한 글을 봐주신 분들에게 너무 감사드립니다.

 

다음 번에는 L293D 모터 드라이버 칩을 사용해 회로를 구성해보겠습니다.

 

감사합니다.

728x90
반응형

"); wcs_do();