發表於 2017-10-23 15:15:20
步進電機簡而言之就是能夠通過輸入脈衝的個數,確定旋轉的角位移,一般用他來控制小車輪子的偏移角度等。
ULN2003是內部結構是達林頓管的列陣:
ULN2003是一個非門電路,包含7個單元,各二極體的正極分別接各達林頓管的集電極。用於感性負載時,該腳接負載電源正極,起續流作用(在感性負載中,電路斷開後會產生很大的反電動勢,為防止損壞達林頓管,接反相的二極體來構成通路,使之轉換為電流)。
何為達靈頓管?達林頓管由兩個三極體組成,如圖2
將兩個三極體串聯,第一個管子的發射極接第2個管子的基極,所以達林頓管的放大倍數是兩個三極體放大倍數的乘積,具有很大的放大倍數。集電極開路,能輸出較大的電流(集電極電位高)。
IC的典型應用如圖3
利用ULN2003與MCU引腳相連,可以驅動步進電機。IC的作用主要在於放大驅動電流。本次實驗的驅動對象為28BYJ-48型步進電機(五線四相),基本電路如圖所示:
再來講講二極體的作用,驅動電流斷開時,電機內的電感產生很大的反電動勢,每一個單元的二極體都與三極體的集電極相連,產生反電動勢時就構成了放點迴路,從而保護了三極體。
ULN2003驅動步進電機的PROTEUS程序#include 《reg51.h》
#include 《absacc.h》
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
#define UP 20
#define DOWN 30
#define STOP 40
void delay()//延時程序
{
unsigned i,j,k;
for(i=0;i《0x02;i++)
for(j=0;j《0x02;j++)
for(k=0;k《0xff;k++);
}
main()
{
unsigned char temp;
while(1)
{
if(p10==0)
{
temp=UP;//控制正轉
P2=0X00;
delay();
}
if(p11==0)
{
temp=DOWN;//控制反轉
P2=0X00;
delay();
}
if(p12==0)
{
temp=STOP;//控制停止
}
switch(temp)
{
case DOWN : P2=0X01;//控制反轉 //0011
delay();
delay();
P2=0X02;//0110
delay();
delay();
P2=0X04;//1100
delay();
delay();
P2=0X08;//1001
delay();
delay();
break;
case UP : P2=0X08;//控制正轉
delay();
delay();
P2=0X04;
delay();
delay();
P2=0X02;
delay();
delay();
P2=0X01;
delay();
delay();
break;
case STOP ://控制停止
P2=0X00;
delay();
delay();
break;
}
}
}
打開APP閱讀更多精彩內容
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴