智能小车PWM调速原理
電機驅動電路
智能小車電機的驅動芯片采用L293D。L293D是一款單片集成的高電壓、高電流、4通道電機驅動,設計用于連接標準DTL或TTL邏輯電平,驅動電感負載(諸如繼電線圈、DC和步進電機)和開關功率晶體管等等。L293D有4個通道,每個電機需要用到兩個通道,以實現電機的正反轉。4個電機就需要用到8個通道。本小車需要2片L293D電機驅動芯片。
為了簡化為雙橋應用,L293D每個通道對都配備了一個使能輸入端。L293D邏輯電路具有獨立的供電輸入,可在更低的電壓下工作。
L293D具有如下特性:
1、L293D每個通道的電流輸出能力達600 mA
2、L293D每個通道的峰值輸出電流達1.2 A(非重復)
3、便于使能
4、L293D具有過溫保護
5、邏輯“0”輸入電壓高達1.5 V(高抗噪性)
6、內置箝位二極管
智能小車的調速
智能小車的部分實驗中,電機不能時刻保持在全速運轉的狀態,需要控制小車速度才能完成一些特定的功能。比如在“智能小車循跡實驗”中,如果小車速度過快,來不及反應做出方向的調整,小車會很容易跑離軌跡。PWM調速是目前電機的主流調速方式。
智能小車采用脈寬調制(PWM)的辦法來控制電機的轉速,從而控制智能小車的速度。在此種情況下,電池電源并非連續地向直流電機供電,而是在一個特定的頻率下為直流電機提供電能。
不同占空比的方波信號,調節對直流電機的通斷電,能起到對直流電機調速作用。這是因為電機實際上是一個大電感,它有阻礙輸入電流和電壓突變的能力,因此脈沖輸入信號被平均分配到作用時間上。
這樣,改變L293D始能端EN1和EN2上輸入方波的占空比就能改變加在電機兩端的電壓大小,從而改變了直流電機轉速。
電路中用微處理機來實現脈寬調制,通常的方法有兩種:
(1)用軟件方式來實現:
通過執行軟件延時交替改變EN1和EN2輸出邏輯狀態來產生脈寬調制信號,設置不同的延時時間得到不同的占空比。
(2)用硬件方式實現:
硬件自動產生PWM信號,不占用CPU處理的時間。這就要用到具有硬件PWM功能的芯片,在一串理想的脈沖周期序列中(如方波),正脈沖的持續時間與脈沖總周期的比值可以調節。
智能小車控制板采用STC89C52RC芯片,不具備硬件PWM波形發生器,我們采用定時器中斷來產生固定占空比的脈沖信號,定時器的作用是準確的計算脈沖時間。采用定時器中斷來產生PWM波形,而不是軟件延遲的方法,可以有效的提升CPU的工作效率。
智能小車PWM調速前進
有時候我們需要控制智能小車的速度,不希望智能小車全速前進。比如在“智能小車循跡實驗”中,如果小車速度過快,來不及反應做出方向的調整,小車會很容易跑離軌跡,這樣就需要調整控制智能小車的速度了。
那么怎么樣實現智能小車前進速度的調節呢?調節智能小車的速度,實際上是調節電機的運轉速度,PWM調速是目前電機的主流調速方式。智能小車采用脈寬調制(PWM)的辦法來控制電機的轉速,從而控制智能小車的速度。在此種情況下,電池電源并非連續地向直流電機供電,而是在一個特定的頻率下為直流電機提供電能。不同占空比的方波信號,調節對直流電機的通斷電,能起到對直流電機調速作用。這是因為電機實際上是一個大電感,它有阻礙輸入電流和電壓突變的能力,因此脈沖輸入信號被平均分配到作用時間上。這樣,改變L293D使能端EN1和EN2上輸入方波的占空比就能改變加在電機兩端的電壓大小,從而改變了直流電機轉速。
智能小車PWM調速前進程序源代碼
unsignedchar pwmval_left = 0; //變量定義
unsignedchar pwmval_right = 0; //變量定義
unsignedchar pwmval_left_init = 10;
//左電機占空比調節,調節值在0到20之間,調節此值可以調節小車的速度。
unsignedchar pwmval_right_init = 10;
//右電機占空比調節,調節值在0到20之間,調節此值可以調節小車的速度。
bitright_pwm = 1; //右電機PWM開關,為1時打開
bitleft_pwm = 1; //左電機PWM開關,為1時打開
voidleft_moto(void)
{
if(left_pwm)
{
if(pwmval_left <= pwmval_left_init){EN1 =1; }
else{EN1 = 0;}
if(pwmval_left >= 20){pwmval_left = 0;}
}
else{EN1 = 0;}
}
voidright_moto(void)
{
if(right_pwm)
{
if(pwmval_right <= pwmval_right_init){EN2= 1;}
else if(pwmval_right > pwmval_right_init){EN2= 0;}
if(pwmval_right >= 20){pwmval_right = 0;}
}
else{EN2 = 0;}
}
voidtimer0()interrupt 1 using 2
{
TH0=0xfc;TL0=0x66; //1Ms定時
pwmval_left=pwmval_left+1;pwmval_right=pwmval_right+1;
left_moto();right_moto();
}
voidtimer_init()
{
TMOD=0x01;
TH0=0xfc;TL0=0x66; //1ms定時
TR0=1;ET0=1;EA=1; //開總中斷
}
voidmain()
{
timer_init();delay(10,100);
BEEP_IO=0;delay(100,100);BEEP_IO=1;
forward(); //調用前進函數
while(1);
}
從控制程序中我們可以知道,調節pwmval_left_init和pwmval_right_init的值就可以調節EN1和EN2上信號的占空比,從而調節左電機和右電機的運轉速度,最終完成智能小車的運動速度。
總結
以上是生活随笔為你收集整理的智能小车PWM调速原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最新微软语音合成网页版源码+影视解说配音
- 下一篇: 基于数据生命周期的安全防护