打印
[PIC®/AVR®/dsPIC®产品]

PIC16(L)F1826——PWM使用

[复制链接]
7356|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 JackTang1994 于 2021-9-22 09:57 编辑

#申请原创# #技术资源#
前言:
PWM在直流电机调速,LED灯调亮度等场景应用非常广泛

硬件平台:PIC16(L)F1826
软件平台:MPLAB X IDE V5.5、MPLAB Code Configurator V4
PIC16(L)F1826数据手册:https://www.microchip.com/content/dam/mchp/documents/OTH/ProductDocuments/DataSheets/41391D.pd

示例代码: PWM_Demo.X.zip (297.27 KB)

手册阅读
查看PWMPIC16(L)F1826芯片只有EECP1模块

EECP1模块5个功能,我们使用时可以任意只要配置好相关寄存器即可。
• Single PWM
• Half-Bridge PWM
• Full-Bridge PWM, Forward Mode
• Full-Bridge PWM, Reverse Mode
• Single PWM with PWM Steering Mode(极性相反的PWM)



这里先使用PWM输出模式:Single PWM

查看手册——PWM介绍
查看手册第24.3节,了解PWM是什么以及PIC16(L)F1826芯片是如何产生PWM的。
PWM波形
从图中可以看出定时器的PRx寄存器值就是PWM波的频率,而高电平时间就是CCPRxH寄存器和CCPxCON寄存器的Bit5、Bit4组成的10bit数值


PWM产生框图
从图中我们可以得出要生成PWM波形需要以下几个外设及相关寄存器:Timer、CCP、IO


PWM相关参数计算
此图中介绍了PWM生成需要的定时器为Timer2/4/6,但是PIC16(L)F1826芯片只有Timer2没有Timer4/6这个可以从第1章Device OverView的PIC16(L)F1826/27 PINOUT DESCRIPTION表中得到信息。此图主要是要知道PWM波形的频率和占空比计算即可。
注:这里只给出了PWM的周期,那么PWM频率就是周期的导数


死区延时
在半桥驱动的PWM模式时死区延时才有效果,其他模式死区延时是没有用的。


IO附加功能
PWM输出功能属于IO口的附加功能,需要设置相应IO口的附加功能


PWM要求
1KHZ、50%占空比、系统时钟选择16MHz

PWM参数计算
1KHz频率就是1ms的周期,所以代入到前面PWM的周期计算公式中,其中PRx为Timer2的定时值,Fosc为系统时钟。


MCC软件配置
系统时钟设置
按照以下图所示设置(关于时钟源的来源及如何设置,在定时器使用中有提到PIC16(L)F1826——定时器使用 - Microchip论坛 - PIC单片机论坛 - Microchip(微芯科技)MCU官方技术支持论坛 - 21ic电子技术开**坛)


添加Timer2外设
在Device Resources窗口中点开Timer选择按钮,点击Timer2前面的+号图标添加Timer2模块。

设置PWM频率
按照下图设置PWM周期为1ms(频率为1KHz)

添加ECCP外设点击Device Resourcs窗口的ECCP模块前面的+号或者右边Available Resources窗口中的ECCP模块前面的+号都可以添加ECCP模块

设置PWM其他参数(占空比、输出引脚等)
根据前面分析的PWM参数来配置ECCP外设参数。

然后点击左边窗口中的Generate按钮生成工程代码。

编写代码
因为这个PWM是由硬件直接完成的,也没有使用中断。所以这里我们不需要main函数中添加任何代码。编译工程

调试代码
逻辑分析仪使用
逻辑分析可以用于测试引脚的波形,并且可以对波形进行测量。
添加逻辑分析仪点击Window >> Simulator >> Logic Analyzer打开逻辑分析窗口

添加观察的引脚
向逻辑分析仪中添加需要观察的引脚,点击窗口左下角的锤子图标打开引脚添加窗口

在Logic Analyzer Settings窗口的左侧窗口中,选择P1A然后点击中间的右箭头图标,将P1A添加到右侧窗口中。最后点击OK


点击调试工具栏中的“运行”按钮,运行程序,然后再点击“暂停”按钮。即可从逻辑分析仪查看P1A上的波形如下:


设置“逻辑分析仪”参数:以运行周期计时还是实际运行时间。这里我们需要查看时间,所以选择“Real time"

//=============**结束=========**结束=============**结束===================//
*****以下图片,不知道如何删除。大家不用管与本篇**内容没啥关系,非常抱歉!^_^

PWM(Enchanced)框图.PNG (308.26 KB )

PWM(Enchanced)框图.PNG

413946149dec87991a.png (91.37 KB )

413946149dec87991a.png

死区延时.PNG (543.32 KB )

死区延时.PNG

665686149d81056307.png (480.05 KB )

665686149d81056307.png

使用特权

评论回复
沙发
gaoyang9992006| | 2021-9-22 18:16 | 只看该作者
这个软件的仿真功能挺好用的。

使用特权

评论回复
板凳
sujinfu| | 2021-11-5 11:46 | 只看该作者
感谢分享

使用特权

评论回复
地板
kyzhd| | 2021-11-5 14:36 | 只看该作者
感谢楼主分享心得,不错。

使用特权

评论回复
5
yinwuqing110| | 2021-11-6 23:37 | 只看该作者
感谢分享

使用特权

评论回复
6
aspoke| | 2021-11-10 21:18 | 只看该作者
有驱动舵机的程序吗?              

使用特权

评论回复
7
232321122| | 2021-11-10 21:18 | 只看该作者
PIC16支持几路pwm呢?         

使用特权

评论回复
8
ghuca| | 2021-11-10 21:18 | 只看该作者
LED灯调亮度可连续吗   

使用特权

评论回复
9
soodesyt| | 2021-11-10 21:18 | 只看该作者
最近在研究这个pwm控制电机呢      

使用特权

评论回复
10
mnynt121| | 2021-11-10 21:18 | 只看该作者
PIC16F1826涨价了吗   

使用特权

评论回复
11
plsbackup| | 2021-11-10 21:19 | 只看该作者
这个支持mcc开发吗?      

使用特权

评论回复
12
kmzuaz| | 2021-11-10 21:19 | 只看该作者
EECP1模块是什么模块呢?         

使用特权

评论回复
13
qiufengsd| | 2021-11-10 21:19 | 只看该作者
PWM支持多大速度输出   

使用特权

评论回复
14
cehuafan| | 2021-11-10 21:19 | 只看该作者
用在DCDC电源上可行呢。     

使用特权

评论回复
15
wengh2016| | 2021-11-10 21:20 | 只看该作者
死区pwm用过吗?   

使用特权

评论回复
16
yangxiaor520| | 2021-11-11 07:52 | 只看该作者
谢谢楼主分享,学习拉。

使用特权

评论回复
17
yinwuqing110| | 2021-11-11 18:45 | 只看该作者
PWM可以驱动无源蜂鸣器,制作音乐盒

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

60

帖子

0

粉丝