目錄
一、直流電機介紹
直流電機是一種將電能轉(zhuǎn)換為機械能的裝置。一般的直流電機有兩個電極,當(dāng)電極正接時,電機正轉(zhuǎn),當(dāng)電極反接時,電機反轉(zhuǎn)
直流電機主要由永磁體(定子)、線圈(轉(zhuǎn)子)和換向器組成
除直流電機外,常見的電機還有步進電機、舵機、無刷電機、空心杯電機等
二、直流電機驅(qū)動電路
三、PWM
3.1 PWM介紹
PWM(Pulse Width Modulation)即脈沖寬度調(diào)制,在具有慣性的系統(tǒng)中,可以通過對一系列脈沖的寬度進行調(diào)制,來等效地獲得所需要的模擬參量,常應(yīng)用于電機控速、開關(guān)電源等領(lǐng)域
PWM重要參數(shù):
頻率 = 1 / TS 占空比 = TON / TS 精度 = 占空比變化步距
3.2 產(chǎn)生PWM方法
基本原理是由單片機內(nèi)部集成PWM發(fā)生器模塊在程序控制下產(chǎn)生PWM信號。優(yōu)點是電路簡單、便于程序控制。缺點是不利于學(xué)生觀測PWM產(chǎn)生過程,閉環(huán)控制復(fù)雜和使用時受單片機性能制約。
四、代碼演示
電機調(diào)速
main.c
#include <REGX52.H>
#include "Delay.h"
#include "Key.h"
#include "Nixie.h"
#include "Timer0.h"
sbit Motor=P1^0;
unsigned char Counter,Compare;
unsigned char KeyNum,Speed;
void main()
{
Timer0_Init();
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 = 0x9C; //設(shè)置定時初值
TH0 = 0xFF; //設(shè)置定時初值
Counter++;
Counter%=100;
if(Counter<Compare)
{
Motor=1;
}
else
{
Motor=0;
}
}
注意:一定要看
千萬不要直接復(fù)制代碼,因為是模塊化編寫,模塊的代碼沒有往上復(fù)制(模塊的代碼在以往的文章中可以找到),大家一定要自己動手,跟著視頻學(xué)!!!!!