PWM控制小船

2021-08-07 21:31:29 字數 2425 閱讀 4151

本文章基於乙個初學者對於pwm的了解。
pwm中文翻譯為脈衝寬度調製,原理就是,先給定乙個週期t,然後把t分成n份,及每份時間為t/n,調速即為調整高電平(低電平)在這個t內所佔據的份數,如高電平佔了10份,則時間為10t/n。高電平在t內所佔比例為10/n,占空比為1-10/n,如圖1所示。圖1

電機分為有刷電機與無刷電機,這裡以無刷直流電機為例,電機要運作需要驅動晶元,有兩種一種為電調(電子調速器),一種為電機驅動(如l298n)。這裡小車以l298n驅動為例,首先大家要知道l298n的用法(注意板外取電需要將+5v介面置高點平),我用的是2路l298n模組,可以控制兩個電機,分別將in1,in2埠接入微控制器p1^0,p1^1;in3,in4埠接入微控制器1^2,p1^3;ena,enb埠接入p1^4,p1^5(ena,enb即為pwm訊號)。圖2

要實現pwm調速有兩種方法,一種是直接寫延時函式delayms(),還有一種是中斷函式。前者容易理解,但是不精確,後者難理解,但是精確。

希望我的文章對你們有所幫助,後面附上**,希望各位大佬修改的更簡單。

#include

#define uint unsigned int

#define uchar unsigned char

uchar code table=;

uchar time_1ms;

uchar l_lpwm,t;//占空比l_pwm/50。

void delayms(unsigned int);//延時函式1ms。

void init();//初始化函式。

sbit in1=p1^0;

sbit in2=p1^1;

sbit in3=p1^2;

sbit in4=p1^3;

sbit l_pwm=p1^4;//ena

sbit r_pwm=p1^5;//enb

sbit dula=p2^6;

sbit wela=p2^7;

#define boat_left_go in1=1;in2=0//船左螺旋槳順時針轉動,前進。

#define boat_right_go in3=0;in4=1//船有螺旋槳逆時針轉動,前進。

#define boat_left_back in1=0;in2=1//船左螺旋槳逆時針轉動,後退。

#define boat_right_back in3=1;in4=0//船右螺旋槳順時針轉動,後退。

#define boat_left_stop in1=0;in2=0//左螺旋槳停止。

#define boat_right_stop in3=0;in4=0//右螺旋槳停止。

void boat_move();//選擇航行模式函式.

void display(uchar num);//顯示檔位函式

void boat_go();//船前進

void boat_back();//船後退

void boat_stop();//船停止

void boat_left();//船左轉

void boat_right();//船右轉

void main()

/*}*/

}void boat_move()

while(temp!=0xf0)

display(key);}}

p3=0xfd;//1111 1101

temp=p3;//掃瞄p3埠,將瞬時引數賦給temp。

temp=temp&0xf0;//temp&1111 0000

if(temp!=0xf0)

while(temp!=0xf0)

display(key);}}

p3=0xfb;//1111 1011

temp=p3;//掃瞄p3埠,將瞬時引數賦給temp。

temp=temp&0xf0;//temp&1111 0000

if(temp!=0xf0)

while(temp!=0xf0)}}

p3=0xf7;//1111 0111

temp=p3;//掃瞄p3埠,將瞬時引數賦給temp。

temp=temp&0xf0;//temp&1111 0000

if(temp!=0xf0)

while(temp!=0xf0)

}

}}void init()

void delayms(uint x)

void boat_go()

void boat_back()

void boat_stop()

void boat_left()

void boat_right()

void display(uchar num)

void t0_time() interrupt 1

else

}

PWM怎麼控制

2 應用例項 pwm是一種對模擬訊號電平進行數字編碼的方法。通過高解析度計數器的使用,方波的占空比被調製用來對乙個具體模擬訊號的電平進行編碼。pwm訊號仍然是數字的,因為在給定的任何時刻,滿幅值的直流供電要麼完全有 on 要麼完全無 off 電壓或電流源是以一種通 on 或斷 off 的重複脈衝序列...

PWM控制電機

脈衝寬度調製 pwm 是英文 pulse width modulation 的縮寫,簡稱脈寬調變,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量 通訊到功率控制與變換的許多領域中。占空比指的是高低電平所佔的時間的比率,占空比越大,電路開通時間就越長,整機效能就越高...

基於stm32的遙控小船(三)PWM調速

所謂pwm 其實就是用計時器計數 當計數到指定的值時發生電平跳變 我是由高到底 用在迴圈裡就會得到乙個漂亮的方波了 我使用的l298n驅動模組有兩個使能口ena和enb,在這裡輸入pwm訊號 調速 然後調整in1,in2,in3,in4的引腳正負 控制動作 就可以完成了 但是當時我出於對跳帽的恐懼 ...