오늘은 저번에 DC모터와 멀티미터를 사용했던 회로에 이어 멀티미터 대신 가변저항을 연결해보겠습니다.
DC모터와 멀티미터를 연결했던 회로가 궁금하신 분들은 아래 링크를 먼저 보고 와주시면 감사하겠습니다!
https://programmingandengineering.tistory.com/50
회로
트랜지스터와 가변저항을 보드에 연결하고 가변저항을 위한 전원과 각각 구성품을 위한 접지를 보드에 연결했습니다.
DC모터의 특성과 왜 9V배터리가 필요한지는 마찬가지로 저번 글에서 다루었기 때문에 스킵해보도록 하겠습니다.
가변저항 또한 전에 다루었던 내용이 있기 때문에
이 포스팅에서는 자세한 설명을 생략하고 링크를 첨부하도록 하겠습니다.
https://programmingandengineering.tistory.com/35
코드
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 모터 드라이버 칩을 사용해 회로를 구성해보겠습니다.
감사합니다.
'Dev > C언어' 카테고리의 다른 글
아두이노 L293D 모터 드라이버 사용하기 (5) | 2020.10.08 |
---|---|
아두이노 DC모터와 멀티미터 사용하기 (0) | 2020.08.25 |
아두이노 가변저항으로 밝기 제어하기 (0) | 2020.08.24 |
아두이노 조도 센서 사용하기 (0) | 2020.08.22 |
아두이노 충돌 경보기 만들기 (0) | 2020.08.12 |