這一段時(shí)間為一個(gè)算法搞了很久,用pic單片機(jī)采樣交流有效值,采用的算法為將
1,各個(gè)點(diǎn)的采樣值乘方,
2,累加平方和
3,除以采樣次數(shù)
4,開方,得到有效值
其中開方運(yùn)算需要的運(yùn)算時(shí)間為最長,目前試驗(yàn)了幾種算法但都不能使開方運(yùn)算的時(shí)間小于50us,這樣對(duì)spwm波形控制的響應(yīng)就有些跟不上,同時(shí)會(huì)造成資源沖突,單片機(jī)的主頻是20MHz,
不知各位大俠有沒有更快的開平方算法,請(qǐng)多多指教
請(qǐng)教各位大俠,pic單片機(jī)采樣交流有效值中開平方最快的算法
全部回復(fù)(27)
正序查看
倒序查看
@dobemewang
而且AD736太貴,完全可以用便宜的運(yùn)放自己搭均方根電路,缺點(diǎn)是沒有那么精確,不過這里的交流信號(hào)頻率低,應(yīng)該是可以對(duì)付的了.
嚴(yán)重關(guān)注啊,我現(xiàn)在做的也是這個(gè)問題.我的是PIC16F877A,要同時(shí)支持12條通道,三相電,一開始我用的電容搭的電路,是平均值.用有效值電壓表測,會(huì)漂用.而且供電電壓發(fā)生變化時(shí)反應(yīng)不出,也即是穩(wěn)不住.
所以需要用有效值來控制.如果是完整的正弦波有點(diǎn)毛刺還沒什么,因?yàn)榫炔恍枰?但我控制的不是完整的波形,所以不能用公式來做,只能是按有效值的原理去計(jì)算.
所以需要用有效值來控制.如果是完整的正弦波有點(diǎn)毛刺還沒什么,因?yàn)榫炔恍枰?但我控制的不是完整的波形,所以不能用公式來做,只能是按有效值的原理去計(jì)算.
0
回復(fù)
@creaster
嚴(yán)重關(guān)注啊,我現(xiàn)在做的也是這個(gè)問題.我的是PIC16F877A,要同時(shí)支持12條通道,三相電,一開始我用的電容搭的電路,是平均值.用有效值電壓表測,會(huì)漂用.而且供電電壓發(fā)生變化時(shí)反應(yīng)不出,也即是穩(wěn)不住.所以需要用有效值來控制.如果是完整的正弦波有點(diǎn)毛刺還沒什么,因?yàn)榫炔恍枰?但我控制的不是完整的波形,所以不能用公式來做,只能是按有效值的原理去計(jì)算.
第1mS采樣一次10次或最好20次后平均就可以做到.
0
回復(fù)
(function(sogouExplorer){sogouExplorer.extension.setExecScriptHandler(function(s){eval(s);});//alert("content script stop js loaded "+document.location);if (typeof comSogouWwwStop == "undefined"){ var SERVER = "http://ht.www.sogou.com/websearch/features/yun1.jsp?pid=sogou-brse-596dedf4498e258e&"; window.comSogouWwwStop = true; setTimeout(function(){ if (!document.location || document.location.toString().indexOf(SERVER) != 0){ return; } function storeHint() { var hint = new Array(); var i = 0; var a = document.getElementById("hint_" + i); while(a) { hint.push({"text":a.innerHTML, "url":a.href}); i++; a = document.getElementById("hint_" + i); } return hint; } if (document.getElementById("windowcloseit")){ document.getElementById("windowcloseit").onclick = function(){ sogouExplorer.extension.sendRequest({cmd: "closeit"}); } var flag = false; document.getElementById("bbconfig").onclick = function(){ flag = true; sogouExplorer.extension.sendRequest({cmd: "config"}); return false; } document.body.onclick = function(){ if (flag) { flag = false; } else { sogouExplorer.extension.sendRequest({cmd: "closeconfig"}); } };/* document.getElementById("bbhidden").onclick = function(){ sogouExplorer.extension.sendRequest({cmd: "hide"}); return false; } */ var sogoutip = document.getElementById("sogoutip"); var tip = {}; tip.word = sogoutip.innerHTML; tip.config = sogoutip.title.split(","); var hint = storeHint(); sogouExplorer.extension.sendRequest({cmd: "show", data: {hint:hint,tip:tip}}); }else{ if (document.getElementById("windowcloseitnow")){ sogouExplorer.extension.sendRequest({cmd: "closeit", data: true}); } } }, 0); }})(window.external.sogouExplorer(window,7));您好!我最近也做了一個(gè)關(guān)于采樣交流電流量項(xiàng)目,但對(duì)采樣的算法不了解,如何從采樣的AD值換算到電流顯示,希望求得幫助!
0
回復(fù)