<h3 xmlns="http://www.w3.org/1999/xhtml" id="sites-page-title-header" align="left" style="font-size: 1.8em; margin: 0px; padding-left: 10px; padding-right: 10px; color: #444444; background: rgb(255, 255, 255); font-family: Arial, Verdana, sans-serif;"><span id="sites-page-title" dir="ltr" tabindex="-1" style="outline: none;">[아두이노 강좌] 13. 아두이노를 사용하여 DC모터 제어하기</span></h3>
<div id="sites-canvas-main" class="sites-canvas-main" style="background-color: #ffffff; overflow: hidden; min-height: 150px; padding-bottom: 5px; padding-top: 15px; color: #444444; font-family: Arial, Verdana, sans-serif; font-size: 13.3333px;">
   <div id="sites-canvas-main-content">
      <table xmlns="http://www.w3.org/1999/xhtml" cellspacing="0" class="sites-layout-name-one-column sites-layout-hbox" style="width: 969px; table-layout: fixed; margin: 0px;">
         <tbody>
            <tr>
               <td class="sites-layout-tile sites-tile-name-content-1" style="vertical-align: top; padding: 10px;">
                  <div dir="ltr">
                     <div style="padding: 0px 10px 30px; font-size: 14px; line-height: 16px; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; color: #525252;">
                        <div style="padding-bottom: 20px; width: 694px;">
                           <p style="padding: 0px;">이번 게시물에서는&nbsp;<a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>와 트랜지스터를 이용하여 어떻게 작은 DC모터를 제어하는지 설명하겠습니다.</p>
                           </div>
                        <div style="padding-bottom: 20px; margin: 0px; width: 694px;">
                           <div style="text-align: center; margin: 0px auto; max-width: 75%;"><img alt="overview.jpg" src="http://vctec.co.kr//web/wiki/arduino/tutorial/dcmotorcontrol/overview.jpg" width="600" style="border-width: 0px; max-width: 100%; height: auto; vertical-align: middle;" /></div>
                           </div>
                        <div style="padding-bottom: 20px; width: 694px;">
                           <p style="padding: 0px;"><a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>&nbsp;아날로그 출력(PWM)을 모터의 속도를 조절하기 위하여 사용할 것입니다. 모터의 속도는&nbsp;<a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>&nbsp;IDE상의 시리얼 모티너 프로그램에서 입력되며 0~255의 값을 가집니다.</p>
                           <p style="padding: 0px;">&nbsp;</p>
                           <p style="padding: 0px;">사용하려는 DC 모터입니다.</p>
                           <p style="padding: 0px;">&nbsp;</p>
                           <p style="padding: 0px;"><span style="margin: 0px; width: 296px; max-width: 360px;"><img alt="dc_motor.jpg" src="http://vctec.co.kr//web/wiki/arduino/tutorial/dcmotorcontrol/dc_motor.jpg" style="border-width: 0px; max-width: 100%; height: auto; vertical-align: middle;" /></span></p>
                           <p style="padding: 0px;">&nbsp;</p>
                           <p style="padding: 0px;">사용하려는 PN2222 트랜지스터입니다.</p>
                           <p style="padding: 0px;">&nbsp;</p>
                           <p style="padding: 0px;"><span style="margin: 0px; width: 296px; max-width: 360px;"><img alt="transistor.jpg" src="http://vctec.co.kr//web/wiki/arduino/tutorial/dcmotorcontrol/transistor.jpg" style="border-width: 0px; max-width: 100%; height: auto; vertical-align: middle;" /></span></p>
                           <p style="padding: 0px;">&nbsp;</p>
                           <p style="padding: 0px;">사용되는 다이오드 1N4001입니다.</p>
                           <p style="padding: 0px;"><img alt="" src="http://vctec.co.kr//web/wiki/arduino/tutorial/dcmotorcontrol/diode.jpg" /></p>
                           <p style="padding: 0px;">&nbsp;</p>
                           <p style="padding: 0px;">저항은 270오옴이 사용되었습니다.</p>
                           </div>
                        </div>
                     <h1 style="border-bottom: 1px solid rgb(231, 231, 231); padding-bottom: 0px; margin: 0px 0px 5px; width: 714px; display: inline-block; font-size: 20px; line-height: 40px; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; color: #525252;"><a name="TOC--" style="color: #0033cc; text-decoration-line: underline;"></a><span style="padding-left: 10px; max-width: 65%; float: left;">브레드보드 레이아웃</span></h1>
                     <div style="padding: 0px 10px 30px; font-size: 14px; line-height: 16px; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; color: #525252;">
                        <div style="padding-bottom: 20px; width: 694px;">
                           <p style="padding: 0px 0px 10px;">브레드보드를 아래와 같이 셋업합니다. 셋업시 두가지를 살펴보아야 하는데, 첫번째로 트랜지스터가 올바르게 연결되어 있는지 확인하여야 합니다. 트랜지스터의 평평한 면이 블레드보드 오르쪽으로 오게 만들어야 합니다.</p>
                           <p style="padding: 0px 0px 10px;">두번째로 다이오드의 줄무늬가 5V전원쪽으로 위치하여야 합니다.</p>
                           </div>
                        <div style="width: 694px;">
                           <div style="border-width: 1px; border-style: solid; border-color: #eed3d7; padding: 8px 35px 8px 40px; background-color: #f2dede; margin-bottom: 20px; color: #b94a48; border-radius: 0px;">사용하는 모터가 250mA이상의 전류를 소비한다면, 이것은 USB포트가 공급할 수 있는 범위가 넘서 설수 있기 때문에 USB포트 대신 전원어댑터를&nbsp;<a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>에 연결하여야 합니다.</div>
                           </div>
                        <div style="padding-bottom: 20px; margin: 0px; width: 694px;">
                           <div style="text-align: center; margin: 0px auto; max-width: 75%;"><span style="margin: 0px auto; max-width: 75%;"><img alt="breadboard.jpg" src="http://vctec.co.kr//web/wiki/arduino/tutorial/dcmotorcontrol/breadboard.jpg" width="600" style="border-width: 0px; max-width: 100%; height: auto; vertical-align: middle;" /></span></div>
                           </div>
                        <div style="padding-bottom: 20px; width: 694px;">
                           <p style="padding: 0px;">위의 그림과 같이 브레드보드를 셋업합니다.</p>
                           </div>
                        </div>
                     <h1 style="border-bottom: 1px solid rgb(231, 231, 231); padding-bottom: 0px; margin: 0px 0px 5px; width: 714px; display: inline-block; font-size: 20px; line-height: 40px; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; color: #525252;"><a name="TOC--1" style="color: #0033cc; text-decoration-line: underline;"></a><span style="padding-left: 10px; max-width: 65%; float: left;"><a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>&nbsp;코드</span></h1>
                     <div style="padding: 0px 10px 30px; font-size: 14px; line-height: 16px; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; color: #525252;">
                        <div style="padding-bottom: 20px; width: 694px;">
                           <p style="padding: 0px;">아래의 코드를&nbsp;<a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>에 업로드 합니다.</p>
                           </div>
                        <div>
                           <ol style="list-style-type: none; padding: 0px; margin: 0px; font-size: 13px; line-height: 15px; font-family: Consolas, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace; white-space: pre; color: #333333;">
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #1e347b;">int</span><span style="color: #48484c;"> motorPin </span><span style="color: #93a1a1;">=</span><span style="color: #48484c;"></span><span style="color: #195f91;">3</span><span style="color: #93a1a1;">;</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #1e347b;">void</span><span style="color: #48484c;"> setup</span><span style="color: #93a1a1;">()</span><span style="color: #48484c;"></span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #93a1a1;">{</span><span style="color: #48484c;"></span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #48484c;"><span style="color: teal;"><span style="color: #48484c;"></span></span>    pinMode</span><span style="color: #93a1a1;">(</span><span style="color: #48484c;">motorPin</span><span style="color: #93a1a1;">,</span><span style="color: #48484c;"> OUTPUT</span><span style="color: #93a1a1;">);</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: teal;"><span style="color: #48484c;"></span>Serial</span><span style="color: #93a1a1;">.</span><span style="color: #1e347b;">begin</span><span style="color: #93a1a1;">(</span><span style="color: #195f91;">9600</span><span style="color: #93a1a1;">);</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #1e347b;"><span style="color: teal;"><span style="color: #48484c;"></span></span>while</span><span style="color: #48484c;"></span><span style="color: #93a1a1;">(!</span><span style="color: #48484c;"></span><span style="color: teal;">Serial</span><span style="color: #93a1a1;">);</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: teal;"><span style="color: #48484c;"></span>Serial</span><span style="color: #93a1a1;">.</span><span style="color: #48484c;">println</span><span style="color: #93a1a1;">(</span><span style="color: #dd1144;">"Speed 0 to 255"</span><span style="color: #93a1a1;">);</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #93a1a1;">}</span><span style="color: #48484c;"></span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #1e347b;">void</span><span style="color: #48484c;"> loop</span><span style="color: #93a1a1;">()</span><span style="color: #48484c;"></span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #93a1a1;">{</span><span style="color: #48484c;"></span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #1e347b;"><span style="color: teal;"><span style="color: #48484c;"></span></span>if</span><span style="color: #48484c;"></span><span style="color: #93a1a1;">(</span><span style="color: teal;">Serial</span><span style="color: #93a1a1;">.</span><span style="color: #48484c;">available</span><span style="color: #93a1a1;">())</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #93a1a1;"><span style="color: teal;"><span style="color: #48484c;"></span></span>{</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #1e347b;"><span style="color: teal;"><span style="color: #48484c;"><span style="color: teal;"><span style="color: #48484c;"></span></span></span></span>int</span><span style="color: #48484c;"> speed </span><span style="color: #93a1a1;">=</span><span style="color: #48484c;"></span><span style="color: teal;">Serial</span><span style="color: #93a1a1;">.</span><span style="color: #48484c;">parseInt</span><span style="color: #93a1a1;">();</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #1e347b;"><span style="color: teal;"><span style="color: #48484c;"><span style="color: teal;"><span style="color: #48484c;"></span></span></span></span>if</span><span style="color: #48484c;"></span><span style="color: #93a1a1;">(</span><span style="color: #48484c;">speed </span><span style="color: #93a1a1;">&gt;=</span><span style="color: #48484c;"></span><span style="color: #195f91;">0</span><span style="color: #48484c;"></span><span style="color: #93a1a1;">&amp;&amp;</span><span style="color: #48484c;"> speed </span><span style="color: #93a1a1;">&lt;=</span><span style="color: #48484c;"></span><span style="color: #195f91;">255</span><span style="color: #93a1a1;">)</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #93a1a1;"><span style="color: teal;"><span style="color: #48484c;"><span style="color: teal;"><span style="color: #48484c;"></span></span></span></span>{</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #48484c;"><span style="color: teal;"><span style="color: #48484c;"><span style="color: teal;"><span style="color: #48484c;"><span style="color: teal;"><span style="color: #48484c;"></span></span></span></span></span></span>analogWrite</span><span style="color: #93a1a1;">(</span><span style="color: #48484c;">motorPin</span><span style="color: #93a1a1;">,</span><span style="color: #48484c;"> speed</span><span style="color: #93a1a1;">);</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #93a1a1;"><span style="color: teal;"><span style="color: #48484c;"><span style="color: teal;"><span style="color: #48484c;"></span></span></span></span>}</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #93a1a1;"><span style="color: teal;"><span style="color: #48484c;"></span></span>}</span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"><span style="color: #93a1a1;">}</span><span style="color: #48484c;"></span></li>
                              <li style="line-height: 18px; padding-left: 0px; color: #bebec5;"></li>
                              </ol>
                           </div>
                        <div style="padding-bottom: 20px; width: 694px;">
                           <p style="padding: 0px 0px 10px;">트랜지스터는 스위치처럼 동작하여 모터로 가는 전력을 제어합니다.&nbsp;<a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>&nbsp;핀3번이 트랜지스터를 on/off하는데 사용되어 motorPin이라고 스케치에서 명명되었습니다.</p>
                           <p style="padding: 0px 0px 10px;">스케치가 시작하면 시리얼 모니터에 제어하고 싶은 모터의 속도를 입력하라는 메세지가 뜨게 됩니다. 입력할 수 있는 값은 0에서 255까지 입니다.</p>
                           </div>
                        <div style="padding-bottom: 20px; margin: 0px; width: 694px;">
                           <div style="text-align: center; margin: 0px auto; max-width: 75%;"><img alt="serial_monitor.jpg" src="http://vctec.co.kr//web/wiki/arduino/tutorial/dcmotorcontrol/serial_monitor.jpg" style="border-width: 0px; max-width: 100%; height: auto; vertical-align: middle;" /></div>
                           </div>
                        <div style="padding-bottom: 20px; width: 694px;">
                           <p style="padding: 0px 0px 10px;">loop함수에서는 Serial.parseInt함수가 시리얼 모니터에 입력된 숫자를 스트링형태로 읽어 int 타입으로 변환합니다. 시리얼 모니터창에는 아무 숫자나 입력하여도 loop함수내의 if문에서 0~255사이의 값만 analogwrite합니다.</p>
                           </div>
                        </div>
                     <h1 style="border-bottom: 1px solid rgb(231, 231, 231); padding-bottom: 0px; margin: 0px 0px 5px; width: 714px; display: inline-block; font-size: 20px; line-height: 40px; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; color: #525252;"><a name="TOC--2" style="color: #0033cc; text-decoration-line: underline;"></a><span style="padding-left: 10px; max-width: 65%; float: left;">트랜지스터</span></h1>
                     <div style="padding: 0px 10px 30px; font-size: 14px; line-height: 16px; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; color: #525252;">
                        <div style="padding-bottom: 20px; width: 694px;">
                           <p style="padding: 0px 0px 10px;">DC모터는 보통&nbsp;<a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>&nbsp;디지털 출력 핀보다 더 많은 전력을 사용하기 때문에 직접적으로 제어를 합니다. 만약 모터를&nbsp;<a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>&nbsp;핀에 직접 연결한다면&nbsp;<a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>&nbsp;보드가 손상 받을 확률이 농후 합니다.</p>
                           <p style="padding: 0px 0px 10px;">PN2222와 같은 트랜지스터는&nbsp;<a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>의 디지털 핀에서 나오는 작은 전류를 사용하여 동작이 될 수 있기 때문에 , 스위치로 사용하여 모터와 같이 부하가 많이 걸리는 부품을 제어할 수 있습니다.</p>
                           </div>
                        <div style="padding-bottom: 20px; margin: 0px; width: 694px;">
                           <div style="text-align: center; margin: 0px auto; max-width: 75%;"><img alt="transistor.png" src="http://vctec.co.kr//web/wiki/arduino/tutorial/dcmotorcontrol/transistor.png" width="600" style="border-width: 0px; max-width: 100%; height: auto; vertical-align: middle;" /></div>
                           </div>
                        <div style="padding-bottom: 20px; width: 694px;">
                           <p style="padding: 0px 0px 10px;">트랜지스터는 3개의 다리가 있습니다. 작은 양의 전류를 베이스로 흘려보내면 전기는 콜렉터에서 에미터로 흐르게 됩니다. 베이스에 흘려 보낼 작은 전류는&nbsp;<a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>&nbsp;디지털 출력으로 가능합니다.</p>
                           </div>
                        <div style="padding-bottom: 20px; margin: 0px; width: 694px;">
                           <div style="text-align: center; margin: 0px auto; max-width: 75%;"><img alt="schematic.jpg" src="http://vctec.co.kr//web/wiki/arduino/tutorial/dcmotorcontrol/schematic.jpg" width="600" style="border-width: 0px; max-width: 100%; height: auto; vertical-align: middle;" /></div>
                           </div>
                        <div style="padding-bottom: 20px; width: 694px;">
                           <p style="padding: 0px 0px 10px;">위의 회로도를 보면&nbsp;<a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>의 D3핀이 저항을 통하여 트랜지스터의 베이스로 연결되어 있습니다. 저항은 트랜지스터에 과도한 전류가 들어가 트랜지스터가 망가지는 것을 방지하여 주는 역활을 합니다.</p>
                           <p style="padding: 10px 0px;">모터쪽에는 다이오드가 연결되어 있습니다. 다이오는는 전기가 한방향으로만 흐르도록 만들어주는 부품입니다. 모터를 끌때, 음극 전압 스파이크가 생기고 이것은&nbsp;<a href="http://vctec.co.kr/front/php/category.php?cate_no=145" target="_blank" style="color: #0033cc;">아두이노</a>나 트랜지스터를 망가트릴 수 있습니다. 다이오드는 모터로부터 꺼꾸로 흐르는 전류로부터 트랜지스터와 모터를 보호합니다.&nbsp;</p>
                           </div>
                        </div>
                     </div>
                  </td>
               </tr>
            </tbody>
         </table>
      </div>
   </div>