|
我為了排版,排了一個(gè)小時(shí)。。
設(shè)計(jì)亮點(diǎn)是:
示波器顯示正反轉(zhuǎn)的占空比波形。
1、示波器的藍(lán)色線:代表電機(jī)反轉(zhuǎn)
2、示波器的黃色線:代表電機(jī)正轉(zhuǎn)
3、外接電源可調(diào)
4、液晶顯示不會(huì)亂碼
5、程序有一定的注釋
有完整的程序+仿真原件+仿真調(diào)試的過程說明!在附件。!
Proteus仿真測試:
一、電機(jī)啟動(dòng)測試
仿真部分采用的是Proteus軟件,如圖1所示,程序在加載完之后系統(tǒng)處于靜止的狀態(tài),液晶屏幕也不會(huì)有顯示。在這時(shí)我們只需要按下仿真左下角的開始按鍵,但這時(shí)系統(tǒng)還不能完全工作,還需要手動(dòng)按下開始按鍵,如圖2所示,系統(tǒng)默認(rèn)的脈沖是50%然后轉(zhuǎn)速是968rpm/min。
圖1 系統(tǒng)整體仿真圖.png (132.48 KB, 下載次數(shù): 59)
下載附件
1
2022-5-23 23:55 上傳
圖1 系統(tǒng)整體仿真圖
圖2 系統(tǒng)的啟動(dòng).png (152.09 KB, 下載次數(shù): 67)
下載附件
2
2022-5-23 23:56 上傳
圖2 系統(tǒng)的啟動(dòng) 二、 電機(jī)調(diào)速測試
電機(jī)的轉(zhuǎn)速加快是通過脈沖波形的變化實(shí)現(xiàn)的,如圖3所示,現(xiàn)在的脈沖是50%速度是927rpm/min,和上圖的速度不一致是因?yàn)殡姍C(jī)在運(yùn)行過程中,即使電壓一致也不能完全保障電機(jī)的速度不會(huì)發(fā)生變化,我們想要電機(jī)速度增加那么就要按下加速的按鍵,為了使電機(jī)的變化速度較為明顯,我們以30%為一個(gè)加速標(biāo)準(zhǔn)值,如圖4所示,當(dāng)前屏幕顯示的脈沖是80%,速度變成了1512rpm/min,速度是已經(jīng)提升上去了。最大速度是占空比為100%,這時(shí)如圖5所示,1877rpm/min,電壓+23.1。
圖3 初始速度界面.png (165.04 KB, 下載次數(shù): 58)
下載附件
3
2022-5-23 23:56 上傳
圖3 初始速度界面
圖4 加速之后界面.png (157.65 KB, 下載次數(shù): 69)
下載附件
4
2022-5-23 23:56 上傳
圖4 加速之后界面
圖5 最大轉(zhuǎn)速界面.png (167.09 KB, 下載次數(shù): 68)
下載附件
5
2022-5-23 23:56 上傳
圖5 最大轉(zhuǎn)速界面 同理想要轉(zhuǎn)速減慢,我們還是以50%的脈沖作為參照情況,這時(shí)屏幕顯示的速度是967rpm/min,這時(shí)我們按下減按鍵,同樣我們以30%為一個(gè)減速標(biāo)準(zhǔn)值,這時(shí)如圖6所示,脈沖調(diào)整成了20%,就會(huì)發(fā)現(xiàn)速度真的下降了變成了427rpm/min,這里驗(yàn)證電機(jī)轉(zhuǎn)速的減速也成功了。下降的速度與上升的速度在相同比例占空比的調(diào)節(jié)下實(shí)現(xiàn)的減速量也是基本一致的,沒有出現(xiàn)較大的且不能接受無法控制在一定范圍內(nèi)的誤差。最小速度是占空比為0,這時(shí)如圖7所示,轉(zhuǎn)速不再液晶屏顯示數(shù)據(jù),所以為0 rpm/min,電壓值+0.00V。
圖6 初始速度界面.png (175.97 KB, 下載次數(shù): 62)
下載附件
6
2022-5-23 23:56 上傳
圖6 初始速度界面
圖7 減速之后界面.png (180.76 KB, 下載次數(shù): 66)
下載附件
7
2022-5-23 23:56 上傳
圖7 減速之后界面
圖8 減速到0之后界面.png (148.94 KB, 下載次數(shù): 52)
下載附件
8
2022-5-23 23:56 上傳
圖8 減速到0之后界面 三、 電機(jī)正反轉(zhuǎn)測試
正反轉(zhuǎn)的測試在電路中需要觀察電機(jī)的旋轉(zhuǎn)方向或者電壓值,如圖9所示,示波器顯示的是黃色波形,并且電機(jī)旋轉(zhuǎn)的方向是順時(shí)針,如圖10所示,按下反轉(zhuǎn)按鍵后示波器顯示的是藍(lán)色波形,電機(jī)會(huì)逆時(shí)針旋轉(zhuǎn)。這樣電機(jī)便可帶動(dòng)窗簾實(shí)現(xiàn)拉開和關(guān)閉窗簾的工作。
圖9正轉(zhuǎn)界面.png (180.76 KB, 下載次數(shù): 68)
下載附件
9
2022-5-23 23:56 上傳
圖9正轉(zhuǎn)界面
圖10反轉(zhuǎn)界面.png (170.16 KB, 下載次數(shù): 56)
下載附件
10
2022-5-23 23:56 上傳
圖10反轉(zhuǎn)界面
單片機(jī)源程序:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- void displaym();
- sbit en=P2^5; //1602 6管腳
- sbit rs=P2^7; //1602端口 4管腳
- sbit rw=P2^6;//lcd1602控制端口 5管腳
- sbit num1=P1^0; //占空比加1
- sbit num2=P1^1; //占空比減一
- sbit num3=P1^2; //正傳
- sbit num4=P1^3; //反轉(zhuǎn)
- sbit num5=P1^4; //開始停止切換
- sbit out=P3^4; //PWM輸出用于正傳
- sbit out1=P3^7; //PWM輸出用于反轉(zhuǎn)
- uint zhuansu,flag,m,flag_1,zheng,fan,kai,j,su,qian,bai,shi,ge;
-
- void delay(uint z)//延時(shí)1ms函數(shù)
- {
- uint x,y;
- for(x=0;x<z;x++)
- for(y=0;y<110;y++);
- }
- void write_com(uchar com)//向1602寫一字節(jié)(控制指令)
- {
- rs=0;
- P0=com;
- delay(5);
- en=1;
- delay(10);
- en=0;
- }
- void write_data(uchar date)//向1602寫一字節(jié)(數(shù)據(jù))
- {
- rs=1;
- P0=date;
- delay(5);
- en=1;
- delay(5);
- en=0;
- }
- void init()//初始化函數(shù)
- {
- en=0;
- rw=0;
- write_com(0x38); //5X7顯示
- write_com(0x0c); //關(guān)閉光標(biāo)
- write_com(0x01); //lcd初始化
- TMOD=0x11; //定時(shí)器方式1
- TH0=0xdc;
- TL0=0x00; //定時(shí)器裝入初值
- EA=1; //開總中斷
- ET0=1; //定時(shí)器0開中斷
- TR0=1;
- EX1=1;
- IT1=1; //定時(shí)器啟動(dòng)
- TH1=0xfc;
- TL1=0x66;//定時(shí)100us
- ET1=1; //定時(shí)器1開中斷
- TR1=1;
- write_com(0x80); //第一行第一位顯示V:
- write_data('V');
- write_data(':');
- write_com(0x87); //第一行第三位顯示轉(zhuǎn)速 千位、百位、十位、個(gè)位
- write_data('r');
- write_data('p');
- write_data('m');
- write_data('/');
- write_data('m');
- write_data('i');
- write_data('n');
- write_com(0xc0); //第二行顯示zhankongbi:
- write_data('z');
- write_data('h');
- write_data('a');
- write_data('n');
- write_data('k');
- write_data('o');
- write_data('n');
- write_data('g');
- write_data('b');
- write_data('i');
- write_data(':');
- displaym();
- }
-
- void keyscan() //鍵盤掃描函數(shù)
- {
- if(num1==0)
- {
- delay(50); //消除抖動(dòng)
- if(num1==0)
- {
- if(m<=199)
- m++;
- displaym(); //設(shè)定占空比加一
- }
- }
- if(num2==0)
- {
- delay(50);
- if(num2==0)
- {
- if(m>=1)
- m--;
- displaym(); //設(shè)定占空比減一
-
- }
- }
- if(num3==0) //正轉(zhuǎn)
- {
- delay(50);
- if(num3==0)
- {
- zheng=1;
- fan=0;
- }
-
- }
- if(num4==0) //反轉(zhuǎn)
- {
- delay(50);
- if(num4==0)
- {
- zheng=0;
- fan=1;
-
- }
- }
- if(num5==0)
- {
- delay(50);
- if(num5==0)
- {
- while(num5==0) ;
- kai=1-kai;
-
- }
- }
-
- }
- void display()
- {
- zhuansu=zhuansu*30; //將兩秒內(nèi)的計(jì)數(shù)乘以30得到轉(zhuǎn)每分
- su=zhuansu*0.01*2*3.14/2; //0.0001 得到的是10轉(zhuǎn)左右
- /////////////////////////***********************////////////////////////////////////////
- write_com(0x82);
- if(su/1000%100!=0)
- write_data(su/1000%100+0x30); //如果qian位不為0則顯示千位否則顯示空格
- else
- write_data(' ');
- if(su/100%10!=0)
- write_data(su/100%10+0x30); //如果bai不為0則顯示百位否則顯示空格
- else
- write_data(' ');
- if(su/10%10!=0)
- write_data(su/10%10+0x30); //如果shi位不為0則顯示十位否則顯示空格
- else
- write_data(' ');
- if(su%10!=0)
- write_data(su%10+0x30); //如果ge位不為0則顯示個(gè)位否則顯示空格
- else
- write_data(' ');
- write_com(0xd0);
- //////////////*******************************************////////////////////////////////////////
- // write_com(0x82);
- // qian=(su/1000)%100;
- // write_data(qian+0x30);
- //
- // bai=(su/100)%10;
- // write_data(bai+0x30);
- //
- // shi=(su/10)%10;
- // write_data(shi+0x30); //顯示000000,
- //
- // ge=su%10;
- // write_data(ge+0x30);
- //
- // write_com(0xd0);
- ////////////********************************//////////////////////////////
- }
- void displaym()
- {
- write_com(0xcb);
- if(m/200%10!=0)
- write_data(m/200%10+0x30); //如果占空比百位不為0則顯示百位否則顯示空格
- else
- write_data(' ');
-
- if(m/200%10==0&&m/20%10==0)
- write_data(' ');
- else
- write_data(m/20%10+0x30); //如果占空比小于10 十位正常顯示 否則顯示空格
-
- write_data(m/2%10+0x30); //顯示個(gè)位
- }
- void main()
- {
- flag_1=0;
- m=100; //占空比為100
- zhuansu=0; //轉(zhuǎn)速初值0
- flag=0;
- zheng=1; //初始化電機(jī)正轉(zhuǎn)動(dòng)
- fan=0;
- j=67;
- init(); //初始化
- while(1)
- {
- keyscan(); //鍵盤掃描程序
- }
- }
- void int1()interrupt 2 //外部中斷1脈沖技術(shù)記錄電機(jī)的轉(zhuǎn)速 電機(jī)轉(zhuǎn)一圈zhuansu加一
- {
- zhuansu++;
- }
- void int2()interrupt 1 //定時(shí)器0顯示轉(zhuǎn)速
- {
-
- TH0=0xdc;
- TL0=0x00;//定時(shí)10ms
- flag++;
-
- if(flag==200) //計(jì)時(shí)到達(dá)2s
復(fù)制代碼 |
-
-
proteus仿真.rar
2022-5-24 00:07 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
125.4 KB, 下載次數(shù): 229, 下載積分: 黑幣 -5
仿真圖原件
-
-
程序 注釋2022年05月23日.rar
2022-5-24 00:07 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
36.48 KB, 下載次數(shù): 233, 下載積分: 黑幣 -5
程序+注釋
-
-
PWM控制直流電機(jī).docx
2022-5-24 00:07 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
1.59 MB, 下載次數(shù): 150, 下載積分: 黑幣 -5
仿真測試流程
評分
-
查看全部評分
|