![]() |
發布時間: 2020-4-16 19:01
正文摘要:電池是9v的,板子工作電壓好像是4.5-36v,我經過LM7805三端穩壓后(萬能表測輸出電壓為4.75v,不知道為什么不是5v),接到手中那兩根線上,同時給單片機供電,不知道電機為什么不轉,電機使能端(就是左右兩排藍色的 ... |
已解決,謝謝各位大哥解答 |
可以看看電壓問題,仿真軟件里沒有電壓的硬性要求 |
上善若水001 發表于 2020-4-19 16:30 弄好了,但是PWM又出問題。。 |
brad1111 發表于 2020-4-17 19:45 你給驅動板單獨供電,再把驅動板的 負極 和單片機的 負極 相接,試試 |
上善若水001 發表于 2020-4-17 10:13 驅動板的地是哪一個,不是只有電源出來的線一個正負極嗎? |
pwm是步進電機 |
brad1111 發表于 2020-4-17 09:31 不是必須要用PWM的,你直接給 使能端 高電平,INT1 INT2 一個高電平一個低電平,電機就能轉動了。 還有,我懷疑你是不是沒有把驅動板和單片機共地 |
大神們,這個電機會不會動,和PWM有關系嗎,我程序沒有弄pwm,如果需要的話能不能大概教一下怎么弄 |
我未曾來過 發表于 2020-4-16 23:48 不接電源轉動輪子,驅動芯片的led會亮,算是電磁嗎? |
你這個電機使能是0,到底是驅動芯片那里,還是單片機io口那里,講道理好像沒什么問題。但凡是仿真能實現,但是現實做不到的簡單程序,絕大部分可能都是接線問題或者電磁干擾。你先搞明白io口那里有沒有問題,但是你主函數一開始就使能了應該沒啥問題。當然也有可能是電源問題 |
我拿了兩節5號干電池去測試每一個電機,電機和輪子是會轉的,所以我感覺問題還是出在L293D上,具體是什么問題不太懂,希望大神能指導一下 |
然后這是我的程序,大佬們也幫忙看一看 #include<reg51.h> #include<intrins.h> typedef unsigned char u8; typedef unsigned int u16; sbit PWM2A=P1^4;//定義M1電機為P1.4的I/O口,即為小車右邊第一個電機 sbit PWM2B=P1^5;//定義M2電機為P1.5的I/O口,即為小車左邊第一個電機 sbit PWM0B=P1^6;//定義M3電機為P1.6的I/O口,即為小車左邊第二個電機 sbit PWM0A=P1^7;//定義M4電機為P1.7的I/O口,即為小車右邊第二個電機 sbit SER =P3^4;//定義74hc595芯片 DS腳數據線 sbit RCK =P3^5;//定義 LATCH腳 輸出存儲器鎖存時鐘線 sbit SCK =P3^6;//定義輸入時鐘線 void delay(void)//延遲500ms { unsigned char a,b,c; for(c=23;c>0;c--) for(b=152;b>0;b--) for(a=70;a>0;a--); } void HC595SendData(u8 SendVal) { u8 i; for(i=0;i<8;i=i++) { SER=SendVal&0x80;//1000 0000 1000 0000 SendVal=SendVal<<1;//0000 0000 0000 0000 每次取1位左移 SCK=0; //先將串行時鐘輸入端SH_CP置成低電平 _nop_(); _nop_(); //兩個時鐘周期 SCK=1; //數據在串行時鐘輸入端SH_CP的上升沿輸入到移位寄存器 } RCK=0; //鎖存 _nop_(); _nop_(); RCK=1; //移位寄存器上升沿時,數據進入存儲寄存器 } void main() { PWM2A=1; //M1電機使能 PWM2B=1; //M2電機使能 PWM0B=1; //M3電機使能 PWM0A=1; //M4電機使能 HC595SendData(0x6a);//01101010 全部電機正轉,小車前進 delay(); while(1); } |