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

使用MCC学习PIC单片机 – ZCD 过零检测器

[复制链接]
2598|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

在很多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上应该有这个参数的.

使用特权

评论回复
5
yiy| | 2019-4-28 11:26 | 只看该作者
好像用过。

使用特权

评论回复
6
oxygenzz|  楼主 | 2019-4-28 15:25 | 只看该作者
pzsh 发表于 2019-4-28 09:46
请问这个对交流信号的频率有要求吗? 最快频率是多少?

过零检测响应时间典型值1us。可参见数据手册。

使用特权

评论回复
7
conjunction| | 2019-4-28 15:44 | 只看该作者
过零检测的用处也挺多的,处理交流信号很好用

使用特权

评论回复
8
oxygenzz|  楼主 | 2019-4-28 15:48 | 只看该作者
conjunction 发表于 2019-4-28 15:44
过零检测的用处也挺多的,处理交流信号很好用


能不能介绍一下具体是怎么用的?用在什么上?
谢谢!

使用特权

评论回复
9
捉虫天师| | 2019-9-25 23:53 | 只看该作者
非常给力。

使用特权

评论回复
10
asdsfgwsafd| | 2019-9-27 17:07 | 只看该作者
可控硅吧,扰乱电网波形怎么处理

使用特权

评论回复
11
kavent| | 2020-2-11 10:50 | 只看该作者
很好,学习了!

使用特权

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

本版积分规则

46

主题

190

帖子

11

粉丝