이번에는 아두이노에 DC모터를 연결하고 멀티미터로 전압을 측정해보겠습니다.
그리고, 버튼을 하나 추가해서 버튼을 누르면 모터가 작동되게 연결했습니다.
회로
DC모터
이 회로를 구성할 때, 보통 다른 구성품들은 보드에 있는 5V 전압을 연결해주는데
DC모터는 9V 배터리를 따로 연결했습니다.
DC모터가 전력을 많이 필요로 하기 때문에 5V 선을 연결하면 모터의 출력이 낮거나,
연결되어 있는 다른 구성품들의 출력이 낮아질 수 있습니다.
그러다 보니 외부 전원을 제어할 트랜지스터를 사용하게 되었습니다.
이번 회로에 사용된 트랜지스터는 NPN 트랜지스터입니다.
또, DC모터는 두 개의 단자만 가지고 전원과 접지를 연결하는 방법에 따라 정회전과 역회전이 결정됩니다.
속도를 조절한다면 PWM 방식으로 할 수 있습니다.
멀티미터
멀티미터는 보시다시피 스위치에 연결하여 스위치의 전압을 측정하고,
0V와 5V일 때의 DC모터 동작을 관찰할 수 있게 했습니다.
코드
const int pin_switch=12;
const int pin_BJT_control=10;
void setup()
{
pinMode(pin_switch, INPUT_PULLUP);
pinMode(pin_BJT_control, OUTPUT);
}
void loop()
{
int sw=digitalRead(pin_switch);
digitalWrite(pin_BJT_control, !sw);
}
코드는 전혀 복잡할 게 없다고 봐요.
pinMode함수 두 개로 스위치와 트랜지스터 모드를 설정해주었고,
loop함수에서 sw라는 변수를 선언하고 스위치의 값을 digitalRead했습니다.
즉, 누르지 않았을 때는 INPUT_PULLUP모드로 설정되어 있기 때문에 HIGH값으로 읽혀지겠죠.
그리고, digitalWrite로 트랜지스터를 스위치의 반대 상태로 동작시키는 것입니다.
스위치가 HIGH라면 트랜지스터의 동작은 LOW가 되겠죠.
여기서 트랜지스터를 연결한 핀은 베이스단과 연결되어 있습니다.
그리고 스위치가 LOW라면 트랜지스터는 HIGH가 될겁니다.
따라서 스위치를 누르면 트랜지스터에 따라 DC모터가 동작을 하게 됩니다.
스위치를 누르지 않았을 때
스위치가 INPUT_PULLUP으로 설정되어 있어 기준 전압이 5V인 모습이고 모터도 0rpm으로 동작하지 않는 모습입니다.
스위치를 누르고 있을 때
반대로 스위치가 눌리면서 전압이 0V가 되고 DC모터가 17552rpm으로 동작하는 모습입니다.
마치며
다음 아두이노 글은 DC모터와 가변저항을 연결해 볼 생각이구요.
오늘도 부족한 저의 글을 봐주신 분들께 감사드립니다.
'Dev > C언어' 카테고리의 다른 글
아두이노 L293D 모터 드라이버 사용하기 (5) | 2020.10.08 |
---|---|
아두이노 DC모터와 가변저항 사용하기 (0) | 2020.08.31 |
아두이노 가변저항으로 밝기 제어하기 (0) | 2020.08.24 |
아두이노 조도 센서 사용하기 (0) | 2020.08.22 |
아두이노 충돌 경보기 만들기 (0) | 2020.08.12 |