導航:首頁 > 編程語言 > 單片機spwm信號編程

單片機spwm信號編程

發布時間:2022-08-28 08:06:42

❶ 新人求助,怎麼用51單片機產生SPWM波

用51單片機產生SPWM波,所謂SPWM波、就是PWM波 的占空比按照正弦波的規律 變化,也就是PWM波 是 正弦波的 載波,編程時 按照 正弦波 的 規律 調整 PWM 的占空比 就可以了。

❷ 求教51單片機生成spwm波形的程序

1、用普通I/O口採用軟體定時器中斷可以模擬SPWM輸出。"/**/"裡面的內用是對程序的標注,解析。
2、/*採用6MHz晶振,在P1.0腳上輸出周期為2.5s,占空比為20%的脈沖信號*/
/*定時100ms,周期2.5s需25次中斷,高電平0.5s需5次中斷*/
#include <reg51.h>
typedef unsigned char uchar;
sbit P1_0=P1^0;
uchar time=0;
uchar period=25;
uchar high=5;
void timer0() interrupt 1 using 1
{
TH0=0x3c; /*定時器初值重裝載*/
TL0=0xb0;
time++;
if(time==high) /*高電平持續時間結束,變低*/
{ P1_0=0;}
else if(time==period) /*周期時間到,變高*/
{ time=0;
P1_0=1;
}
}
void main()
{
TMOD=0x01; /*定時器0方式1*/
TH0=0x3c; /*定時器裝載初值*/
TL0=0xb0;
EA=1; /*開CPU中斷*/
ET0=1; /*開定時器0中斷*/
TR0=1;/*啟動定時器0*/
while(1) /*等待中斷*/
{}
}
3、說明:本程序主要採用了51單片機(具體型號STC89C52RC)的定時器,工作在方式3,來產生規定時間內的方波,製造SPWM.

❸ 基於at89c51系列單片機的兩路互補SPWM波形實現,程序如何編寫要求頻率50hz

用定時器定時10ms,中斷程序里將兩個IO管腳狀態取反即可。但兩個管腳的原始狀態是相反的。

大致 程序如下:
主程序里
TMOD=0X01;
TH0=.......
TL0=......
EA=1;
ET0=1;
PWM1=0;//一個管腳置低
PWM2=1;//另一個管腳置高
TR0=1;
中斷程序中:
TH0=.......
TL0=......
PWM1=!PWM1;
PWM2=!PWM2;

❹ 如何實現spwm

實現spwm的方法:

1)利用分立元件,採用模擬、數字混和電路生成SPWM波。此方法電路復雜,實現困難且不易改進;

2)由SPWM專用晶元SA828系列與微處理器直接連接生成SPWM波,SA828是由規則采樣法產生SPWM波的,相對諧波較大且無法實現閉環控制;

3)利用CPLD(復雜可編程邏輯器件)設計,實現數字式SPWM發生器;

4)基於單片機實現SPWM,此方法控制電路簡單可靠,利用軟體產生SPWM波,減輕了對硬體的要求,且成本低,受外界干擾小。

(4)單片機spwm信號編程擴展閱讀:

SPWM(Sinusoidal PWM)法是一種比較成熟的、使用較廣泛的PWM法。沖量相等而形狀不同的窄脈沖加在具有慣性的環節上時,其效果基本相同。SPWM法就是以該結論為理論基礎,用脈沖寬度按正弦規律變化而和正弦波等效的PWM波形即SPWM波形控制逆變電路中開關器件的通斷,使其輸出的脈沖電壓的面積與所希望輸出的正弦波在相應區間內的面積相等,通過改變調制波的頻率和幅值則可調節逆變電路輸出電壓的頻率和幅值。

PWM的全稱是Pulse Width Molation(脈沖寬度調制),它是通過改變輸出方波的占空比來改變等效的輸出電壓。廣泛地用於電動機調速和閥門控制,比如電動車電機調速就是使用這種方式。

❺ 51單片機軟體產生spwm程序

主要看你用匯編 還是用C 如果用C得就是建常亮數組,如果用匯編,就像下面這樣的表格
Number_table1:
;dp decbhgfa
;-------------------------------------
db 11110011b ;0 11000000b

❻ 用89c52單片機如何產生SPWM信號

這是一個復雜的課題,你可以上網搜索「SPWM 逆變」 關鍵字。逆變是通過CMOS或者BJT開關的打開和閉合來實現的,單片機產生SPWM波,控制CMOS開關的打開閉合,從而達到逆變的目的,先了解SPWM控制逆變的原理,然後找別人發布的程序修改,多調試調試就好了,確認挺復雜的

❼ 單片機產生SPWM程序,要求50Hz,且輸出波形無明顯失真,最好用51單片機或者430等常見單片機

只用單片機做SPWM,在編寫程序的時候恐怕計算過於復雜,波形估計也不會好,而且單片機運行時忙於產生SPWM波形,可能其他的什麼也幹不了了。建議你採用專門產生SPWM波形的IC,如SM2001。你只需要用單片機對其輸入一些參數值後,它就自動產生SPWM波形了。

❽ 耐壓測試儀的系統設計

測試系統有三大模塊:程式控制電源模塊、信號採集調理模塊和計算機控制系統。 由輸出位0V~140V的程式控制電源和高壓變壓器構成,在單片機ADCm842控制下程式控制電源輸出電壓經變壓器升壓可以得到設定的輸出電壓值。
模塊設計
由於在實際的耐壓測試中,對不同產品可能要求施加不同的測試電壓,這就要求耐壓測試系統輸出測試電壓是可調的。PWM(Pulse Width Molation)是控制逆變電源以實現可調電壓的輸出的主要方法之一。PWM控制的理論基礎建立在采樣控制理論的一個重要結論上,即:沖量相等而形狀不同的窄脈沖加在具有慣性的環節上時,其效果基本相同。SPWM波形就是把正弦波用等幅不等寬的脈沖代替,脈沖中點與正弦等分中點重合,且與相對應的正弦面積相等,各脈沖的寬度按正弦規律變化。SPWM波的產生有很多方法,可以由專用集成晶元或通用電路組合產生,也可以由單片機產生。本系統採用單片機ATMEGA16L產生SPWM波,利用單片機ATMEGA16L的內部的累加器和比較器通調節占空比在PC4口輸出SPWM波。
程式控制電壓源採用單向220V工頻交流電經過橋式整流獲得直流電壓,經過濾波後為逆變電路提供穩定的直流電。同時由單片機產生的單相SPWM波經過非門產生一路和單片機輸出相位互補的SPWM波,這兩路互補的SPWM波分別經過單穩電路和隔離驅動電路後就可以產生兩路相位互補的門級觸發脈沖序列可以控制的通斷。最終由IGBT構成的逆變橋輸出經低通濾波可得到標准正弦波,正弦電壓幅值0V~140V可調。 包括感測器、信號調理電路和過電流保護電路,測試迴路漏電流通過感測器進入信號採集和調理電路,在信號採集和調理電路中對漏電流信號進行I/V轉換變成滿足A/D輸入范圍的電壓信號。過流保護電路在試品或電路故障時啟動。
模塊設計
耐壓測試需要監測的參數是:變壓器輸出高電壓的值和測試迴路的漏電流值(如圖2)。測試系統中所使用的升壓變壓器二次繞組有0~5000V和0~5V兩路電壓輸出,當變壓器二次繞組高壓輸出從0V到5000V變化時,變壓器二次繞組低壓輸出從0V到5V之間變化,兩路輸出之間具有良好的線性關系。測試開始在設定的升壓時間間隔內,變壓器二次繞組低壓側輸出的電壓經隔離變壓器和信號調理電路後進入單片機ADCm842,單片機ADCm842中的12位ADC以每秒42萬次轉換速度進行高速A/D轉換,A/D轉換後的數字量傳送給計算機並與計算機設定值相比較,直到輸出電壓符合設定電壓值,我們就認為實際輸出測試電壓滿足了我們設定值的要求。
耐壓測試系統漏電流的測試范圍是0mA ~20mA,測試開始時,被測設備漏電流通過電流互感器,然後經I/V轉換電路將采樣電流轉換成電壓在單片機內進行相應的A/D轉換和計算,最終得到被測設備在設定電壓條件下的泄漏電流值,通過和安全標准規定的泄漏電流值相比較,就可以檢驗設備耐壓測試是否合格。實際測試時,在電流互感器二次側設計了過流保護電路,當有過流情況出現時,例如被測設備被擊穿或者被測設備絕緣缺陷,電源迅速被切斷,測試被終止以保護測試系統不被損壞。
常規的信號調理部分採用真有效值的模擬運算,泄漏電流信號的有效值和峰值運算都是由硬體電路完成後輸入單片機或計算機的。這種信號調理方式最終只能獲得泄漏電流信號的峰值或有效值。這種方法不僅精度不高而且損失了頻率信息,不能真實的復現泄漏電流的實際波形。本系統採用了高速的A/D轉換將交流電壓值直接採集進計算機,按照用戶要求計算出峰值和有效值,並且畫出實時的漏電流波形使用戶能直觀的監測漏電流情況。計算機還可以進行軟體校正,去除漂移、失調造成的誤差。按照實際情況還可以採用數字濾波的方式去除高頻干擾,這種信號調理方式簡化了硬體電路,成本較低,測試精度高,測試穩定性好。由於耐壓測試的試驗電壓較高,為了保證試驗的安全性,在測試過程中要保證測試系統機箱外殼良好的接地。 單片機ADCm842和計算機構成PC計算機控制系統,控制測試過程電壓升降、A/D轉換、數據的處理和分析。
模塊設計
耐壓測試以高性能單片機ADCm842為核心組成計算機控制系統。ADCm842內部集成了12位A/D和D/A轉換器,具有DMA控制器可完成A/D轉換到RAM的高速轉換。ADCm842具有優越的8052內核,峰值效率每秒可執行20兆指令。ADCm842內部有多大62KB的片內程序快閃記憶體;4KB的片內數據快閃記憶體,可擦寫10萬次的2.3KB的片內數據RAM。測試系統的單片機採用C51編程對測試進行控制和數據的處理,PC計算機主要提供人機交互的界面。這種測試系統應用起來靈活方便。
測試控制系統包括對電壓源的控制、數據的採集、A/D轉換、數據分析、數據輸出和顯示、數據存儲等,同時耐壓測試系統軟體可實現測試前自檢,自動消除可能的誤差因素和對故障報警等功能。通過軟體實現對測試電壓的准確控制。當測試電壓達到測試要求值時,啟動測試。軟體按照IEC61010中的測試標准對電壓進行控制。計算機採用VC++編程,測試界面直觀操作方便。用戶可以按照實際測試設置不同的測試時間和泄漏電流閾值,可以監視測試進度並顯示測試結果,如果在測試過程中發生被測樣品擊穿現象或其它可能的過流現象,測試儀的輸出電壓能迅速降為零,並發出報警信號。
實際測試選用0.5級的ZX117A型可調高壓電阻箱作為標准被測件,通過單片機控制輸出電壓升到設定值,用南京長勝的CS1940型數字高壓表監視電壓輸出,輸出電壓的誤差不超過±1.5%。使用美國安捷倫的六位半數字萬用表A-34401A測量系統漏電流,以漏電流的計算值為標准評價本系統的測試精度,按照最新國際標准IEC61010,以不同高電壓施加在相同電阻上分別進行漏電流測試,測試結果表明,測量數據的重復性較好,漏電流的測試誤差為±(1.5%±0.05mA)。
絕緣耐壓測試儀測量范圍 耐壓AC0~5kV/100mA 絕緣DC250V 500V 1000V 1~9999MΩ 性能特點性能提升的絕緣耐壓測試儀 測試電壓、時間、漏電流、絕緣電阻全數顯,准確美觀 測量絕緣電阻值高達1010Ω 智能、單片機控制、測試絕緣電阻、電壓、漏電流、時間可任意調節,范圍廣、准確度高 既可測試產品的電阻、電壓也可對合格、不合格品進行篩選、聲光報警 技術參數 輸出電壓AC 0~5kV ±3%,任意調節擊穿電流AC 0~100mA ±5%,任意設定定時1~99s, ±3%,手控絕緣電阻測試電壓DC 250V/500V/1000V, 測量范圍1~9999MΩ,±3%~±5%,任意設定變壓器容量750VA 主要功能I/W、W/I自動轉換,手動/自動,單片微處理器控制測試,合格/不合格聲光報警,擊穿保護等功能。

❾ 基於STC51系列單片機的SPWM波形實現,程序如何編寫急急急急

/*********************************************************
// 載波比選為N=24,調制比M=Uc/Ur=1,晶振頻率12M
// 正弦波頻率50Hz
// 高電平的寬度Tpw = Tt/2*(1+Msimwt)
// 低電平的寬度Tpw = Tt/2*(1-Msimwt)
// Tt周期
// T2是產生SPWM波形,並從P1^1輸出,用導線連接到P3.4作為測試頻率使用。

// T1工作在定時方式1,定時1s
// T0工作在計數方式,對輸入的脈沖進行計數,溢出產生中斷。
// 16位計數器最大值是65536,1s內可能會產生多次溢出,所以在中斷處理程序對中斷的次數進行
// 計數。1s到後,將中斷的計數器里的計數值取出進行綜合處理,處理後的數據送顯示。

//信號頻率的計算方法:
// T0工作在計數方式,假設1s內溢出C1次,最後未溢出的計數值是C2,則頻率公式為:
// F=C1*2^16+C2 = C1*65536+TH0*256+TL0)

//使用12MHz時鍾,測量的最大范圍是不大於500KHz。
*********************************************************/

#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
uchar disp[8]={0,0,0,0,0,0,0,0};

uchar FreStr[]="Friquency is:";

uchar T0count,T1count;

uchar code x[]={66,38,26,89,15,97,7,102,2,103,1,102,2,
97,7,89,15,78,26,66,38,38,66,26,78,15,
89,7,97,2,102,1,103,1,103,2,102,7,97,15,
89,26,78,38,66};
uchar ky,kc,count=255;
sbit L1=P1^1;

void delayms(uchar ms)

{
uchar i ;
while(ms--)
{
for(i = 0 ; i < 120 ; i++) ;
}
}

//LCD定義開始
//以下三個是定義LCD的引腳
sbit lcden=P0^5;
sbit lcdwrite=P0^6;
sbit lcdrs=P0^7;

//延時程序
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//lcd的寫指令
void write_com(uchar com)
{
lcdrs=0;
lcden=0;
P2=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
//lcd的寫數據
void write_data(uchar da)
{
lcdrs=1;
lcden=0;
P2=da;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
//初始化
void Lcd_init()
{
lcdwrite=0;
lcden=0;
write_com(0x38); //16*2顯示,5*7點陣,8位數據
write_com(0x0c);//顯示開,關游標
write_com(0x06); //移動游標
write_com(0x01);//清除LCD的顯示內容
}
//LCD定義結束

//計算頻率值
void calc()
{
uchar i;
long frequency;
frequency=(T0count*256+TH0)*256+TL0;
for(i=7;i>0;i--)
{
disp[i]=frequency%10;
frequency=frequency/10;
}
disp[0]=frequency;
}

void init()
{
T0count=0;
T1count=0;
TH0=0;
TL0=0;
}

void main()
{
uchar dis;
init();
Lcd_init();
TMOD=0x15;
TH1=(65536-5*110592/12)/256;
TL1=(65536-5*110592/12)/256%10;
ET1=1;
ET0=1;
EA=1;
TR1=1;
TR0=1;

//以下四句的作用是在P1.1引腳上形成1000Hz的脈沖,用導線連接到P3.4作為測試用。將其中
//高8位和低8位的初始值更改後可輸出不同頻率的脈沖。
T2MOD = 0x02;
TH2=255-x[ky];
TL2=255-x[ky];
ET2=1;
EX0=1;
TR2=1;
L1=1;

write_com(0x80);
for(dis=0;dis<12;dis++)
write_data(FreStr[dis]);

while(1)
{
write_com(0xC0);
for(dis=0;dis<8;dis++)
write_data(disp[dis]+0x30); //顯示頻率
}
}

//計算輸入脈沖的次數
void time0() interrupt 1
{
T0count++;
}

//計算1s時間
void time1() interrupt 3
{
TH1=(65536-5*110592/12)/256;
TL1=(65536-5*110592/12)/256%10;

if(T1count==20)
{
calc();
init();
}
else T1count++;
}

//這是產生SPWM波形、
void M() interrupt 5
{
TH2=255-x[ky];
TL2=255-x[ky];
kc++;
if(kc==count)
{
kc=0;

L1=~L1;

ky++;

if(ky==49) ky=0;
}
}

//這是使用外部中斷0可以調整輸出波形的頻率
void MM() interrupt 0
{
delayms(300);
if(INT0==0)
{
count=count-5;
if(count==0) count=255;
}
}

❿ 51單片機產生SPWM波控制IR2110的程序怎麼寫啊

//Fc載波Hz;Fs產生的Hz;v精度,8位為256,9位為512 ;time某時刻;
//PI=3.

void SPWM_FUN(long Fc,long Fs,int v,int time,double *SPWM){
time=time%Fc;
for(int i=0;i<3;i++){
*(i+SPWM)=sin(i*2 * PI / 3 + PI* Fs* time/ Fc)* v;
}
}

閱讀全文

與單片機spwm信號編程相關的資料

熱點內容
脈脈app干什麼用的 瀏覽:357
拽姐是哪個app 瀏覽:858
雲伺服器刪除了還有嗎 瀏覽:232
macbook可以用單片機嘛 瀏覽:307
南陽php招聘 瀏覽:814
去哪裡找按摩師很漂亮的app 瀏覽:818
86x99用簡便演算法計算 瀏覽:830
php截圖flash 瀏覽:274
卸載聯想app哪個好 瀏覽:720
php文字轉圖片 瀏覽:332
豆客後台怎麼加密碼 瀏覽:574
jpg轉換pdf破解版 瀏覽:978
php基礎書籍推薦 瀏覽:778
伺服器與外網不通如何驗證 瀏覽:353
電子版是不是就是文件夾 瀏覽:51
游戲屬性文件加密 瀏覽:464
如何讓安卓手機桌面圖標下移 瀏覽:530
ubuntuphp5環境搭建 瀏覽:101
賭癮解壓視頻 瀏覽:919
晉城移動dns伺服器地址 瀏覽:296