PWM Principles

Pulse width modulation

Pulse width modulation ą¹€ąø£ąøµąø¢ąøąøŖąø±ą¹‰ąø™ą¹†ąø§ą¹ˆąø² PWM ą¹€ąø›ą¹‡ąø™ąøąø²ąø£ą¹‚ąø”ąø”ąø¹ą¹€ąø„ąøŠąø±ą¹ˆąø™ąø„ąø§ąø²ąø”ąøąø§ą¹‰ąø²ąø‡ąøžąø±ąø„ąøŖą¹Œ ąø—ąøµą¹ˆąø–ąø¹ąøąø™ąø³ąø”ąø²ą¹ƒąøŠą¹‰ą¹ƒąø™ąø‡ąø²ąø™ąø›ąø£ąø°ąø¢ąøøąøąø•ą¹Œąø«ąø„ąø²ąø¢ąø”ą¹‰ąø²ąø™ ąø•ąø±ąø§ąø­ąø¢ą¹ˆąø²ąø‡ą¹€ąøŠą¹ˆąø™ ąøąø²ąø£ąøŖąø·ą¹ˆąø­ąøŖąø²ąø£ąø”ąø“ąøˆąø“ąø•ąø­ąø„(digital communication), ąø­ąø“ą¹€ąø„ą¹‡ąøąø—ąø£ąø­ąø™ąø“ąøąøŖą¹Œąøąø³ąø„ąø±ąø‡ (power electronics), ąøąø²ąø£ąø„ąø§ąøšąø„ąøøąø”ąø„ąø§ąø²ąø”ą¹€ąø‚ą¹‰ąø”ą¹ąøŖąø‡ąø‚ąø­ąø‡ą¹„ąøŸąø–ąø™ąø™ąø­ąø±ąø•ą¹‚ąø™ąø”ąø±ąø•ąø“ (street lighting), ąøąø²ąø£ąø„ąø§ąøšąø„ąøøąø”ąø„ąø§ąø²ąø”ą¹€ąø£ą¹‡ąø§ąø‚ąø­ąø‡ąø”ąø­ą¹€ąø•ąø­ąø£ą¹Œ DC ą¹ąø„ąø°ąøąø²ąø£ąøŖąø£ą¹‰ąø²ąø‡ąøŖąø±ąøąøąø²ąø“ąø­ąø™ąø²ąø„ą¹‡ąø­ąøąøˆąø²ąøąøŖąø±ąøąøąø²ąø“ąø”ąø“ąøˆąø“ąø•ąø­ąø„ąø”ą¹‰ąø§ąø¢ PWM ąø—ąøµą¹ˆą¹ąø›ąø£ąøœąø±ąø™ą¹„ąø”ą¹‰ (ADC) แคะการ ą¹ąø›ąø„ąø‡ąø”ąø“ąøˆąø“ąø•ąø­ąø„ą¹€ąø›ą¹‡ąø™ąø­ąø™ąø²ąø„ą¹‡ąø­ąø (DAC) เป็นต้น ąø‹ąø¶ą¹ˆąø‡ą¹€ąø—ąø„ąø™ąø“ąø„ą¹ƒąø™ąøąø²ąø£ąøŖąø£ą¹‰ąø²ąø‡ąøŖąø±ąøąøąø²ąø“ PWM ąø”ąøµąø­ąø¢ąø¹ą¹ˆąø”ą¹‰ąø§ąø¢ąøąø±ąø™ 2 วณธี ąø„ąø·ąø­ąø§ąø“ąø˜ąøµąø—ąø²ąø‡ąø”ąø“ąøˆąø“ąø•ąø­ąø„ą¹ąø„ąø°ąø§ąø“ąø˜ąøµąø—ąø²ąø‡ąø­ąø™ąø²ąø„ą¹‡ąø­ąø

PWM ąøˆąø°ąø—ąø³ąøąø²ąø£ąøŖąø£ą¹‰ąø²ąø‡ąø„ąø„ąø·ą¹ˆąø™ąøŖąøµą¹ˆą¹€ąø«ąø„ąøµą¹ˆąø¢ąø” (square wave) ą¹‚ąø”ąø¢ąøŖąø²ąø”ąø²ąø£ąø–ąø„ąø§ąøšąø„ąøøąø”ąø£ąø°ąø¢ąø°ą¹€ąø§ąø„ąø²ąø„ą¹ˆąø²ąøŖąø±ąøąøąø²ąø“ąø‚ąø¶ą¹‰ąø™/สูง (up หรือ high) ą¹ƒąø™ąøŖąø±ąøąøąø²ąø“ PWM ą¹‚ąø”ąø¢ąø„ą¹ˆąø²ą¹ąø£ąø‡ąø”ąø±ąø™ąø•ą¹ˆąø³ąøŖąøøąø”ą¹ąø„ąø°ąøŖąø¹ąø‡ąøŖąøøąø”ąøˆąø°ą¹€ąø›ą¹‡ąø™ąø„ą¹ˆąø²ąø—ąøµą¹ˆąøˆąø³ąøąø±ąø”ąøąø²ąø£ąøžąø·ą¹‰ąø™ąø—ąøµą¹ˆąø‚ąø­ąø‡ąø„ąø„ąø·ą¹ˆąø™ (waves oscillation space) ą¹€ąø£ąøµąø¢ąøąø§ą¹ˆąø² "ąø„ąø§ąø²ąø”ąøŖąø¹ąø‡ąø„ąø„ąø·ą¹ˆąø™ - Amplitude" ąøŖąø³ąø«ąø£ąø±ąøšąø£ąø­ąøšąø‚ąø­ąø‡ąø„ąø„ąø·ą¹ˆąø™ą¹€ąøžąø·ą¹ˆąø­ą¹€ąøąø“ąø”ą¹€ąø•ą¹‡ąø”ąø£ąø¹ąø›ą¹ąøšąøšąø‚ąø­ąø‡ąøŠą¹ˆąø§ąø‡ą¹€ąø§ąø„ąø²ąø™ąø±ą¹‰ąø™ ąøˆąø°ą¹€ąø£ąøµąø¢ąøąø§ą¹ˆąø² "ąø„ąø²ąøšą¹€ąø§ąø„ąø² - Time period" ą¹‚ąø”ąø¢ąø—ąøµą¹ˆ time period ąø”ąøµąø„ą¹ˆąø²ą¹€ąø—ą¹ˆąø²ąøąø±ąøš

TimeĀ period=onĀ time+offĀ timeTime \space period = on \space time + off \space time

ąø„ąø§ąø²ąø”ąø–ąøµą¹ˆąø‚ąø­ąø‡ PWM

ąø„ą¹ˆąø²ąø„ąø§ąø²ąø”ąø–ąøµą¹ˆ (frequency) ąø„ąø·ąø­ąøˆąø³ąø™ąø§ąø™ąø„ąø¹ąøąø„ąø„ąø·ą¹ˆąø™ (cycle) ąø•ą¹ˆąø­ 1 ąø«ąø™ą¹ˆąø§ąø¢ąø„ąø²ąøšą¹€ąø§ąø„ąø² (time peroid) ąø•ąø±ąø§ąø­ąø¢ą¹ˆąø²ąø‡ą¹€ąøŠą¹ˆąø™ ą¹ƒąø™ąø„ąø²ąøšą¹€ąø§ąø„ąø²ąø‚ąø­ąø‡ąøŖąø±ąøąøąø²ąø“ 20ms ąøˆąø°ąø”ąøµąøˆąø³ąø™ąø§ąø™ąø„ąø¹ąøąø„ąø„ąø·ą¹ˆąø™ 50 คูก หรือ 50Hz

Frequency=1TimeĀ periodFrequency = {1 \over Time \space period}
Time Period, Cycle Time, Frequency

Duty cycle

Duty Cycle ąø„ąø·ąø­ąø«ąø„ąø±ąøąøąø²ąø£ąøŖąø³ąø„ąø±ąøąø—ąøµą¹ˆąø–ąø¹ąøą¹ƒąøŠą¹‰ą¹ƒąø™ PWM ą¹€ąø™ąø·ą¹ˆąø­ąø‡ąøˆąø²ąøąø”ąø±ąø™ąøˆąø°ą¹€ąø›ą¹‡ąø™ąø•ąø±ąø§ą¹ąø—ąø™ąø‚ąø­ąø‡ąø£ąø°ąø¢ąø°ą¹€ąø§ąø„ąø²ąø—ąøµą¹ˆąøŖąø±ąøąøąø²ąø“ąø­ąø¢ąø¹ą¹ˆą¹ƒąø™ąøŖąø–ąø²ąø™ąø° high ą¹‚ąø”ąø¢ąø—ąøµą¹ˆąøŖąø¹ąø•ąø£ą¹ƒąø™ąøąø²ąø£ąø«ąø²ąø„ą¹ˆąø² duty cycle ดังนี้

DutyĀ Cycle=OnĀ timeĀ ofĀ signaltotalĀ timeĀ periodĀ ofĀ signalDuty \space Cycle = { On \space time \space of \space signal \over total \space time \space period \space of \space signal }
Duty Cycle

ąøąø²ąø£ąø„ąø³ąø™ąø§ąø“ąø„ą¹ˆąø² Voltage ąø‚ąø­ąø‡ąøŖąø±ąøąøąø²ąø“ PWM

ą¹€ąøžąø·ą¹ˆąø­ąø„ąø³ąø™ąø§ąø“ąø«ąø²ąø„ą¹ˆąø² duty cycle ą¹€ąø£ąø²ąøˆąø°ąø•ą¹‰ąø­ąø‡ąø£ąø¹ą¹‰ąø§ą¹ˆąø²ąø£ąø°ąø¢ąø°ą¹€ąø§ąø„ąø²ą¹ƒąø™ąø‚ąø“ąø°ąø—ąøµą¹ˆąøŖąø±ąøąøąø²ąø“ąø”ąøµąø„ą¹ˆąø² high ąø™ąø²ąø™ą¹€ąø—ą¹ˆąø²ą¹ƒąø” ąø•ąø±ąø§ąø­ąø¢ą¹ˆąø²ąø‡ą¹€ąøŠą¹ˆąø™ ąø–ą¹‰ąø²ą¹€ąø£ąø²ąø—ąø£ąø²ąøšąø§ą¹ˆąø²ąø£ąø°ąø¢ąø°ą¹€ąø§ąø„ąø²ą¹ƒąø™ąø‚ąø“ąø°ąø—ąøµą¹ˆąøŖąø±ąøąøąø²ąø“ąø”ąøµąø„ą¹ˆąø² high เป็นระยะเวคา 6ms ą¹ąø„ąø°ąø£ąø°ąø¢ąø°ą¹€ąø§ąø„ąø²ą¹ƒąø™ąø‚ąø“ąø°ąø—ąøµą¹ˆąø„ą¹ˆąø²ąøŖąø±ąøąøąø²ąø“ low เป็นระยะเวคา 4ms ąø‹ąø¶ą¹ˆąø‡ąø—ąø³ą¹ƒąø«ą¹‰ąø£ąø§ąø”ąø£ąø°ąø¢ąø°ą¹€ąø§ąø„ąø²ąø—ąø±ą¹‰ąø‡ąø«ąø”ąø”ąø„ąø·ąø­ 10ms ąø”ąø±ąø‡ąø™ąø±ą¹‰ąø™ąøą¹‡ąøŖąø²ąø”ąø²ąø£ąø–ą¹ƒąøŠą¹‰ąøŖąø¹ąø•ąø£ąø‚ą¹‰ąø²ąø‡ąø•ą¹‰ąø™ąø«ąø²ąø„ą¹ˆąø² duty cycle ได้ดังนี้

DutyĀ Cycle=6Ā ms10Ā ms=0.6Ā Ā orĀ 60%Duty \space Cycle = { 6 \space ms \over 10 \space ms } = 0.6 \space \space or \space 60\%

ąøˆąø²ąøąøąø²ąø£ą¹ąøą¹‰ąøŖąø”ąøąø²ąø£ąøˆąø°ą¹„ąø”ą¹‰ duty cycle ą¹€ąø—ą¹ˆąø²ąøąø±ąøš 0.6 ąø‹ąø¶ą¹ˆąø‡ą¹„ąø”ą¹ˆąø”ąøµąø«ąø™ą¹ˆąø§ąø¢ ąø”ąø±ąø‡ąø™ąø±ą¹‰ąø™ą¹€ąø£ąø²ąøˆąø¶ąø‡ąø”ąø±ąøąøˆąø°ąø§ąø±ąø” duty cycle ą¹€ąø›ą¹‡ąø™ąø«ąø™ą¹ˆąø§ąø¢ąø‚ąø­ąø‡ą¹€ąø›ąø­ąø£ą¹Œą¹€ąø‹ą¹‡ąø™ąø•ą¹Œ (%) ąø‚ąø­ąø‡ąøąø²ąø£ąø—ąøµą¹ˆąøŖąø–ąø²ąø™ąø°ąø‚ąø­ąø‡ąøŖąø±ąøąøąø²ąø“ąø­ąø¢ąø¹ą¹ˆą¹ƒąø™ąø„ą¹ˆąø² high ąø™ąø±ą¹ˆąø™ą¹€ąø­ąø‡

Amplitude of PWM

ą¹ƒąø™ąøąø£ąø“ąøµąø‚ąø­ąø‡ąøŖąø±ąøąøąø²ąø“ąø”ąø“ąøˆąø“ąø•ąø­ąø„ ą¹ąø£ąø‡ąø”ąø±ąø™ąø•ą¹ˆąø³ąøŖąøøąø”ąøŖą¹ˆąø§ąø™ą¹ƒąø«ąøą¹ˆąøˆąø°ą¹€ąø›ą¹‡ąø™ąøØąø¹ąø™ąø¢ą¹Œ ąø”ąø±ąø‡ąø™ąø±ą¹‰ąø™ąø„ąø§ąø²ąø”ąøŖąø¹ąø‡ąø„ąø„ąø·ą¹ˆąø™ (Amplitude) ąøˆąø°ą¹€ąø›ą¹‡ąø™ą¹ąø£ąø‡ąø”ąø±ąø™ąøŖąø¹ąø‡ąøŖąøøąø”ąø‚ąø­ąø‡ąøŖąø±ąøąøąø²ąø“ ąø•ąø±ąø§ąø­ąø¢ą¹ˆąø²ąø‡ą¹€ąøŠą¹ˆąø™ ąøˆąø²ąøąø£ąø¹ąø›ąø”ą¹‰ąø²ąø™ąø„ą¹ˆąø²ąø‡ PWM ดี duty cycle ąø­ąø¢ąø¹ą¹ˆąø—ąøµą¹ˆ 50% ą¹ąø„ąø°ąø£ąø°ąø”ąø±ąøšą¹ąø£ąø‡ąø”ąø±ąø™ą¹„ąøŸąøŸą¹‰ąø²ąø­ąø¢ąø¹ą¹ˆąø£ąø°ąø«ąø§ą¹ˆąø²ąø‡ 0 ąø–ąø¶ąø‡ 5 ą¹‚ąø§ąø„ąø•ą¹Œ ąø—ąøµą¹ˆąøˆą¹ˆąø²ąø¢ą¹ƒąø«ą¹‰ąøąø±ąøš LED ąø”ąø±ąø‡ąø™ąø±ą¹‰ąø™ąø„ą¹ˆąø²ą¹ąø£ąø‡ąø”ąø±ąø™ąø‚ąø²ąø­ąø­ąøąøˆąø°ąø­ąø¢ąø¹ą¹ˆąø—ąøµą¹ˆ 2.5 ą¹‚ąø§ąø„ąø•ą¹Œą¹€ąø—ą¹ˆąø²ąø™ąø±ą¹‰ąø™

Vout=DƗVmaxĀ Ā ,whereĀ DĀ isĀ dutyĀ cycleVout = D \times Vmax \space \space , where \space D \space is \space duty \space cycle

ą¹ƒąø™ąøąø²ąø£ą¹‚ąø›ąø£ą¹ąøąø£ąø” PSoC ą¹€ąøžąø·ą¹ˆąø­ąøŖąø£ą¹‰ąø²ąø‡ąøŖąø±ąøąøąø²ąø“ PWM ąø­ąø­ąøąøœą¹ˆąø²ąø™ąø‚ąø²ąø‚ąø­ąø‡ą¹„ąø”ą¹‚ąø„ąø£ąø„ąø­ąø™ą¹‚ąø—ąø£ą¹€ąø„ąø­ąø£ą¹Œąøˆąø°ą¹€ąø£ąøµąø¢ąøą¹ƒąøŠą¹‰ąøŸąø±ąø‡ąøą¹ŒąøŠąø±ąø™ cyhal_pwm_init ąø™ąø­ąøąøˆąø²ąøąø™ąø±ą¹‰ąø™ąøąø²ąø£ąø•ąø±ą¹‰ąø‡ąø„ą¹ˆąø² clock ąøˆąø°ąø­ą¹‰ąø²ąø‡ąø­ąø“ąø‡ąøŖąø±ąøąøąø²ąø“ąø™ąø²ąø¬ąø“ąøąø²ąø«ąø„ąø±ąøąø‚ąø­ąø‡ą¹„ąø”ą¹‚ąø„ąø£ąø„ąø­ąø™ą¹‚ąø—ąø£ą¹€ąø„ąø­ąø£ą¹Œ ą¹ąø„ąø°ąøąø³ąø«ąø™ąø”ąø„ą¹ˆąø² duty cycle ąøœą¹ˆąø²ąø™ąøŸąø±ąø‡ąøą¹ŒąøŠąø±ąø™ cyhal_pwm_set_duty_cycle ąø«ąø„ąø±ąøąøˆąø²ąøąø—ąøµą¹ˆąøąø³ąø«ąø™ąø”ąø„ą¹ˆąø²ą¹€ąø£ąø“ą¹ˆąø”ąø•ą¹‰ąø™ąø•ą¹ˆąø²ąø‡ą¹†ą¹€ąø£ąøµąø¢ąøšąø£ą¹‰ąø­ąø¢ą¹ąø„ą¹‰ąø§ ąøą¹‡ąøˆąø°ą¹€ąø£ąø“ą¹ˆąø”ąøŖąø£ą¹‰ąø²ąø‡ąøŖąø±ąøąøąø²ąø“ PWM ą¹‚ąø”ąø¢ą¹€ąø£ąøµąø¢ąøą¹ƒąøŠą¹‰ąøŸąø±ąø‡ąøą¹ŒąøŠąø±ąø™ cyhal_pwm_start ąø”ąø±ąø‡ąø•ąø±ąø§ąø­ąø¢ą¹ˆąø²ąø‡ą¹‚ąø›ąø£ą¹ąøąø£ąø”ąø‚ą¹‰ąø²ąø‡ąø„ą¹ˆąø²ąø‡

cy_rslt_t   rslt;
cyhal_pwm_t pwm_obj;
 
// Initialize PWM on the supplied pin and assign a new clock
rslt = cyhal_pwm_init(&pwm_obj, P0_0, NULL);
 
// Set a duty cycle of 50% and frequency of 1Hz
rslt = cyhal_pwm_set_duty_cycle(&pwm_obj, 50, 1);
 
// Start the PWM output
rslt = cyhal_pwm_start(&pwm_obj);

Last updated

Was this helpful?