|
本帖最后由 heicad 于 2016-8-15 15:26 編輯
0.png (6.68 KB, 下載次數: 95)
下載附件
2016-8-15 15:18 上傳
1:先說上側三條線: 中間的:
轉一周(即電機轉一周),則高電平一次。根據這可以測出轉速 左右兩邊是檢測左轉還是右轉。電機每轉一周,兩邊分別高電平24次,哪邊先高電平,就是往哪邊轉。 注:這是默認是24,其實是可以修改的,因為不同的電機,這個參數是不一樣的.
你可在電源進線(兩側的)接上一12V的電池并串上一只200歐電阻,3 條出線上接計數/頻率計就可以看出。2:對直流電機的驅動 不同的直流電機,其所用的驅動電流也是不一樣的.用單片機控制直流電機時,同時,為了給直流電機提供足夠大的驅動電流,需要加驅動電路.常用的驅動方式有三種: 三極管電流放大驅動電路 達林頓反相驅動器(ULN2803) 電機專用驅動模塊(L198) 三極管驅動如下:
0.png (224.11 KB, 下載次數: 107)
下載附件
2016-8-15 15:19 上傳
達林頓驅動如下:
0.png (222.51 KB, 下載次數: 108)
下載附件
2016-8-15 15:19 上傳
51單片機驅動程序:
- #include <reg51.h>
- #include <math.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define ON 0
- #define OFF 1
- sbit PWM=P3^5;
- sbit MP=P3^4;
- bit FLAG=0;
- uchar code dispbit[6]={0x20,0x10,0x08,0x04,0x02,0x01};
-
- uchar code seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
- //0,1,2,3,4,5,6,7,8,9
- uchar disbuf[6]={0,0,0,0,10,10};
- uint temp[6];
- uint discount=0;
- uint timecount=0;//定時的次數
- uint T0count=0;
- uint hus=0;
- uint k=60;
- uint Vc;
- uint Vs;
- uint tm=3000;
- uint x;
- void t0_serv() interrupt 1
- { T0count++;
- }
- void t1_serv() interrupt 3
- {
- PWM=1;
- TH1=(65536-tm)/256;
- TL1=(65536-tm)%256;
- hus++;
- if(hus==tm)
- { PWM=0;
- TH1=(25536+tm)/256;
- TL1=(25536+tm)%256;
-
- }
- timecount++;
- if(timecount==250)
- {
- //FLAG=1;
- TR0=0;
- hus=0;
- timecount=0;
- Vc=T0count*65536+TH0*256+TL0;
- Vs=144;
- if(abs(Vc-Vs)>5)
- { tm=abs(k*(Vc-Vs));
- T0count=0;
- TR0=1;
- TR1=1;
- ET0=1;
- ET1=1;
- EA=1;
- }
- FLAG=1;
- TR0=0;
- timecount=0;
- }
- P0=dispbit[discount];
- P1=seg[disbuf[discount]];
- discount++;
- if(discount==6)
- { discount=0;
- }
- }
- void main()
- { uint i;
- TMOD=0x15;
- TH0=0;
- TL0=0;
- TH1=(65536-tm)/256;
- TL1=(65536-tm)%256;
- TR0=1;
- TR1=1;
- ET0=1;
- ET1=1;
- EA=1;
- while(1)
- { if(FLAG==1)
- { FLAG=0;
- x=T0count*65536+TH0*256+TL0;
- for(i=0;i<6;i++)
- {temp[i]=0;
- }
- i=0;
- while(x/10)
- {
- temp[i]=x%10;
- x=x/10;
- i++;
- }
- temp[i]=x;
- for(i=0;i<6;i++)
- {
- disbuf[i]=temp[i];
- }
-
- timecount=0;
- T0count=0;
- TH0=0;
- TL0=0;
- T0count=0;
- TR0=1;
-
- }
- }
-
- }
復制代碼
0.png (27.97 KB, 下載次數: 116)
下載附件
2016-8-15 15:24 上傳
0.png (77.75 KB, 下載次數: 103)
下載附件
2016-8-15 15:23 上傳
|
|