用51微控制器產生PWM控制直流小電機

時間 2025-01-05 11:05:26

1樓:love藍雪花

pwm是從in1,in2輸入。

給你張圖,不曉得看得清不。

c程式等有空心情好再給你寫。

還有微控制器帶pca的話不用定時器的。

有自帶pwm模組的。

2樓:網友

#define setbit(x,y) (x|=(1<=speedl)

if (j>=speedr)

delayus(2);

void back(unsigned char speedl,unsigned char speedr)

unsigned char j;

setbit(p0,3);

clrbit(p0,4);

setbit(p0,5);

clrbit(p0,7);

for(j=0;j<=100;j++)

if (j=speedl)

if (j>=speedr)

delayus(2);

接l298n的ena、enb;,,接l298n的in1a,in1b,in2a,in2b;

就是用軟體模擬pwm,以100個迴圈為週期,當數量小於你設定的速度數值的時候,電機通,反之,電機斷。

如何利用51微控制器輸出pwm波

3樓:趙文星空絮雨

用兩個定時器的方法是用定時器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,所以可設定中斷的時間基準為,,然後中斷100次即為1ms。在中斷子程式內,可設定乙個變數如time,在中斷子程式內,有三條重要的語句:1、當time>=100時,time清零(此語句保證頻率為1000hz),2、當time>n時(n應該在0-100之間變化開),讓單片相應的i/o口輸出高電平,當。

4樓:匿名使用者

提供思路:定義乙個靜態變數,程式每次進入定時器的中斷函式中時判斷是否滿足你說要求的佔空比,沒達到就繼續對變數值進行累加直到滿足條件後使輸出pwm波的那個引腳電平反轉。

說的有點囉嗦 希望能對你有所幫助。

微控制器pwm控制電機轉速

5樓:趙文星空絮雨

如果只有乙個轉向的話就比較容易了,如果回要有正反兩個轉向,答就需要乙個h橋,並且兩個i/o口輸出高低電頻控制。

比如用p1口的,,三個i/o口接按鍵,口接電頻輸出,編個定時程式及按鍵程式,如果是快(全速執行),那就口直接輸出高電頻「1」;中(50%),那就讓口0—50ms輸出高電頻「1」,50ms—100ms輸出低電頻「0」,後面就一直以50ms進行一次取反;慢(就用10%吧),0—40ns輸出高電頻「1」,41ns—400ns輸出低電頻「0」,這樣為乙個週期,後面就一直迴圈吧。

如果按鍵按下,執行方式1,全速執行,否則以預設方式執行;按鍵按下,執行方式2,改變佔空比,以50%的速度執行,否則,不作改變;按鍵按下,執行方式3,改變佔空比,以10%的速度執行,否則,不作改變。

6樓:網友

首先微控制器的pwm是不能夠驅動電機的,首先你需要乙個變頻器,然後設定成脈衝控制模式,然後使用微控制器輸出然後接線到邊變頻器,變頻器電源斷路器以及輸出接電機即可!

請問在控制電機速度時,怎樣通過微控制器用pwm方法控制速度呢?

7樓:網友

可以用定時器中斷的方法獲得pwm訊號,如定時器定時100us,先讓某管腳輸出高電平,用一變數a作計數器,中斷一次變數加一,中斷10次a清0,另設一變數b,數值取1-10,中斷程式中比較a和b的值,如果a和 b相等,則將該引腳輸出低電平,直到計數器a清0時再輸出高電平,就輸出了一定佔空比的方波。

改變b的值,就改變了佔空比,缺點頻率不能太高,因中斷程式執行要花費較長時間,定時器定時不能太短,如定時10us,可能會小於中斷程式的執行時間,造成造成pwm 頻率低於預想值或程式混亂。

若定時100us,中斷10次清0,則佔空比 變化最小單位就是10%,如果改成中斷100次(10ms)清0,雖佔空比可以1%為單位改變,但獲得的pwm方波頻率只有100hz,所需濾波電容和電感都 會大很多。

硬體pwm頻率就可以高多了,原理和定時器類似,但時間比較和輸出引腳狀態翻轉 計數器清0都是硬體自動完成的,所產生的pwm方波頻率達10khz沒有問題,且調整幅度可以達1/256

8樓:網友

你好!如果是直流電機,直接改變佔空比就能控制轉速了。

9樓:匿名使用者

這個比較簡單,我能等會再聊。

51微控制器怎麼控制大功率的直流電機,麻煩給下電路圖,謝啦。主要是驅動那怎麼設計

10樓:小高王飛

用大功率三極體連線就可以輸出比較大的電路了。

51微控制器實現直流電機pwm調速,為什麼要用定時器?

11樓:秘憐煙僕豔

直流電機的pwm調速,就是改變在乙個週期裡的通電時間,通電時間和斷電時間就是乙個週期,這都是用時間來決定的,所以必須要用定時器。

51微控制器是對所有相容intel

8031指令系統的微控制器的統稱。該系列微控制器的始祖是intel的8031微控制器,後來隨著flash

rom技術的發展,8031微控制器取得了長足的進展,成為應用最廣泛的8位微控制器之一,其代表型號是atmel公司的at89系列。

12樓:巧璇璣隋鳴

用乙個定時器生成最小時間基準,軟體中用在定時器中斷程式裡用多個暫存器對這個時間基準進行不同週期的計數,就可以實現多個計數器的功能,進而實現多段pwm的應用。

13樓:所康德猶傑

定時器是哪個程式都會用到的,pwm輸出的話最好用片上的模組來實現,效果比較好。

51微控制器控制數碼管並顯示,51微控制器控制8個數碼管並顯示1 8

啟巖 數碼管段選連線到微控制器p0口,位選連線到p2口org 0000h main call display ajmp main display mov r0,0 mov r1,0x01 mov dptr,tab loop inc r0 mov a,r0 movc a,a dptr mov p0,0...

微控制器做控制器,用UC3843產生PWM調節Boost升壓電

3843和3842都無法做,它們的誤差放大器的參考電壓都是在晶片內部直接給定的,需要拿誤差放大器的正負輸入端,輸出端都有外接引腳的晶片。比如tl494等,微控制器的da端輸出直流電壓給誤差放大器做參考電壓就可以了。如果微控制器沒有da功能,可以用pwm輸出端加上一個rc濾波器代替。 貌似你沒做過開關...

51微控制器控制繼電器,51微控制器如何驅動12V繼電器 用三極體實現的電路引數怎麼求?

你的 圖有問題,繼電器是不會吸合的。發光二極和串聯的電阻阻值也大,led不能亮。應該如下圖這樣畫 彙編程式 relay bit p2.0 繼電器控制位reset ljmp main org 000bh mov th0,3ch mov tl0,0b0h djnz r2 back mov r2 20 中...