這僅僅是一個(gè)不作死就不會(huì)死業(yè)余程序猿干出的蠢事,大神們手下留情,磚頭少飛一下,小的在此先謝過(guò)了。
很多年前,大約在07年還是05年。就有過(guò)用單片機(jī)模擬DSP跑變頻器程序的想法。因?yàn)槔弦惠呍?jīng)用2051跑俄羅斯方塊,想想人家既然能同時(shí)處理場(chǎng)、行還有視頻信號(hào),那么跑一個(gè)120度相差的三相正弦波應(yīng)該沒(méi)問(wèn)題吧,迫不及待的敲一段代碼,燒進(jìn)AT89S52單片機(jī)一運(yùn)行,結(jié)果是否定的。
S52用24M的晶振居然只能跑出幾赫茲的變頻正弦波來(lái)。失望之余就把代碼丟一旁,后來(lái)一次硬盤(pán)損壞,代碼也丟失了。
上個(gè)月由于生病加上工作的不容易,宅家里,沒(méi)事瞅了瞅老姚的STC單片機(jī),發(fā)現(xiàn)其中到了STC12CXXX以上的單片機(jī)居然都是1T指令周期,時(shí)鐘能上35MHz,心頭一亮,又閃出了想跑一跑變頻器的想法。
說(shuō)干就干,找來(lái)洞洞板,搭上最小系統(tǒng),時(shí)鐘嗎,找了張DVD解碼板,搞到一顆27M的,先用上再說(shuō)。
緊接著就是滿(mǎn)盤(pán)找以前寫(xiě)的代碼,結(jié)果是失望的,想起那次硬盤(pán)損壞,代碼早就無(wú)影無(wú)蹤了。
老早就聽(tīng)說(shuō)過(guò)變頻器算法是很復(fù)雜的,畢竟沒(méi)玩過(guò)DSP,也沒(méi)聽(tīng)人家說(shuō)過(guò)。只聽(tīng)人說(shuō)過(guò),這算法不是歪著脖子半小時(shí)能想出的東東。我現(xiàn)在也早已沒(méi)有了當(dāng)年的激情了。
思來(lái)想去,反正51速度也不夠。那還是用當(dāng)年的查表法吧。(有人就要說(shuō)了,PIC不是1T的嗎,而且人家一開(kāi)始就是!?)您可別忘了,PIC是快,最高時(shí)鐘一個(gè)指令200NS??墒悄阋矂e忘了,由于它的指令過(guò)于簡(jiǎn)單,簡(jiǎn)單到查表指令都沒(méi)。而且我當(dāng)年就用PIC測(cè)試過(guò),那一堆查表指令下來(lái),還沒(méi)S52跑得快!
好了,回到正題,當(dāng)年的數(shù)據(jù)表沒(méi)了,而且你現(xiàn)在叫我用手算,你還是殺了我吧。。。。
歪脖子一想還是交給電腦吧,好吧立馬動(dòng)手敲代碼。N小時(shí)后如下結(jié)果,計(jì)算一次居然要差不多十分鐘,由于沒(méi)開(kāi)多線(xiàn)程,計(jì)算過(guò)程中界面也卡死,奇葩吧? ^_^
吼吼!你那不是相差120度的三角波波么?你騙我這剛上幼兒園的小盤(pán)友?!
額額,是的,一張51能把這波波跑出來(lái)也就很能干了,何況還有一個(gè)業(yè)余的程序猿。。。。
迫不及待燒入STC12C5A32S2,嘿嘿,電機(jī)轉(zhuǎn)起來(lái)了(家里沒(méi)放三相電機(jī),這里用的一個(gè)三相無(wú)刷電機(jī)測(cè)試的,閑余時(shí)我去搭一個(gè)三相全橋IGBT,直接輸出380V AC,掛一個(gè)7.5KW電機(jī)玩玩)結(jié)果又悲劇了,電機(jī)雖然運(yùn)行平穩(wěn),而且可以很低速運(yùn)行(市面上的電調(diào)可不行,我手上買(mǎi)有2套,啟動(dòng)平穩(wěn)運(yùn)行大約都十幾赫茲以上)可是最高速度也就十幾赫茲,而且程序還老是復(fù)位!而我又沒(méi)開(kāi)啟看門(mén)狗!汗。。。
注:三相直流電機(jī)與三相鼠籠式電機(jī)最大的區(qū)別是,直流電機(jī)直接掛50Hz無(wú)法啟動(dòng),而鼠籠式可以。
沉思之后明白了,檢查代碼,居然38K字節(jié)了,人家STC12C5A32S2只有32K好么。
另,一共360度,每度再分成100份,光數(shù)據(jù)表大不說(shuō),指針溢出,一個(gè)周期跑下來(lái)也耗時(shí)多多。
更改代碼重新計(jì)算,再次燒入,電機(jī)再次轉(zhuǎn)起來(lái),慢慢提高頻率,電機(jī)也跟著快起來(lái),當(dāng)高到50Hz左右時(shí)電流開(kāi)始減小,再高電機(jī)停轉(zhuǎn),這也是三相無(wú)刷直流電機(jī)高速不能輸入正弦波的緣故。
好了,今兒到此結(jié)束,以后有空繼續(xù)鼓搗。
結(jié)束語(yǔ)
為啥本文中不提供代碼?
玩兒這東東,可不光是能敲代碼就可以的,老鳥(niǎo)很明白。(老鳥(niǎo)也不需要代碼,只需要思路即可。)
倘若您也喜歡跟我作死,那么我總結(jié)幾條會(huì)作死的總結(jié)。
1、 硬件
無(wú)論是MOS管,還是IGBT,對(duì)于沒(méi)太玩過(guò)的,您注意了,爆管就如同爆花生米,特別是玩上380AC的,那煙花是一個(gè)勁的贊^_^,本尊已經(jīng)不知道爆了多少米了。。。。。
2、 代碼
這個(gè)到?jīng)]什么,要求就是精簡(jiǎn)。匯編妥妥的^_^,您要是會(huì)C++等,那么算法就OK了。
只是需要時(shí)間罷了^_^