直流電機驅動
- 15.1直流電機驅動基礎知識
- 1.直流電機介紹
- 2.電機驅動電路
- 3.PWM介紹
- 15.2LED呼吸燈和直流電機調速
- 1.LED呼吸燈代碼
- 2.直流電機調速
- (1)產生PWM的方法
- (2)工程目錄
- (3)main.c函數
15.1直流電機驅動基礎知識
1.直流電機介紹
直流電機是一種將電能轉換為機械能的裝置。一般的直流電機有兩個電極,當電極正接時,電機正轉,當電極反接時,電機反轉
直流電機主要由永磁體(定子)、線圈(轉子)和換向器組成
除直流電機外,常見的電機還有步進電機、舵機、無刷電機、空心杯電機等
2.電機驅動電路
3.PWM介紹
PWM(Pulse Width Modulation)即脈沖寬度調制,在具有慣性的系統中,可以通過對一系列脈沖的寬度進行調制,來等效地獲得所需要的模擬參量,常應用干電機控速、開關電源等領域PWM重要參數:
頻率=1/Ts
占空比=ToN/Ts
精度=占空比變化步距
15.2LED呼吸燈和直流電機調速
1.LED呼吸燈代碼
只有一個main函數
#include <REGX52.H>sbit LED=P2^0;void Delay(unsigned int t)
{while(t--);
}
void main()
{unsigned char Time,i; while(1){for(Time=0;Time<100;Time++){for(i=0;i<20;i++){LED=0;Delay(Time);LED=1;Delay(100-Time);}}for(Time=100;Time>0;Time--){for(i=0;i<20;i++){LED=0;Delay(Time);LED=1;Delay(100-Time);}}}
}
2.直流電機調速
(1)產生PWM的方法
(2)工程目錄
(3)main.c函數
#include <REGX52.H>
#include "Key.h"
#include "Delay.h"
#include "Timer0.h"
#include "Nixie.h"sbit Motor=P1^0;
unsigned char Counter,Compare;
unsigned char KeyNum,Speed;
void main()
{Timer0_Init();Compare=5;while(1){KeyNum=Key();if(KeyNum==1){Speed++;Speed%=4;if(Speed==0){Compare=0;}if(Speed==1){Compare=50;}if(Speed==2){Compare=75;}if(Speed==3){Compare=100;}}Nixie(1,Speed);}
}void Timer0_Routine() interrupt 1
{TL0 = 0xA4;TH0 = 0xFF;Counter++;if(Counter>=100){Counter=0;}if(Counter<Compare){Motor=1;}else{Motor=0;}}