[PIC®/AVR®/dsPIC®产品] PIC16(L)F1826——PWM使用

[复制链接]
8787|16
 楼主| JackTang1994 发表于 2021-9-22 09:48 | 显示全部楼层 |阅读模式
本帖最后由 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

示例代码:

手册阅读
查看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"

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
gaoyang9992006 发表于 2021-9-22 18:16 | 显示全部楼层
这个软件的仿真功能挺好用的。
sujinfu 发表于 2021-11-5 11:46 | 显示全部楼层
感谢分享
kyzhd 发表于 2021-11-5 14:36 | 显示全部楼层
感谢楼主分享心得,不错。
yinwuqing110 发表于 2021-11-6 23:37 | 显示全部楼层
感谢分享
aspoke 发表于 2021-11-10 21:18 | 显示全部楼层
有驱动舵机的程序吗?              
232321122 发表于 2021-11-10 21:18 | 显示全部楼层
PIC16支持几路pwm呢?         
ghuca 发表于 2021-11-10 21:18 | 显示全部楼层
LED灯调亮度可连续吗   
soodesyt 发表于 2021-11-10 21:18 | 显示全部楼层
最近在研究这个pwm控制电机呢      
mnynt121 发表于 2021-11-10 21:18 | 显示全部楼层
PIC16F1826涨价了吗   
plsbackup 发表于 2021-11-10 21:19 | 显示全部楼层
这个支持mcc开发吗?      
kmzuaz 发表于 2021-11-10 21:19 | 显示全部楼层
EECP1模块是什么模块呢?         
qiufengsd 发表于 2021-11-10 21:19 | 显示全部楼层
PWM支持多大速度输出   
cehuafan 发表于 2021-11-10 21:19 | 显示全部楼层
用在DCDC电源上可行呢。     
wengh2016 发表于 2021-11-10 21:20 | 显示全部楼层
死区pwm用过吗?   
yangxiaor520 发表于 2021-11-11 07:52 来自手机 | 显示全部楼层
谢谢楼主分享,学习拉。
yinwuqing110 发表于 2021-11-11 18:45 | 显示全部楼层
PWM可以驱动无源蜂鸣器,制作音乐盒
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

64

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部