如何定制控制板開發直流電機和驅動
控制板開發中的PWM應用
脈寬調制是一種模擬控制方式,通過對晶體管基極或 MOS管柵極的偏置調制,實現晶體管或 MOS管的導通時間的改變,從而改變開關穩壓電源的輸出。該方法能夠在工作條件改變的情況下,使電源輸出電壓保持恒定,是利用單片機的數字信號控制模擬電路的一種非常有效的方法。脈寬調制是一種利用單片機的數字輸出量來控制模擬電路的一種非常有效的方法,在從測量、通訊到功率控制和變換等諸多領域都有廣泛的應用。
所謂PWM,就是脈沖寬度調制技術,其具有兩個很重要的參數:頻率和占空比。頻率,就是周期的倒數;占空比,就是高電平在一個周期內所占的比例。
本次使用了電機驅動模塊是L298N
實物圖如下,改模塊常用直流電機的驅動
其內部結構圖如下圖所示
延續二極管(flyback diode),有時也被稱為飛輪二極管或 snubber二極管,是一種二極管,與感受性負載一起使用,當感受器的電流有突然改變或減小時,會產生突變電壓,從而破壞其它元件。與續流二極管配合時,電流變化比較平穩,避免了突波電壓的發生。所謂的“續流二極管”,由于在電路中起著續流的作用,所以一般選擇快速恢復二極管或肖特基二極管作為“續流二極管”,它在電路中一般用來保護元件不被感應電壓擊穿或燒壞,以并聯的方式接接產生感應電動勢的元件兩端,并與其形成回路,一般用于保護元件不被感應電壓擊穿或燒壞,以并聯的方式接接產生感應電動勢的元件兩端,并與之形成回路以續流的高電勢。 。
本次程序實現原理通過單片機IO口輸出高低電平驅動電機的正反轉,然后再通過定時器產生PWM信號進而調速
定時器初始化
void motor_Init()
{
EA=1;//打開總中斷
TMOD=0x01; //定時器工作方式
TH0=(65535-1000)/256; //初值約1ms
TL0=(65535-1000)%256;
ET0=1; //打開定時器中斷
TR0=1; //打開定時器
}
定時器中斷函數
/*
* @description : 定時器中斷函數,利用定時器產生PWM調速信號
* @param :無
* @return : 無
*/
void Time() interrupt 1
{
static unsigned char count=0;
TH0=(65535-1000)/256; //重裝初值
TL0=(65535-1000)%256; //重裝初值
count++;
if(count==20)count=0;
if(count>=speedA)
{
ENA=1;
}
else{
ENA=0;
}
if(count>=speedB)
{
ENB=1;
}
else{
ENB=0;
}
}
控制電機方向
/*
* @description : 電機轉向
* @param : 0-A正 1 F反 2-B正 3-B反
* @return : 無
*/
void motor(unsigned char status)
{
if(status==0)
{
IN1=0;
IN2=1;
}
if(status==1)
{
IN1=1;
IN2=0;
}
if(status==3)
{
IN3=0;
IN4=1;
}
if(status==4)
{
IN3=1;
IN4=0;
}
}
通過PWM信號占空比調節AB的速度
單片機定時器產生1ms一次中斷,并且通過調節speedA與speedB調節速度
PWM
兩個重要的概念,頻率、占空比
??頻率是指每秒鐘信號從高電平到低電平再回到高電平的次數,為一個PWM波周期的倒數。上圖中頻率=1/(0.003+0.001)=250 HZ
??占空比是指高電平持續時間比一個周期持續的時間。上圖中占空比=1/(1+3)=25%,所以可以通過控制占空比,來控制輸出的等效電壓。
??所以對于方波的話,頻率和占空比就確定了一個波。
怎么能產生一個PWM波?
??方法1:利用芯片內部模塊輸出 PWM信號,除TIM6和7外,STM32的定時器。其它計時器可用于產生 PWM輸出。先進的TIM1和TIM8定時器可同時產生多達7路 PWM輸出。普通計時器還可同時產生多達4路 PWM輸出,因此STM32最多可同時產生30路 PWM輸出!可是!!!TIM相同的計時器只能產生一個頻率的 PWM波,你只能改變占空比。特定的程序可以在實際的STM32部分中找到。
方法2:利用 IO口高低電平轉換輸出 PWM信號,如上圖所示,維持1 ms,然后電平拉低,維持3 ms,再將 PWM波形調高,這樣循環往復,就可以產生一個周期4毫秒占空比為25%的 PWM波。詳細的做法是在 IO口上添加一個計時器,利用定時器中斷實現實時高、低電平的切換。詳細過程見下面51單片機部分。
定時器
??要想使用51單片機設計來產生一路PWM,根據上述的方法2,首先你應該知道什么是定時器?定時器是怎么工作的?
定時器:和計數器說的是一個東西,因為它既能計時也能計數。定時器的實質是,由機器頻率向一個16位寄存器累加,累加滿溢出時觸發中斷。為了產生一個我們想要的時間間隔。比如說1s,所以我們要在這個寄存器里設定一個初值,以至于讓它在這個初值上累加可以產生一個1s的倍數。這樣我們就得到了穩定的時間間隔。
??這個寄存器分為TH(高八位)和TL(低八位)。所以我們需要把計算好的初值分成兩部分分別放入TH和TL。