Inflearn brand logo image
Inflearn brand logo image
์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

STM32 PWM ๊ตฌํ˜„

์ด ๊ฐ•์˜๋Š” STM32 MCU๋ฅผ ์ด์šฉํ•˜์—ฌ PWM์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[์ž„๋ฒ ๋””๋“œ ยท IoT, ๋ฐ˜๋„์ฒด] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • STM32 MCU๋ฅผ ์ด์šฉํ•œ PWM ๊ตฌํ˜„

  • STM32 MCU ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„

๋””์ง€ํ„ธ ์‹ ํ˜ธ๋กœ ์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ๋ฅผ ๋งŒ๋“ ๋‹ค?
์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ํ•™์Šตํ•ด๋ด์š”! ๐Ÿค—

PWM?

PWM์€ Pulse Width Modulation์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Pulse์˜ Width๋ฅผ ๋ณ€์กฐํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ Digital ์‹ ํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ Analog ์‹ ํ˜ธ๋ฅผ ์ƒ์„ฑ, ๋ณ€ํ™”์‹œํ‚ค๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. PWM์€ ๋ชจํ„ฐ ์ œ์–ด, LED ๋ฐ๊ธฐ ์ œ์–ด ๋“ฑ ์ œ์–ด์šฉ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 

๋ชฉ์ ์— ๋งž๋Š” PWM ์‹ ํ˜ธ ์ƒ์„ฑ,
๊ฐ™์ด ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”? ๐Ÿฆพ

PWM์˜ ๊ฐœ๋…์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ PWM์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ MCU๋งˆ๋‹ค ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๊ฐ•์˜๋Š” ST ์‚ฌ์˜ STM32 MCU์—์„œ PWM์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ชฉ์ ์— ๋งž๊ฒŒ PWM์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆด๊ฒŒ์š”.

๋ณธ ๊ฐ•์˜๋Š” STM32F411๋กœ PWM์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ST ์‚ฌ์—์„œ ์ œ๊ณตํ•˜๋Š” NUCLEO-F411RE ๊ฐœ๋ฐœ ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PWM ์‹ ํ˜ธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Windows ๊ฐœ๋ฐœ์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ๊ณตํ•˜์—ฌ PWM์˜ ์†์„ฑ(์ฃผํŒŒ์ˆ˜, ํŽ„์Šคํญ, Dead Time, Align Mode ๋“ฑ)์„ ๋ณ€๊ฒฝํ•˜๋ฉฐ PWM์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ ํˆด์€ STM32CubeIDE v1.9.0์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’พ ์ˆ˜๊ฐ• ์ „ ํ™•์ธํ•ด์ฃผ์„ธ์š”!

  • ๋ณธ ๊ฐ•์˜๋Š” PDF ํ˜•ํƒœ์˜ ํ…์ŠคํŠธ ๊ฐ•์˜๋กœ, ๋ณ„๋„ ์˜์ƒ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ฐ•์˜๋Š” ์‹ค์Šต ๋ณด๋“œ NUCLEO-F411RE์—์„œ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ST์—์„œ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•˜๋Š” STMCubeIDE v1.9.0์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜๊ฐ• ์ „์— ์„ค์น˜ํ•ด ์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ฐ•์˜ ํŠน์ง• โœจ

#1.
ST MCU๊ฐ€ ์ฒ˜์Œ์ธ ๋ถ„๋„
์‰ฝ๊ฒŒ ๋”ฐ๋ผ ํ•  ์ˆ˜ ์žˆ์–ด์š”

ST MCU๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์‰ฝ๊ฒŒ ๋”ฐ๋ผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ๋ถ€ํ„ฐ ์†Œ์Šค ํŒŒ์ผ ๋ถ„์„๊นŒ์ง€ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ•์˜์—์„œ ์„ค๋ช…๋œ ๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Windows ๊ฐœ๋ฐœ์šฉ ํ”„๋กœ๊ทธ๋žจ๋„ ์†Œ์Šค๊นŒ์ง€ ์ œ๊ณตํ•˜์—ฌ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ณธ์„œ๋ฅผ ํ†ตํ•˜์—ฌ PWM์„ ์‚ฌ์šฉํ•˜์‹œ๋Š” ๋ถ„๋“ค์—๊ฒŒ ๋งŽ์€ ๋„์›€์ด ๋˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

#2.
์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๊ธฐ ํž˜๋“ 
์ง€์‹์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

๋ณธ ๊ฐ•์˜๋Š” ST ์‚ฌ์˜ STM32 MCU์—์„œ PWM์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ PWM์„ ์ƒ์„ฑํ•  ๋•Œ ๊ฐ PWM์˜ ์‹ ํ˜ธ๋“ค ์‚ฌ์ด์— ์–ด๋–ค ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š”์ง€, ์–ด๋–ค ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ๋ชฉ์ ์— ๋งž๋Š” ์‹ ํ˜ธ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ณต๋˜๋Š” Windows ๋””๋ฒ„๊น… ํ”„๋กœ๊ทธ๋žจ์„ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ PWM ์‹ ํ˜ธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธ ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ํ•™์Šต ๋‚ด์šฉ ๐Ÿ“š

1๏ธโƒฃ

PWM ์‹ ํ˜ธ๋ฅผ
์ƒ์„ฑ ๋ฐ ๋ถ„์„

2๏ธโƒฃ

PWM ์†์„ฑ ๋ถ„์„
(์ฃผํŒŒ์ˆ˜, ํŽ„์Šคํญ ๋“ฑ) 

3๏ธโƒฃ

PWM ์‹ ํ˜ธ์˜
๊ด€๊ณ„์™€ ๋ชจ๋“œ

์ƒ์„ธ ์ปค๋ฆฌํ˜๋Ÿผ (๋ชฉ์ฐจ)
  1. ๊ฐœ์š” (3)
  2. HW ๊ตฌ์„ฑ (4)
    1. FW ๋‹ค์šด๋กœ๋“œ ํ•€๋งต (5)
    2. ์ „์› ํ•€๋งต (5)
    3. UART ํ•€๋งต (5)
    4. ํ”„๋กœ๊ทธ๋žจ ๋‹ค์šด๋กœ๋“œ (6)
      1. ST-LINK FW ์—…๋ฐ์ดํŠธ (6)
      2. ๋ณด๋“œ ์—ฐ๊ฒฐ (7)
  3. PWM (8)
    1. ์ฑ„๋„ ๊ตฌ์„ฑ (8)
    2. ์ฃผํŒŒ์ˆ˜ ์„ค์ • (10)
    3. Dead Time ์„ค์ • (11)
    4. Align Mode (13)
  4. Device Configuration (14)
    1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ (14)
    2. Configuration (16)
    3. SYS, RCC (17)
    4. Clock Configuration (18)
    5. PWM ์„ค์ • โ€“ 1 (TIM1) (19)
    6. PWM ์„ค์ • โ€“ 2 (TIM2) (22)
    7. UART ์„ค์ • (25)
  5. ์ฝ”๋“œ ๊ตฌํ˜„ (26)
    1. printf() ๊ตฌํ˜„ (27)
    2. UART ์ˆ˜์‹  ISR ๊ตฌํ˜„ (30)
    3. comm ํ†ต์‹  ๊ตฌํ˜„ (32)
      1. ํ†ต์‹  ํ”„๋กœํ† ์ฝœ (32)
      2. ์†Œ์Šค ๋ถ„์„ (comm_task.c) (32)
    4. ax_pwm1 ๊ตฌํ˜„ (35)
      1. ์†Œ์Šค ๋ถ„์„ (ax_pwm1.c) (36)
    5. ax_pwm2 ๊ตฌํ˜„ (38)
    6. main.c ์ˆ˜์ • (39)
  6. ๊ฒฐ๊ณผ ํ™•์ธ (40)
    1. PWM ์ถœ๋ ฅ ํ•€๋งต (40)
    2. WinIDT (41)
    3. ํŒŒํ˜• ์ธก์ • (43)
      1. Edge Aligned Mode ํŒŒํ˜• (44)
      2. Dead Time ํŒŒํ˜• (49)
      3. Center Aligned Mode ํŒŒํ˜• (53)
  7. PWM ์‘์šฉ (55)
    1. ์œ„์ƒ ์ œ์–ด (55)
    2. TIM1, TIM8 ๋™๊ธฐ ๋งž์ถ”๊ธฐ (59)
      1. ํ•€๋งต (60)
      2. TIM1, TIM8 ์„ค์ • (61)
      3. ํ”„๋กœ๊ทธ๋žจ ๋ฐ ํŒŒํ˜• ํ™•์ธ (62)
  8. ์ฐธ๊ณ  ์ž๋ฃŒ (66)
  9. Revision History (67)


์˜ˆ์ƒ ์งˆ๋ฌธ Q&A ๐Ÿ’ฌ

Q. ๊ฐ•์˜๋ฅผ ๋“ฃ๊ธฐ ์œ„ํ•ด ์ค€๋น„ํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด ์žˆ๋‚˜์š”?

๊ฐ•์˜๋Š” ์‹ค์Šต๋ณด๋“œ NUCLEO-F411RE์—์„œ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ณด๋“œ๊ฐ€ ์ง„ํ–‰๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋จผ์ € ๋‚ด์šฉ์„ ๋ณด์‹œ๊ณ  ๋‚˜์ค‘์— ๋ณด๋“œ๋ฅผ ๊ตฌ์ž…ํ•ด์„œ ๋ณด๋“œ ์ƒ์—์„œ ํ™•์ธํ•ด ๋ณด์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Q. ํ”„๋กœ๊ทธ๋žจ ํˆด์€ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜๋‚˜์š”?

ST์—์„œ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•˜๋Š” STMCubeIDE v1.9.0์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜๊ฐ• ์ „์— ์„ค์น˜ํ•ด ์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.


์ง€์‹๊ณต์œ ์ž ์†Œ๊ฐœ โœ’๏ธ

์ €๋Š” 20์—ฌ ๋…„ ๋™์•ˆ ๋Œ€๊ธฐ์—…, ์ค‘์†Œ๊ธฐ์—…์—์„œ ๊ฐœ๋ฐœ์ž๋กœ ์ผํ•ด์™”๊ณ  ํ˜„์žฌ๋Š” ์ž‘์€ ๊ธฐ์—…์„ ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. CCTV์šฉ ISP (Image Signal Processing) ASIC๋ฅผ ๊ฐœ๋ฐœํ•˜์˜€๊ณ  OLED ๊ฒ€์‚ฌ ์žฅ๋น„, DAQ (Data Acquisition System) ๋“ฑ FPGA๋ฅผ ์ด์šฉํ•œ ๋งŽ์€ ์ œํ’ˆ์„ ๊ฐœ๋ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค. FPGA๋ฟ๋งŒ ์•„๋‹ˆ๋ผ FW ๊ฐœ๋ฐœ (STM32, PIC32, AVR, ATMEGA ๋“ฑ), ํšŒ๋กœ์„ค๊ณ„, Windows Program ๋“ฑ ๋งŽ์€ ๊ฒฝํ—˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • STM32 MCU์— ๊ด€์‹ฌ ์žˆ์œผ์‹  ๋ถ„

  • PWM ์„ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜์‹œ๋Š” ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • C์–ธ์–ด

์•ˆ๋…•ํ•˜์„ธ์š”
alex์ž…๋‹ˆ๋‹ค.

1,532

๋ช…

์ˆ˜๊ฐ•์ƒ

57

๊ฐœ

์ˆ˜๊ฐ•ํ‰

119

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

17

๊ฐœ

๊ฐ•์˜

์ €๋Š” ์ง€๋‚œ 20์—ฌ๋…„ ๋™์•ˆ ๋Œ€๊ธฐ์—…, ์ค‘์†Œ๊ธฐ์—…์—์„œ ๊ฐœ๋ฐœ์ž๋กœ ์ผํ•ด์™”๊ณ 

ํ˜„์žฌ๋Š” ์ž‘์€ ๊ธฐ์—…์˜ ๋Œ€ํ‘œ๋กœ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ฒฝ๋ ฅ์‚ฌํ•ญ์€

  • Verilog HDL์„ ์ด์šฉํ•œ FPGA ์„ค๊ณ„

    • CCTV์šฉ ISP ASIC ๊ฐœ๋ฐœ (์•ฝ 10๋…„)

    • OLED Display ๊ฒ€์‚ฌ์žฅ๋น„ ๊ฐœ๋ฐœ (์•ฝ 3๋…„)

    • FPGA๋ฅผ ์ด์šฉํ•œ ์žฅ๋น„ ๊ฐœ๋ฐœ

  • MCU FW

    • STM32

    • PIC32

    • AVR, ATMEGA

    • DSP (TI)

  • Windows Application Program

    • Visual Studio MFC, C++

์ž…๋‹ˆ๋‹ค.

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

67๊ฐœ

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!