본문 바로가기

세미나/소프트웨어 세미나

[세미나] 4차시 - 아두이노 기초(모터 & 모터 드라이버, 인터럽트)

반응형

 

 

☞ 진행 날짜 : 2022.07.27
☞ 진행자 : 이광진
☞ 기록자 : 야호선종
☞ IDE : Arduino 1.8.12
☞ 준비물 : PC, Arduino UNO R3, 브레드보드, DC 모터, 모터 드라이버, 버튼

 

 

 


목차

 1. 모터 & 모터 드라이버

 2. 인터럽트

 

 

 


 

 

 

 

 

 

 

 

 

 

 

① 모터 & 모터 드라이버

 

 

세미나 진행자 이광진 PPT 中

 

 

 

모터란?

모터는 전기 에너지로부터 회전력을 얻는 기계를 의미한다. 위 PPT에 있는 그림은 아두이노를 사용하면서 자주 보게 될 소형 기어드 모터(DC 모터 + 기어박스)와 L298N 모터 드라이버이다. 모터의 종류는 엔코더 모터, 기어드 모터, 서보모터, 스텝 모터 등 매우 다양한데 이는 어떻게 작동하는지에 따라 이름이 다르게 붙여졌기 때문이다.

 

 

세미나 진행자 이광진 PPT 中

 

 

전원을 넣어주면 브러시에 전류가 흘러 코일이 감긴 회전자로 전달되고, 이 전류로부터 회전자가 회전하게 된다. 회전자 밖의 전자석도 같이 회전하게 되는 것이 모터의 원리이다. 

 

 

 

 

 

모터 드라이버란?

 

세미나 진행자 이광진 PPT 中

 

 

아두이노와 DC 모터를 사용할 때 특히, 다수의 모터를 사용할 때 모터가 잠깐 돌았다가 멈추는 경우가 있다. 오래된 선풍기가 돌지 않는 경우에는 모터 샤프트에 구리스를 조금 발라줌으로써 해결되는데, 아두이노는 그렇지 않다. 전압이 문제일까? 그것은 아니다. 아두이노는 기본적으로 5V 전압을 받든, 9V 전압을 받든 출력 전압은 5V이다. 전압 문제가 아니라면, 전류의 문제이다. 아두이노의 디지털 핀에는 20mA 이상의 전류를 흘려주면 보드에 손상이 갈 수 있다. LED 점멸을 할 때 330Ω 저항을 사용하는 것도 전류 문제에 있다. 결과적으로 흐르는 전기의 양이 적어 다수의 모터를 동시에 돌릴 수 없는 것이다.

 

이때, 지속적으로 일정한 전류를 흘려주는 것이 있는데, 그것이 모터 드라이버라 하는 제품이다. 꼭 기억하자. 다수의 모터를 사용할 때는 무조건 모터 드라이버가 필요하다. 그리고 모터 드라이버를 구매할 때 허용 전압과 출력 전류를 확인하고 구매하자. [동아리에서 많이 사용했던 모터 드라이버는 MDD10A 제품인데 이는 허용 전류가 10A임을 의미한다. ]

 

모터 드라이버는 일정한 전류를 흘려주는 것뿐만 아니라 모터를 제어할 때 방향을 바꿔주거나 속도를 조절해주는 기능도 있다. 아두이노를 배우다 보면 RC카 만들기를 해보게 될 텐데 모터 드라이버를 사용하는 방법을 익혀두면 RC카를 만들 때 좋을 것이다.

 

 

 

 


② 인터럽트

※ 인터럽트란?

특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능을 의미한다.

 

 

세미나 진행자 이광진 PPT 中

 

 

보통 아두이노를 배운 사람이 인터럽트를 배웠다고 하면, 배울 거 다 배웠다고 얘기한다. 좋은 기능이면서도 그만큼 사용하기가 어렵다.

 

 

세미나 진행자 이광진 PPT 中

 

 

 

 

☞ 아두이노 인터럽트 함수

 

출처 : https://www.arduino.cc/reference/ko/language/functions/external-interrupts/attachinterrupt/

 

 

// 아두이노 인터럽트 내장함수
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)

 

 

◎ pin : 인터럽트 핀 번호(보드마다 쓸 수 있는 핀 번호가 다르다. - 우노 보드 기준 2, 3번 핀)

 

◎ ISR : 인터럽트가 생기면 부를 함수(매개변수 X, 반환 X)

 

◎ mode : 인터럽트가 언제 발생하는지(HIGH, LOW, RISING, FALLING, CHANGE)

 

 

 

 

 

☞ 인터럽트 함수 세번째 매개변수 -  Mode의 종류

 

 

 

 

아두이노는 코드를 처리하다가 Mode에 맞는 트리거를 발견하면 인터럽트가 생기고 인터럽트 함수 두 번째 매개변수 ISR에 삽입한 함수를 실행하게 된다. 위에 간단한 0, 1로 이루어진 2차원 그래프가 있다. HIGH, LOW는 1이나 0 상태에, RISING은 0에서 1이 될 때, FALLING은 1에서 0이 될 때, CHANGE는 값이 바뀔 때(전압이 바뀔 때)를 트리거로 ISR를 호출하게 된다.

 

나중에 알고리즘 공부를 하면 작업 스케쥴링에 대해서 배우게 될 텐데, 어느 프로그래밍을 하든 이러한 순서들을 미리 세워보는 과정은 필요하다. 인터럽트는 그 순서에서 사용자가 돌발적으로 수행해야하는 작업들을 끼워넣거나 하는데 유용하다. 아래에 있는 예제를 따라해보자.

 

 

 

 

 

  인터럽트 예제

 

세미나 진행자 이광진 PPT 中

 

 

 

 

※ 비밀결사대 앙치킨

 

 

 

 

 

반응형