51單片機直流電機調速
-
#include
sbitdianji=P0^6;unsignedinti,j,m,n;voidmain(){EA=1;EX0=1;IT0=0;EX1=1;IT1=0;m=50;n=0;while(1){dianji=0;for(i=0;i sbit dianji=P0^6; unsigned int i,j,m,n; void main() { EA=1; EX0=1; IT0=0; EX1=1; IT1=0; m=50; n=0; while(1) { dianji=0; for(i=0;i
全部評論(1條)
-
- uxhndtb 2015-04-28 00:00:00
- diyi:你這個不是電機調速的,用外部中斷是測速的呀。 下面是我寫的.PID部分的代碼就不給了,想加的話,自己找可以了 #include <AT89X52.H> #include "common.h" #define _WHEEL_C_ #define Left_moto_pwm P1_5 #define Right_moto_pwm P1_4 #define Left_moto_go {IN1=0,IN2=1;} #define Left_moto_back {IN1=1,IN2=0;} #define Right_moto_go {IN3=1,IN4=0;} #define Right_moto_back {IN3=0,IN4=1;} sbit IN1=P1^0; sbit IN2=P1^1; sbit IN3=P1^2; sbit IN4=P1^3; unsigned char pwm_val_left=0; unsigned char push_val_left=0; unsigned char pwm_val_right=0; unsigned char push_val_right=0; float L_Count=0,R_Count=0; unsigned int TimerNum=0,SYS_TimeNum=0; float Save_L_Distance=0,Save_R_Distance=0,Left_Speed=0,Right_Speed=0; unsigned char Left_point=0,Right_point=0; unsigned char sys_1ms=0,sys_1s=0,TurnFlag=0; //初始化PWM調速函數(shù) void Init_Wheel() { TMOD = 0x01; TH0 = 0x0FF; TL0 = 0x0A4; EA = 1; ET0 = 1; TR0 = 1; } void Init_WheelSpeedInter() { IT0=1; //INT0下降沿中斷 EX0=1; //允許INT1中斷 IT1=1; //INT1下降沿中斷 EX1=1; //允許INT1中斷 EA=1; } //得到上一次0.5秒的行駛距離 float GetLeftWheelMileage() { return Save_L_Distance; } //得到上一次0.25秒的行駛距離 float GetRightWheelMileage() { return Save_R_Distance; } void Inter_Left(void) interrupt 0 { L_Count++; } void Inter_Right(void) interrupt 2 { R_Count++; } //小車向前函數(shù) void Wheel_Run(char left_val,char right_val) { push_val_left=left_val; push_val_right=right_val; Left_moto_go ; Right_moto_go ; } //小車后退函數(shù) void Wheel_Back(char left_val,char right_val) { push_val_left=left_val; push_val_right=right_val; Left_moto_back; Right_moto_back; } //小車停止函數(shù) void Wheel_Stop(void) { Wheel_Run(0,0); } //左輪PWM調速函數(shù) void pwm_out_left_moto(void) { if(pwm_val_left>200) { pwm_val_left=0; }else { if(pwm_val_left<=push_val_left) { Left_moto_pwm=1; } else { Left_moto_pwm=0; } } } //右輪調速函數(shù) void pwm_out_right_moto(void) { if(pwm_val_right>200) { pwm_val_right=0; }else { if(pwm_val_right<=push_val_right) { Right_moto_pwm=1; } else Right_moto_pwm=0; } } //PWM調速中斷(TIMER0--工作方式1) void Wheel_Interrupt(void) interrupt 1 { TH0 = 0x0FF; TL0 = 0x0A4; TimerNum++; if(TimerNum>=2500) { //左右輪速度cm/s Left_Speed=4*L_Count; Right_Speed=4*R_Count; //左右輪0.25秒行駛距離 Save_L_Distance+=L_Count; Save_R_Distance+=R_Count; //數(shù)據(jù)發(fā)送到串口圖示 DataScope_Get_Channel_Data(L_Count, 1 ); //將數(shù)據(jù) 1.0 寫入通道 1 DataScope_Get_Channel_Data(R_Count, 2 ); //將數(shù)據(jù) 2.0 寫入通道 2 Send_Count = DataScope_Data_Generate(2); //生成10個通道的 格式化幀數(shù)據(jù),返回幀數(shù)據(jù)長度 for( DateNum = 0 ; DateNum < Send_Count; DateNum++) //循環(huán)發(fā)送,直到發(fā)送完畢 { SendByte(DataScope_OutPut_Buffer[DateNum]); } TimerNum=0; L_Count=0; R_Count=0; } pwm_val_left++; pwm_val_right++; pwm_out_left_moto(); pwm_out_right_moto(); }
-
贊(17)
回復(0)
熱門問答
- 51單片機直流電機調速
- #include
sbitdianji=P0^6;unsignedinti,j,m,n;voidmain(){EA=1;EX0=1;IT0=0;EX1=1;IT1=0;m=50;n=0;while(1){dianji=0;for(i=0;i sbit dianji=P0^6; unsigned int i,j,m,n; void main() { EA=1; EX0=1; IT0=0; EX1=1; IT1=0; m=50; n=0; while(1) { dianji=0; for(i=0;i 2015-04-27 02:32:41 470 1
- 51單片機怎么對直流電機調速,做了個遙控小車
2017-06-06 15:07:40
428
1
- 用51單片機制作可調速的直流電機需要三極管嗎
- 我想給這個電路圖編寫一個程序,實現(xiàn)電機的正反轉和調速,大神幫一下忙!麻煩大神發(fā)一下... 我想給這個電路圖編寫一個程序,實現(xiàn)電機的正反轉和調速,大神幫一下忙! 麻煩大神發(fā)一下 展開
2015-04-01 13:38:57
422
2
- 用單片機對直流電機調速的程序
2011-04-22 10:35:59
370
2
- 如何用51單片機給電機調速?
- 不是步進電機。... 不是步進電機。 展開
2011-10-24 04:56:01
332
4
- 51單片機實現(xiàn)pwm對電機調速
2018-07-22 09:03:42
466
3
- 51單片機 超聲波測距 控制直流電機正反轉
- 通過超聲波傳感器測距,當距離大于設定值A時,直流電機反轉;當距離等于設定值A時,直流電機停止;當距離小于設定值A時,直流電機正轉。具體要求:1)設定值A能夠通過鍵盤設定;2)電機所處的各個狀態(tài)(正轉、反轉和停止)及超聲波傳感器檢測的距離值能夠在液... 通過超聲波傳感器測距,當距離大于設定值A時,直流電機反轉;當距離等于設定值A時,直流電機停止;當距離小于設定值A時,直流電機正轉。具體要求:1)設定值A能夠通過鍵盤設定;2)電機所處的各個狀態(tài)(正轉、反轉和停止)及超聲波傳感器檢測的距離值能夠在液晶上實時顯示。 展開
2015-07-12 14:27:24
787
1
- 直流電機調速
- 1.直流電機調速器有哪些類型2.每種類型的原理是什么3.由單片機控制電機時應選用什么類選的直流電機調速器... 1.直流電機調速器有哪些類型 2.每種類型的原理是什么 3.由單片機控制電機時應選用什么類選的直流電機調速器 展開
2011-08-02 07:59:43
487
4
- 哪位大俠有51單片機控制直流電機的源程序
2017-12-13 05:13:18
290
1
- 直流電機調速問題?
- 我現(xiàn)在要要做一個直流電機調速系統(tǒng),要求是用電位器控制電機轉速,為什么在我選擇電機型號是廠家說還需要加調速器,讓我不能理解的是電位器和調速器不都是調速的嗎,那我為什么不能直... 我現(xiàn)在要要做一個直流電機調速系統(tǒng),要求是用電位器控制電機轉速,為什么在我選擇電機型號是廠家說還需要加調速器,讓我不能理解的是電位器和調速器不都是調速的嗎,那我為什么不能直接調節(jié)調速器進行調速,那電位器是不是多余的? 這是不是和轉矩有關系?請各位大哥看清問題,這個系統(tǒng)很明確,是要求既有電位器,又有調速器,這是為什么,我想知道其中的原因,我想知道的是原因!謝謝??! 展開
2010-09-17 15:29:04
558
6
- 直流電機無法調速
- 直流電機一個方向調速正常,但另一個方向調速,開機就是Z高轉速!工作臺,銑頭由兩臺直流調速器控制,控制電路是同一套,工作臺和銑頭都有一個方向正常,另一方向一動調速器... 直流電機一個方向調速正常,但另一個方向調速,開機就是Z高轉速! 工作臺,銑頭由兩臺直流調速器控制,控制電路是同一套,工作臺和銑頭都有一個方向正常,另一方向一動調速器 展開
2012-05-14 16:57:14
523
2
- 直流電機調速原理
2017-09-21 19:04:22
482
1
- 直流電機調速原理
2017-11-21 07:49:22
381
1
- 51單片機 測速
- 當感應到磁性的時候 有高電平,沒有感應到磁性的時候是低電平,求兩次測到高電平之間時間是多少。 C語言程序怎么寫?用霍爾傳感器或者是磁性開關
2014-03-20 07:21:32
398
3
- 直流電機調速的設計
- 1.設計直流電機調速的控制電路。2.直流電機的轉速由電位器調節(jié),電位器輸出電壓范圍在0~5V之間,將該控制電壓送AD0809的通道0,由計算機采集AD轉換結果。3.再將采集到的數(shù)字量變化轉... 1. 設計直流電機調速的控制電路。 2. 直流電機的轉速由電位器調節(jié),電位器輸出電壓范圍在0~5V 之間,將該控制電壓送AD0809的通道0,由計算機采集AD轉換結果。 3. 再將采集到的數(shù)字量變化轉換成脈沖占空比的變化,實現(xiàn)脈寬調制(PWM)。 4. 將PWM輸出信號經驅動電路送到直流電機,達到控制直流電機轉速的目的。 展開
2013-07-14 06:35:51
519
2
- 400w 220v 直流電機調速
- 85年的產品,舊設備上拆的,原來應該有控制器的,不過找不到了,原來沒接觸過這類電機,有幾個問題:1、直接用220v+整流是否可以用2、如果需要調速的話,怎么實現(xiàn),自己做還是有現(xiàn)成的... 85年的產品,舊設備上拆的,原來應該有控制器的,不過找不到了,原來沒接觸過這類電機,有幾個問題: 1、直接用220v+整流是否可以用 2、如果需要調速的話,怎么實現(xiàn),自己做還是有現(xiàn)成的? 銘牌: 型號:z2-11 0.4kw 220v 2.64A 1500RPM 展開
2010-05-16 08:11:28
410
4
- 直流電機可控硅調速電路圖
- 急求110V直流電機可控硅調速電路圖,望大俠指點一二,Z好有具體元件參數(shù)。謝謝。采納再加分100至200.不然沒人回答,分就浪費了,哈哈。謝謝你的回答哈。,不過我說的是兩相直流電機哈... 急求110V直流電機可控硅調速電路圖,望大俠指點一二,Z好有具體元件參數(shù)。謝謝。采納再加分100至200.不然沒人回答,分就浪費了,哈哈。 謝謝你的回答哈。,不過我說的是兩相直流電機哈。110V的直流。 電機功率兩百瓦。 就是普通有碳刷的電機呀。只不過有點特殊,額定電壓是110V的。不是步進電機。步進電機供電方案很多的。 展開
2009-10-15 21:29:38
568
4
- 51單片機電子頻率計
- 電子頻率計 (一)功能簡述 數(shù)字頻率計在計算機、通訊等科研領域是不可缺少的測量儀器。電子專業(yè)人才考試專用板板載NE555芯片,通過電位器Rb3可調節(jié)方波的參數(shù)。 (二)設計要求 1. 通過導線將硬件資源板上的Signal與單片機的P3.4口(定時/計數(shù)... 電子頻率計 (一)功能簡述 數(shù)字頻率計在計算機、通訊等科研領域是不可缺少的測量儀器。電子專業(yè)人才考試專用板板載NE555芯片,通過電位器Rb3可調節(jié)方波的參數(shù)。 (二)設計要求 1. 通過導線將硬件資源板上的Signal與單片機的P3.4口(定時/計數(shù)器T0)相連接。 2. 使用四位八段共陽數(shù)碼管顯示信號頻率。 3. 當信號頻率在低于10Khz時,所有LED燈處于熄滅狀態(tài),數(shù)碼管顯示的頻率單位為Hz。 4. 當頻率超過10Khz時,與P1.0端口相連接的LED燈點亮,數(shù)碼管顯示的頻率單位調整為Khz。 5. 要求可對0-250Khz的方波信號進行測量,要求誤差不超過1%。 6. 考試過程中,應使用硬件平臺指定的資源進行設計。 (三)設計文檔 1. 系統(tǒng)示意圖和程序流程圖(提交WORD文檔) 2. 電路原理圖(Protel或Proteus文檔) 3. 源程序(C或匯編) 展開
2014-08-02 01:25:22
448
2
- 51單片機串口通訊
- 51單片機串口是不是全雙工的,我記得書上寫的是,但是用中斷的話,又想發(fā)送和接收同時進行,程序怎么寫?按理說在中斷里根據(jù)是RI=1還是TI=1是可以判斷接收引起的中斷還是發(fā)送引起的中... 51單片機串口是不是全雙工的,我記得書上寫的是,但是用中斷的話,又想發(fā)送和接收同時進行,程序怎么寫?按理說在中斷里根據(jù)是RI=1還是TI=1是可以判斷接收引起的中斷還是發(fā)送引起的中斷,但是發(fā)送和接收同時進行是不是會出現(xiàn)RI和TI同時為1?對此很困惑,總覺得不是全雙工,哪位幫我解釋一下,謝謝! 展開
2016-10-16 04:46:14
485
1
4月突出貢獻榜
推薦主頁
最新話題





參與評論
登錄后參與評論