❶ 單片機pwm電路原理
pwm是一種數字控制設備用的控制波形,一般是方波,通過改變pwm的頻率和占空比來控制設備。簡單來講:電機控制中,電機的功率輸出,轉速控制就是需要調整pwm頻率和占空比實現的,在電機迴路中做電子開關,用單片機輸出的pwm控制其開關的導通時間與導通頻率。生活中常見的電腦CPU風扇就是一種,通過溫度檢測器的反饋,控制風扇轉速,從而靈活的控制cpu的溫度,並且節省電能。
有二種情況,第一,如果你所使用的8051單片機(例如stc12系列)是帶有專用的pwm輸出i/o口的話,那就只要控制裡面的特殊功能寄存器改變輸出占空比就行了,不要外加什麼硬體電路的。第二,如果是通入軟體模擬pwm輸出的話,那就用定時器可以解決的,也不需要外加電路。
脈沖寬度調制是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。也是一種模擬控制方脈沖寬度調制是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中脈沖寬度調制是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。並且制是一種模擬控制方式,其根據相應載荷的變化來調制晶體管基極或MOS管柵極的偏置,來實現晶體管或MOS管導通時間的改變,從而實現開關穩壓電源輸出的改變。這種方式能使電源的輸出電壓在工作條件變化。
❷ 單片機輸出PWM信號,經低通濾波電路和輸出驅動電路輸出模擬正弦信號。
假設正弦波周期是 T=20mS,將一個周期360度分成72份(分得越細,輸出的正弦波越平滑),每份是5度
求出每個角度的正弦值sin(5*n),由於這個數值在+1到-1之間,而單片機只能輸出正電壓,因此要將該結果加1,即sin(5*n)+1 ,該值介於0和+2之間
用定時器產生pwm脈沖,該pwm脈沖的周期是T/72=278US
,占空比隨時間而變化 ,可知D=(sin(5*n)+1)/2
高電平持續時間為th=T*D=278*(sin(5*n)+1)/2
這個th可以邊輸出邊計算,也可以提前計算好存於數組中
然後用兩個定時器(定時器0和定時器1), 定時器0定時278US, 定時器1定時時間可變,即為th
定時0負責置高電平並將定時器1打開並裝入初值,定時器1負責置低電平
假設晶振12M ,51單片機程序如下:
主程序中:
sbit PWM=P1^0;
uchar time_high[72]={139,151,163,........};
uchar i=0;
void main( )
{
TMOD=0X11;
TH0=(65536-278)/256;
TL0=(65536-278)%256;
ET0=1;
ET1=1;
EA=1;
TR0=1;
while(1);
}
定時器0中斷:
void timer0()interrupt 1
{
TH0=(65536-278)/256;
TL0=(65536-278)%256;
TH1=(65536- time_high[i])/256;
TL1=(65536- time_high[i])%256;
i++;
If(i==72)i=0;
PWM=1;
TR1=1;
}
定時器1中斷:
void timer1()interrupt 3
{
PWM=0;
TR1=0;
}
這樣P1^0輸出的是占空比可變的方波,經高頻濾波後,得到的是脈動直流電,再經電平偏移或電容藕合,即可得到類似正弦波
❸ 請問一下單片機輸出PWM,這個電路在這邊什麼作用
PWM是脈沖信號,當為低電平時,三極體Q2導通致使Q1導通,那麼Q1集電極就為LED提供電流,LED亮。當高電平時,Q2截止Q1截止,那麼LED滅;
總效果是脈沖信號低電平時,LED亮,同時要求滿足LED接集電極(而不是發射極),這樣就需要在Q2的後面加一級反相電路;
顯然,這是初哥設計的電路,其實從參數看,就沒必要弄得這么復雜和麻煩,去掉Q2、R7、R3,保留Q1、R4,然後PWM信號直接加到R4就好了;
另外順便說,Q2可以工作在開關狀態,而Q1不能工作在開關狀態,而是放大狀態,即是個恆流源。因為Vcc如果為5V,Q1在開關狀態,那麼LED上就是5V了,這個不得了,LED會燒的;
❹ 求單片機控制PWM輸出0~10V連續可調電壓不進0.05程序電路
上面「蘭色的閃電」兄的回答,在許多情況下就可以了。
不過就是他說的「用RC濾波」的方法,如果負載較重的話(也就是負載電流較大),有一定局限,不容易實現輸出直流電壓的精度,往往電壓隨負載的不同而不同。
所以,如果負載較重的話,通常不用RC濾波,而是用電感濾波,加續流二極體。此時,如果忽略二極體正向壓降和線圈的電阻的話,輸出直流電壓可以嚴格等於電源電壓乘以PWM的占空比。
如下圖,圖中的電源取10V即可。
這種電路,電感量越大、PWM頻率越高、負載電流越大濾波效果越好。
故這三個因素可以綜合起來選擇。例如,盡量提高頻率,就可以用比較小的電感來實現同樣的濾波效果。
粗略的估算,按照該頻率算一下電感的感抗有多大,再根據電流估算一下負載電阻有多大,用分壓的辦法,就可以估計出PWM信號中的交流成分被衰減到多少分之一了。
當然,這里只算了基頻,但其他頻率成分(即高次諧波)因為頻率更高,濾波效果只會更好。
如果對濾波效果要求很高,也可以在電感之後,在輸出+到地之間再並上一個電容,做成兩次濾波。
❺ 51單片機pwm調光電路
51單片機pwm調光電路參考源程序:
int potpin=0;//定義模擬介面0
int ledpin=11;//定義數字介面11(PWM 輸出)
int val=0;// 暫存來自感測器的變數數值
void setup()
{
pinMode(ledpin,OUTPUT);//定義數字介面11 為輸出
Serial.begin(9600);//設置波特率為9600
//注意:模擬介面自動設置為輸入
}
void loop()
{
val=analogRead(potpin);// 讀取感測器的模擬值並賦值給val
Serial.println(val);//顯示val 變數
analogWrite(ledpin,val/4);// 打開LED 並設置亮度(PWM 輸__________出最大值255)
delay(10);//延時0.01 秒
}
原理圖:
PWM簡介:
Pulse Width Molation 就是通常所說的PWM,譯為脈沖寬度調制,簡稱脈寬調制。脈沖寬度調制(PWM)是一種對模擬信號電平進行數字編碼的方法,由於計算機不能輸出模擬電壓,只能輸出0 或5V 的的數字電壓值,我們就通過使用高解析度計數器,利用方波的占空比被調制的方法來對一個具體模擬信號的電平進行編碼。
❻ 如何利用51單片機輸出PWM波
用兩個定時器的方法是用定時器T0來控制頻率,定時器T1來控制占空比。大致的的編程思路是這樣的:T0定時器中斷讓一個I0口輸出高電平,在這個定時器T0的中斷當中起動定時器T1,而這個T1是讓IO口輸出低電平,這樣改變定時器T0的初值就可以改變頻率,改變定時器T1的初值就可以改變占空比。
用一個定時器時(如定時器T0),首先你要確定PWM的周期T和占空比D,確定了這些以後,你可以用定時器產生一個時間基準t,比如定時器溢出n次的時間是PWM的高電平的時間,則D*T=n*t,類似的可以求出PWM低電平時間需要多少個時間基準n'。
因為這里我們是產生周期為1ms(1000HZ)的PWM,所以可設置中斷的時間基準為0.01ms,,然後中斷100次即為1ms。在中斷子程序內,可設置一個變數如time,在中斷子程序內,有三條重要的語句:1、當time>=100時,time清零(此語句保證頻率為1000HZ),2、當time>n時(n應該在0-100之間變化開),讓單片相應的I/O口輸出高電平,當time<n時,讓單片相應的I/O口輸出低電平,此時占空比就為%n。
參考資料:http://wenku..com/link?url=-Q74XVCQtStw6zJYtmlveX_O4_p3CkaHS-KIbWcgOIwQVMGTOGUi