co:bit Training Kit 기초강좌 6: DC모터를 돌려보자

DC모터에에 대해 알아보자

모터는 배터리를 연결하면 회전을 하는 부품 입니다. 산업 현장은 물론 장난감에도 사용되는 등 아주 다양한 곳에서 이용 됩니다. 모터 중에서 우리가 흔히 볼 수 있는 것을 DC모터라고 합니다. 여기서 DC라는 것은 직류를 말합니다. 직류에 대한 설명은 이 클래스의 범위를 넘어가므로 생략합니다. 다음  사진처럼 생겼습니다. 사진의 모터는 주로 장남감에 많이 사용됩니다.

 

또한 DC모터의 회전속도를 조절 할 수 있습니다. DC모터의 회전속도를 조절하려면 DC모터에 공급하는 배터리의 전압을 조절하면 회전속도를 조절 할 수 있습니다.

co:bit Training Kit에는 아래 사진과 같이 선풍기 같은 팬이 달린 DC모터 모듈이 포함되어 있습니다. 이 모듈은 DC모터를 돌려주는 작은 칩이 달려있습니다. 이 칩은 DC모터를 돌리기 위해 핀 2개를 사용합니다. 사용자가 이 핀을 다음과 같이 제어해서 DC모터에 명령을 내립니다. 이번 클래스에서는 DC모터와 제어용 칩의 기본적인 동작을 배워보도록 하겠습니다.

 

준비물

이번 클래스의 준비물은 다음과 같습니다.

  • co:bit training kit 베이스 보드 (micro:bit 장착한 상태)
  • 마이크로 USB 케이블
  • 웹브라우저 연결 가능한 PC (맥북, 리눅스 포함) 혹은 크롬북
  • 팬 DC모터 모듈 (co:bit Training Kit에 포함되어 있습니다.)

하드웨어를 준비해 봅시다.

제일 먼저 co:bit 베이스 보드에 micro:bit를 장착을 합니다. 장착을 할 때는 micro:bit의 LED와 버튼이 위로가게 장착합니다.

 

그리고 PC와 co:bit 베이스보드를 마이크로 USB 케이블로 연결을 합니다. 그리고 PC에서 웹브라우저를 실행합니다. 웹브라우저는 마이크로소프트의 에지 혹은 익스플로러, 구글의 크롬 등 어떤 브라우저라도 상관이 없습니다.

 

이번에는 팬 DC 모터 모듈을 아래 사진과 같이 co:bit 베이스보드에 연결합니다. 제일 먼저 co:bit 베이스보드와 팬 DC 모터 모듈을 준비합니다.

 

그 다음에는 co:bit 베이스보드를 자세히 보면 “DC Motor” 라고 적힌 핀단자를 볼 수 있습니다. 여기에 DC 모터를 연결합니다.

 

연결할 때, 아래 사진처럼 DC 모터의 GND 핀에 연결된 전선이 co:bit 베이스보드의 흰색 사각형이 위치한 부분에 연결되도록 합니다.

 

 

위 사진에서 GND 핀에 연결된 빨간색 전선이 co:bit 베이스보드의 흰색 사각형이 위치한 부분에 연결된 것을 볼 수 있습니다. (단, 굳이 빨간색 전선일 필요는 없습니다.) 이와 같이 연결했다면 하드웨어 준비가 완료된 것입니다.

이와 같이 연결을 했다면 이제 회로연결은 끝이 났습니다.  회로연결이 끝이났으면 DC모터 모듈을 세워놓는 모터 스탠드를 만들어야 합니다. 모터 스탠드는 종이공작으로 만들 수 있습니다. co:bit Training Kit에 포함된 공작용 종이 중에서 “DC모터 스탠드”라는 이름이 붙여진 공작용 종이를 준비합니다. 조립을 위해서는 가위와 실리콘건 또는 풀이 필요하니 같이 준비합니다. DC모터 스탠드 조립하는 방법은 아래 동영상을 보면 됩니다.

<DC모터 스탠드 조립 동영상>

 


코딩과제 1: 버튼으로 모터 돌리기.

프로젝트 개요

이번 프로젝트에서는 co:bit  베이스 보드에 연결된 DC 모터를 버튼을 통해 왼쪽으로 돌리고, 오른쪽으로 돌리고, 멈추는 코드를 만들어 봅시다.  코드의 동작은 다음과 같습니다.

  1. 코드가 실행되면 “DC Motor” 문자열을 스크롤합니다.
  2. 그 다음 사용자의 입력을 기다립니다.
  3. 사용자가 버튼 A를 누르면 모터가 시계방향(오른쪽)으로 회전합니다.
  4. 버튼 B를 누르면 모터가 반시계방향(왼쪽)으로 회전합니다.
  5. 버튼 A+B를 같이 누르면 모터가 멈춥니다.

정확히 코딩이 되었다면 다음과 같이 동작을 할 것입니다.

 

블럭코딩의 흐름도

프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.

블럭코딩 하기

DC모터 클래스는 코딩을 하기 위해서 특별한 프로젝트를 사용해야 합니다. DC모터를 동작시키는 확장블럭이 사용되었기 때문입니다. 다음에 링크된 블럭 에디터의 프로젝트를 사용하시기 바랍니다.

https://makecode.microbit.org/_0T3bJDhsEhrC

위 링크로 가면 블럭 에디터에 빈 프로젝트가 화면에 나타날 것입니다. 하지만 다른 비어있는 프로젝트와는 달리 “Cobit-base”라는 확장블럭이 있습니다. 이 “Cobit-base” 확장블럭은 다음과 같습니다.

 

이중에서 우리는 “DC모터 멈춤” 블럭과,

 

“DC모터를 ~ 방향으로 ~ 퍼센트로 회전하기” 블럭을 이번 프로젝트에서 사용합니다.

 

“DC모터 멈춤” 블럭은 DC모터의 회전을 멈춥니다. “DC모터를  ~ 방향으로 ~ 퍼센터로 회전하기” 블럭은 DC모터의 회전 방향과 속도를 제어할 수 있습니다. 회전방향은 시계방향(CW)와 반시계 방향(CCW) 두가지가 있습니다. 회전속도는 퍼센트로 제어합니다. 100%이면 최고 속도이고 0%이면 멈춥니다. 이제 코딩을 시작해 보겠습니다. 제일 먼저 “시작하면 실행” 블럭을 코딩해 봅시다. 이 블럭에서는 다음 두가지 일을 해야 합니다.

  1. “DC Motor” 문자열을 LED스크린에 스크롤 합니다.
  2. “X” 이미지를 LED스크린에 출력합니다.

이것을 다음과 같이 블럭 코딩을 할 수 있습니다.

 

그 다음에는 “무한 반복 실행”을 코딩해야 하는데, 이번 프로젝트에서는 “무한 반복 실행”블럭에서 하는 일이 없습니다. 대신 버튼 A/B/AB가 눌러졌을 때 실행되는 코드를 만들어야 합니다. 각각의 버튼이 눌러졌을 때, 실행되어야 할 사항은 다음과 같습니다.

  1. 버튼 A가 눌러졌을 때: “<-” 아이콘을 출력, DC모터를 시계방향으로 50%로 돌리기
  2. 버튼 B가 눌러졌을 때: “->” 아이콘을 출력, DC모터를 반시계방향으로 50%로 돌리기
  3. 버튼 A/B가 동시에 눌러졌을 때: “X”아이콘을 출력, DC모터 멈춤

버튼이 눌러졌을 때, 블럭코드를 실행할 때는 다음 블럭을 사용하면 됩니다.

 

먼저 1번 사항, 버튼 A가 눌러졌을 때, 실행되는 블럭코드는 다음과 같이 코딩 될 수 있습니다.

 

그 다음에는, 버튼 B가 눌러졌을 때, 실행되는 블럭코드는 다음과 같이 코딩 될 수 있습니다.

 

그 다음에는, 버튼 A+B가 동시에 눌러졌을 때, 실행되는 블럭코드는 다음과 같이 코딩 될 수 있습니다.

 

전체 프로젝트

전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다

따라해보기
모터의 회전 속도를 50%가 아닌 다른 수치로 바꿔서 돌려 봅시다.

코딩과제 2: 포텐쇼미터로 모터 속도를 조절해보기

프로젝트 개요

DC모터 클래스는 코딩을 하기 위해서 특별한 프로젝트를 사용해야 합니다. DC모터를 동작시키는 확장블럭이 사용되었기 때문입니다. 다음에 링크된 블럭 에디터의 프로젝트를 사용하시기 바랍니다.

https://makecode.microbit.org/_0T3bJDhsEhrC

이번 프로젝트에서는 co:bit  베이스 보드에 연결된 DC 모터의 속도를 포텐쇼미터를 통해서 제어해 보겠습니다.  프로젝트 하드웨어를 준비하면서 co:bit 베이스보드에 DC모터 모듈을 연결했습니다. 그리고 포텐쇼미터로 모터를 조종해 볼 것이기 때문에 포텐쇼미터를 co:bit 베이스 보드에 연결해야 합니다. 포텐쇼미터를 co:bit 베이스 보드에 연결하는 방법은 다음과 같습니다. co:bit 베이스보드에 “Potentiometer” 라고 적힌 핀단자에 포텐쇼미터를 연결합니다.

DC모터 모듈가 포텐쇼미터를 연결한 후, 코드의 동작은 다음과 같습니다.

  1. 코드가 실행되면 “DC Motor” 문자열을 스크롤합니다.
  2. 그 다음 사용자의 입력을 기다립니다.
  3. 사용자가 버튼 A를 누르면 모터가 시계방향(오른쪽)으로 회전합니다.
  4. 버튼 B를 누르면 모터가 반시계방향(왼쪽)으로 회전합니다.
  5. 버튼 A+B를 같이 누르면 모터가 멈춥니다.

정확히 코딩이 되었다면 다음과 같이 동작을 할 것입니다.

 

블럭코딩의 흐름도

프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.

 

블럭코딩 하기

제일 먼저 “시작하면 실행” 블럭에서는  다음 2가지를 코딩해야 합니다.

  1. “Poten-motor” 문자열을 LED스크린에 출력합니다.
  2. “포텐쇼”라는 변수를 만들고, “포텐쇼”에 0을 저장합니다.

이 블럭코딩은 다음과 같이 코딩이 됩니다.

 

그 다음에는 “무한 반복 실행”을 코딩해야 합니다. “무한 반복 실행”에서는 다음 3가지를 실행해야 합니다.

  1. 포텐쇼미터 값을 읽어서 “포텐쇼” 변수에 저장합니다.
  2. “포텐쇼” 값을 LED스크린에 그래프로 그립니다.
  3. “포텐쇼”/10 값으로 DC모터를 시계방향으로 돌립니다.

먼저 포텐쇼미터 값을 읽어서 “포텐쇼” 변수에 저장하는 블럭은 다음과 같이 코딩할 수 있습니다.

 

다음 “포텐쇼” 값을 LED스크린에 그래프로 그리는 블럭코드는 다음과 같이 코딩할 수 있습니다.

 

마지막으로 “포텐쇼” 값을 10으로 나누고, 나눈 값으로 DC모터를 시계방향으로 돌립니다.  이것은 다음과 같이 코딩할 수 있습니다.

 

“포텐쇼” 값을 10으로 나누는 이유는 다음과 같습니다.

  • 포텐쇼미터의 출력 “포텐쇼”값은 0~1024 범위 입니다.
  • DC모터의 “퍼센트로 회전하기” 에 입력값은 0~100입니다.
  • 따라서 “포텐쇼”값을 글대로 “퍼센트로 회전하기”에 넣을 수 없어서 범위를 맞추기 위해서, 10으로 나눕니다.

“무한 반복 실행” 전체 블럭은 다음과 같습니다.

 

전체 프로젝트

전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다

따라해보기
“포텐쇼” 값을 10으로 나누지 말고, 20로 나눈다음 코드를 실행해 봅시다. DC모터의 속도가 10으로 나눌 때보다 더 천천히 돌아갈 것입니다.

코딩 프로젝트 3: 온도가 올라가면 모터를 돌려 온도를 낮추자. 
프로젝트 개요

DC모터 클래스는 코딩을 하기 위해서 특별한 프로젝트를 사용해야 합니다. DC모터를 동작시키는 확장블럭이 사용되었기 때문입니다. 다음에 링크된 블럭 에디터의 프로젝트를 사용하시기 바랍니다.

https://makecode.microbit.org/_0T3bJDhsEhrC

micro:bit는 온도센서를 내장하고 있습니다. 따라서 micro:bit를 통해서 주변의 온도를 측정할 수 있습니다. 이번 프로젝트에서는 주위의 온도가 올라가면 DC모터가 돌아가서 micro:bit 보드를 냉각시키는 코드를 만들어 봅시다. DC모터의 바람에 의해서 micro:bit가 냉각이 되어 일정한 온도 아래로 내려가면 DC모터가 멈추도록 코딩해 봅시다.

블럭코딩의 흐름도

프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.

 

블럭코딩 하기

전체 프로젝트

전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다

따라해보기

코딩 프로젝트 4: co:bit이 기울어지면 모터가 동작하도록 코딩하자. 

프로젝트 개요

블럭코딩의 흐름도

프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.

블럭코딩 하기

전체 프로젝트

전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다

따라해보기

응용해보기