1 분 소요

개념정리


PWM

PWM이란 무엇입니까? PWM은 펄스 폭 변조라고도 합니다. PWM(Pulse Width Modulation)은 마이크로프로세서의 디지털 출력을 통해 아날로그 회로를 제어하는 ​​방식으로 측정, 통신, 전력 제어 및 여러 분야의 변환에 널리 사용되는 매우 효과적인 기술입니다.

PWM 기본사진

타이머 업데이트 발생 주기랑 PWM 신호의 주기가 같다


-> 이해 못한 부분 ARR 레지스터와 Prescaler의 주기를 조절하여 PWM 펄스의 주기를 조절이 가능하지만

ARR의 값을 나누면 CC의 값 조절하는 단계가 줄어들었다

-> 드론 활용이 어렵다

CC 레지스터 capture compare Register

펄스의 위상이 반대가 되는 시점이다 펄스 폭을 조절할 수 있다

최소 0부터 ARR 사이의 값을 가진다

타이머 스펙

타이머에서 Channels 의 갯수를 의미한다

펄스의 폭을

ARR 값을 바꾸든지

개발 환경 세팅

  1. gpio 채널 바꾸기 led 채널

led 채널

  1. TM Configuration 설정 -임시 구체적으로 값은 계산해야함 configuration 예시

소스코드

stm32f7xx_hal_tim.보면 파일에 보면

// 코드 추가해주면된다
  HAL_TIM_PWM_Start(*htmi3,TIM_CHANNEL_1);

전체 소스코드

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_TIM7_Init();
  MX_USART3_UART_Init();
  MX_USB_OTG_FS_PCD_Init();
  MX_TIM3_Init();
  MX_TIM4_Init();

  /* Initialize interrupts */
  MX_NVIC_Init();
  /* USER CODE BEGIN 2 */
  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3);
  HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_2);
  uint16_t CCR =0;
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

	  __HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_3,CCR);
	  __HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_2,CCR);
	 // TIM3->CCR1 =CCR;
	  CCR +=1000;
	  if(CCR > TIM3->ARR)
	  {
		  CCR =0;
	  }

	  HAL_Delay(100);

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

출처

  1. 참고 영상강의 자료 https://www.youtube.com/watch?v=_7Ll95FITn4&list=PLUaCOzp6U-RqMo-QEJQOkVOl1Us8BNgXk&index=4&ab_channel=ChrisWonyeobPark

  2. PWM 정의 https://www.veichi.kr/knowledge/what-is-pulse-width-modulation.html

  3. 참고 자료 https://sc.sogang.ac.kr/bbs/bbsview.do?pkid=51929&bbsid=3857&wslID=mecha&searchField=&searchValue=&currentPage=1

태그:

카테고리:

업데이트:

댓글남기기