임베디드 개발보드‎ > ‎mbed‎ > ‎

[ARM mbed 강좌] 11. PWM 출력 (PwmOut, 가변저항, LED 이용)

mbed (ARM Core + Online tools + Community)



 1. PWM 출력 (PwmOut)


PWM은 Pulse Width Modulation 이라는 의미로, 펄스 폭을 변조하는 것을 말한다. 특히, PWM은 모터제어 신호로서 많이 사용하는데 모터를 구동하는 드라이버는 대부분 트랜지스터로 구성되어 있어서 지속적으로 전류를 공급하는 것 보다는 일정 주기 단위로 펄스폭으로 제어하는 것이 전력 소비면에서 뛰어나고 제어성도 갖출 수 있기때문이다. mbed은 아래와 같이 PWM 출력을 위해 총 6개를 확보하고 있다.












 2. 학습내용


: 이번 강좌에서는 mbed의 PWM 출력을 이용해 보기위하여, 아날로그 입력을 이용하여, 저항의 축을 회전시키면 저항치가 가변하는 가변 저항을 이용하여 간단한 회로를 구성하고, 가변저항을 하나의 센서로써 생각하고 아날로그 전압 값을 받아 LED의 밝기를 조절하는 PWM의 출력 테스트를 해보도록 하겠다.


 3. 회로도


▶ 아래의 부품을 이용하여 아래의 회로도 처럼 구성하기로 하자. 

  • 필요부품 : 50k옴 저항 1개, Switch 4개, LED 4개, 330옴 저항 4개, 여분의 배선, 브래드보드 
  • 회로도(오픈 소스 fritzing 프로그램 이용, 첨부파일 다운로드 가능)



 4. 배선도


▶ 회로의 배선도이다. 브래드보드에 아래와 같이 mbed 보드와 구성품을 배치, 배선 후 mbed를 PC에 연결하도록 하자.




 5. 프로그램 소스


▶ 아날로그 입력 기능을 이용하여 가변저항에 의한 전압 변화를 ADC 하여 디지털 값으로 변환하고, 이를 다시 PWM 펄스로 출력하여 LED의 밝기로 변환하는 아날로그로 출력 프로그램이다. 프로그램의 세부 설명은 소스에 기재되어 있는 설명을 참고하도록 하자.  

▶  mbed.org 컴파일러에서 직접 코딩하여, 컴파일하기를 추천한다. 아무리 간단한 코딩이라도 할 수록 늘고, 자신감도 붙기 마련이다.아래의 소스를 복사/붙여넣기도 가능하지만, 꼭 직접 코딩하고, 컴파일해보고, 결과를 눈으로 직접 보기를 강력 추천한다.

▶  mbed 소스작성, 컴파일, 업로드 방식은 이전 강좌 3을 참고하도록 하자.

▶  USB 가상 시리얼 포트를 통한 통신 방식은 이전 강좌 4를 참고하도록 하자.


#include "mbed.h"
 
PwmOut led1(p21);       // PWM Out Pin
PwmOut led2(p22);
PwmOut led3(p23);
PwmOut led4(p24);

DigitalIn button1(p17); // Digital In Pin
DigitalIn button2(p18);
DigitalIn button3(p19);
DigitalIn button4(p20);

AnalogIn ain(p16);      // Analog In Pin

Serial pc(USBTX,USBRX); // Tx, Rx Pin

int main() 
{
    led1=0; led2=0; led3=0; led4=0; // LED Init    
    
    int data;
    
    while(1) 
    {
        data = ain * 100;                   // ain (0.0 ~ 1.0)
        pc.printf("ADC = %d %%\n", data);   // mbed -> PC, data(0~100)
        
        led1 = ain; // Set PWM Ouput duty-cycle, default period is 0.02sec
        led2 = ain;
        led3 = ain;
        led4 = ain;
    }
}
 


 6. 사용한 라이브러리


▶ PwmOut
▶ Serial



 7. 실행 결과


▶ 실행 결과는 아래와 같다.



 참고자료


[1] mbedhttp://mbed.org
[2] mbed handbookhttp://mbed.org/handbook/PwmOut
작성자: 표윤석(http://robotpilot.net/)
 
Comments