|
發布時間: 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 發表于 2022-10-31 09:43 大佬 能詳細地指導下嗎? 你這有點多我有點懵 |
|
1、前進:DIR=1,給出一個脈沖,間隔一個時間TJ,再給出一個脈沖,再間隔一個時間TJ,再……。 2、后退:DIR=0,給出一個脈沖,間隔一個時間TJ,再給出一個脈沖,再間隔一個時間TJ,再……。 3、做個定時器,時常數就是TJ,這樣每間隔一個TJ,給出一個脈沖就可以了,轉向只要切換DIR。 4、關鍵點:把TJ做成變量,讓每次的TJ都可以變化。 加速:每發一個脈沖就將TJ-N。例如:起步,將TJ調到最大,如:800ms,而后每次-5:800-5,800-5*2,800-5*3,800-5*4……,直到速最快:例如=10ms。 減速:每發一個脈沖就將TJ+N。例如:當前TJ=25,而后每次+10:25+10,25+10*2,25-10*3,25+10*4……,直到你滿意的速率。 換向:不要立即改變DIR,而是先減速,停止時(你認為可以了),再改變DIR,再從起動開始加速。 5、TJ的最小值(最快速)、最大值(停止前)、加減速的N量,自己根據負載大小實踐一下就可以得到了。 運行離開不了物理概念,主要是牛頓的加速度定律, 記住:先做方案,再畫出流程圖,走通流程圖、再寫程序。 |
gongnn 發表于 2022-10-29 12:22 大佬 這個程序不行 跟我的差不多 想讓它來回轉動的話 這樣貌似不太行 |
Hephaestus 發表于 2022-10-29 21:02 用的是共陽極接法DIR+接的是正5V, DIR-接的才是I/O口 應該接線沒問題吧 |
初學者Captain 發表于 2022-10-29 19:19 測一下驅動器DIR+、DIR-兩者之間的電壓,很可能是接錯了。 |
gongnn 發表于 2022-10-29 19:57 試過了 還是不太行 |
|
單片機有沒有供電,接線對不對。單片機定時器有沒有。 程序再簡化點,切換dir方向后直接用delay函數延時試試。 |
Hephaestus 發表于 2022-10-29 12:07 改了 還是不行 |
gongnn 發表于 2022-10-29 12:22 大佬 你這個跟我的是一樣的把 都是只會往一個方向轉到底,并不能使其來回轉動啊 |
Hephaestus 發表于 2022-10-29 12:07 我試了下 電機還是只會往一個方向運行 |
| 改DIR就來回動了,為什么你不改? |
| 不知道該如何調試 使其來回轉動 |