導航:首頁 > 操作系統 > 單片機pulse

單片機pulse

發布時間:2023-08-21 00:41:08

1. 怎麼用單片機控制伺服放大器來控制伺服電機

伺服控制一般單片機給脈沖信號,伺服接受的控制信號一般簡單控制如下:
S_ON:伺服ON,使能信號

Pulse+:正轉 或Pulse:脈沖
Pulse-:反轉 dir 方向

以上三個控制信號就可以控制伺服電機了。

2. 如何用單片機控制直流電機

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

(2)單片機pulse擴展閱讀:

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

#include"reg52.h"


#defineucharunsignedchar


#defineuintunsignedint


ucharcodetable[10]={0x3f,0x06,0x5b,


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


sbitxiaoshudian=P0^7;


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


sbitwei2=P2^5;


sbitwei3=P2^6;


sbitwei4=P2^7;


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


sbitmotor=P1^0;//電機控制


sbits1_jiasu=P1^4;//加速按鍵


sbits2_jiansu=P1^5;//減速按鍵


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


uintpulse_count;//INT0接收到的脈沖數


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


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


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


floatreallyspeed;//實際測得的速度


floatvv_min=0.0;vv_max=250.0;


floatvi_Ref=60.0;//給定值


floatvi_PreError,vi_PreDerror;


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


intsample_time=0;//采樣標志


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


voiddelay(uintz)


{


uintx,y;


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


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


}


voidtime_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;//開總中斷


}


voidkeyscan()


{


floatj;


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);


}


floatv_PIDCalc(floatvi_Ref,floatvi_SpeedBack)


{


registerfloaterror1,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);


}


voidv_Display()


{


uintsu;


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;


}


voidBEEP()


{


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


{


beep=~beep;


delay(4);


}


}


voidmain()


{


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);


}


voidtimer0()interrupt1


{


}


voidtimer1()interrupt3


{


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;


}


}



3. 單片機和pwm和PLC的大致用途是什麼

【1】單片機可以開發成單片機應用系統,應用極為廣泛,許多工業控制設備都有它的蹤影。單片機甚至可以實現低廉的PLC。與PLC不同的是,外圍電路設計靈活且必要,編程採用匯編或C,價格相當便宜。
【2】PLC——Programmable
Logic
Controller。更實用的工業控制器,有足夠的擴展板方便直連電氣設備。編程採用梯形圖等。價格相當相當貴。
【3】PWM——Pulse
Width
Molation。脈寬調制。與前兩者風馬牛,屬於一種應用技術,而非設備。單片機可以產生此控制波形,PLC也可。用於占空比調制輸出。如開關電源開關管控制。類似應用可見與電機調速、調光燈等。

4. 單片機語句P1= ~ pulse;怎麼解釋

'~'是個位運算符,意思是對變數取反,
那麼你的那個意思就是 對pulse取反,然後將其值賦給P1管腳

5. 單片機輸出的電平多少

單片機輸出的高電平和低電平

在單片機的應用中,輸出高低電平是我們經常需要處理的一項任務。通過控制輸出電平的高低來驅動外部器件,實現各種功能。那麼單片機輸出的電平到底有多少呢?

高電平和低電平的定義

首先,我們需要明確高電平和低電平的定義。在單片機的輸入輸出口中,我們通常定義高電平的電壓為5V左右,而低電平的電壓則為0V左右。這兩種電平的中間值則為臨界點。當單片機輸出高於臨界點的電壓時,我們通常稱之為高電平;當單片機輸出低於臨界點的電壓時,則對應為低電平。

高低電平的控制

單片機輸出的高低電平需要通過程序控制,一般使用GPIO(General Purpose Input Output)口實現。在單片機的程序中,我們可以通過編寫輸出高低電平的代碼來實現對GPIO口的控制。以Arino為例,以下是一段控制輸出高低電平的示範代碼:

void setup()

{

pinMode(13, OUTPUT); //定義13號口為輸出口

}

void loop()

{

digitalWrite(13, HIGH); //輸凳帶出高電平

delay(1000); //延遲1秒

digitalWrite(13, LOW); //輸出低電平

delay(1000); //延遲1秒

}

在這段代碼中,我們首先定義了13號口為輸出口,然後在loop循環中,先輸出高電平,延遲一秒鍾,再輸出低電平,也延遲一秒鍾,以此反復循環。

高低電平的應用

單片機輸出的高低電平具有廣泛的應用場棗悔蘆景。比如,當單片機需要驅動LED燈時,我們需要輸出高電平來點亮LED燈;當需要驅動電機轉動時,在單片機輸出低電平的同時,還需要結合PWM(Pulse Width Molation)控制電機的轉速和方向。

此外,單片機的高低電平還可以用於模擬輸入輸出,比如模擬音頻信號的輸入輸出,模擬各種感測器數據的輸入輸出等等。

總結

單片機輸出的電平,無論是高電平還是低電平,都是我們常常需要處理的問題。通過程序對GPIO口的控制,我們可以實現單片機輸出電平的控制,從而驅動各種各樣的外部器件,實現各種各樣的功能。知道了單片機輸出電平的基本原理和應用,我們才能更好地理解單片機的工作前羨原理,也更能靈活地應用單片機技術。

閱讀全文

與單片機pulse相關的資料

熱點內容
蜜源app是什麼時候創立的 瀏覽:704
計算機專業學51單片機 瀏覽:208
程序員不接受反駁 瀏覽:294
微軟自帶的壓縮軟體 瀏覽:286
中國玩家在日本伺服器做什麼 瀏覽:48
12864和單片機 瀏覽:898
25匹空調壓縮機 瀏覽:649
adkandroid下載 瀏覽:308
如何在蘋果電腦上裝python 瀏覽:327
哪個app的跑步訓練內容最豐富 瀏覽:583
廣訊通怎麼刪除文件夾 瀏覽:206
解壓的視頻化妝品 瀏覽:674
易語言新進程監視源碼 瀏覽:941
turbo碼解碼演算法 瀏覽:956
stc11f16xe單片機 瀏覽:282
linuxupdate命令行 瀏覽:578
pdf轉化成wps 瀏覽:765
php拋出錯誤 瀏覽:159
買車看車用什麼app 瀏覽:656
dos怎麼清除屏幕上的命令 瀏覽:813