Microchip
直播中

罗玉婧

8年用户 246经验值
私信 关注
[问答]

寻找PIC版本以在500微秒内找到输入信号的RMS值

嗨,另一个业余爱好者,在少数样本项目和模拟中获得成功。现在我正在研究一个三相功率监测系统,我需要精确地测量多个RMS电压。我尝试了PIC16F87A,但后来实现浮点算术在这方面是缓慢的。有人能给我推荐一张我能用的照片吗?-我不能使用(峰值电压)*0.707找到均方根,即使它是正弦的。(在故障期间,它可能不是完全正弦的)-我试图平方,增加,除法,然后从ADC中取出全部样本的平方根来找到均方根。(用PIC 16F进行模拟时,它甚至需要250毫秒r 10个样本。-任何逻辑上的建议也值得赞赏。-即使我的输入频率是50Hz,我需要测量6个这样的信号,并在一个周期内完成剩余的逻辑。谢谢。

回帖(2)

李天竹

2020-4-7 15:50:45
你必须放弃浮点运算,全部用整数运算,除非你想用支持浮点运算的MCU。PIC16是不好的,因为它甚至没有硬件乘法。这正是你需要做的。“GS”系列是专门为电力应用而设计的。
举报

夏涌革

2020-4-7 16:00:30
为了计算波形的真实RMS值,在一个半周期的周期内需要至少3个采样,采样率是频率的整数倍。因此,对于50Hz,半周期为10mSec,并且良好的最小采样率大约为400Hz,每半周期提供4个采样。对于失真波形,需要更多的采样来解释高频谐波含量。您可以使用定时器中断以精确的定时间隔采样,然后使用ADC中断来执行处理。您可以取四个10位的样本,执行快速整数乘法,并将结果加到一个最大值为4186116的长无符号整数中,但实际上对于+/-512计数的正弦波为522084。在每一个总数之后,将该值分配给另一个无符号长,然后为下一个样本集计数。在主循环中,可以取平方和的平方根为真RMS值。为了更快的处理,您可以通过右移两个位置来除以4,最大值是130521,或者用三个位置移位来除以8,最大值是65260。平方根是255,所以结果是8位精度。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分