搭了個H橋電路,控制電機的正反轉和PWM調速,程序是網上的,改改引腳就能用,電路和源程序如下:

功能:P1.1按鍵停止,P1.2左轉,P1.3右轉,P1.0調速
#include#define uchar unsigned char #define uint unsigned int sbit PW1=P0^0 ; sbit PW2=P0^1 ; //控制電機的兩個輸入 sbit accelerate=P1^0 ; //調速按鍵 sbit stop=P1^1 ; //停止按鍵 sbit left=P1^2 ; //左轉按鍵 sbit right=P1^3 ; //右轉按鍵 #define right_turn PW1=0;PW2=1 //順時針轉動 #define left_turn PW1=1;PW2=0 //逆向轉動 #define end_turn PW1=1;PW2=1 //停轉 uint t0=25000,t1=25000; //初始時占空比為50% uint a=25000; // 設置定時器裝載初值 25ms 設定頻率為20Hz uchar flag=1; //此標志用于選擇不同的裝載初值 uchar dflag; //左右轉標志 uchar count; //用來標志速度檔位 void keyscan(); //鍵盤掃描 void delay(uchar z); void time_init(); //定時器的初始化 void adjust_speed(); //通過 調整占空比來調整速度 //**********************************// void main() { time_init(); //定時器的初始化 while(1) { keyscan(); //不斷掃描鍵盤程序,以便及時作出相應的響應 } } //*************************************// void timer0() interrupt 1 using 0 { if(flag) { flag=0; end_turn; a=t0; //t0的大小決定著低電平延續(xù)時間 TH0=(65536-a)/256; TL0=(65536-a)%256; //重裝載初值 } else { flag=1; //這個標志起到交替輸出高低電平的作用 if(dflag==0) { right_turn; //右轉 } else { left_turn; //左轉 } a=t1; //t1的大小決定著高電平延續(xù)時間 TH0=(65536-a)/256; TL0=(65536-a)%256; //重裝載初值 } } void time_init() { TMOD=0x01; //工作方式寄存器 軟件起動定時器 定時器功能 方式1 定時器0 TH0=(65536-a)/256; TL0=(65536-a)%256; //裝載初值 ET0=1; //開啟定時器中斷使能 EA=1; // 開啟總中斷 TR0=0; } //****************************************// void delay(uchar z) //在12M下延時z毫秒 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } //******************************// void keyscan() { if(stop==0) { TR0=0; //關閉定時器0 即可停止轉動 end_turn; } if(left==0) { TR0=1; dflag=1; //轉向標志置位則左轉 } if(right==0) { TR0=1; dflag=0; //轉向標志復位則右轉 } if(accelerate==0) { delay(5) ; //延時消抖 if(accelerate==0) { while(accelerate==0) ; //等待松手 count++; if(count==1) { t0=20000; t1=30000; //占空比為百分之60 } if(count==2) { t0=15000; t1=35000; //占空比為百分之70 } if(count==3) { t0=10000; t1=40000; //占空比為百分之80 } if(count==4) { t0=5000; t1=45000; //占空比為百分之90 } if(count==5) { count=0; } } } }
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。
舉報投訴
-
51單片機
+關注
關注
277文章
5711瀏覽量
127398 -
PWM調速
+關注
關注
2文章
34瀏覽量
11240 -
控制電機
+關注
關注
0文章
245瀏覽量
18685
發(fā)布評論請先 登錄
相關推薦
熱點推薦
PWM調速原理分享,如何實現電機的正轉反轉調速?
,就可以改變直流電機兩端的平均電壓,從而實現直流電機的調速。前文說過,改變電機兩端的電源極性可以改變電機的轉速,那么
發(fā)表于 12-10 11:06
MS管搭建的H橋電路如何去實現電機的正反轉控制
直流有刷電機有哪些優(yōu)缺點?步進電機有哪些優(yōu)缺點?直流減速電機驅動該如何去設計?MS管搭建的H橋電路
發(fā)表于 09-03 07:13
pwm控制電機正反轉,PWM直流電機調速程序
PWM調速開關控制方式控制電機,廣泛應用于玩具、小車、機器人等項目,通過串口預設正反轉速度,可以
發(fā)表于 10-30 15:00
?2.1w次閱讀
評論