官术网_书友最值得收藏!

How PWM works

In the previous Blink.cpp program, we applied a digital signal from the RPi to the LED. Digital signals either have a HIGH state or a LOW state. In, HIGH, state the Raspberry Pi pins produces a voltage of 3.3V and in a LOW state, the pins produce a voltage of 0V. Consequently, at 3.3V, the LED is on with full brightness and at 0V, the LED is turned off:

To reduce the brightness of the LED, we need to reduce the voltage. To reduce the voltage, we use PWM. In PWM, a single wave with one full repetition is called a cycle and the time taken for a cycle to complete itself is called a period. In the following diagram, the red lines represent one complete cycle. The time taken to complete that cycle is called a period:

 

The time duration for which a signal remains HIGH is called a duty cycle, as shown in the following diagram:

The duty cycle is represented in percentage format, and the formula for calculating the duty cycle is as follows:

Duty cycle = (time duration for HIGH signal / total time) X 100 

In the preceding diagram, the signal remains HIGH for 7 milliseconds, and the total time period for a single cycle is 10 milliseconds:

Duty cycle =  70% or 0.7

Consequently, the duty cycle is 0.7 or 70%. Next, to find the new voltage value, we need to multiply the duty cycle with the maximum voltage value, which is 3.3V: 

Vout = Duty cycle X Vmax

Vout = 0.7 X 3.3

Vout = 2.31V

At a duty cycle of 70%, the voltage that's provided to the LED will be 2.31V and the brightness of the LED will reduce slightly. 

Now, if we reduce the duty cycle to 40%, then the voltage that's provided to the LED will be 1.32V, as shown in the following diagram: 

Now that we have understand how PWM is used to reduce the voltage at RPi data pins, let's take a look at the softPWM library, using which data pins can be used as PWM pins. 

主站蜘蛛池模板: 洛阳市| 金坛市| 烟台市| 嘉兴市| 阿图什市| 永康市| 廊坊市| 海原县| 安龙县| 石景山区| 陈巴尔虎旗| 漠河县| 明水县| 龙胜| 达孜县| 仙桃市| 宣化县| 北碚区| 安图县| 开远市| 望奎县| 滁州市| 宝山区| 南昌县| 和林格尔县| 西峡县| 昌乐县| 遂溪县| 庐江县| 乌鲁木齐县| 诏安县| 济宁市| 乐至县| 汝州市| 通州区| 呼伦贝尔市| 盈江县| 周口市| 霍州市| 甘洛县| 资溪县|