導航:首頁 > 操作系統 > 51單片機開發板如何驅動直流電

51單片機開發板如何驅動直流電

發布時間:2022-08-15 17:38:36

㈠ 51單片機可以直接控制直流電機嗎 在IO口上接個直流電機

不可以,電機工作電流很大,遠遠超過單片機的允許范圍,直接控制,很容易燒壞單片機或者使系統無法正常工作,其他的問題還有一大把。

㈡ 51單片機怎麼控制大功率的直流電機,麻煩給下電路圖,謝啦。主要是驅動那怎麼設計

看了這么多回答的,還是我給你一個答案吧!

答案見插圖。解釋如下:

1:你說的大功率直流電機,用三極體肯定驅動不了,必須要大功率的MOSFET或者IGBT去驅動,IGBT或者MOSFET可以買Infineon的。主電路結構最好採用H橋電路,可以雙極性正反調速。

2:H橋的上管可以用IR2110來驅動,這個晶元自己提供了一個自舉功能,上管MOSFET(或IGBT)的源極電壓是浮動的,自舉電路可以保證上管的柵源之間的電壓在開啟電壓閾值之上。

3:你想要用51單片機實現調速,只需要用51單片機的P0~P3口產生兩組互相反相的PWM波(注意兩組之間要有死區),輸出到IR2110的HIN和LIN。至於程序,就很簡單了,不用我多說,你懂的。呵呵……

㈢ 怎樣用51單片機驅動ULN2003來帶動5V直流電機

51單片機的I/O口(不是P0 口),直接和ULN2003連,ULN2003有16個腳共7路驅動.ULN2003的8腳接5V電源地,9腳接+5V電源,因為ULN2003裡面有續流二極體從9腳引出.假如你用P1.0驅動一個電機,那麼P1.0接ULN2003的1腳,ULN2003的16腳接電機線圈的一端,電機線圈的另一端接+5V電源.P1.0為高電平,電機就轉,P1.0為低電平,電機就停.ULN2003驅動電流500MA.

㈣ 51單片機控制直流電機。(c語言控制)

有3種方案:
第一種,通過PWM脈寬調制輸出方法控制轉速,控制占空比的大小可以實現調速!
第二種,通過AD轉換的方法控制直流電機的電壓
第三種,用xtr115程式控制電流源來控制直流電機(類似第二種方法)
如果以上的驅動能力不夠的話再加上一個電壓跟隨器!
程序方面就是一個寄存器的配置問題了,你查一下單片機的技術手冊上面都有介紹的,祝你成功

㈤ 請問,如何用51單片機產生的pwm波來控制直流大電機的轉速

單片機產生的pwm信號不足以驅動電動機,僅能驅動led等小功率器件,因此需要用到pwm功率器件來驅動電動機,當然也可以採用一些pwm信號變換的方法來驅動。

㈥ 51單片機開發板如何驅動直流電機

1、從貼圖看,該開發板有步進電機驅動電路。
2、開發板上一般有驅動步進電機的驅動晶元,採用ULN2003的較多,這可以驅動步進電機,有的開發板上有直流電機驅動晶元,採用L298等晶元。
3、現在利用該開發板,沒有直流電機的專門驅動電路,但是ULN2003驅動步進電機,當然也可以驅動直流電機,只要編程時給其中的ABCD輸出口中里兩個發送PWM控制信號就可以了。

㈦ 怎麼用C51單片機控制直流電機詳細解說下,謝謝~~~~

PWM是用來控制變頻器以達到控制交流電機的目的。而要控制直流電動機,如果小功率的電機最簡單的就是用DA加功率放大器或者IGBT直接驅動;如果是大功率電機就需要用單片機加DA加直流電機調速模塊控制。C51單片機如果沒有DA,另加DA,根據控制精度選擇DA位數。

㈧ 51單片機驅動5v直流馬達應該用什麼驅動

控制轉速就用單管(mos場效應管可以直接驅動),如果是三極體驅動,需要2級放大;驅動程序就用最簡單的pwm控制原理吧。單片機內部程序可以固化一固定驅動頻率比如0.5k-1k,只需要手動按鈕調節占空比,或(占空比數組);最後最後在電機電源端並聯上100uf直流電容濾波效果會比較好哦;

㈨ 如何用單片機控制直流電機

通過與單片機相連的按鍵控制直流電機停啟的電路如下圖所示,通過P3.6口按鍵觸發啟動直流電機,P3.7口的按鍵觸發停止直流電機的運行。由圖可知,當P1.0輸出高電平「1」時,NPN型三極體導通,直流電機得電轉動;當P1.0輸出低電平「0」時,NPN型三極體截止,直流電機停止轉動。

(9)51單片機開發板如何驅動直流電擴展閱讀:

通過單片機產生PWM波控制直流電機程序

#include "reg52.h"


#define uchar unsigned char


#define uint unsigned int


uchar code table[10]={0x3f,0x06,0x5b,


0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰數碼管顯示碼(0-9)


sbit xiaoshudian=P0^7;


sbit wei1=P2^4; //數碼管位選定義


sbit wei2=P2^5;


sbit wei3=P2^6;


sbit wei4=P2^7;


sbit beep=P2^3; //蜂鳴器控制端


sbit motor = P1^0; //電機控制


sbit s1_jiasu = P1^4; //加速按鍵


sbit s2_jiansu= P1^5; //減速按鍵


sbit s3_jiting=P1^6; //停止/開始按鍵


uint pulse_count; //INT0接收到的脈沖數


uint num=0; //num相當於占空比調節的精度


uchar speed[3]; //四位速度值存儲


float bianhuasu; //當前速度(理論計算值)


float reallyspeed; //實際測得的速度


float vv_min=0.0;vv_max=250.0;


float vi_Ref=60.0; //給定值


float vi_PreError,vi_PreDerror;


uint pwm=100; //相當於占空比標志變數


int sample_time=0; //采樣標志


float v_kp=1.2,v_ki=0.6,v_kd=0.2; //比例,積分,微分常數


void delay (uint z)


{


uint x,y;


for(x=z;x>0;x--)


for (y=20;y>0;y--);


}


void time_init()


{


ET1=1; //允許定時器T1中斷


ET0=1; //允許定時器T0中斷


TMOD = 0x15; //定時器0計數,模式1;定時器1定時,模式1


TH1 = (65536-100)/256; //定時器1值,負責PID中斷 ,0.1ms定時


TL1 = (65536-100)%6;


TR0 = 1; //開定時器


TR1 = 1;


IP=0X08; //定時器1為高優級


EA=1; //開總中斷


}


void keyscan()


{


float j;


if(s1_jiasu==0) //加速


{


delay(20);


if(s1_jiasu==0)


vi_Ref+=10;


j=vi_Ref;


}


while(s1_jiasu==0);


if(s2_jiansu==0) //減速


{


delay(20);


if(s2_jiansu==0)


vi_Ref-=10;


j=vi_Ref;


}


while(s2_jiansu==0);


if(s3_jiting==0)


{


delay(20);


motor=0;


P1=0X00;


P3=0X00;


P0=0x00;


}


while(s3_jiting==0);


}


float v_PIDCalc(float vi_Ref,float vi_SpeedBack)


{


register float error1,d_error,dd_error;


error1=vi_Ref-vi_SpeedBack; //偏差的計算


d_error=error1-vi_PreError; //誤差的偏差


dd_error=d_error-vi_PreDerror; //誤差變化率


vi_PreError=error1; //存儲當前偏差


vi_PreDerror=d_error;


bianhuasu=(v_kp*d_error+v_ki*vi_PreError+v_kd*dd_error);


return (bianhuasu);


}


void v_Display()


{


uint su;


su=(int)(reallyspeed*10); //乘以10之後強制轉化成整型


speed[3]=su/1000; //百位


speed[2]=(su00)/100; //十位


speed[1]=(su0)/10; //個位


speed[0]=su; //小數點後一位


wei1=0; //第一位打開


P0=table[speed[3]];


delay(5);


wei1=1; //第一位關閉


wei2=0;


P0=table[speed[2]];


delay(5);


wei2=1;


wei3=0;


P0=table[speed[1]];


xiaoshudian=1;


delay(5);


wei3=1;


wei4=0;


P0=table[speed[0]];


delay(5);


wei4=1;


}


void BEEP()


{


if((reallyspeed)>=vi_Ref+5||(reallyspeed


{


beep=~beep;


delay(4);


}


}


void main()


{


time_init();


motor=0;


while(1)


{


v_Display();


BEEP();


}


if(s3_jiting==0) //對按鍵3進行掃描,增強急停效果


{


delay(20);


motor=0;


P1=0X00;


P3=0X00;


P0=0x00;


}


while(s3_jiting==0);


}


void timer0() interrupt 1


{


}


void timer1() interrupt 3


{


TH1 = (65536-100)/256; //1ms定時


TL1 = (65536-100)%6;


sample_time++;


if(sample_time==5000) //采樣時間0.1ms*5000=0.5s


{


TR0=0; //關閉定時器0


sample_time=0;


pulse_count=TH0*255+TL0; //保存當前脈沖數


keyscan(); //掃描按鍵


reallyspeed=pulse_count/(4*0.6); //計算速度


pwm=pwm+v_PIDCalc(vi_Ref,reallyspeed);


if(pwm


if(pwm>100)pwm=100;


TH0=TL0=0;


TR0=1; //開啟定時器0


}


num++;


if(num==pwm) //此處的num值,就是占空比


{


motor=0;


}


if(num==100) //100相當於占空比調節的精度


{


num=0;


motor=1;


}


}



閱讀全文

與51單片機開發板如何驅動直流電相關的資料

熱點內容
超算上可以進行vasp編譯嘛 瀏覽:174
北京通app怎麼注冊登錄 瀏覽:820
iphone上的數據怎麼轉移到安卓 瀏覽:743
python求每個時段平均值 瀏覽:244
安卓手機右上出現Hg什麼意思 瀏覽:69
程序員神經 瀏覽:753
dns伺服器在電腦上有什麼用 瀏覽:915
杭州大媽喜歡程序員 瀏覽:686
python評論樹講解 瀏覽:679
juniper防火牆常用命令 瀏覽:426
vapp怎麼下載地址 瀏覽:11
pdf裡面內容怎麼修改 瀏覽:807
收藏網址加密的瀏覽器 瀏覽:1000
phpurl問號 瀏覽:898
什麼筆記本電腦可以用python 瀏覽:135
加密相冊如何翻找 瀏覽:992
泰州地區DNS伺服器地址 瀏覽:849
一種app可以買菜用英語怎麼說 瀏覽:196
中國聯通app裡面通話詳單怎麼刪除 瀏覽:505
計算機網路編譯軟體 瀏覽:100