![]() |
發(fā)布時間: 2022-10-29 09:04
正文摘要:#include <REGX52.H> unsigned char timer0; sbit ENA=P1^0; sbit PWM=P1^1; sbit DIR=P1^2; void delay(unsigned int a) { unsigned char b=0; &n ... |
yzwzfyz 發(fā)表于 2022-10-31 09:43 大佬 能詳細(xì)地指導(dǎo)下嗎? 你這有點(diǎn)多我有點(diǎn)懵 |
1、前進(jìn):DIR=1,給出一個脈沖,間隔一個時間TJ,再給出一個脈沖,再間隔一個時間TJ,再……。 2、后退:DIR=0,給出一個脈沖,間隔一個時間TJ,再給出一個脈沖,再間隔一個時間TJ,再……。 3、做個定時器,時常數(shù)就是TJ,這樣每間隔一個TJ,給出一個脈沖就可以了,轉(zhuǎn)向只要切換DIR。 4、關(guān)鍵點(diǎn):把TJ做成變量,讓每次的TJ都可以變化。 加速:每發(fā)一個脈沖就將TJ-N。例如:起步,將TJ調(diào)到最大,如:800ms,而后每次-5:800-5,800-5*2,800-5*3,800-5*4……,直到速最快:例如=10ms。 減速:每發(fā)一個脈沖就將TJ+N。例如:當(dāng)前TJ=25,而后每次+10:25+10,25+10*2,25-10*3,25+10*4……,直到你滿意的速率。 換向:不要立即改變DIR,而是先減速,停止時(你認(rèn)為可以了),再改變DIR,再從起動開始加速。 5、TJ的最小值(最快速)、最大值(停止前)、加減速的N量,自己根據(jù)負(fù)載大小實(shí)踐一下就可以得到了。 運(yùn)行離開不了物理概念,主要是牛頓的加速度定律, 記住:先做方案,再畫出流程圖,走通流程圖、再寫程序。 |
gongnn 發(fā)表于 2022-10-29 12:22 大佬 這個程序不行 跟我的差不多 想讓它來回轉(zhuǎn)動的話 這樣貌似不太行 |
Hephaestus 發(fā)表于 2022-10-29 21:02 用的是共陽極接法DIR+接的是正5V, DIR-接的才是I/O口 應(yīng)該接線沒問題吧 |
測一下驅(qū)動器DIR+、DIR-兩者之間的電壓,很可能是接錯了。 |
gongnn 發(fā)表于 2022-10-29 19:57 試過了 還是不太行 |
單片機(jī)有沒有供電,接線對不對。單片機(jī)定時器有沒有。 程序再簡化點(diǎn),切換dir方向后直接用delay函數(shù)延時試試。 |
Hephaestus 發(fā)表于 2022-10-29 12:07 改了 還是不行 |
gongnn 發(fā)表于 2022-10-29 12:22 大佬 你這個跟我的是一樣的把 都是只會往一個方向轉(zhuǎn)到底,并不能使其來回轉(zhuǎn)動啊 |
Hephaestus 發(fā)表于 2022-10-29 12:07 我試了下 電機(jī)還是只會往一個方向運(yùn)行 |
void main() { kongzhi_Init(); while(1) { while(1) { DIR=1; if(timer0>0.1) { timer0=0; } if(timer0<1) { PWM=0; } else { PWM=1; } } DIR=0; if(timer0>0.1) { timer0=0; } if(timer0<1) { PWM=0; } else { PWM=1; } } } |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎勵! |
改DIR就來回動了,為什么你不改? |
不知道該如何調(diào)試 使其來回轉(zhuǎn)動 |
Powered by 單片機(jī)教程網(wǎng)