본문 바로가기

쓰기

ARM Cortex-M 기초 알아보기
2016.03.25 17:29

ARM Cortex-M 기초 알아보기 - 6. PWM 사용하기

조회 수 2889
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

 이번 글에서는 PWM을 이용하여 모터를 구동시켜보도록 하겠습니다. 먼저 STM32CubeMX를 이용하여 설정을 진행합니다. PWM을 사용하기 위해 타이머 TIM1의 Clock Source를 Internal Clock으로 설정해 줍니다. 그 후 사용하고 싶은 채널을 PWM Generation탭으로 바꾸어 줍니다. 핀 설정이 끝난 뒤에는 Configuration 탭으로 넘어가 타이머 설정을 해줍니다.


PWM.JPG



Datasheet를 찾아보면 TIM1은 16bit 타이머임을 알 수 있고 따라서 2^16로 쪼갤 수 있어 0부터 65535까지의 값을 가질 수 있습니다.


TIM1 configuration.JPG



이제 code generator를 실행하여 코드를 생성해 줍니다. 여러 가지 설정해 준 값들은 CubeMX가 알아서 짜주기 때문에 main문 안의 코드만 작성해 주면 됩니다.


code.JPG


 HAL_TIM_PWM_Init()를 이용하여 PWM을 Initiate 해주고 HAL_TIM_PWM_Start() 를 통해 PWM을 시작해 줍니다.  모터 드라이버의 datasheet를 참고하여 Enable 값과 Direction 값을 각각 HAL_GPIO_WritePin을 통해 입력해 주어 모터가 작동할 수 있는 환경을 만들어 줍니다.

 if 함수를 이용하여 디스커버리 보드의 파란색 USER 버튼이 눌려있는 경우에만 모터가 작동 할 수 있도록 코드를 작성해 줍니다. 그 후 속도를 입력해줍니다. counter resistor값을 65535가 최대가 되도록 설정했으므로 버튼이 눌렸을 경우 100%인 최대값으로 회전하고 그렇지 않은 경우 0%값인 0을 입력하여 모터가 정지하도록 해줍니다. 코드를 빌드하여 다운로드 해주면 잘 작동함을 알 수 있습니다.


  1. ARM Cortex-M 기초 알아보기 - 6. PWM 사용하기

     이번 글에서는 PWM을 이용하여 모터를 구동시켜보도록 하겠습니다. 먼저 STM32CubeMX를 이용하여 설정을 진행합니다. PWM을 사용하기 위해 타이머 TIM1의 Clock Source를 Internal Clock으로 설정해 줍니다. 그 후 사용하고 싶은 채널을 PWM Generation탭으로...
    Date2016.03.25 CategoryARM Cortex-M 기초 알아보기 By최호선 Views2889
    Read More
  2. ARM Cortex-M 기초 알아보기 - 5. ADC 사용하기

    이번에는 ADC와 관련하여 STM32F407VGT6 Discovery board에 연결된 Potentiometer의 ADC 값을 Debug Viewer를 통해 실시간으로 받아보도록 하겠습니다. (프로젝트 진행자가 변경된 이유로 인해 MCU가 Discovery board로 변경되었습니다.) STM32CubeMX의 Confi...
    Date2016.01.28 CategoryARM Cortex-M 기초 알아보기 By최호선 Views3059
    Read More
  3. ARM Cortex-M 기초 알아보기 - 4. GPIO 입력 제어하기

    이번에는 스위치를 통해 GPIO의 입력을 받아 LED를 켜고 끄는 예제를 다루어 보겠습니다. STM32CubeMX 설정은 지난번과 같지만 스위치 입력을 받기 위해 PA4 핀을 GPIO_Input으로 설정합니다. 핀 라벨은 GPIO_SW라고 붙였습니다. STM32CubeMX의 Configuration...
    Date2015.11.10 CategoryARM Cortex-M 기초 알아보기 By박정현 Views2538
    Read More
  4. ARM Cortex-M 기초 알아보기 - 3. GPIO 출력 제어하기

    이번에는 GPIO의 디지털 출력 제어를 통해 MCU계의 Hello World!인 LED 깜박이기를 해 보도록 하겠습니다. 내용 수준은 기존에 8bit MCU 사용이 익숙하신 분들에 맞춰 진행할 것입니다. 사용할 MCU는 Cortex-M0의 한 종류인 STM32F030F4P6입니다. STM32F030F4...
    Date2015.11.08 CategoryARM Cortex-M 기초 알아보기 By박정현 Views2893
    Read More
  5. ARM Cortex-M 기초 알아보기 - 2. 개발 환경 구축

    Cortex-M을 지원하는 IDE는 여러 종류가 있습니다. 그 중에서 저는 ARM에서 공식적으로 지원하는 Keil µVision IDE를 사용하려고 합니다. Keil µVision은 말 그대로 ARM에서 공식적으로 지원하기 때문입니다. 코어 설계사에서 직접 제공하는 IDE가 사후 지원...
    Date2015.10.26 CategoryARM Cortex-M 기초 알아보기 By박정현 Views4424
    Read More
  6. ARM Cortex-M 기초 알아보기 - 1. 개요

    자신이 원하는 대로 움직이는 기계나 회로 등을 만들 때는 MCU 만한 것이 없습니다. 국내에서는 2000년대 들어 8051, PIC, AVR 등을 통해 8bit MCU들이 퍼지기 시작하였고, 2010년 이후 Arduino의 등장을 통해 기존의 8bit MCU를 쉽게 사용할 수 없던 일반인...
    Date2015.10.26 CategoryARM Cortex-M 기초 알아보기 By박정현 Views4291
    Read More
  7. 2013-07-23 소모성 데시칸트 제습기

    2013년 여름에 시작한 프로젝트입니다. 정확한 시작일이 기억나지 않아 가지고 있는 자료 중에서 가장 오래된 것의 날짜를 선택하였습니다. 2013년 여름은 제가 지금 살고 있는 집으로 이사를 온 때인데, 집 주변이 광활한 논으로 둘러싸여 있습니다. 그 때문...
    Date2015.02.08 Category화학식 제습장치 By박정현 Views758
    Read More
Board Pagination Prev 1 Next
/ 1