[PIC®/AVR®/dsPIC®产品] 使用MCC学习PIC单片机 – ZCD 过零检测器

[复制链接]
3507|10
 楼主| oxygenzz 发表于 2019-4-26 19:07 | 显示全部楼层 |阅读模式

在很多PIC16和PIC18系列芯片中,配备有ZCD过零检测器模块。ZCD 模块检测交流信号何时越过地电位。

在MCC里的配置图如下:



原理简图


为了使ZCD模块能正常工作,检测信号要通过一个串联限流电阻与管脚连接。该电阻的阻值大小要经过计算,选择合适的阻值。计算的标准是当检测信号的峰值电压到来时,通过电阻的电流不超过300uA。


Zcpinv是内部的过零参考电压,典型值是0.75V,这是默认的检测门限。因为这个内部门限值不是0V,检测结果上会带有相位偏差。相位偏差可以通过外加上拉或下拉电阻来补偿。补偿之后,实际的检测门限具有了一点的调节性,可以将检测门限调节到0V。
具体的公式,这里就不贴了。感兴趣的,可以去看下面这篇应用笔记。


http://ww1.microchip.com/downloads/en/AppNotes/90003138A.pdf


MCC代码

这个模块没有太多软件参数需要配置,代码不多。

初始化。

void ZCD_Initialize (void)
{
     // Set the ZCD to the options selected in the User Interface

    // ZCDPOL not inverted; ZCDSEN enabled; ZCDINTP enabled; ZCDINTN disabled;
    ZCDCON = 0x82;

    // Clearing IF flag before enabling the interrupt.
    PIR2bits.ZCDIF = 0;

    // Enabling ZCD interrupt.
    PIE2bits.ZCDIE = 1;
}

查询当前极性。

bool ZCD_IsLogicLevel(void)
{
    // Return ZCD logic level depending on the output polarity selected.
    return (ZCDCONbits.ZCDOUT);
}

处理中断

void ZCD_ISR(void)
{
    // Clear the ZCD interrupt flag
    PIR2bits.ZCDIF = 0;
}




本帖子中包含更多资源

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

×
kaventwahaha 发表于 2019-4-26 21:47 | 显示全部楼层
路过学习一下!
pzsh 发表于 2019-4-28 09:46 | 显示全部楼层
请问这个对交流信号的频率有要求吗? 最快频率是多少?
CoolSilicon 发表于 2019-4-28 09:48 | 显示全部楼层
pzsh 发表于 2019-4-28 09:46
请问这个对交流信号的频率有要求吗? 最快频率是多少?

datasheet上应该有这个参数的.
yiy 发表于 2019-4-28 11:26 | 显示全部楼层
好像用过。
 楼主| oxygenzz 发表于 2019-4-28 15:25 | 显示全部楼层
pzsh 发表于 2019-4-28 09:46
请问这个对交流信号的频率有要求吗? 最快频率是多少?

过零检测响应时间典型值1us。可参见数据手册。
conjunction 发表于 2019-4-28 15:44 | 显示全部楼层
过零检测的用处也挺多的,处理交流信号很好用
 楼主| oxygenzz 发表于 2019-4-28 15:48 | 显示全部楼层
conjunction 发表于 2019-4-28 15:44
过零检测的用处也挺多的,处理交流信号很好用


能不能介绍一下具体是怎么用的?用在什么上?
谢谢!
捉虫天师 发表于 2019-9-25 23:53 | 显示全部楼层
非常给力。
asdsfgwsafd 发表于 2019-9-27 17:07 | 显示全部楼层
可控硅吧,扰乱电网波形怎么处理
kavent 发表于 2020-2-11 10:50 | 显示全部楼层
很好,学习了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

190

帖子

11

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