从零开始的MicroPython(五)PWM
创始人
2024-11-16 06:35:30
0次

上一篇:串口

文章目录

  • 定义
  • ESP32
    • 代码

定义

要理解一个定义,就要引申一个已经掌握的概念,PWM是什么?我们或许可以用“周期”的概念来理解。
在这里插入图片描述
高电平出现的占比是占空比。

PWM(脉冲宽度调制)是一种调节信号的方法。它通过控制脉冲的占空比(Duty Cycle)和频率来实现对信号的调节。

占空比是脉冲的高电平时间与周期的比值。在一个周期内,高电平时间占整个周期的比例就是占空比。占空比的范围在0到1之间,可以用百分比表示。例如,50%的占空比表示高电平时间占整个周期的一半。

频率是脉冲的周期,即在一个单位时间内脉冲的个数。频率通常以赫兹(Hz)表示,表示每秒钟的脉冲个数。例如,100Hz的频率表示每秒钟有100个脉冲。

通过改变占空比和频率,可以控制PWM信号的特性。改变占空比可以改变信号的幅度,即高电平的电压大小。当占空比接近0时,高电平时间很短,信号的幅度很小;当占空比接近1时,高电平时间很长,信号的幅度很大。改变频率可以改变信号的变化速度,即脉冲的间隔时间。频率越高,脉冲的间隔时间越短,变化速度越快。

占空比和频率是调节PWM信号特性的两个重要参数。在实际应用中,可以根据需要调整这两个参数,以实现对信号的精确控制。

Frequency = 1/Time_Period Time_Period = On_time + Off_time 

ESP32

ESP32有16个PWM通道,8个定时器。

代码

from machine import Pin, PWM try:     f = 100  # Hz     d = 1024 // 16  # 6.25%     pins = (15, 2, 4, 16, 18, 19, 22, 23, 25, 26, 27, 14 , 12, 13, 32, 33)     pwms = []     for i, pin in enumerate(pins):         pwms.append(PWM(Pin(pin), freq=f * (i // 2 + 1), duty= 1023 if i==15 else d * (i + 1)))         print(pwms[i]) finally:     for pwm in pwms:         try:             pwm.deinit()         except:             pass 

输出结果:

PWM(Pin(15), freq=100, duty=64, resolution=10, mode=0, channel=0, timer=0) PWM(Pin(2), freq=100, duty=128, resolution=10, mode=0, channel=1, timer=0) PWM(Pin(4), freq=200, duty=192, resolution=10, mode=0, channel=2, timer=1) PWM(Pin(16), freq=200, duty=256, resolution=10, mode=0, channel=3, timer=1) PWM(Pin(18), freq=300, duty=320, resolution=10, mode=0, channel=4, timer=2) PWM(Pin(19), freq=300, duty=384, resolution=10, mode=0, channel=5, timer=2) PWM(Pin(22), freq=400, duty=448, resolution=10, mode=0, channel=6, timer=3) PWM(Pin(23), freq=400, duty=512, resolution=10, mode=0, channel=7, timer=3) PWM(Pin(25), freq=500, duty=576, resolution=10, mode=1, channel=0, timer=0) PWM(Pin(26), freq=500, duty=640, resolution=10, mode=1, channel=1, timer=0) PWM(Pin(27), freq=600, duty=704, resolution=10, mode=1, channel=2, timer=1) PWM(Pin(14), freq=600, duty=768, resolution=10, mode=1, channel=3, timer=1) PWM(Pin(12), freq=700, duty=832, resolution=10, mode=1, channel=4, timer=2) PWM(Pin(13), freq=700, duty=896, resolution=10, mode=1, channel=5, timer=2) PWM(Pin(32), freq=800, duty=960, resolution=10, mode=1, channel=6, timer=3) PWM(Pin(33), freq=800, duty=1023, resolution=10, mode=1, channel=7, timer=3) 

PWM呼吸灯:

from machine import Pin, PWM from time import sleep_ms  led = PWM(Pin(2), freq = 1000) # PWM频率1000Hz  while True:     for i in range(1024): # 脉冲宽度由最小值0增加到最大值1023         led.duty(i)         sleep_ms(1)     for i in range(1023, -1, -1): # 脉冲宽度由最大值1023减小到最小值0         led.duty(i)         sleep_ms(1)  

脉冲宽度说得高大上,其实就是他高电平的持续时间,也就是占空比大小。

相关内容

热门资讯

每日必看!江岸多玩到底能开挂吗... 每日必看!江岸多玩到底能开挂吗(辅助挂),江岸多玩原来真的有辅助挂讲义1、江岸多玩脚本辅助下载、江岸...
玩家交流!颖河竞技怎么开挂(外... 玩家交流!颖河竞技怎么开挂(外挂),颖河竞技好像是有外挂教材一、颖河竞技游戏安装教程牌型概率发牌机制...
最新通报!皮皮四川麻将软件下载... 最新通报!皮皮四川麻将软件下载(辅助挂),皮皮四川麻将果然有辅助挂模块1、操作简单,无需皮皮四川麻将...
一分钟揭秘!52游戏开挂脚本(... 一分钟揭秘!52游戏开挂脚本(透视挂),52游戏切实有透视挂法子52游戏脚本下载中分为三种模型:52...
一分钟快速了解!堆堆乐开挂破解... 一分钟快速了解!堆堆乐开挂破解(外挂),堆堆乐竟然真的有外挂方针1、下载好堆堆乐正确养号方法之后点击...
重大通报!汇城贵州麻将开挂脚本... 重大通报!汇城贵州麻将开挂脚本(开挂),汇城贵州麻将原来真的有开挂法门1、重大通报!汇城贵州麻将开挂...
盘点一款!七色城透视挂件(外挂... 盘点一款!七色城透视挂件(外挂),七色城切实是真的有外挂经验1、全新机制【七色城ai辅助工具激活码】...
今日头条!多多休闲透视软件下载... 今日头条!多多休闲透视软件下载(外挂),多多休闲确实是真的有外挂攻略1、首先打开多多休闲辅助器下载最...
关于!钱柜麻将真的有透视吗(辅... 关于!钱柜麻将真的有透视吗(辅助器),钱柜麻将一贯是有辅助器练习钱柜麻将能透视中分为三种模型:钱柜麻...
今日焦点!河北家乡棋牌辅助工具... 今日焦点!河北家乡棋牌辅助工具(外挂),河北家乡棋牌果然是有外挂手册小薇(辅助器软件下载)致您一封信...